@@ -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 |
|
|
190 | Para Voltajes - perfiles * alturas * canales | |
192 |
|
191 | |||
193 |
|
|
192 | Para Spectra - paresCanalesIguales * alturas * perfiles (Self Spectra) | |
194 |
|
|
193 | paresCanalesDiferentes * alturas * perfiles (Cross Spectra) | |
195 |
|
|
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 = |
|
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 |
|
|
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 |
|
|
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 |
|
|
381 | #busca el 1er file disponible | |
401 |
|
|
382 | file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext ) | |
402 |
|
|
383 | if file: | |
403 |
|
|
384 | if self.__verifyFile(file, False): | |
404 |
|
|
385 | fileOk_flag = True | |
405 |
|
386 | |||
|
387 | #si no encuentra un file entonces espera y vuelve a buscar | |||
406 |
|
|
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 |
|
|
403 | file, filename = checkForRealPath( self.path, self.year, self.doy, self.set, self.ext ) | |
416 |
|
|
404 | if file: | |
@@ -418,15 +406,17 class JRODataReader(DataReader): | |||||
418 |
|
|
406 | fileOk_flag = True | |
419 |
|
|
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 |
|
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[ |
|
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 '\t |
|
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