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