##// END OF EJS Templates
Fix searching files correctly in jroIO_base & Spectra shift
jespinoza -
r1270:8e736242aff9
parent child
Show More
@@ -591,25 +591,26 class Reader(object):
591 591 def setNextFile(self):
592 592 """Set the next file to be readed open it and parse de file header"""
593 593
594 if self.fp != None:
595 self.fp.close()
594 while True:
595 if self.fp != None:
596 self.fp.close()
596 597
597 if self.online:
598 newFile = self.setNextFileOnline()
599 else:
600 newFile = self.setNextFileOffline()
601
602 if not(newFile):
603 598 if self.online:
604 raise schainpy.admin.SchainError('Time to wait for new files reach')
599 newFile = self.setNextFileOnline()
605 600 else:
606 if self.fileIndex == -1:
607 raise schainpy.admin.SchainWarning('No files found in the given path')
601 newFile = self.setNextFileOffline()
602
603 if not(newFile):
604 if self.online:
605 raise schainpy.admin.SchainError('Time to wait for new files reach')
608 606 else:
609 raise schainpy.admin.SchainWarning('No more files to read')
610
611 if not(self.verifyFile(self.filename)):
612 self.setNextFile()
607 if self.fileIndex == -1:
608 raise schainpy.admin.SchainWarning('No files found in the given path')
609 else:
610 raise schainpy.admin.SchainWarning('No more files to read')
611
612 if self.verifyFile(self.filename):
613 break
613 614
614 615 log.log('Opening file: %s' % self.filename, self.name)
615 616
@@ -683,6 +684,15 class Reader(object):
683 684
684 685 return 1
685 686
687 @staticmethod
688 def isDateTimeInRange(dt, startDate, endDate, startTime, endTime):
689 """Check if the given datetime is in range"""
690
691 if startDate <= dt.date() <= endDate:
692 if startTime <= dt.time() <= endTime:
693 return True
694 return False
695
686 696 def verifyFile(self, filename):
687 697 """Check for a valid file
688 698
@@ -893,7 +903,8 class JRODataReader(Reader):
893 903 return 0
894 904
895 905 self.getBasicHeader()
896 if (self.dataOut.datatime < datetime.datetime.combine(self.startDate, self.startTime)) or (self.dataOut.datatime > datetime.datetime.combine(self.endDate, self.endTime)):
906
907 if not self.isDateTimeInRange(self.dataOut.datatime, self.startDate, self.endDate, self.startTime, self.endTime):
897 908 print("[Reading] Block No. %d/%d -> %s [Skipping]" % (self.nReadBlocks,
898 909 self.processingHeaderObj.dataBlocksPerFile,
899 910 self.dataOut.datatime.ctime()))
@@ -953,11 +964,8 class JRODataReader(Reader):
953 964 print("[Reading] File %s can't be opened" % (filename))
954 965
955 966 return False
956
957 currentPosition = fp.tell()
958 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
959
960 if neededSize == 0:
967
968 if self.waitDataBlock(0):
961 969 basicHeaderObj = BasicHeader(LOCALTIME)
962 970 systemHeaderObj = SystemHeader()
963 971 radarControllerHeaderObj = RadarControllerHeader()
@@ -977,22 +985,21 class JRODataReader(Reader):
977 985
978 986 if not(processingHeaderObj.read(fp)):
979 987 fp.close()
980 return False
981
982 neededSize = processingHeaderObj.blockSize + basicHeaderObj.size
983 else:
984 msg = "[Reading] Skipping the file %s due to it hasn't enough data" % filename
988 return False
989
990 if not self.online:
991 dt1 = basicHeaderObj.datatime
992 fp.seek(self.fileSize-processingHeaderObj.blockSize-24)
993 if not(basicHeaderObj.read(fp)):
994 fp.close()
995 return False
996 dt2 = basicHeaderObj.datatime
997 if not self.isDateTimeInRange(dt1, self.startDate, self.endDate, self.startTime, self.endTime) and not \
998 self.isDateTimeInRange(dt2, self.startDate, self.endDate, self.startTime, self.endTime):
999 return False
985 1000
986 1001 fp.close()
987
988 fileSize = os.path.getsize(filename)
989 currentSize = fileSize - currentPosition
990
991 if currentSize < neededSize:
992 if msgFlag and (msg != None):
993 print(msg)
994 return False
995
1002
996 1003 return True
997 1004
998 1005 def findDatafiles(self, path, startDate=None, endDate=None, expLabel='', ext='.r', walk=True, include_path=False):
@@ -211,11 +211,11 class InputQueue(Thread):
211 211
212 212 def get(self):
213 213
214 if not self.islocked and self.size/1000000 > 512:
214 if not self.islocked and self.size/1000000 > 1024:
215 215 self.lock.n.value += 1
216 216 self.islocked = True
217 217 self.lock.clear()
218 elif self.islocked and self.size/1000000 <= 512:
218 elif self.islocked and self.size/1000000 <= 1024:
219 219 self.islocked = False
220 220 self.lock.n.value -= 1
221 221 if self.lock.n.value == 0:
@@ -117,7 +117,7 class SpectraProc(ProcessingUnit):
117 117 self.dataOut.data_cspc = cspc
118 118 self.dataOut.data_dc = dc
119 119 self.dataOut.blockSize = blocksize
120 self.dataOut.flagShiftFFT = True
120 self.dataOut.flagShiftFFT = False
121 121
122 122 def run(self, nProfiles=None, nFFTPoints=None, pairsList=[], ippFactor=None, shift_fft=False):
123 123
General Comments 0
You need to be logged in to leave comments. Login now