diff --git a/schainpy/model/io/jroIO_matlab_offline.py b/schainpy/model/io/jroIO_matlab_offline.py new file mode 100644 index 0000000..495a7d1 --- /dev/null +++ b/schainpy/model/io/jroIO_matlab_offline.py @@ -0,0 +1,163 @@ +from schainpy.model.data.jrodata import * +from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation +from schainpy.model.io.jroIO_base import * + +import scipy.io as sio +import pprint +import numpy as np +from os import listdir +from os.path import isfile, join +import datetime +import cmath + +class matoffReader(ProcessingUnit): + + index=None + list=None + firsttime=True + utccounter=None + utcfiletime=None + utcmatcounter=0 + utcfirst=None + utclist=None + + def __init__(self): + self.dataOut = Spectra() + return + + + def run(self,path=None,startDate=None, endDate=None,startTime=datetime.time(0,0,0), + endTime=datetime.time(23,59,59),walk=True,timezone='ut', + all=0,online=False,ext=None,**kwargs): + + self.path=path + self.ext=ext + self.startDate=startDate + self.endDate=endDate + self.startTime=startTime + self.endTime=endTime + + + startsearch1=datetime.datetime.combine(startDate,startTime) + startsearch2=(startsearch1-datetime.datetime(1970,1,1)).total_seconds() + endsearch1=datetime.datetime.combine(endDate,endTime) + endsearch2=(endsearch1-datetime.datetime(1970,1,1)).total_seconds() + + + filelist = [ f for f in listdir(path)] + + secondlist=[] + thirdlist=[] + utclist=[] + + if (self.firsttime==True): + + self.utclist=utclist + + for g in range(len(filelist)): + + strsplit=filelist[g].split('.') + timeints=[int(i) for i in strsplit] + timelist=datetime.datetime(timeints[0],timeints[1],timeints[2],timeints[3],timeints[4],timeints[5]) + utctime=(timelist-datetime.datetime(1970,1,1)).total_seconds() + + if (utctime<=endsearch2): + if (utctime>=startsearch2): + secondlist.append(filelist[g]) + self.utclist.append(utctime) + + + + + for k in range(len(secondlist)): + + path1=os.path.join(self.path,secondlist[k]) + + filecounter=len([name for name in os.listdir(path1)]) +# print "Reading from this dir:" +path1 + for r in range(filecounter): + matname=str(r)+'.mat' + bork=os.path.join(path1,matname) + thirdlist.append(os.path.join(path1,matname)) + + + self.utcfirst=utclist[0] + self.firsttime=False + self.index=0 + self.list=thirdlist + + + currentfile=self.list[self.index] + print "Reading from this file:" + currentfile + + #filesplit=currentfile.split("\\") + filesplit=currentfile.split("/") + newsplit=filesplit[-2] + newnewsplit=newsplit.split(".") + newnewsplit=[int(i) for i in newnewsplit] + gooblist=datetime.datetime(newnewsplit[0],newnewsplit[1],newnewsplit[2],newnewsplit[3],newnewsplit[4],newnewsplit[5]) + self.utcfirst=(gooblist-datetime.datetime(1970,1,1)).total_seconds() + + + newsplit=filesplit[-1] + newnewsplit=newsplit.split(".") + goobnum=newnewsplit[0] + goobnum=int(goobnum) + + self.utcfirst=self.utcfirst+goobnum*2 +# if (currentfile[43:]=='0.mat'): +# self.utcmatcounter=0 +# self.utcfirst=self.utclist[self.index] + +# if (self.utcmatcounter>60): +# self.utcmatcounter=0 + +# print self.utcmatcounter + print self.utcfirst + + datastuff=sio.loadmat(currentfile) + dataphase=datastuff.get('phase') + data3=datastuff.get('doppler0') + data4=datastuff.get('doppler1') + data3= np.array(data3) + data4 = np.array(data4) + datacoh=datastuff.get('coherence2') + + datacohphase=datacoh*np.exp(-dataphase*1j) +# data31 = np.fliplr(data3) +# data41 = np.fliplr(data4) + + data31 = data3.reshape((1,data3.shape[0],data3.shape[1])) + data41 = data4.reshape((1,data4.shape[0],data4.shape[1])) + datacohphase1 = datacohphase.reshape((1,datacoh.shape[0],datacoh.shape[1])) + + datastack = np.vstack((data31,data41)) + + self.dataOut.pairsList=[(0,1)] + self.dataOut.data_cspc=datacohphase1.copy() + self.dataOut.data_spc = datastack.copy() + self.dataOut.channelList = range(2) + self.dataOut.nProfiles = 25 #this! + self.dataOut.nIncohInt = 1 + self.dataOut.nCohInt = 1 #this! + self.dataOut.ippSeconds = 0.004 #this! + self.dataOut.nFFTPoints = 25 + self.dataOut.utctime = self.utcfirst + self.dataOut.heightList = np.array(datastuff.get('hts')) + + self.dataOut.flagNoData = False + + + +# self.utcmatcounter=2 +# self.utcfirst+=self.utcmatcounter + self.index+=1 + + if (self.index>len(self.list)): + return 0 + + + + + return 1 + \ No newline at end of file