##// END OF EJS Templates
En esta version se tiene:...
Daniel Valdez -
r439:da26a7ca9b43
parent child
Show More
@@ -577,22 +577,77 class SpectraHeis(JROData):
577
577
578 class Fits:
578 class Fits:
579
579
580 heightList = None
581
582 channelList = None
583
584 flagNoData = True
585
586 flagTimeBlock = False
587
588 useLocalTime = False
589
590 utctime = None
591
592 timeZone = None
593
594 ippSeconds = None
595
596 timeInterval = None
597
598 nCohInt = None
599
600 nIncohInt = None
601
602 noise = None
603
604 windowOfFilter = 1
605
606 #Speed of ligth
607 C = 3e8
608
609 frequency = 49.92e6
610
611 realtime = False
612
613
580 def __init__(self):
614 def __init__(self):
581 self.useLocalTime = False
615
616 self.type = "Fits"
617
618 self.nProfiles = None
619
620 self.heightList = None
621
622 self.channelList = None
623
624 # self.channelIndexList = None
625
626 self.flagNoData = True
627
582 self.utctime = None
628 self.utctime = None
583 self.timeZone = None
629
584 self.ltctime = None
630 self.nCohInt = None
585 self.timeInterval = None
631
586 self.header = None
632 self.nIncohInt = None
587 self.data_header = None
633
588 self.data = None
634 self.useLocalTime = True
589 self.datatime = None
635
590 self.flagNoData = False
636 # self.utctime = None
591 self.expName = ''
637 # self.timeZone = None
592 self.nChannels = None
638 # self.ltctime = None
593 self.nSamples = None
639 # self.timeInterval = None
594 self.dataBlocksPerFile = None
640 # self.header = None
595 self.comments = ''
641 # self.data_header = None
642 # self.data = None
643 # self.datatime = None
644 # self.flagNoData = False
645 # self.expName = ''
646 # self.nChannels = None
647 # self.nSamples = None
648 # self.dataBlocksPerFile = None
649 # self.comments = ''
650 #
596
651
597
652
598 def getltctime(self):
653 def getltctime(self):
@@ -618,9 +673,49 class Fits:
618
673
619 return datatime
674 return datatime
620
675
676 def getHeiRange(self):
677
678 heis = self.heightList
679
680 return heis
681
621 def isEmpty(self):
682 def isEmpty(self):
622
683
623 return self.flagNoData
684 return self.flagNoData
624
685
686 def getNHeights(self):
687
688 return len(self.heightList)
689
690 def getNChannels(self):
691
692 return len(self.channelList)
693
694 def getChannelIndexList(self):
695
696 return range(self.nChannels)
697
698 def getNoise(self, type = 1):
699
700 self.noise = numpy.zeros(self.nChannels)
701
702 if type == 1:
703 noise = self.getNoisebyHildebrand()
704
705 if type == 2:
706 noise = self.getNoisebySort()
707
708 if type == 3:
709 noise = self.getNoisebyWindow()
710
711 return noise
712
625 datatime = property(getDatatime, "I'm the 'datatime' property")
713 datatime = property(getDatatime, "I'm the 'datatime' property")
714 nHeights = property(getNHeights, "I'm the 'nHeights' property.")
715 nChannels = property(getNChannels, "I'm the 'nChannel' property.")
716 channelIndexList = property(getChannelIndexList, "I'm the 'channelIndexList' property.")
717 noise = property(getNoise, "I'm the 'nHeights' property.")
718 datatime = property(getDatatime, "I'm the 'datatime' property")
719 ltctime = property(getltctime, "I'm the 'ltctime' property")
720
626 ltctime = property(getltctime, "I'm the 'ltctime' property") No newline at end of file
721 ltctime = property(getltctime, "I'm the 'ltctime' property")
@@ -2883,23 +2883,36 class FitsWriter(Operation):
2883 parm_name = parameter.name
2883 parm_name = parameter.name
2884 parm_value = parameter.value
2884 parm_value = parameter.value
2885
2885
2886 if parm_value == 'fromdatadatetime':
2886 # if parm_value == 'fromdatadatetime':
2887 value = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
2887 # value = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
2888 elif parm_value == 'fromdataheights':
2888 # elif parm_value == 'fromdataheights':
2889 value = dataOut.nHeights
2889 # value = dataOut.nHeights
2890 elif parm_value == 'fromdatachannel':
2890 # elif parm_value == 'fromdatachannel':
2891 value = dataOut.nChannels
2891 # value = dataOut.nChannels
2892 elif parm_value == 'fromdatasamples':
2892 # elif parm_value == 'fromdatasamples':
2893 value = dataOut.nFFTPoints
2893 # value = dataOut.nFFTPoints
2894 else:
2894 # else:
2895 value = parm_value
2895 # value = parm_value
2896
2896
2897 header_data.header[parm_name] = value
2897 header_data.header[parm_name] = parm_value
2898
2898
2899
2900 header_data.header['DATETIME'] = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
2901 header_data.header['CHANNELLIST'] = str(dataOut.channelList)
2902 header_data.header['NCHANNELS'] = dataOut.nChannels
2903 #header_data.header['HEIGHTS'] = dataOut.heightList
2904 header_data.header['NHEIGHTS'] = dataOut.nHeights
2905
2906 header_data.header['IPPSECONDS'] = dataOut.ippSeconds
2907 header_data.header['NCOHINT'] = dataOut.nCohInt
2908 header_data.header['NINCOHINT'] = dataOut.nIncohInt
2909 header_data.header['TIMEZONE'] = dataOut.timeZone
2899 header_data.header['NBLOCK'] = self.blockIndex
2910 header_data.header['NBLOCK'] = self.blockIndex
2900
2911
2901 header_data.writeto(self.filename)
2912 header_data.writeto(self.filename)
2902
2913
2914 self.addExtension(dataOut.heightList,'HEIGHTLIST')
2915
2903
2916
2904 def setup(self, dataOut, path, dataBlocksPerFile, metadatafile):
2917 def setup(self, dataOut, path, dataBlocksPerFile, metadatafile):
2905
2918
@@ -2912,9 +2925,16 class FitsWriter(Operation):
2912 self.fitsObj = pyfits.open(self.filename, mode='update')
2925 self.fitsObj = pyfits.open(self.filename, mode='update')
2913
2926
2914
2927
2928 def addExtension(self, data, tagname):
2929 self.open()
2930 extension = pyfits.ImageHDU(data=data, name=tagname)
2931 #extension.header['TAG'] = tagname
2932 self.fitsObj.append(extension)
2933 self.write()
2934
2915 def addData(self, data):
2935 def addData(self, data):
2916 self.open()
2936 self.open()
2917 extension = pyfits.ImageHDU(data=data, name=self.fitsObj[0].header['DATA'])
2937 extension = pyfits.ImageHDU(data=data, name=self.fitsObj[0].header['DATATYPE'])
2918 extension.header['UTCTIME'] = self.dataOut.utctime
2938 extension.header['UTCTIME'] = self.dataOut.utctime
2919 self.fitsObj.append(extension)
2939 self.fitsObj.append(extension)
2920 self.blockIndex += 1
2940 self.blockIndex += 1
@@ -3013,7 +3033,7 class FitsWriter(Operation):
3013
3033
3014 class FitsReader(ProcessingUnit):
3034 class FitsReader(ProcessingUnit):
3015
3035
3016 __TIMEZONE = time.timezone
3036 # __TIMEZONE = time.timezone
3017
3037
3018 expName = None
3038 expName = None
3019 datetimestr = None
3039 datetimestr = None
@@ -3038,6 +3058,7 class FitsReader(ProcessingUnit):
3038 self.filename = None
3058 self.filename = None
3039 self.fileSize = None
3059 self.fileSize = None
3040 self.fitsObj = None
3060 self.fitsObj = None
3061 self.timeZone = None
3041 self.nReadBlocks = 0
3062 self.nReadBlocks = 0
3042 self.nTotalBlocks = 0
3063 self.nTotalBlocks = 0
3043 self.dataOut = self.createObjByDefault()
3064 self.dataOut = self.createObjByDefault()
@@ -3098,7 +3119,7 class FitsReader(ProcessingUnit):
3098 self.filename = filename
3119 self.filename = filename
3099 self.fileSize = fileSize
3120 self.fileSize = fileSize
3100 self.fitsObj = fitsObj
3121 self.fitsObj = fitsObj
3101
3122 self.blockIndex = 0
3102 print "Setting the file: %s"%self.filename
3123 print "Setting the file: %s"%self.filename
3103
3124
3104 return 1
3125 return 1
@@ -3107,15 +3128,39 class FitsReader(ProcessingUnit):
3107 headerObj = self.fitsObj[0]
3128 headerObj = self.fitsObj[0]
3108
3129
3109 self.header_dict = headerObj.header
3130 self.header_dict = headerObj.header
3110 self.expName = headerObj.header['EXPNAME']
3131 if 'EXPNAME' in headerObj.header.keys():
3132 self.expName = headerObj.header['EXPNAME']
3133
3134 if 'DATATYPE' in headerObj.header.keys():
3135 self.dataType = headerObj.header['DATATYPE']
3136
3111 self.datetimestr = headerObj.header['DATETIME']
3137 self.datetimestr = headerObj.header['DATETIME']
3112 struct_time = time.strptime(headerObj.header['DATETIME'], "%b %d %Y %H:%M:%S")
3138 self.channelList = headerObj.header['CHANNELLIST']
3113 # self.utc = time.mktime(struct_time) - self.__TIMEZONE
3139 self.nChannels = headerObj.header['NCHANNELS']
3114 self.nChannels = headerObj.header['NCHANNEL']
3140 self.nHeights = headerObj.header['NHEIGHTS']
3115 self.nSamples = headerObj.header['NSAMPLE']
3141 self.ippSeconds = headerObj.header['IPPSECONDS']
3142 self.nCohInt = headerObj.header['NCOHINT']
3143 self.nIncohInt = headerObj.header['NINCOHINT']
3116 self.dataBlocksPerFile = headerObj.header['NBLOCK']
3144 self.dataBlocksPerFile = headerObj.header['NBLOCK']
3117 self.comments = headerObj.header['COMMENT']
3145 self.timeZone = headerObj.header['TIMEZONE']
3146
3147 self.timeInterval = self.ippSeconds * self.nCohInt * self.nIncohInt
3148
3149 if 'COMMENT' in headerObj.header.keys():
3150 self.comments = headerObj.header['COMMENT']
3118
3151
3152 self.readHeightList()
3153
3154 def readHeightList(self):
3155 self.blockIndex = self.blockIndex + 1
3156 obj = self.fitsObj[self.blockIndex]
3157 self.heightList = obj.data
3158 self.blockIndex = self.blockIndex + 1
3159
3160 def readExtension(self):
3161 obj = self.fitsObj[self.blockIndex]
3162 self.heightList = obj.data
3163 self.blockIndex = self.blockIndex + 1
3119
3164
3120 def setNextFile(self):
3165 def setNextFile(self):
3121
3166
@@ -3130,7 +3175,7 class FitsReader(ProcessingUnit):
3130 self.readHeader()
3175 self.readHeader()
3131
3176
3132 self.nReadBlocks = 0
3177 self.nReadBlocks = 0
3133 self.blockIndex = 1
3178 # self.blockIndex = 1
3134 return 1
3179 return 1
3135
3180
3136 def __searchFilesOffLine(self,
3181 def __searchFilesOffLine(self,
@@ -3298,7 +3343,7 class FitsReader(ProcessingUnit):
3298 if not self.online:
3343 if not self.online:
3299 return 0
3344 return 0
3300
3345
3301 if (self.nReadBlocks >= self.processingHeaderObj.dataBlocksPerFile):
3346 if (self.nReadBlocks >= self.dataBlocksPerFile):
3302 return 0
3347 return 0
3303
3348
3304 currentPointer = self.fp.tell()
3349 currentPointer = self.fp.tell()
@@ -3388,10 +3433,12 class FitsReader(ProcessingUnit):
3388 self.dataOut.header = self.header_dict
3433 self.dataOut.header = self.header_dict
3389 self.dataOut.expName = self.expName
3434 self.dataOut.expName = self.expName
3390 self.dataOut.nChannels = self.nChannels
3435 self.dataOut.nChannels = self.nChannels
3391 self.dataOut.nSamples = self.nSamples
3436 self.dataOut.timeZone = self.timeZone
3392 self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
3437 self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
3393 self.dataOut.comments = self.comments
3438 self.dataOut.comments = self.comments
3394
3439 self.dataOut.timeInterval = self.timeInterval
3440 self.dataOut.channelList = self.channelList
3441 self.dataOut.heightList = self.heightList
3395 self.dataOut.flagNoData = False
3442 self.dataOut.flagNoData = False
3396
3443
3397 return self.dataOut.data
3444 return self.dataOut.data
@@ -1487,9 +1487,9 class RTIfromSpectraHeis(Figure):
1487
1487
1488
1488
1489 # title = "RTI %s" %(thisDatetime.strftime("%d-%b-%Y"))
1489 # title = "RTI %s" %(thisDatetime.strftime("%d-%b-%Y"))
1490 title = "RTI-Noise - %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
1490 title = "RTI - %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
1491
1491
1492 legendlabels = ["channel %d"%idchannel for idchannel in channelList]
1492 legendlabels = ["channel %d"%idchannel for idchannel in channelIndexList]
1493 axes = self.axesList[0]
1493 axes = self.axesList[0]
1494
1494
1495 self.xdata = numpy.hstack((self.xdata, x[0:1]))
1495 self.xdata = numpy.hstack((self.xdata, x[0:1]))
@@ -1430,6 +1430,19 class SpectraHeisProc(ProcessingUnit):
1430 # self.dataOut.deltaHeight=self.dataIn.deltaHeight
1430 # self.dataOut.deltaHeight=self.dataIn.deltaHeight
1431
1431
1432
1432
1433 def __updateObjFromFits(self):
1434 self.dataOut.utctime = self.dataIn.utctime
1435 self.dataOut.channelIndexList = self.dataIn.channelIndexList
1436
1437 self.dataOut.channelList = self.dataIn.channelList
1438 self.dataOut.heightList = self.dataIn.heightList
1439 self.dataOut.data_spc = self.dataIn.data
1440 self.dataOut.timeInterval = self.dataIn.timeInterval
1441 self.dataOut.timeZone = self.dataIn.timeZone
1442 self.dataOut.useLocalTime = True
1443 # self.dataOut.
1444 # self.dataOut.
1445
1433 def __getFft(self):
1446 def __getFft(self):
1434
1447
1435 fft_volt = numpy.fft.fft(self.dataIn.data, axis=1)
1448 fft_volt = numpy.fft.fft(self.dataIn.data, axis=1)
@@ -1441,6 +1454,11 class SpectraHeisProc(ProcessingUnit):
1441
1454
1442 self.dataOut.flagNoData = True
1455 self.dataOut.flagNoData = True
1443
1456
1457 if self.dataIn.type == "Fits":
1458 self.__updateObjFromFits()
1459 self.dataOut.flagNoData = False
1460 return
1461
1444 if self.dataIn.type == "SpectraHeis":
1462 if self.dataIn.type == "SpectraHeis":
1445 self.dataOut.copy(self.dataIn)
1463 self.dataOut.copy(self.dataIn)
1446 return
1464 return
General Comments 0
You need to be logged in to leave comments. Login now