##// END OF EJS Templates
Modificaciones para operacion en tiempo real: lectura de archivos, titulo de graficos, timeinterval
Daniel Valdez -
r389:bb39554baf19
parent child
Show More
@@ -124,6 +124,43 def isFileinThisTime(filename, startTime, endTime):
124 124
125 125 return thisDatetime
126 126
127 def getFileFromSet(path,ext,set):
128 validFilelist = []
129 fileList = os.listdir(path)
130
131 # 0 1234 567 89A BCDE
132 # H YYYY DDD SSS .ext
133
134 for file in fileList:
135 try:
136 year = int(file[1:5])
137 doy = int(file[5:8])
138
139
140 except:
141 continue
142
143 if (os.path.splitext(file)[-1].lower() != ext.lower()):
144 continue
145
146 validFilelist.append(file)
147
148 myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
149
150 if len(myfile)!= 0:
151 return myfile[0]
152 else:
153 filename = '*%4.4d%3.3d%3.3d%s'%(year,doy,set,ext.lower())
154 print 'the filename %s does not exist'%filename
155 print '...going to the last file: '
156
157 if validFilelist:
158 validFilelist = sorted( validFilelist, key=str.lower )
159 return validFilelist[-1]
160
161 return None
162
163
127 164 def getlastFileFromPath(path, ext):
128 165 """
129 166 Depura el fileList dejando solo los que cumplan el formato de "PYYYYDDDSSS.ext"
@@ -439,7 +476,7 class JRODataReader(JRODataIO, ProcessingUnit):
439 476
440 477 return pathList, filenameList
441 478
442 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True):
479 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True, set=None):
443 480
444 481 """
445 482 Busca el ultimo archivo de la ultima carpeta (determinada o no por startDateTime) y
@@ -467,7 +504,7 class JRODataReader(JRODataIO, ProcessingUnit):
467 504
468 505 if not walk:
469 506 fullpath = path
470 foldercounter = ''
507 foldercounter = 0
471 508 else:
472 509 #Filtra solo los directorios
473 510 for thisPath in os.listdir(path):
@@ -490,15 +527,18 class JRODataReader(JRODataIO, ProcessingUnit):
490 527
491 528 print "%s folder was found: " %(fullpath )
492 529
493 filename = getlastFileFromPath(fullpath, ext)
530 if set == None:
531 filename = getlastFileFromPath(fullpath, ext)
532 else:
533 filename = getFileFromSet(fullpath, ext, set)
494 534
495 535 if not(filename):
496 return None, None, None, None, None
536 return None, None, None, None, None, None
497 537
498 538 print "%s file was found" %(filename)
499 539
500 540 if not(self.__verifyFile(os.path.join(fullpath, filename))):
501 return None, None, None, None, None
541 return None, None, None, None, None, None
502 542
503 543 year = int( filename[1:5] )
504 544 doy = int( filename[5:8] )
@@ -672,6 +712,10 class JRODataReader(JRODataIO, ProcessingUnit):
672 712 self.__rdBasicHeader()
673 713 return 1
674 714
715 if self.fileSize == self.fileSizeByHeader:
716 # self.flagEoF = True
717 return 0
718
675 719 print "\tWaiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
676 720 time.sleep( self.delay )
677 721
@@ -684,18 +728,29 class JRODataReader(JRODataIO, ProcessingUnit):
684 728 return
685 729
686 730 csize = self.fileSize - self.fp.tell()
731 blocksize = self.processingHeaderObj.blockSize
687 732
688 #sata el primer bloque de datos
733 #salta el primer bloque de datos
689 734 if csize > self.processingHeaderObj.blockSize:
690 self.fp.seek(self.fp.tell() + self.processingHeaderObj.blockSize)
735 self.fp.seek(self.fp.tell() + blocksize)
691 736 else:
692 737 return
693 738
694 739 csize = self.fileSize - self.fp.tell()
695 740 neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
696 factor = int(csize/neededsize)
697 if factor > 0:
698 self.fp.seek(self.fp.tell() + factor*neededsize)
741 while True:
742
743 if self.fp.tell()<self.fileSize:
744 self.fp.seek(self.fp.tell() + neededsize)
745 else:
746 self.fp.seek(self.fp.tell() - neededsize)
747 break
748
749 # csize = self.fileSize - self.fp.tell()
750 # neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
751 # factor = int(csize/neededsize)
752 # if factor > 0:
753 # self.fp.seek(self.fp.tell() + factor*neededsize)
699 754
700 755 self.flagIsNewFile = 0
701 756 self.__isFirstTimeOnline = 0
@@ -854,7 +909,7 class JRODataReader(JRODataIO, ProcessingUnit):
854 909 endDate=None,
855 910 startTime=datetime.time(0,0,0),
856 911 endTime=datetime.time(23,59,59),
857 set=0,
912 set=None,
858 913 expLabel = "",
859 914 ext = None,
860 915 online = False,
@@ -871,7 +926,7 class JRODataReader(JRODataIO, ProcessingUnit):
871 926 print "Searching files in online mode..."
872 927
873 928 for nTries in range( self.nTries ):
874 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk)
929 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
875 930
876 931 if fullpath:
877 932 break
@@ -291,8 +291,9 class RTIPlot(Figure):
291 291 avgdB = 10.*numpy.log10(avg)
292 292
293 293
294 thisDatetime = dataOut.datatime
295 title = "RTI: %s" %(thisDatetime.strftime("%d-%b-%Y"))
294 # thisDatetime = dataOut.datatime
295 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[1])
296 title = wintitle+' ' + "RTI: %s" %(thisDatetime.strftime("%d-%b-%Y"))
296 297 xlabel = ""
297 298 ylabel = "Range (Km)"
298 299
@@ -505,7 +506,7 class SpectraPlot(Figure):
505 506 date = thisDatetime.strftime("%Y%m%d_%H%M%S")
506 507 if figfile == None:
507 508 figfile = self.getFilename(name = date)
508
509
509 510 self.saveFigure(figpath, figfile)
510 511
511 512 class Scope(Figure):
@@ -1213,8 +1213,11 class IncohInt(Operation):
1213 1213 return None, None, None, None
1214 1214
1215 1215 avgdatatime = self.__initime
1216 self.__timeInterval = (self.__lastdatatime - self.__initime)/(self.n - 1)
1217
1216 try:
1217 self.__timeInterval = (self.__lastdatatime - self.__initime)/(self.n - 1)
1218 except:
1219 self.__timeInterval = self.__lastdatatime - self.__initime
1220
1218 1221 deltatime = datatime -self.__lastdatatime
1219 1222
1220 1223 if not self.__withOverapping:
General Comments 0
You need to be logged in to leave comments. Login now