jroIO_matlab_offline.py
162 lines
| 5.1 KiB
| text/x-python
|
PythonLexer
|
r590 | 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 | |||