@@ -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 |
|
|
|
190 | Para Voltajes - perfiles * alturas * canales | |
|
192 | 191 | |
|
193 |
|
|
|
194 |
|
|
|
195 |
|
|
|
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 = |
|
|
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 |
|
|
|
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. |
|
|
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 |
|
|
|
416 |
|
|
|
417 | if self.__verifyFile(file): | |
|
418 |
|
|
|
419 |
|
|
|
420 | ||
|
421 | if not( fileOk_flag ): #no encontro ningun file valido a leer despues de haber esperado alguno | |
|
422 | notFirstTime_flag = True | |
|
423 |
|
|
|
424 | ||
|
425 | if fileOk_flag: | |
|
426 |
|
|
|
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 |
|
|
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 '\t |
|
|
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