##// END OF EJS Templates
fixed nonposx deprecated
fixed nonposx deprecated

File last commit:

r1396:f39ad5b721a3
r1734:203085a2ac42
Show More
jroIO_matlab.py
273 lines | 8.4 KiB | text/x-python | PythonLexer
Alexander Valdez
CIRI_online_version
r591 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
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 class matoffReader(ProcessingUnit):
Alexander Valdez
CIRI_online_version
r591
Merge EW-Drifts
r1396 index = None
list = None
firsttime = True
utccounter = None
utcfiletime = None
utcmatcounter = 0
utcfirst = None
utclist = None
Alexander Valdez
CIRI_online_version
r591
def __init__(self):
self.dataOut = Spectra()
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.online = False
Alexander Valdez
CIRI_online_version
r591 return
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 def __setHeader(self, datastuff):
Merge EW-Drifts
r1396 self.dataOut.pairsList = [(0, 1)]
self.dataOut.channelList = list(range(np.array(datastuff.get('power')).shape[1]))
self.dataOut.nProfiles = len(np.array(datastuff.get('vel')).flatten()) # this!
Alexander Valdez
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
r598 self.dataOut.nIncohInt = 20
Merge EW-Drifts
r1396 self.dataOut.nCohInt = 1 # this!
self.dataOut.ippSeconds = 0.004 # this!
Alexander Valdez
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
r598 self.dataOut.nFFTPoints = len(np.array(datastuff.get('vel')).flatten())
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.dataOut.timeZone = 0
self.dataOut.heightList = np.array(datastuff.get('hts')).flatten()
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 def __readFile(self, currentfile):
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("Reading from this file:" + currentfile)
Alexander Valdez
CIRI_online_version
r591
Merge EW-Drifts
r1396 # 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()
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 newsplit = filesplit[-1]
newnewsplit = newsplit.split(".")
goobnum = newnewsplit[0]
goobnum = int(goobnum)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 self.utcfirst = self.utcfirst + goobnum * 2
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 # if (currentfile[43:]=='0.mat'):
# self.utcmatcounter=0
# self.utcfirst=self.utclist[self.index]
# if (self.utcmatcounter>60):
# self.utcmatcounter=0
# print self.utcmatcounter
George Yong
Python 2to3, Spectra (all operations) working
r1167 print(self.utcfirst)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 try:
Merge EW-Drifts
r1396 datastuff = sio.loadmat(currentfile)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 except:
return None, None
Merge EW-Drifts
r1396 dataphase = datastuff.get('phase')
data3 = datastuff.get('doppler0')
data4 = datastuff.get('doppler1')
data3 = np.array(data3)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 data4 = np.array(data4)
Merge EW-Drifts
r1396 datacoh = datastuff.get('coherence2')
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 datacohphase = datacoh * np.exp(-dataphase * 1j)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 # data31 = np.fliplr(data3)
# data41 = np.fliplr(data4)
Merge EW-Drifts
r1396 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]))
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 datastack = np.vstack((data31, data41))
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
self.__setHeader(datastuff)
spc = datastack
cspc = datacohphase1
return spc, cspc
Merge EW-Drifts
r1396 def __findFiles(self, path, startDate=None, endDate=None, startTime=datetime.time(0, 0, 0), endTime=datetime.time(23, 59, 59)):
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 if startDate == None:
Merge EW-Drifts
r1396 startDate = datetime.date(1970, 1, 1)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
if endDate == None:
Merge EW-Drifts
r1396 endDate = datetime.date(2050, 1, 1)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 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()
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
dirList = listdir(path)
dirList = sorted(dirList)
Merge EW-Drifts
r1396 dirListFiltered = []
fileListFiltered = []
utclist = []
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 if not dirList:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("No directories found")
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 return []
Merge EW-Drifts
r1396 # if self.online:
Alexander Valdez
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
r598 # dirList= [dirList[-1]]
if self.online:
Alexander Valdez
filtro online para tomar datos solo del dia actual
r602 currentdate = datetime.datetime.now()
Merge EW-Drifts
r1396 strsplit1 = currentdate.strftime('%Y.%m.%d')
dirList = fnmatch.filter(dirList, strsplit1 + '*')
Alexander Valdez
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
r598
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 for thisDir in dirList:
if not os.path.isdir(os.path.join(path, thisDir)):
continue
Merge EW-Drifts
r1396 strsplit = thisDir.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()
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 if not self.online:
if (utctime > endsearch2):
continue
if (utctime < startsearch2):
continue
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 dirListFiltered.append(thisDir)
utclist.append(utctime)
if not dirListFiltered:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("filtro")
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 return []
for thisDir in dirListFiltered:
pathFile = os.path.join(self.path, thisDir)
fileList = os.listdir(pathFile)
if not fileList:
continue
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 for k in range(len(fileList)):
Merge EW-Drifts
r1396 thisFile = str(k) + '.mat'
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
if not os.path.isfile(os.path.join(pathFile, thisFile)):
continue
fileListFiltered.append(os.path.join(pathFile, thisFile))
return fileListFiltered
Merge EW-Drifts
r1396 def __getNextOnlineFile(self, seconds=40):
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
filename = self.__getNextOfflineFile()
if filename:
return filename
ncurrentfiles = len(self.fileList)
nTries = 0
while (True):
filelist = self.__findFiles(self.path)
if len(filelist) > ncurrentfiles:
break
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 nTries += 1
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 if nTries > 3:
break
Alexander Valdez
CIRI_online_version
r591
Merge EW-Drifts
r1396 print("Waiting %d seconds ..." % seconds)
Alexander Valdez
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
r598 time.sleep(40)
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
if not (len(filelist) > ncurrentfiles):
return None
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.fileList = filelist
filename = self.__getNextOfflineFile()
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 return filename
def __getNextOfflineFile(self):
if self.index >= len(self.fileList):
return None
Merge EW-Drifts
r1396 filename = self.fileList[self.index]
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.index += 1
return filename
def __getNextFile(self):
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 if self.online:
filename = self.__getNextOnlineFile()
else:
filename = self.__getNextOfflineFile()
return filename
Alexander Valdez
CIRI_online_version
r591
Merge EW-Drifts
r1396 def setup(self, path, startDate=None, endDate=None, startTime=datetime.time(0, 0, 0), endTime=datetime.time(23, 59, 59)):
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
fileList = self.__findFiles(path, startDate, endDate, startTime, endTime)
if self.online:
Merge EW-Drifts
r1396 self.index = len(fileList) - 1
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 else:
self.index = 0
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.fileList = fileList
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("fin setup")
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
Merge EW-Drifts
r1396 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
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.online = online
self.dataOut.flagNoData = True
Merge EW-Drifts
r1396 if (self.firsttime == True):
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.setup(path, startDate, endDate, startTime, endTime)
Merge EW-Drifts
r1396 self.firsttime = False
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
if not self.fileList:
self.dataOut.flagNoData = True
George Yong
Python 2to3, Spectra (all operations) working
r1167 print("lista vacia")
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 return
currentfile = self.__getNextFile()
if not currentfile:
"no file"
return
spc, cspc = self.__readFile(currentfile)
Merge EW-Drifts
r1396 if spc != None:
Alexander Valdez
CIRI_online_version
r591
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593 self.dataOut.data_spc = spc
self.dataOut.data_cspc = cspc
Alexander Valdez
CIRI_online_version
r591 self.dataOut.utctime = self.utcfirst
self.dataOut.flagNoData = False
Alexander Valdez
Programa de lectura de datos del Radar Ciri Huancayo
r593
return 1
Merge EW-Drifts
r1396