##// END OF EJS Templates
DataIO.py:...
Victor Sarmiento -
r64:7dec98dc70b9
parent child
Show More
@@ -143,7 +143,6 def getlastFileFromPath(path, ext):
143 Return:
143 Return:
144 El ultimo file de una determinada carpeta, no se considera el path.
144 El ultimo file de una determinada carpeta, no se considera el path.
145 """
145 """
146
147 validFilelist = []
146 validFilelist = []
148 fileList = os.listdir(path)
147 fileList = os.listdir(path)
149
148
@@ -188,11 +187,11 class JRODataReader(DataReader):
188 jicamarca o pdata (.r o .pdata). La lectura de los datos siempre se realiza por bloques. Los datos
187 jicamarca o pdata (.r o .pdata). La lectura de los datos siempre se realiza por bloques. Los datos
189 leidos son array de 3 dimensiones:
188 leidos son array de 3 dimensiones:
190
189
191 Voltajes - perfiles * alturas * canales
190 Para Voltajes - perfiles * alturas * canales
192
191
193 Spectra - pares * alturas * perfiles (Self Spectra)
192 Para Spectra - paresCanalesIguales * alturas * perfiles (Self Spectra)
194 canales * alturas * perfiles (Cross Spectra)
193 paresCanalesDiferentes * alturas * perfiles (Cross Spectra)
195 canales * alturas (DC Channels)
194 canales * alturas (DC Channels)
196
195
197 y son almacenados en su buffer respectivo.
196 y son almacenados en su buffer respectivo.
198
197
@@ -238,7 +237,7 class JRODataReader(DataReader):
238
237
239 path = None
238 path = None
240
239
241 delay = 7 #seconds
240 delay = 3 #seconds
242
241
243 nTries = 3 #quantity tries
242 nTries = 3 #quantity tries
244
243
@@ -373,61 +372,52 class JRODataReader(DataReader):
373 Excepciones:
372 Excepciones:
374 Si un determinado file no puede ser abierto
373 Si un determinado file no puede ser abierto
375 """
374 """
376 countFiles = 0
375 nFiles = 0
377 countTries = 0
378
379 notFirstTime_flag = False
380 fileOk_flag = False
376 fileOk_flag = False
381 self.flagIsNewFile = 0
377 firstTime_flag = True
378
379 self.set += 1
382
380
383 while( True ): #este loop permite llevar la cuenta de intentos, de files y carpetas,
381 #busca el 1er file disponible
384 #si no encuentra alguno sale del bucle
382 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
385 countFiles += 1
383 if file:
386
384 if self.__verifyFile(file, False):
387 if countFiles > (self.nFiles + 1):
385 fileOk_flag = True
388 break
386
389
387 #si no encuentra un file entonces espera y vuelve a buscar
390 self.set += 1
388 if not(fileOk_flag):
391
389 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
392 if countFiles > self.nFiles: #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
390
393 self.set = 0
391 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
394 self.doy += 1
392 tries = self.nTries
395
393 else:
396 file = None
394 tries = 1 #si no es la 1era vez entonces solo lo hace una vez
397 filename = None
395
398 fileOk_flag = False
396 for nTries in range( tries ):
399
397 if firstTime_flag:
400 #busca el 1er file disponible
401 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
402 if file:
403 if self.__verifyFile(file, False):
404 fileOk_flag = True
405
406 if not(fileOk_flag):
407 if notFirstTime_flag: #si no es la primera vez que busca el file entonces no espera y busca for el siguiente file
408 print "\tSearching next \"%s\" file ..." % ( filename )
409 continue
410 else: #si es la primera vez que busca el file entonces espera self.nTries veces hasta encontrarlo o no
411 for nTries in range( self.nTries ):
412 print "\tWaiting %0.2f sec for new \"%s\" file, try %03d ..." % ( self.delay, filename, nTries+1 )
398 print "\tWaiting %0.2f sec for new \"%s\" file, try %03d ..." % ( self.delay, filename, nTries+1 )
413 time.sleep( self.delay )
399 time.sleep( self.delay )
414
400 else:
415 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
401 print "\tSearching next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
416 if file:
402
417 if self.__verifyFile(file):
403 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
418 fileOk_flag = True
404 if file:
419 break
405 if self.__verifyFile(file):
420
406 fileOk_flag = True
421 if not( fileOk_flag ): #no encontro ningun file valido a leer despues de haber esperado alguno
407 break
422 notFirstTime_flag = True
408
423 continue
409 if fileOk_flag:
424
410 break
425 if fileOk_flag:
411
426 break
412 firstTime_flag = False
413
414 print "\tSkipping the file \"%s\" due to this file doesn't exist yet" % filename
415 self.set += 1
416
417 if nFiles == (self.nFiles-1): #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
418 self.set = 0
419 self.doy += 1
427
420
428 print "Skipping the file \"%s\" due to this files is empty" % filename
429 countFiles = 0
430
431 if fileOk_flag:
421 if fileOk_flag:
432 self.fileSize = os.path.getsize( file )
422 self.fileSize = os.path.getsize( file )
433 self.filename = file
423 self.filename = file
@@ -439,6 +429,7 class JRODataReader(DataReader):
439 else:
429 else:
440 self.fileSize = 0
430 self.fileSize = 0
441 self.filename = None
431 self.filename = None
432 self.flagIsNewFile = 0
442 self.fp = None
433 self.fp = None
443 self.flagNoMoreFiles = 1
434 self.flagNoMoreFiles = 1
444 print 'No more Files'
435 print 'No more Files'
@@ -616,13 +607,10 class JRODataReader(DataReader):
616 filename : el ultimo file de una determinada carpeta
607 filename : el ultimo file de una determinada carpeta
617 directory : eL directorio donde esta el file encontrado
608 directory : eL directorio donde esta el file encontrado
618 """
609 """
619
620 pathList = os.listdir(path)
621
622 if not(pathList):
623 return None, None, None, None, None
624
625 dirList = []
610 dirList = []
611 pathList = []
612 directory = None
613
626 for thisPath in os.listdir(path):
614 for thisPath in os.listdir(path):
627 if os.path.isdir(os.path.join(path,thisPath)):
615 if os.path.isdir(os.path.join(path,thisPath)):
628 dirList.append(thisPath)
616 dirList.append(thisPath)
@@ -630,10 +618,9 class JRODataReader(DataReader):
630 if not(dirList):
618 if not(dirList):
631 return None, None, None, None, None
619 return None, None, None, None, None
632
620
633 pathList = dirList
621 dirList = sorted( dirList, key=str.lower )
634
622
635 if startDateTime != None:
623 if startDateTime:
636 pathList = []
637 thisDateTime = startDateTime
624 thisDateTime = startDateTime
638 if endDateTime == None: endDateTime = startDateTime
625 if endDateTime == None: endDateTime = startDateTime
639
626
@@ -648,11 +635,16 class JRODataReader(DataReader):
648
635
649 pathList.append(os.path.join(path,match[0], expLabel))
636 pathList.append(os.path.join(path,match[0], expLabel))
650 thisDateTime += datetime.timedelta(1)
637 thisDateTime += datetime.timedelta(1)
651
652 if not(pathList):
653 return None, None, None, None, None
654
638
655 directory = pathList[-1]
639 if not(pathList):
640 print "\tNo files in range: %s - %s" %(startDateTime.ctime(), endDateTime.ctime())
641 return None, None, None, None, None
642
643 directory = pathList[0]
644
645 else:
646 directory = dirList[-1]
647 directory = os.path.join(path,directory)
656
648
657 filename = getlastFileFromPath(directory, ext)
649 filename = getlastFileFromPath(directory, ext)
658
650
@@ -784,16 +776,16 class JRODataReader(DataReader):
784 print "The file %s can't be opened" % (filename)
776 print "The file %s can't be opened" % (filename)
785
777
786 try:
778 try:
787 m_BasicHeader.read(fp)
779 if not( m_BasicHeader.read(fp) ): raise ValueError
788 m_SystemHeader.read(fp)
780 if not( m_SystemHeader.read(fp) ): raise ValueError
789 m_RadarControllerHeader.read(fp)
781 if not( m_RadarControllerHeader.read(fp) ): raise ValueError
790 m_ProcessingHeader.read(fp)
782 if not( m_ProcessingHeader.read(fp) ): raise ValueError
791 data_type = int(numpy.log2((m_ProcessingHeader.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
783 data_type = int(numpy.log2((m_ProcessingHeader.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
792 if m_BasicHeader.size > self.basicHeaderSize:
784 if m_BasicHeader.size > self.basicHeaderSize:
793 flagFileOK = True
785 flagFileOK = True
794 except:
786 except:
795 if msgFlag:
787 if msgFlag:
796 print "The file %s is empty or it hasn't enough data" % filename
788 print "\tThe file %s is empty or it hasn't enough data" % filename
797
789
798 fp.close()
790 fp.close()
799
791
@@ -803,7 +795,7 class JRODataReader(DataReader):
803 return 1
795 return 1
804
796
805
797
806 def setup(self, path, startDateTime, endDateTime=None, set=0, expLabel = "", ext = None, online = 0):
798 def setup(self, path, startDateTime=None, endDateTime=None, set=0, expLabel = "", ext = None, online = 0):
807 """
799 """
808 setup configura los parametros de lectura de la clase DataReader.
800 setup configura los parametros de lectura de la clase DataReader.
809
801
@@ -856,7 +848,7 class JRODataReader(DataReader):
856
848
857 if not(doypath):
849 if not(doypath):
858 for nTries in range( self.nTries ):
850 for nTries in range( self.nTries ):
859 print '\twaiting %0.2f sec for valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
851 print '\tWaiting %0.2f sec for valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
860 time.sleep( self.delay )
852 time.sleep( self.delay )
861 doypath, file, year, doy, set = self.__searchFilesOnLine(path, startDateTime, endDateTime, expLabel, ext)
853 doypath, file, year, doy, set = self.__searchFilesOnLine(path, startDateTime, endDateTime, expLabel, ext)
862 if doypath:
854 if doypath:
General Comments 0
You need to be logged in to leave comments. Login now