##// 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,10 +187,10 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.
@@ -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,44 +372,33 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
382
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
378
390 self.set += 1
379 self.set += 1
391
380
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
381 #busca el 1er file disponible
401 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
382 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
402 if file:
383 if file:
403 if self.__verifyFile(file, False):
384 if self.__verifyFile(file, False):
404 fileOk_flag = True
385 fileOk_flag = True
405
386
387 #si no encuentra un file entonces espera y vuelve a buscar
406 if not(fileOk_flag):
388 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
389 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
408 print "\tSearching next \"%s\" file ..." % ( filename )
390
409 continue
391 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
410 else: #si es la primera vez que busca el file entonces espera self.nTries veces hasta encontrarlo o no
392 tries = self.nTries
411 for nTries in range( 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 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 )
400 else:
401 print "\tSearching next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
414
402
415 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
403 file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext )
416 if file:
404 if file:
@@ -418,15 +406,17 class JRODataReader(DataReader):
418 fileOk_flag = True
406 fileOk_flag = True
419 break
407 break
420
408
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:
409 if fileOk_flag:
426 break
410 break
427
411
428 print "Skipping the file \"%s\" due to this files is empty" % filename
412 firstTime_flag = False
429 countFiles = 0
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
430
420
431 if fileOk_flag:
421 if fileOk_flag:
432 self.fileSize = os.path.getsize( file )
422 self.fileSize = os.path.getsize( 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
@@ -650,9 +637,14 class JRODataReader(DataReader):
650 thisDateTime += datetime.timedelta(1)
637 thisDateTime += datetime.timedelta(1)
651
638
652 if not(pathList):
639 if not(pathList):
640 print "\tNo files in range: %s - %s" %(startDateTime.ctime(), endDateTime.ctime())
653 return None, None, None, None, None
641 return None, None, None, None, None
654
642
655 directory = pathList[-1]
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