|
|
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
|
|
|
|