@@ -653,7 +653,7 class AMISR: | |||||
653 | self.type = "AMISR" |
|
653 | self.type = "AMISR" | |
654 |
|
654 | |||
655 | #propiedades para compatibilidad con Voltages |
|
655 | #propiedades para compatibilidad con Voltages | |
656 |
self.timeZone = |
|
656 | self.timeZone = 0#timezone like jroheader, difference in minutes between UTC and localtime | |
657 | self.dstFlag = 0#self.dataIn.dstFlag |
|
657 | self.dstFlag = 0#self.dataIn.dstFlag | |
658 | self.errorCount = 0#self.dataIn.errorCount |
|
658 | self.errorCount = 0#self.dataIn.errorCount | |
659 | self.useLocalTime = True#self.dataIn.useLocalTime |
|
659 | self.useLocalTime = True#self.dataIn.useLocalTime | |
@@ -684,6 +684,18 class AMISR: | |||||
684 | self.nCode = None#self.dataIn.nCode |
|
684 | self.nCode = None#self.dataIn.nCode | |
685 | self.code = None#self.dataIn.code |
|
685 | self.code = None#self.dataIn.code | |
686 |
|
686 | |||
|
687 | #consideracion para los Beams | |||
|
688 | self.beamCodeDict = None | |||
|
689 | self.beamRangeDict = None | |||
|
690 | ||||
|
691 | def copy(self, inputObj=None): | |||
|
692 | ||||
|
693 | if inputObj == None: | |||
|
694 | return copy.deepcopy(self) | |||
|
695 | ||||
|
696 | for key in inputObj.__dict__.keys(): | |||
|
697 | self.__dict__[key] = inputObj.__dict__[key] | |||
|
698 | ||||
687 |
|
699 | |||
688 | def isEmpty(self): |
|
700 | def isEmpty(self): | |
689 |
|
701 |
@@ -3425,7 +3425,8 class FitsReader(ProcessingUnit): | |||||
3425 | class RadacHeader(): |
|
3425 | class RadacHeader(): | |
3426 | def __init__(self, fp): |
|
3426 | def __init__(self, fp): | |
3427 | header = 'Raw11/Data/RadacHeader' |
|
3427 | header = 'Raw11/Data/RadacHeader' | |
3428 | self.beamCode = fp.get(header+'/BeamCode') |
|
3428 | self.beamCodeByPulse = fp.get(header+'/BeamCode') | |
|
3429 | self.beamCode = fp.get('Raw11/Data/Beamcodes') | |||
3429 | self.code = fp.get(header+'/Code') |
|
3430 | self.code = fp.get(header+'/Code') | |
3430 | self.frameCount = fp.get(header+'/FrameCount') |
|
3431 | self.frameCount = fp.get(header+'/FrameCount') | |
3431 | self.modeGroup = fp.get(header+'/ModeGroup') |
|
3432 | self.modeGroup = fp.get(header+'/ModeGroup') | |
@@ -3438,6 +3439,7 class RadacHeader(): | |||||
3438 | self.nrecords = self.pulseCount.shape[0] #numero de bloques |
|
3439 | self.nrecords = self.pulseCount.shape[0] #numero de bloques | |
3439 | self.npulses = self.pulseCount.shape[1] #numero de perfiles |
|
3440 | self.npulses = self.pulseCount.shape[1] #numero de perfiles | |
3440 | self.nsamples = self.nsamplesPulse[0,0] #numero de alturas |
|
3441 | self.nsamples = self.nsamplesPulse[0,0] #numero de alturas | |
|
3442 | self.nbeams = self.beamCode.shape[1] #numero de beams | |||
3441 |
|
3443 | |||
3442 |
|
3444 | |||
3443 | def getIndexRangeToPulse(self, idrecord=0): |
|
3445 | def getIndexRangeToPulse(self, idrecord=0): | |
@@ -3492,6 +3494,9 class AMISRReader(ProcessingUnit): | |||||
3492 | self.dataByFrame = None |
|
3494 | self.dataByFrame = None | |
3493 | self.dataset = None |
|
3495 | self.dataset = None | |
3494 |
|
3496 | |||
|
3497 | self.beamCodeDict = {} | |||
|
3498 | self.beamRangeDict = {} | |||
|
3499 | ||||
3495 |
|
3500 | |||
3496 | def __createObjByDefault(self): |
|
3501 | def __createObjByDefault(self): | |
3497 |
|
3502 | |||
@@ -3631,7 +3636,22 class AMISRReader(ProcessingUnit): | |||||
3631 | def __readHeader(self): |
|
3636 | def __readHeader(self): | |
3632 | self.radacHeaderObj = RadacHeader(self.amisrFilePointer) |
|
3637 | self.radacHeaderObj = RadacHeader(self.amisrFilePointer) | |
3633 | self.flagIsNewFile = 1 |
|
3638 | self.flagIsNewFile = 1 | |
|
3639 | ||||
|
3640 | def __getBeamCode(self): | |||
|
3641 | self.beamCodeDict = {} | |||
|
3642 | self.beamRangeDict = {} | |||
|
3643 | ||||
|
3644 | for i in range(len(self.radacHeaderObj.beamCode[0,:])): | |||
|
3645 | self.beamCodeDict.setdefault(i) | |||
|
3646 | self.beamRangeDict.setdefault(i) | |||
|
3647 | self.beamCodeDict[i] = self.radacHeaderObj.beamCode[0,i] | |||
|
3648 | ||||
3634 |
|
3649 | |||
|
3650 | just4record0 = self.radacHeaderObj.beamCodeByPulse[0,:] | |||
|
3651 | ||||
|
3652 | for i in range(len(self.beamCodeDict.values())): | |||
|
3653 | xx = numpy.where(just4record0==self.beamCodeDict.values()[i]) | |||
|
3654 | self.beamRangeDict[i] = xx[0] | |||
3635 |
|
3655 | |||
3636 |
|
3656 | |||
3637 | def __setNextFile(self): |
|
3657 | def __setNextFile(self): | |
@@ -3642,7 +3662,7 class AMISRReader(ProcessingUnit): | |||||
3642 | return 0 |
|
3662 | return 0 | |
3643 |
|
3663 | |||
3644 | self.__readHeader() |
|
3664 | self.__readHeader() | |
3645 |
|
3665 | self.__getBeamCode() | ||
3646 | self.readDataBlock() |
|
3666 | self.readDataBlock() | |
3647 |
|
3667 | |||
3648 |
|
3668 | |||
@@ -3791,6 +3811,10 class AMISRReader(ProcessingUnit): | |||||
3791 | return 1 |
|
3811 | return 1 | |
3792 | return 0 |
|
3812 | return 0 | |
3793 |
|
3813 | |||
|
3814 | def printUTC(self): | |||
|
3815 | print self.dataOut.utctime | |||
|
3816 | print '' | |||
|
3817 | ||||
3794 | def setObjProperties(self): |
|
3818 | def setObjProperties(self): | |
3795 | self.dataOut.heightList = self.rangeFromFile/1000.0 #km |
|
3819 | self.dataOut.heightList = self.rangeFromFile/1000.0 #km | |
3796 | self.dataOut.nProfiles = self.radacHeaderObj.npulses |
|
3820 | self.dataOut.nProfiles = self.radacHeaderObj.npulses | |
@@ -3798,6 +3822,9 class AMISRReader(ProcessingUnit): | |||||
3798 | self.dataOut.nBaud = None |
|
3822 | self.dataOut.nBaud = None | |
3799 | self.dataOut.nCode = None |
|
3823 | self.dataOut.nCode = None | |
3800 | self.dataOut.code = None |
|
3824 | self.dataOut.code = None | |
|
3825 | ||||
|
3826 | self.dataOut.beamCodeDict = self.beamCodeDict | |||
|
3827 | self.dataOut.beamRangeDict = self.beamRangeDict | |||
3801 |
|
3828 | |||
3802 | def getData(self): |
|
3829 | def getData(self): | |
3803 |
|
3830 |
@@ -1707,7 +1707,7 class ProfileSelector(Operation): | |||||
1707 |
|
1707 | |||
1708 | return True |
|
1708 | return True | |
1709 |
|
1709 | |||
1710 | def run(self, dataOut, profileList=None, profileRangeList=None): |
|
1710 | def run(self, dataOut, profileList=None, profileRangeList=None, beam=None): | |
1711 |
|
1711 | |||
1712 | dataOut.flagNoData = True |
|
1712 | dataOut.flagNoData = True | |
1713 | self.nProfiles = dataOut.nProfiles |
|
1713 | self.nProfiles = dataOut.nProfiles | |
@@ -1728,6 +1728,12 class ProfileSelector(Operation): | |||||
1728 |
|
1728 | |||
1729 | self.incIndex() |
|
1729 | self.incIndex() | |
1730 | return 1 |
|
1730 | return 1 | |
|
1731 | elif beam != None: | |||
|
1732 | if self.isProfileInList(dataOut.beamRangeDict[beam]): | |||
|
1733 | dataOut.flagNoData = False | |||
|
1734 | ||||
|
1735 | self.incIndex() | |||
|
1736 | return 1 | |||
1731 |
|
1737 | |||
1732 | else: |
|
1738 | else: | |
1733 | raise ValueError, "ProfileSelector needs profileList or profileRangeList" |
|
1739 | raise ValueError, "ProfileSelector needs profileList or profileRangeList" | |
@@ -2067,4 +2073,60 class IncohInt4SpectraHeis(Operation): | |||||
2067 |
|
2073 | |||
2068 |
|
2074 | |||
2069 |
|
2075 | |||
2070 | No newline at end of file |
|
2076 | class AMISRProc(ProcessingUnit): | |
|
2077 | def __init__(self): | |||
|
2078 | self.objectDict = {} | |||
|
2079 | self.dataOut = AMISR() | |||
|
2080 | ||||
|
2081 | def init(self): | |||
|
2082 | if self.dataIn.type == 'AMISR': | |||
|
2083 | self.dataOut.copy(self.dataIn) | |||
|
2084 | ||||
|
2085 | class BeamSelector(Operation): | |||
|
2086 | profileIndex = None | |||
|
2087 | # Tamanho total de los perfiles | |||
|
2088 | nProfiles = None | |||
|
2089 | ||||
|
2090 | def __init__(self): | |||
|
2091 | ||||
|
2092 | self.profileIndex = 0 | |||
|
2093 | ||||
|
2094 | def incIndex(self): | |||
|
2095 | self.profileIndex += 1 | |||
|
2096 | ||||
|
2097 | if self.profileIndex >= self.nProfiles: | |||
|
2098 | self.profileIndex = 0 | |||
|
2099 | ||||
|
2100 | def isProfileInRange(self, minIndex, maxIndex): | |||
|
2101 | ||||
|
2102 | if self.profileIndex < minIndex: | |||
|
2103 | return False | |||
|
2104 | ||||
|
2105 | if self.profileIndex > maxIndex: | |||
|
2106 | return False | |||
|
2107 | ||||
|
2108 | return True | |||
|
2109 | ||||
|
2110 | def isProfileInList(self, profileList): | |||
|
2111 | ||||
|
2112 | if self.profileIndex not in profileList: | |||
|
2113 | return False | |||
|
2114 | ||||
|
2115 | return True | |||
|
2116 | ||||
|
2117 | def run(self, dataOut, beam=None): | |||
|
2118 | ||||
|
2119 | dataOut.flagNoData = True | |||
|
2120 | self.nProfiles = dataOut.nProfiles | |||
|
2121 | ||||
|
2122 | if beam != None: | |||
|
2123 | if self.isProfileInList(dataOut.beamRangeDict[beam]): | |||
|
2124 | dataOut.flagNoData = False | |||
|
2125 | ||||
|
2126 | self.incIndex() | |||
|
2127 | return 1 | |||
|
2128 | ||||
|
2129 | else: | |||
|
2130 | raise ValueError, "BeamSelector needs beam value" | |||
|
2131 | ||||
|
2132 | return 0 No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now