|
@@
-384,7
+384,7
def isRadarFolder(folder):
|
|
384
|
|
|
384
|
|
|
385
|
|
|
385
|
|
|
386
|
def isRadarFile(file):
|
|
386
|
def isRadarFile(file):
|
|
387
|
try:
|
|
387
|
try:
|
|
388
|
year = int(file[1:5])
|
|
388
|
year = int(file[1:5])
|
|
389
|
doy = int(file[5:8])
|
|
389
|
doy = int(file[5:8])
|
|
390
|
set = int(file[8:11])
|
|
390
|
set = int(file[8:11])
|
|
@@
-395,10
+395,10
def isRadarFile(file):
|
|
395
|
|
|
395
|
|
|
396
|
|
|
396
|
|
|
397
|
def getDateFromRadarFile(file):
|
|
397
|
def getDateFromRadarFile(file):
|
|
398
|
try:
|
|
398
|
try:
|
|
399
|
year = int(file[1:5])
|
|
399
|
year = int(file[1:5])
|
|
400
|
doy = int(file[5:8])
|
|
400
|
doy = int(file[5:8])
|
|
401
|
set = int(file[8:11])
|
|
401
|
set = int(file[8:11])
|
|
402
|
except:
|
|
402
|
except:
|
|
403
|
return None
|
|
403
|
return None
|
|
404
|
|
|
404
|
|
|
@@
-417,7
+417,7
def getDateFromRadarFolder(folder):
|
|
417
|
return thisDate
|
|
417
|
return thisDate
|
|
418
|
|
|
418
|
|
|
419
|
def parse_format(s, fmt):
|
|
419
|
def parse_format(s, fmt):
|
|
420
|
|
|
420
|
|
|
421
|
for i in range(fmt.count('%')):
|
|
421
|
for i in range(fmt.count('%')):
|
|
422
|
x = fmt.index('%')
|
|
422
|
x = fmt.index('%')
|
|
423
|
d = DT_DIRECTIVES[fmt[x:x+2]]
|
|
423
|
d = DT_DIRECTIVES[fmt[x:x+2]]
|
|
@@
-484,7
+484,7
class Reader(object):
|
|
484
|
|
|
484
|
|
|
485
|
def run(self):
|
|
485
|
def run(self):
|
|
486
|
|
|
486
|
|
|
487
|
raise NotImplementedError
|
|
487
|
raise NotImplementedError
|
|
488
|
|
|
488
|
|
|
489
|
def getAllowedArgs(self):
|
|
489
|
def getAllowedArgs(self):
|
|
490
|
if hasattr(self, '__attrs__'):
|
|
490
|
if hasattr(self, '__attrs__'):
|
|
@@
-496,19
+496,19
class Reader(object):
|
|
496
|
|
|
496
|
|
|
497
|
for key, value in kwargs.items():
|
|
497
|
for key, value in kwargs.items():
|
|
498
|
setattr(self, key, value)
|
|
498
|
setattr(self, key, value)
|
|
499
|
|
|
499
|
|
|
500
|
def find_folders(self, path, startDate, endDate, folderfmt, last=False):
|
|
500
|
def find_folders(self, path, startDate, endDate, folderfmt, last=False):
|
|
501
|
|
|
501
|
|
|
502
|
folders = [x for f in path.split(',')
|
|
502
|
folders = [x for f in path.split(',')
|
|
503
|
for x in os.listdir(f) if os.path.isdir(os.path.join(f, x))]
|
|
503
|
for x in os.listdir(f) if os.path.isdir(os.path.join(f, x))]
|
|
504
|
folders.sort()
|
|
504
|
folders.sort()
|
|
505
|
|
|
505
|
|
|
506
|
if last:
|
|
506
|
if last:
|
|
507
|
folders = [folders[-1]]
|
|
507
|
folders = [folders[-1]]
|
|
508
|
|
|
508
|
|
|
509
|
for folder in folders:
|
|
509
|
for folder in folders:
|
|
510
|
try:
|
|
510
|
try:
|
|
511
|
dt = datetime.datetime.strptime(parse_format(folder, folderfmt), folderfmt).date()
|
|
511
|
dt = datetime.datetime.strptime(parse_format(folder, folderfmt), folderfmt).date()
|
|
512
|
if dt >= startDate and dt <= endDate:
|
|
512
|
if dt >= startDate and dt <= endDate:
|
|
513
|
yield os.path.join(path, folder)
|
|
513
|
yield os.path.join(path, folder)
|
|
514
|
else:
|
|
514
|
else:
|
|
@@
-517,38
+517,37
class Reader(object):
|
|
517
|
log.log('Skiping folder {}'.format(folder), self.name)
|
|
517
|
log.log('Skiping folder {}'.format(folder), self.name)
|
|
518
|
continue
|
|
518
|
continue
|
|
519
|
return
|
|
519
|
return
|
|
520
|
|
|
520
|
|
|
521
|
def find_files(self, folders, ext, filefmt, startDate=None, endDate=None,
|
|
521
|
def find_files(self, folders, ext, filefmt, startDate=None, endDate=None,
|
|
522
|
expLabel='', last=False):
|
|
522
|
expLabel='', last=False):
|
|
523
|
|
|
523
|
for path in folders:
|
|
524
|
for path in folders:
|
|
524
|
files = glob.glob1(path+'/'+expLabel, '*{}'.format(ext))
|
|
525
|
files = glob.glob1(path, '*{}'.format(ext))
|
|
|
|
|
526
|
files.sort()
|
|
525
|
files.sort()
|
|
527
|
if last:
|
|
526
|
if last:
|
|
528
|
if files:
|
|
527
|
if files:
|
|
529
|
fo = files[-1]
|
|
528
|
fo = files[-1]
|
|
530
|
try:
|
|
529
|
try:
|
|
531
|
dt = datetime.datetime.strptime(parse_format(fo, filefmt), filefmt).date()
|
|
530
|
dt = datetime.datetime.strptime(parse_format(fo, filefmt), filefmt).date()
|
|
532
|
yield os.path.join(path, expLabel, fo)
|
|
531
|
yield os.path.join(path, expLabel, fo)
|
|
533
|
except Exception as e:
|
|
532
|
except Exception as e:
|
|
534
|
pass
|
|
533
|
pass
|
|
535
|
return
|
|
534
|
return
|
|
536
|
else:
|
|
535
|
else:
|
|
537
|
return
|
|
536
|
return
|
|
538
|
|
|
537
|
|
|
539
|
for fo in files:
|
|
538
|
for fo in files:
|
|
540
|
try:
|
|
539
|
try:
|
|
541
|
dt = datetime.datetime.strptime(parse_format(fo, filefmt), filefmt).date()
|
|
540
|
dt = datetime.datetime.strptime(parse_format(fo, filefmt), filefmt).date()
|
|
542
|
if dt >= startDate and dt <= endDate:
|
|
541
|
if dt >= startDate and dt <= endDate:
|
|
543
|
yield os.path.join(path, expLabel, fo)
|
|
542
|
yield os.path.join(path, expLabel, fo)
|
|
544
|
else:
|
|
543
|
else:
|
|
545
|
log.log('Skiping file {}'.format(fo), self.name)
|
|
544
|
log.log('Skiping file {}'.format(fo), self.name)
|
|
546
|
except Exception as e:
|
|
545
|
except Exception as e:
|
|
547
|
log.log('Skiping file {}'.format(fo), self.name)
|
|
546
|
log.log('Skiping file {}'.format(fo), self.name)
|
|
548
|
continue
|
|
547
|
continue
|
|
549
|
|
|
548
|
|
|
550
|
def searchFilesOffLine(self, path, startDate, endDate,
|
|
549
|
def searchFilesOffLine(self, path, startDate, endDate,
|
|
551
|
expLabel, ext, walk,
|
|
550
|
expLabel, ext, walk,
|
|
552
|
filefmt, folderfmt):
|
|
551
|
filefmt, folderfmt):
|
|
553
|
"""Search files in offline mode for the given arguments
|
|
552
|
"""Search files in offline mode for the given arguments
|
|
554
|
|
|
553
|
|
|
@@
-563,10
+562,10
class Reader(object):
|
|
563
|
folders = path.split(',')
|
|
562
|
folders = path.split(',')
|
|
564
|
|
|
563
|
|
|
565
|
return self.find_files(
|
|
564
|
return self.find_files(
|
|
566
|
folders, ext, filefmt, startDate, endDate, expLabel)
|
|
565
|
folders, ext, filefmt, startDate, endDate, expLabel)
|
|
567
|
|
|
566
|
|
|
568
|
def searchFilesOnLine(self, path, startDate, endDate,
|
|
567
|
def searchFilesOnLine(self, path, startDate, endDate,
|
|
569
|
expLabel, ext, walk,
|
|
568
|
expLabel, ext, walk,
|
|
570
|
filefmt, folderfmt):
|
|
569
|
filefmt, folderfmt):
|
|
571
|
"""Search for the last file of the last folder
|
|
570
|
"""Search for the last file of the last folder
|
|
572
|
|
|
571
|
|
|
@@
-579,13
+578,13
class Reader(object):
|
|
579
|
Return:
|
|
578
|
Return:
|
|
580
|
generator with the full path of last filename
|
|
579
|
generator with the full path of last filename
|
|
581
|
"""
|
|
580
|
"""
|
|
582
|
|
|
581
|
|
|
583
|
if walk:
|
|
582
|
if walk:
|
|
584
|
folders = self.find_folders(
|
|
583
|
folders = self.find_folders(
|
|
585
|
path, startDate, endDate, folderfmt, last=True)
|
|
584
|
path, startDate, endDate, folderfmt, last=True)
|
|
586
|
else:
|
|
585
|
else:
|
|
587
|
folders = path.split(',')
|
|
586
|
folders = path.split(',')
|
|
588
|
|
|
587
|
|
|
589
|
return self.find_files(
|
|
588
|
return self.find_files(
|
|
590
|
folders, ext, filefmt, startDate, endDate, expLabel, last=True)
|
|
589
|
folders, ext, filefmt, startDate, endDate, expLabel, last=True)
|
|
591
|
|
|
590
|
|
|
@@
-594,13
+593,12
class Reader(object):
|
|
594
|
|
|
593
|
|
|
595
|
while True:
|
|
594
|
while True:
|
|
596
|
if self.fp != None:
|
|
595
|
if self.fp != None:
|
|
597
|
self.fp.close()
|
|
596
|
self.fp.close()
|
|
598
|
|
|
597
|
|
|
599
|
if self.online:
|
|
598
|
if self.online:
|
|
600
|
newFile = self.setNextFileOnline()
|
|
599
|
newFile = self.setNextFileOnline()
|
|
601
|
else:
|
|
600
|
else:
|
|
602
|
newFile = self.setNextFileOffline()
|
|
601
|
newFile = self.setNextFileOffline()
|
|
603
|
|
|
|
|
|
604
|
if not(newFile):
|
|
602
|
if not(newFile):
|
|
605
|
if self.online:
|
|
603
|
if self.online:
|
|
606
|
raise schainpy.admin.SchainError('Time to wait for new files reach')
|
|
604
|
raise schainpy.admin.SchainError('Time to wait for new files reach')
|
|
@@
-609,10
+607,10
class Reader(object):
|
|
609
|
raise schainpy.admin.SchainWarning('No files found in the given path')
|
|
607
|
raise schainpy.admin.SchainWarning('No files found in the given path')
|
|
610
|
else:
|
|
608
|
else:
|
|
611
|
raise schainpy.admin.SchainWarning('No more files to read')
|
|
609
|
raise schainpy.admin.SchainWarning('No more files to read')
|
|
612
|
|
|
610
|
|
|
613
|
if self.verifyFile(self.filename):
|
|
611
|
if self.verifyFile(self.filename):
|
|
614
|
break
|
|
612
|
break
|
|
615
|
|
|
613
|
|
|
616
|
log.log('Opening file: %s' % self.filename, self.name)
|
|
614
|
log.log('Opening file: %s' % self.filename, self.name)
|
|
617
|
|
|
615
|
|
|
618
|
self.readFirstHeader()
|
|
616
|
self.readFirstHeader()
|
|
@@
-625,15
+623,16
class Reader(object):
|
|
625
|
self.filename
|
|
623
|
self.filename
|
|
626
|
self.fp
|
|
624
|
self.fp
|
|
627
|
self.filesize
|
|
625
|
self.filesize
|
|
628
|
|
|
626
|
|
|
629
|
Return:
|
|
627
|
Return:
|
|
630
|
boolean
|
|
628
|
boolean
|
|
631
|
|
|
629
|
|
|
632
|
"""
|
|
630
|
"""
|
|
|
|
|
631
|
|
|
633
|
nextFile = True
|
|
632
|
nextFile = True
|
|
634
|
nextDay = False
|
|
633
|
nextDay = False
|
|
635
|
|
|
634
|
|
|
636
|
for nFiles in range(self.nFiles+1):
|
|
635
|
for nFiles in range(self.nFiles+1):
|
|
637
|
for nTries in range(self.nTries):
|
|
636
|
for nTries in range(self.nTries):
|
|
638
|
fullfilename, filename = self.checkForRealPath(nextFile, nextDay)
|
|
637
|
fullfilename, filename = self.checkForRealPath(nextFile, nextDay)
|
|
639
|
if fullfilename is not None:
|
|
638
|
if fullfilename is not None:
|
|
@@
-643,18
+642,18
class Reader(object):
|
|
643
|
self.name)
|
|
642
|
self.name)
|
|
644
|
time.sleep(self.delay)
|
|
643
|
time.sleep(self.delay)
|
|
645
|
nextFile = False
|
|
644
|
nextFile = False
|
|
646
|
continue
|
|
645
|
continue
|
|
647
|
|
|
646
|
|
|
648
|
if fullfilename is not None:
|
|
647
|
if fullfilename is not None:
|
|
649
|
break
|
|
648
|
break
|
|
650
|
|
|
649
|
|
|
651
|
self.nTries = 1
|
|
650
|
self.nTries = 1
|
|
652
|
nextFile = True
|
|
651
|
nextFile = True
|
|
653
|
|
|
652
|
|
|
654
|
if nFiles == (self.nFiles - 1):
|
|
653
|
if nFiles == (self.nFiles - 1):
|
|
655
|
log.log('Trying with next day...', self.name)
|
|
654
|
log.log('Trying with next day...', self.name)
|
|
656
|
nextDay = True
|
|
655
|
nextDay = True
|
|
657
|
self.nTries = 3
|
|
656
|
self.nTries = 3
|
|
658
|
|
|
657
|
|
|
659
|
if fullfilename:
|
|
658
|
if fullfilename:
|
|
660
|
self.fileSize = os.path.getsize(fullfilename)
|
|
659
|
self.fileSize = os.path.getsize(fullfilename)
|
|
@@
-666,18
+665,18
class Reader(object):
|
|
666
|
self.flagNoMoreFiles = 0
|
|
665
|
self.flagNoMoreFiles = 0
|
|
667
|
self.fileIndex += 1
|
|
666
|
self.fileIndex += 1
|
|
668
|
return 1
|
|
667
|
return 1
|
|
669
|
else:
|
|
668
|
else:
|
|
670
|
return 0
|
|
669
|
return 0
|
|
671
|
|
|
670
|
|
|
672
|
def setNextFileOffline(self):
|
|
671
|
def setNextFileOffline(self):
|
|
673
|
"""Open the next file to be readed in offline mode"""
|
|
672
|
"""Open the next file to be readed in offline mode"""
|
|
674
|
|
|
673
|
|
|
675
|
try:
|
|
674
|
try:
|
|
676
|
filename = next(self.filenameList)
|
|
675
|
filename = next(self.filenameList)
|
|
677
|
self.fileIndex +=1
|
|
676
|
self.fileIndex +=1
|
|
678
|
except StopIteration:
|
|
677
|
except StopIteration:
|
|
679
|
self.flagNoMoreFiles = 1
|
|
678
|
self.flagNoMoreFiles = 1
|
|
680
|
return 0
|
|
679
|
return 0
|
|
681
|
|
|
680
|
|
|
682
|
self.filename = filename
|
|
681
|
self.filename = filename
|
|
683
|
self.fileSize = os.path.getsize(filename)
|
|
682
|
self.fileSize = os.path.getsize(filename)
|
|
@@
-685,22
+684,22
class Reader(object):
|
|
685
|
self.flagIsNewFile = 1
|
|
684
|
self.flagIsNewFile = 1
|
|
686
|
|
|
685
|
|
|
687
|
return 1
|
|
686
|
return 1
|
|
688
|
|
|
687
|
|
|
689
|
@staticmethod
|
|
688
|
@staticmethod
|
|
690
|
def isDateTimeInRange(dt, startDate, endDate, startTime, endTime):
|
|
689
|
def isDateTimeInRange(dt, startDate, endDate, startTime, endTime):
|
|
691
|
"""Check if the given datetime is in range"""
|
|
690
|
"""Check if the given datetime is in range"""
|
|
692
|
|
|
691
|
|
|
693
|
if startDate <= dt.date() <= endDate:
|
|
692
|
if startDate <= dt.date() <= endDate:
|
|
694
|
if startTime <= dt.time() <= endTime:
|
|
693
|
if startTime <= dt.time() <= endTime:
|
|
695
|
return True
|
|
694
|
return True
|
|
696
|
return False
|
|
695
|
return False
|
|
697
|
|
|
696
|
|
|
698
|
def verifyFile(self, filename):
|
|
697
|
def verifyFile(self, filename):
|
|
699
|
"""Check for a valid file
|
|
698
|
"""Check for a valid file
|
|
700
|
|
|
699
|
|
|
701
|
Arguments:
|
|
700
|
Arguments:
|
|
702
|
filename -- full path filename
|
|
701
|
filename -- full path filename
|
|
703
|
|
|
702
|
|
|
704
|
Return:
|
|
703
|
Return:
|
|
705
|
boolean
|
|
704
|
boolean
|
|
706
|
"""
|
|
705
|
"""
|
|
@@
-711,7
+710,7
class Reader(object):
|
|
711
|
"""Check if the next file to be readed exists"""
|
|
710
|
"""Check if the next file to be readed exists"""
|
|
712
|
|
|
711
|
|
|
713
|
raise NotImplementedError
|
|
712
|
raise NotImplementedError
|
|
714
|
|
|
713
|
|
|
715
|
def readFirstHeader(self):
|
|
714
|
def readFirstHeader(self):
|
|
716
|
"""Parse the file header"""
|
|
715
|
"""Parse the file header"""
|
|
717
|
|
|
716
|
|
|
@@
-783,8
+782,7
class JRODataReader(Reader):
|
|
783
|
Return:
|
|
782
|
Return:
|
|
784
|
str -- fullpath of the file
|
|
783
|
str -- fullpath of the file
|
|
785
|
"""
|
|
784
|
"""
|
|
786
|
|
|
785
|
|
|
787
|
|
|
|
|
|
788
|
if nextFile:
|
|
786
|
if nextFile:
|
|
789
|
self.set += 1
|
|
787
|
self.set += 1
|
|
790
|
if nextDay:
|
|
788
|
if nextDay:
|
|
@@
-796,7
+794,7
class JRODataReader(Reader):
|
|
796
|
prefixFileList = ['d', 'D']
|
|
794
|
prefixFileList = ['d', 'D']
|
|
797
|
elif self.ext.lower() == ".pdata": # spectra
|
|
795
|
elif self.ext.lower() == ".pdata": # spectra
|
|
798
|
prefixFileList = ['p', 'P']
|
|
796
|
prefixFileList = ['p', 'P']
|
|
799
|
|
|
797
|
|
|
800
|
# barrido por las combinaciones posibles
|
|
798
|
# barrido por las combinaciones posibles
|
|
801
|
for prefixDir in prefixDirList:
|
|
799
|
for prefixDir in prefixDirList:
|
|
802
|
thispath = self.path
|
|
800
|
thispath = self.path
|
|
@@
-816,9
+814,9
class JRODataReader(Reader):
|
|
816
|
|
|
814
|
|
|
817
|
if os.path.exists(fullfilename):
|
|
815
|
if os.path.exists(fullfilename):
|
|
818
|
return fullfilename, filename
|
|
816
|
return fullfilename, filename
|
|
819
|
|
|
817
|
|
|
820
|
return None, filename
|
|
818
|
return None, filename
|
|
821
|
|
|
819
|
|
|
822
|
def __waitNewBlock(self):
|
|
820
|
def __waitNewBlock(self):
|
|
823
|
"""
|
|
821
|
"""
|
|
824
|
Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
|
|
822
|
Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
|
|
@@
-860,9
+858,9
class JRODataReader(Reader):
|
|
860
|
def __setNewBlock(self):
|
|
858
|
def __setNewBlock(self):
|
|
861
|
|
|
859
|
|
|
862
|
if self.fp == None:
|
|
860
|
if self.fp == None:
|
|
863
|
return 0
|
|
861
|
return 0
|
|
864
|
|
|
862
|
|
|
865
|
if self.flagIsNewFile:
|
|
863
|
if self.flagIsNewFile:
|
|
866
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
864
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
867
|
return 1
|
|
865
|
return 1
|
|
868
|
|
|
866
|
|
|
@@
-875,12
+873,12
class JRODataReader(Reader):
|
|
875
|
|
|
873
|
|
|
876
|
currentSize = self.fileSize - self.fp.tell()
|
|
874
|
currentSize = self.fileSize - self.fp.tell()
|
|
877
|
neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
|
|
875
|
neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
|
|
878
|
|
|
876
|
|
|
879
|
if (currentSize >= neededSize):
|
|
877
|
if (currentSize >= neededSize):
|
|
880
|
self.basicHeaderObj.read(self.fp)
|
|
878
|
self.basicHeaderObj.read(self.fp)
|
|
881
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
879
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
882
|
return 1
|
|
880
|
return 1
|
|
883
|
|
|
881
|
|
|
884
|
if self.__waitNewBlock():
|
|
882
|
if self.__waitNewBlock():
|
|
885
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
883
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
886
|
return 1
|
|
884
|
return 1
|
|
@@
-892,7
+890,6
class JRODataReader(Reader):
|
|
892
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
890
|
self.lastUTTime = self.basicHeaderObj.utc
|
|
893
|
|
|
891
|
|
|
894
|
self.flagDiscontinuousBlock = 0
|
|
892
|
self.flagDiscontinuousBlock = 0
|
|
895
|
|
|
|
|
|
896
|
if deltaTime > self.maxTimeStep:
|
|
893
|
if deltaTime > self.maxTimeStep:
|
|
897
|
self.flagDiscontinuousBlock = 1
|
|
894
|
self.flagDiscontinuousBlock = 1
|
|
898
|
|
|
895
|
|
|
@@
-966,10
+963,10
class JRODataReader(Reader):
|
|
966
|
except IOError:
|
|
963
|
except IOError:
|
|
967
|
log.error("File {} can't be opened".format(filename), self.name)
|
|
964
|
log.error("File {} can't be opened".format(filename), self.name)
|
|
968
|
return False
|
|
965
|
return False
|
|
969
|
|
|
966
|
|
|
970
|
if self.online and self.waitDataBlock(0):
|
|
967
|
if self.online and self.waitDataBlock(0):
|
|
971
|
pass
|
|
968
|
pass
|
|
972
|
|
|
969
|
|
|
973
|
basicHeaderObj = BasicHeader(LOCALTIME)
|
|
970
|
basicHeaderObj = BasicHeader(LOCALTIME)
|
|
974
|
systemHeaderObj = SystemHeader()
|
|
971
|
systemHeaderObj = SystemHeader()
|
|
975
|
radarControllerHeaderObj = RadarControllerHeader()
|
|
972
|
radarControllerHeaderObj = RadarControllerHeader()
|
|
@@
-996,7
+993,7
class JRODataReader(Reader):
|
|
996
|
dt2 = basicHeaderObj.datatime
|
|
993
|
dt2 = basicHeaderObj.datatime
|
|
997
|
if not self.isDateTimeInRange(dt1, self.startDate, self.endDate, self.startTime, self.endTime) and not \
|
|
994
|
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):
|
|
995
|
self.isDateTimeInRange(dt2, self.startDate, self.endDate, self.startTime, self.endTime):
|
|
999
|
flag = False
|
|
996
|
flag = False
|
|
1000
|
|
|
997
|
|
|
1001
|
fp.close()
|
|
998
|
fp.close()
|
|
1002
|
return flag
|
|
999
|
return flag
|
|
@@
-1105,11
+1102,11
class JRODataReader(Reader):
|
|
1105
|
return dateList
|
|
1102
|
return dateList
|
|
1106
|
|
|
1103
|
|
|
1107
|
def setup(self, **kwargs):
|
|
1104
|
def setup(self, **kwargs):
|
|
1108
|
|
|
1105
|
|
|
1109
|
self.set_kwargs(**kwargs)
|
|
1106
|
self.set_kwargs(**kwargs)
|
|
1110
|
if not self.ext.startswith('.'):
|
|
1107
|
if not self.ext.startswith('.'):
|
|
1111
|
self.ext = '.{}'.format(self.ext)
|
|
1108
|
self.ext = '.{}'.format(self.ext)
|
|
1112
|
|
|
1109
|
|
|
1113
|
if self.server is not None:
|
|
1110
|
if self.server is not None:
|
|
1114
|
if 'tcp://' in self.server:
|
|
1111
|
if 'tcp://' in self.server:
|
|
1115
|
address = server
|
|
1112
|
address = server
|
|
@@
-1131,36
+1128,36
class JRODataReader(Reader):
|
|
1131
|
|
|
1128
|
|
|
1132
|
for nTries in range(self.nTries):
|
|
1129
|
for nTries in range(self.nTries):
|
|
1133
|
fullpath = self.searchFilesOnLine(self.path, self.startDate,
|
|
1130
|
fullpath = self.searchFilesOnLine(self.path, self.startDate,
|
|
1134
|
self.endDate, self.expLabel, self.ext, self.walk,
|
|
1131
|
self.endDate, self.expLabel, self.ext, self.walk,
|
|
1135
|
self.filefmt, self.folderfmt)
|
|
1132
|
self.filefmt, self.folderfmt)
|
|
1136
|
|
|
1133
|
|
|
1137
|
try:
|
|
1134
|
try:
|
|
1138
|
fullpath = next(fullpath)
|
|
1135
|
fullpath = next(fullpath)
|
|
1139
|
except:
|
|
1136
|
except:
|
|
1140
|
fullpath = None
|
|
1137
|
fullpath = None
|
|
1141
|
|
|
1138
|
|
|
1142
|
if fullpath:
|
|
1139
|
if fullpath:
|
|
1143
|
break
|
|
1140
|
break
|
|
1144
|
|
|
1141
|
|
|
1145
|
log.warning(
|
|
1142
|
log.warning(
|
|
1146
|
'Waiting {} sec for a valid file in {}: try {} ...'.format(
|
|
1143
|
'Waiting {} sec for a valid file in {}: try {} ...'.format(
|
|
1147
|
self.delay, self.path, nTries + 1),
|
|
1144
|
self.delay, self.path, nTries + 1),
|
|
1148
|
self.name)
|
|
1145
|
self.name)
|
|
1149
|
time.sleep(self.delay)
|
|
1146
|
time.sleep(self.delay)
|
|
1150
|
|
|
1147
|
|
|
1151
|
if not(fullpath):
|
|
1148
|
if not(fullpath):
|
|
1152
|
raise schainpy.admin.SchainError(
|
|
1149
|
raise schainpy.admin.SchainError(
|
|
1153
|
'There isn\'t any valid file in {}'.format(self.path))
|
|
1150
|
'There isn\'t any valid file in {}'.format(self.path))
|
|
1154
|
|
|
1151
|
|
|
1155
|
pathname, filename = os.path.split(fullpath)
|
|
1152
|
pathname, filename = os.path.split(fullpath)
|
|
1156
|
self.year = int(filename[1:5])
|
|
1153
|
self.year = int(filename[1:5])
|
|
1157
|
self.doy = int(filename[5:8])
|
|
1154
|
self.doy = int(filename[5:8])
|
|
1158
|
self.set = int(filename[8:11]) - 1
|
|
1155
|
self.set = int(filename[8:11]) - 1
|
|
1159
|
else:
|
|
1156
|
else:
|
|
1160
|
log.log("Searching files in {}".format(self.path), self.name)
|
|
1157
|
log.log("Searching files in {}".format(self.path), self.name)
|
|
1161
|
self.filenameList = self.searchFilesOffLine(self.path, self.startDate,
|
|
1158
|
self.filenameList = self.searchFilesOffLine(self.path, self.startDate,
|
|
1162
|
self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt)
|
|
1159
|
self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt)
|
|
1163
|
|
|
1160
|
|
|
1164
|
self.setNextFile()
|
|
1161
|
self.setNextFile()
|
|
1165
|
|
|
1162
|
|
|
1166
|
return
|
|
1163
|
return
|
|
@@
-1181,7
+1178,7
class JRODataReader(Reader):
|
|
1181
|
self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
|
|
1178
|
self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
|
|
1182
|
|
|
1179
|
|
|
1183
|
self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds / self.nTxs
|
|
1180
|
self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds / self.nTxs
|
|
1184
|
|
|
1181
|
|
|
1185
|
def getFirstHeader(self):
|
|
1182
|
def getFirstHeader(self):
|
|
1186
|
|
|
1183
|
|
|
1187
|
raise NotImplementedError
|
|
1184
|
raise NotImplementedError
|
|
@@
-1214,8
+1211,8
class JRODataReader(Reader):
|
|
1214
|
"""
|
|
1211
|
"""
|
|
1215
|
|
|
1212
|
|
|
1216
|
Arguments:
|
|
1213
|
Arguments:
|
|
1217
|
path :
|
|
1214
|
path :
|
|
1218
|
startDate :
|
|
1215
|
startDate :
|
|
1219
|
endDate :
|
|
1216
|
endDate :
|
|
1220
|
startTime :
|
|
1217
|
startTime :
|
|
1221
|
endTime :
|
|
1218
|
endTime :
|
|
@@
-1284,7
+1281,7
class JRODataWriter(Reader):
|
|
1284
|
dtype_width = get_dtype_width(dtype_index)
|
|
1281
|
dtype_width = get_dtype_width(dtype_index)
|
|
1285
|
|
|
1282
|
|
|
1286
|
return dtype_width
|
|
1283
|
return dtype_width
|
|
1287
|
|
|
1284
|
|
|
1288
|
def getProcessFlags(self):
|
|
1285
|
def getProcessFlags(self):
|
|
1289
|
|
|
1286
|
|
|
1290
|
processFlags = 0
|
|
1287
|
processFlags = 0
|
|
@@
-1322,9
+1319,9
class JRODataWriter(Reader):
|
|
1322
|
|
|
1319
|
|
|
1323
|
self.basicHeaderObj.size = self.basicHeaderSize # bytes
|
|
1320
|
self.basicHeaderObj.size = self.basicHeaderSize # bytes
|
|
1324
|
self.basicHeaderObj.version = self.versionFile
|
|
1321
|
self.basicHeaderObj.version = self.versionFile
|
|
1325
|
self.basicHeaderObj.dataBlock = self.nTotalBlocks
|
|
1322
|
self.basicHeaderObj.dataBlock = self.nTotalBlocks
|
|
1326
|
utc = numpy.floor(self.dataOut.utctime)
|
|
1323
|
utc = numpy.floor(self.dataOut.utctime)
|
|
1327
|
milisecond = (self.dataOut.utctime - utc) * 1000.0
|
|
1324
|
milisecond = (self.dataOut.utctime - utc) * 1000.0
|
|
1328
|
self.basicHeaderObj.utc = utc
|
|
1325
|
self.basicHeaderObj.utc = utc
|
|
1329
|
self.basicHeaderObj.miliSecond = milisecond
|
|
1326
|
self.basicHeaderObj.miliSecond = milisecond
|
|
1330
|
self.basicHeaderObj.timeZone = self.dataOut.timeZone
|
|
1327
|
self.basicHeaderObj.timeZone = self.dataOut.timeZone
|
|
@@
-1465,9
+1462,9
class JRODataWriter(Reader):
|
|
1465
|
if self.dataOut.datatime.date() > self.fileDate:
|
|
1462
|
if self.dataOut.datatime.date() > self.fileDate:
|
|
1466
|
setFile = 0
|
|
1463
|
setFile = 0
|
|
1467
|
self.nTotalBlocks = 0
|
|
1464
|
self.nTotalBlocks = 0
|
|
1468
|
|
|
1465
|
|
|
1469
|
filen = '{}{:04d}{:03d}{:03d}{}'.format(
|
|
1466
|
filen = '{}{:04d}{:03d}{:03d}{}'.format(
|
|
1470
|
self.optchar, timeTuple.tm_year, timeTuple.tm_yday, setFile, ext)
|
|
1467
|
self.optchar, timeTuple.tm_year, timeTuple.tm_yday, setFile, ext)
|
|
1471
|
|
|
1468
|
|
|
1472
|
filename = os.path.join(path, subfolder, filen)
|
|
1469
|
filename = os.path.join(path, subfolder, filen)
|
|
1473
|
|
|
1470
|
|
|
@@
-1515,11
+1512,11
class JRODataWriter(Reader):
|
|
1515
|
self.ext = ext.lower()
|
|
1512
|
self.ext = ext.lower()
|
|
1516
|
|
|
1513
|
|
|
1517
|
self.path = path
|
|
1514
|
self.path = path
|
|
1518
|
|
|
1515
|
|
|
1519
|
if set is None:
|
|
1516
|
if set is None:
|
|
1520
|
self.setFile = -1
|
|
1517
|
self.setFile = -1
|
|
1521
|
else:
|
|
1518
|
else:
|
|
1522
|
self.setFile = set - 1
|
|
1519
|
self.setFile = set - 1
|
|
1523
|
|
|
1520
|
|
|
1524
|
self.blocksPerFile = blocksPerFile
|
|
1521
|
self.blocksPerFile = blocksPerFile
|
|
1525
|
self.profilesPerBlock = profilesPerBlock
|
|
1522
|
self.profilesPerBlock = profilesPerBlock
|
|
@@
-1572,4
+1569,4
class printInfo(Operation):
|
|
1572
|
else:
|
|
1569
|
else:
|
|
1573
|
log.warning('Header {} Not found in object'.format(header))
|
|
1570
|
log.warning('Header {} Not found in object'.format(header))
|
|
1574
|
|
|
1571
|
|
|
1575
|
self.__printInfo = False
|
|
1572
|
self.__printInfo = False
No newline at end of file
|