##// END OF EJS Templates
Add colormap parameter for spectra and RTI, create jro colormap, plot masked arrays
Add colormap parameter for spectra and RTI, create jro colormap, plot masked arrays

File last commit:

r645:5e8854988317
r858:8e7e7dc24b8f
Show More
jroIO_hf.py
867 lines | 26.2 KiB | text/x-python | PythonLexer
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 '''
Created on Jul 3, 2014
@author: roj-com0419
'''
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 import os,sys
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 import time,datetime
import h5py
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 import numpy
Alexander Valdez
ONLINE & SET IS READY
r552 import fnmatch
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 import re
Miguel Valdez
remove stuffr library from jroIO_hf.py
r645 from schainpy.model.data.jroheaderIO import RadarControllerHeader, SystemHeader
from schainpy.model.data.jrodata import Voltage
from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
Alexander Valdez
Ultima version de jrIO_hf.py
r547
def isNumber(str):
"""
Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
Excepciones:
Si un determinado string no puede ser convertido a numero
Input:
str, string al cual se le analiza para determinar si convertible a un numero o no
Return:
True : si el string es uno numerico
False : no es un string numerico
"""
try:
float( str )
return True
except:
return False
Alexander Valdez
last update
r615 def getFileFromSet(path, ext, set=None):
Alexander Valdez
Ultima version de jrIO_hf.py
r547 validFilelist = []
fileList = os.listdir(path)
Alexander Valdez
last update
r615
if len(fileList) < 1:
return None
Alexander Valdez
Ultima version de jrIO_hf.py
r547 # 0 1234 567 89A BCDE
# H YYYY DDD SSS .ext
for thisFile in fileList:
try:
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 number= int(thisFile[6:16])
Alexander Valdez
Ultima version de jrIO_hf.py
r547
# year = int(thisFile[1:5])
# doy = int(thisFile[5:8])
except:
continue
if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
continue
validFilelist.append(thisFile)
Alexander Valdez
last update
r615
if len(validFilelist) < 1:
return None
validFilelist = sorted( validFilelist, key=str.lower )
if set == None:
return validFilelist[-1]
print "set =" ,set
for thisFile in validFilelist:
if set <= int(thisFile[6:16]):
print thisFile,int(thisFile[6:16])
return thisFile
return validFilelist[-1]
myfile = fnmatch.filter(validFilelist,'*%10d*'%(set))
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
if len(myfile)!= 0:
return myfile[0]
else:
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 filename = '*%10.10d%s'%(set,ext.lower())
Alexander Valdez
Ultima version de jrIO_hf.py
r547 print 'the filename %s does not exist'%filename
print '...going to the last file: '
if validFilelist:
validFilelist = sorted( validFilelist, key=str.lower )
return validFilelist[-1]
return None
def getlastFileFromPath(path, ext):
"""
Depura el fileList dejando solo los que cumplan el formato de "res-xxxxxx.ext"
al final de la depuracion devuelve el ultimo file de la lista que quedo.
Input:
fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
ext : extension de los files contenidos en una carpeta
Return:
El ultimo file de una determinada carpeta, no se considera el path.
"""
validFilelist = []
fileList = os.listdir(path)
# 0 1234 567 89A BCDE
# H YYYY DDD SSS .ext
for thisFile in fileList:
try:
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 number= int(thisFile[6:16])
Alexander Valdez
Ultima version de jrIO_hf.py
r547 except:
print "There is a file or folder with different format"
if not isNumber(number):
continue
# year = thisFile[1:5]
# if not isNumber(year):
# continue
# doy = thisFile[5:8]
# if not isNumber(doy):
# continue
number= int(number)
# year = int(year)
# doy = int(doy)
if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
continue
validFilelist.append(thisFile)
if validFilelist:
validFilelist = sorted( validFilelist, key=str.lower )
return validFilelist[-1]
return None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
class HFReader(ProcessingUnit):
'''
classdocs
'''
path = None
startDate= None
endDate = None
startTime= None
endTime = None
walk = None
isConfig = False
dataOut=None
Alexander Valdez
Ultima version de jrIO_hf.py
r547 nTries = 3
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 ext = ".hdf5"
def __init__(self):
'''
Constructor
'''
ProcessingUnit.__init__(self)
self.isConfig =False
self.datablock = None
Alexander Valdez
ONLINE & SET IS READY
r552 self.filename_current=None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.utc = 0
self.ext='.hdf5'
self.flagIsNewFile = 1
#-------------------------------------------------
self.fileIndex=None
self.profileIndex_offset=None
self.filenameList=[]
self.hfFilePointer= None
Alexander Valdez
Ultima version de jrIO_hf.py
r547 self.filename_online = None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.status=True
self.flagNoMoreFiles= False
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
last update
r615 self.__waitForNewFile = 20
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
#--------------------------------------------------
self.dataOut = self.createObjByDefault()
def createObjByDefault(self):
dataObj = Voltage()
return dataObj
def setObjProperties(self):
pass
def getBlockDimension(self):
"""
Obtiene la cantidad de puntos a leer por cada bloque de datos
Affected:
self.blocksize
Return:
None
"""
pts2read =self.nChannels*self.nHeights*self.nProfiles
self.blocksize = pts2read
def __readHeader(self):
self.nProfiles = 100
self.nHeights = 1000
self.nChannels = 2
self.__firstHeigth=0
self.__nSamples=1000
self.__deltaHeigth=1.5
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 self.__sample_rate=1e5
Alexander Valdez
Correccion del Modo OnLine.
r551 #self.__frequency=2.72e6
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #self.__frequency=3.64e6
Alexander Valdez
Correccion del Modo OnLine.
r551 self.__frequency=None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__online = False
Alexander Valdez
ONLINE & SET IS READY
r552 self.filename_next_set=None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #print "Frequency of Operation:", self.__frequency
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
def __setParameters(self,path='', startDate='',endDate='',startTime='', endTime='', walk=''):
self.path = path
self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
self.walk = walk
def __checkPath(self):
if os.path.exists(self.path):
self.status=1
else:
self.status=0
print 'Path %s does not exits'%self.path
Alexander Valdez
Correccion del Modo OnLine.
r551 return
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 return
def __selDates(self, hf_dirname_format):
try:
dir_hf_filename= self.path+"/"+hf_dirname_format
fp= h5py.File(dir_hf_filename,'r')
hipoc=fp['t'].value
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 fp.close()
Miguel Valdez
remove stuffr library from jroIO_hf.py
r645 date_time=datetime.datetime.utcfromtimestamp(hipoc)
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 year =int(date_time[0:4])
month=int(date_time[5:7])
dom =int(date_time[8:10])
thisDate= datetime.date(year,month,dom)
if (thisDate>=self.startDate and thisDate <= self.endDate):
return hf_dirname_format
except:
return None
def __findDataForDates(self,online=False):
if not(self.status):
return None
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 pat = '\d+.\d+'
dirnameList = [re.search(pat,x) for x in os.listdir(self.path)]
dirnameList = filter(lambda x:x!=None,dirnameList)
dirnameList = [x.string for x in dirnameList]
Alexander Valdez
Ultima version de jrIO_hf.py
r547 if not(online):
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 dirnameList = [self.__selDates(x) for x in dirnameList]
dirnameList = filter(lambda x:x!=None,dirnameList)
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 if len(dirnameList)>0:
Alexander Valdez
Ultima version de jrIO_hf.py
r547 self.status = 1
self.dirnameList = dirnameList
self.dirnameList.sort()
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 else:
self.status = 0
return None
def __getTimeFromData(self):
startDateTime_Reader = datetime.datetime.combine(self.startDate,self.startTime)
endDateTime_Reader = datetime.datetime.combine(self.endDate,self.endTime)
print 'Filtering Files from %s to %s'%(startDateTime_Reader, endDateTime_Reader)
print '........................................'
filter_filenameList=[]
self.filenameList.sort()
for i in range(len(self.filenameList)-1):
filename=self.filenameList[i]
dir_hf_filename= filename
fp= h5py.File(dir_hf_filename,'r')
hipoc=fp['t'].value
Alexander Valdez
Ultima version de jrIO_hf.py
r547 hipoc=hipoc+self.timezone
Miguel Valdez
remove stuffr library from jroIO_hf.py
r645 date_time=datetime.datetime.utcfromtimestamp(hipoc)
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 fp.close()
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 year =int(date_time[0:4])
month=int(date_time[5:7])
dom =int(date_time[8:10])
hour =int(date_time[11:13])
min =int(date_time[14:16])
sec =int(date_time[17:19])
Alexander Valdez
Ultima version de jrIO_hf.py
r547 this_time=datetime.datetime(year,month,dom,hour,min,sec)
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 if (this_time>=startDateTime_Reader and this_time <= endDateTime_Reader):
filter_filenameList.append(filename)
filter_filenameList.sort()
self.filenameList = filter_filenameList
return 1
def __getFilenameList(self):
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #print "hola"
#print self.dirnameList
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 dirList = [os.path.join(self.path,x) for x in self.dirnameList]
Alexander Valdez
Correccion del Modo OnLine.
r551 self.filenameList= dirList
Alexander Valdez
ONLINE & SET IS READY
r552 #print self.filenameList
#print "pase",len(self.filenameList)
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
def __selectDataForTimes(self, online=False):
if not(self.status):
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 return None
Alexander Valdez
Correccion del Modo OnLine.
r551 #----------------
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__getFilenameList()
Alexander Valdez
Correccion del Modo OnLine.
r551 #----------------
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 if not(online):
if not(self.all):
self.__getTimeFromData()
if len(self.filenameList)>0:
self.status=1
self.filenameList.sort()
else:
self.status=0
return None
else:
Alexander Valdez
last update
r615 if self.set != None:
filename=getFileFromSet(self.path,self.ext,self.set)
Alexander Valdez
ONLINE & SET IS READY
r552 if self.flag_nextfile==True:
self.dirnameList=[filename]
fullfilename=self.path+"/"+filename
Alexander Valdez
last update
r615 self.filenameList=[fullfilename]
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 self.filename_next_set=int(filename[6:16])+10
Alexander Valdez
ONLINE & SET IS READY
r552
self.flag_nextfile=False
else:
Alexander Valdez
last update
r615 print filename
print "PRIMERA CONDICION"
#if self.filename_next_set== int(filename[6:16]):
print "TODO BIEN"
if filename == None:
raise ValueError, "corregir"
self.dirnameList=[filename]
fullfilename=self.path+"/"+filename
self.filenameList=[fullfilename]
self.filename_next_set=int(filename[6:16])+10
print "Setting next file",self.filename_next_set
self.set=int(filename[6:16])
if True:
pass
Alexander Valdez
ONLINE & SET IS READY
r552 else:
Alexander Valdez
last update
r615 print "ESTOY AQUI PORQUE NO EXISTE EL SIGUIENTE ARCHIVO"
Alexander Valdez
ONLINE & SET IS READY
r552
else:
Alexander Valdez
last update
r615 filename =getlastFileFromPath(self.path,self.ext)
if self.flag_nextfile==True:
Alexander Valdez
ONLINE & SET IS READY
r552 self.dirnameList=[filename]
fullfilename=self.path+"/"+filename
self.filenameList=[self.filenameList[-1]]
Alexander Valdez
last update
r615 self.filename_next_set=int(filename[6:16])+10
self.flag_nextfile=False
else:
filename=getFileFromSet(self.path,self.ext,self.set)
print filename
print "PRIMERA CONDICION"
#if self.filename_next_set== int(filename[6:16]):
print "TODO BIEN"
if filename == None:
raise ValueError, "corregir"
self.dirnameList=[filename]
fullfilename=self.path+"/"+filename
self.filenameList=[fullfilename]
self.filename_next_set=int(filename[6:16])+10
print "Setting next file",self.filename_next_set
self.set=int(filename[6:16])
if True:
pass
else:
print "ESTOY AQUI PORQUE NO EXISTE EL SIGUIENTE ARCHIVO"
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
def __searchFilesOffline(self,
path,
startDate,
endDate,
ext,
startTime=datetime.time(0,0,0),
endTime=datetime.time(23,59,59),
walk=True):
self.__setParameters(path, startDate, endDate, startTime, endTime, walk)
self.__checkPath()
self.__findDataForDates()
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #print self.dirnameList
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.__selectDataForTimes()
for i in range(len(self.filenameList)):
print "%s"% (self.filenameList[i])
return
def __searchFilesOnline(self,
path,
Alexander Valdez
Ultima version de jrIO_hf.py
r547 expLabel= "",
ext=None,
startDate=None,
endDate=None,
walk=True,
set=None):
Alexander Valdez
Correccion del Modo OnLine.
r551 startDate = datetime.datetime.utcnow().date()
endDate = datetime.datetime.utcnow().date()
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__setParameters(path=path,startDate=startDate,endDate=endDate,walk=walk)
Alexander Valdez
ONLINE & SET IS READY
r552
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__checkPath()
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
ONLINE & SET IS READY
r552 fullpath=path
print "%s folder was found: " %(fullpath )
if set == None:
self.set=None
filename =getlastFileFromPath(fullpath,ext)
startDate= datetime.datetime.utcnow().date
endDate= datetime.datetime.utcnow().date()
Alexander Valdez
Correccion del Modo OnLine.
r551 #
Alexander Valdez
ONLINE & SET IS READY
r552 else:
filename= getFileFromSet(fullpath,ext,set)
startDate=None
endDate=None
Alexander Valdez
Correccion del Modo OnLine.
r551 #
Alexander Valdez
ONLINE & SET IS READY
r552 if not (filename):
return None,None,None,None,None
#print "%s file was found" %(filename)
Alexander Valdez
Correccion del Modo OnLine.
r551 #
# dir_hf_filename= self.path+"/"+filename
# fp= h5py.File(dir_hf_filename,'r')
# hipoc=fp['t'].value
# fp.close()
Miguel Valdez
remove stuffr library from jroIO_hf.py
r645 # date_time=datetime.datetime.utcfromtimestamp(hipoc)
Alexander Valdez
Correccion del Modo OnLine.
r551 #
# year =int(date_time[0:4])
# month=int(date_time[5:7])
# dom =int(date_time[8:10])
# set= int(filename[4:10])
# self.set=set-1
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #self.dirnameList=[filename]
Alexander Valdez
ONLINE & SET IS READY
r552 filenameList= fullpath+"/"+filename
self.dirnameList=[filename]
self.filenameList=[filenameList]
self.flag_nextfile=True
#self.__findDataForDates(online=True)
#self.dirnameList=[self.dirnameList[-1]]
Alexander Valdez
Ultima version de jrIO_hf.py
r547 #print self.dirnameList
Alexander Valdez
ONLINE & SET IS READY
r552 #self.__selectDataForTimes(online=True)
Alexander Valdez
Correccion del Modo OnLine.
r551 #return fullpath,filename,year,month,dom,set
return
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
def __setNextFile(self,online=False):
"""
"""
if not(online):
newFile = self.__setNextFileOffline()
else:
newFile = self.__setNextFileOnline()
if not(newFile):
return 0
return 1
def __setNextFileOffline(self):
"""
"""
idFile= self.fileIndex
while(True):
idFile += 1
if not (idFile < len(self.filenameList)):
self.flagNoMoreFiles = 1
print "No more Files"
return 0
filename = self.filenameList[idFile]
hfFilePointer =h5py.File(filename,'r')
epoc=hfFilePointer['t'].value
#this_time=datetime.datetime(year,month,dom,hour,min,sec)
break
self.flagIsNewFile = 1
self.fileIndex = idFile
self.filename = filename
self.hfFilePointer = hfFilePointer
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 hfFilePointer.close()
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__t0=epoc
print "Setting the file: %s"%self.filename
return 1
def __setNextFileOnline(self):
"""
Alexander Valdez
ONLINE & SET IS READY
r552 """
Alexander Valdez
last update
r615 print "SOY NONE",self.set
Alexander Valdez
ONLINE & SET IS READY
r552 if self.set==None:
pass
else:
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 self.set +=10
Alexander Valdez
ONLINE & SET IS READY
r552
filename = self.filenameList[0]#fullfilename
Alexander Valdez
Ultima version de jrIO_hf.py
r547 if self.filename_online != None:
self.__selectDataForTimes(online=True)
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 filename = self.filenameList[0]
Alexander Valdez
Ultima version de jrIO_hf.py
r547 while self.filename_online == filename:
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 print 'waiting %d seconds to get a new file...'%(self.__waitForNewFile)
Alexander Valdez
last update
r615 time.sleep(self.__waitForNewFile)
Alexander Valdez
ONLINE & SET IS READY
r552 #self.__findDataForDates(online=True)
Alexander Valdez
last update
r615 self.set=self.filename_next_set
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__selectDataForTimes(online=True)
filename = self.filenameList[0]
Alexander Valdez
ONLINE & SET IS READY
r552 sizeoffile=os.path.getsize(filename)
#print filename
sizeoffile=os.path.getsize(filename)
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 if sizeoffile<1670240:
Alexander Valdez
ONLINE & SET IS READY
r552 print "%s is not the rigth size"%filename
Alexander Valdez
last update
r615 delay=50
Alexander Valdez
ONLINE & SET IS READY
r552 print 'waiting %d seconds for delay...'%(delay)
Alexander Valdez
last update
r615 time.sleep(delay)
sizeoffile=os.path.getsize(filename)
if sizeoffile<1670240:
delay=50
print 'waiting %d more seconds for delay...'%(delay)
time.sleep(delay)
Alexander Valdez
ONLINE & SET IS READY
r552 sizeoffile=os.path.getsize(filename)
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 if sizeoffile<1670240:
Alexander Valdez
last update
r615 delay=50
Alexander Valdez
ONLINE & SET IS READY
r552 print 'waiting %d more seconds for delay...'%(delay)
Alexander Valdez
last update
r615 time.sleep(delay)
Alexander Valdez
ONLINE & SET IS READY
r552
try:
hfFilePointer=h5py.File(filename,'r')
except:
print "Error reading file %s"%filename
Alexander Valdez
Ultima version de jrIO_hf.py
r547 self.filename_online=filename
epoc=hfFilePointer['t'].value
self.hfFilePointer=hfFilePointer
hfFilePointer.close()
self.__t0=epoc
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.flagIsNewFile = 1
self.filename = filename
print "Setting the file: %s"%self.filename
return 1
def __getExpParameters(self):
if not(self.status):
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 return None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
Alexander Valdez
Ultima version de jrIO_hf.py
r547 def setup(self,
path = None,
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 startDate = None,
endDate = None,
startTime = datetime.time(0,0,0),
endTime = datetime.time(23,59,59),
set = None,
expLabel = "",
ext = None,
all=0,
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 timezone=0,
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 online = False,
delay = 60,
walk = True):
'''
In this method we should set all initial parameters.
'''
Alexander Valdez
Ultima version de jrIO_hf.py
r547 if path==None:
raise ValueError,"The path is not valid"
if ext==None:
ext = self.ext
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.timezone= timezone
self.online= online
self.all=all
Alexander Valdez
ONLINE & SET IS READY
r552 #if set==None:
#print set
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 if not(online):
Alexander Valdez
Ultima version de jrIO_hf.py
r547 print "Searching files in offline mode..."
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.__searchFilesOffline(path, startDate, endDate, ext, startTime, endTime, walk)
else:
Alexander Valdez
Ultima version de jrIO_hf.py
r547 print "Searching files in online mode..."
Alexander Valdez
ONLINE & SET IS READY
r552 self.__searchFilesOnline(path, walk,ext,set=set)
if set==None:
pass
else:
Alexander Valdez
Cambio en la lectura de datos debido a la modificacion del formato, ahora en el archivo hdf5 se encuentra el hipoc
r557 self.set=set-10
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Correccion del Modo OnLine.
r551 # for nTries in range(self.nTries):
#
# fullpath,file,year,month,day,set = self.__searchFilesOnline(path=path,expLabel=expLabel,ext=ext, walk=walk,set=set)
#
# if fullpath:
# break
# print '\tWaiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
# time.sleep(self.delay)
# if not(fullpath):
# print "There ins't valid files in %s" % path
# return None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
Alexander Valdez
Ultima version de jrIO_hf.py
r547
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 if not(self.filenameList):
print "There is no files into the folder: %s"%(path)
sys.exit(-1)
self.__getExpParameters()
Alexander Valdez
ONLINE & SET IS READY
r552
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.fileIndex = -1
self.__setNextFile(online)
self.__readMetadata()
self.__setLocalVariables()
self.__setHeaderDO()
#self.profileIndex_offset= 0
#self.profileIndex = self.profileIndex_offset
self.isConfig = True
def __readMetadata(self):
self.__readHeader()
def __setLocalVariables(self):
self.datablock = numpy.zeros((self.nChannels, self.nHeights,self.nProfiles), dtype = numpy.complex)
#
self.profileIndex = 9999
def __setHeaderDO(self):
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.dataOut.radarControllerHeaderObj = RadarControllerHeader()
self.dataOut.systemHeaderObj = SystemHeader()
Alexander Valdez
Update realiado para añadir informacion al header,adicionalmente se h modificado el datatype el cual es ahora f4 en real e imaginario.
r555
#---------------------------------------------------------
self.dataOut.systemHeaderObj.nProfiles=100
self.dataOut.systemHeaderObj.nSamples=1000
SAMPLING_STRUCTURE=[('h0', '<f4'), ('dh', '<f4'), ('nsa', '<u4')]
self.dataOut.radarControllerHeaderObj.samplingWindow=numpy.zeros((1,),SAMPLING_STRUCTURE)
self.dataOut.radarControllerHeaderObj.samplingWindow['h0']=0
self.dataOut.radarControllerHeaderObj.samplingWindow['dh']=1.5
self.dataOut.radarControllerHeaderObj.samplingWindow['nsa']=1000
self.dataOut.radarControllerHeaderObj.nHeights=int(self.dataOut.radarControllerHeaderObj.samplingWindow['nsa'])
self.dataOut.radarControllerHeaderObj.firstHeight = self.dataOut.radarControllerHeaderObj.samplingWindow['h0']
self.dataOut.radarControllerHeaderObj.deltaHeight = self.dataOut.radarControllerHeaderObj.samplingWindow['dh']
self.dataOut.radarControllerHeaderObj.samplesWin = self.dataOut.radarControllerHeaderObj.samplingWindow['nsa']
self.dataOut.radarControllerHeaderObj.nWindows=1
self.dataOut.radarControllerHeaderObj.codetype=0
self.dataOut.radarControllerHeaderObj.numTaus=0
#self.dataOut.radarControllerHeaderObj.Taus = numpy.zeros((1,),'<f4')
#self.dataOut.radarControllerHeaderObj.nCode=numpy.zeros((1,), '<u4')
#self.dataOut.radarControllerHeaderObj.nBaud=numpy.zeros((1,), '<u4')
#self.dataOut.radarControllerHeaderObj.code=numpy.zeros(0)
self.dataOut.radarControllerHeaderObj.code_size=0
self.dataOut.nBaud=0
self.dataOut.nCode=0
self.dataOut.nPairs=0
#---------------------------------------------------------
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.dataOut.type = "Voltage"
self.dataOut.data = None
Alexander Valdez
Update realiado para añadir informacion al header,adicionalmente se h modificado el datatype el cual es ahora f4 en real e imaginario.
r555 self.dataOut.dtype = numpy.dtype([('real','<f4'),('imag','<f4')])
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.dataOut.nProfiles = 1
self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 self.dataOut.channelList = range(self.nChannels)
#self.dataOut.channelIndexList = None
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.dataOut.flagNoData = True
#Set to TRUE if the data is discontinuous
self.dataOut.flagDiscontinuousBlock = False
self.dataOut.utctime = None
Alexander Valdez
last update
r615 self.dataOut.timeZone = self.timezone
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.dataOut.dstFlag = 0
self.dataOut.errorCount = 0
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 self.dataOut.nCohInt = 1
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538
self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
self.dataOut.flagShiftFFT = False
self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
#Time interval between profiles
#self.dataOut.timeInterval =self.dataOut.ippSeconds * self.dataOut.nCohInt
self.dataOut.frequency = self.__frequency
self.dataOut.realtime = self.__online
def __hasNotDataInBuffer(self):
if self.profileIndex >= self.nProfiles:
return 1
return 0
def readNextBlock(self):
if not(self.__setNewBlock()):
return 0
if not(self.readBlock()):
return 0
return 1
def __setNewBlock(self):
if self.hfFilePointer==None:
return 0
if self.flagIsNewFile:
return 1
if self.profileIndex < self.nProfiles:
return 1
self.__setNextFile(self.online)
return 1
def readBlock(self):
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 fp=h5py.File(self.filename,'r')
#Puntero que apunta al archivo hdf5
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 ch0=(fp['ch0']).value #Primer canal (100,1000)--(perfiles,alturas)
ch1=(fp['ch1']).value #Segundo canal (100,1000)--(perfiles,alturas)
Alexander Valdez
Cerrado los archivos hdf5 y corrigiendo el range para acceder a los index de los canales
r541 fp.close()
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 ch0= ch0.swapaxes(0,1) #Primer canal (100,1000)--(alturas,perfiles)
ch1= ch1.swapaxes(0,1) #Segundo canal (100,1000)--(alturas,perfiles)
self.datablock = numpy.array([ch0,ch1])
self.flagIsNewFile=0
self.profileIndex=0
return 1
def getData(self):
if self.flagNoMoreFiles:
self.dataOut.flagNoData = True
print 'Process finished'
return 0
if self.__hasNotDataInBuffer():
if not(self.readNextBlock()):
self.dataOut.flagNodata=True
return 0
##############################
##############################
self.dataOut.data = self.datablock[:,:,self.profileIndex]
Alexander Valdez
last update
r615 self.dataOut.utctime = self.__t0 + self.dataOut.ippSeconds*self.profileIndex
Alexander Valdez
Lectura de datos-PROYECTO HF...
r538 self.dataOut.profileIndex= self.profileIndex
self.dataOut.flagNoData=False
self.profileIndex +=1
return self.dataOut.data
def run(self, **kwargs):
'''
This method will be called many times so here you should put all your code
'''
if not self.isConfig:
self.setup(**kwargs)
self.isConfig = True
self.getData()
Alexander Valdez
last update
r615