##// END OF EJS Templates
Modificación a kmamisr para ejecutarse en la versión 3, creación de scripts con terminación v3 para difereciarlos, se comentó la linea #720 de JroIO_param.py debido a que reiniciaba la lista de archivos, ocasionando la reescritura del archivo hdf5. Alguna otra modificación aparente es producto de algunas variaciones en espacios al usar la función print()
Modificación a kmamisr para ejecutarse en la versión 3, creación de scripts con terminación v3 para difereciarlos, se comentó la linea #720 de JroIO_param.py debido a que reiniciaba la lista de archivos, ocasionando la reescritura del archivo hdf5. Alguna otra modificación aparente es producto de algunas variaciones en espacios al usar la función print()

File last commit:

r1167:1f521b07c958
r1279:c53fe2a4a291
Show More
jroproc_amisr.py
142 lines | 4.3 KiB | text/x-python | PythonLexer
'''
@author: Daniel Suarez
'''
import numpy
from .jroproc_base import ProcessingUnit, Operation
from schainpy.model.data.jroamisr import AMISR
class AMISRProc(ProcessingUnit):
def __init__(self, **kwargs):
ProcessingUnit.__init__(self, **kwargs)
self.objectDict = {}
self.dataOut = AMISR()
def run(self):
if self.dataIn.type == 'AMISR':
self.dataOut.copy(self.dataIn)
class PrintInfo(Operation):
def __init__(self, **kwargs):
Operation.__init__(self, **kwargs)
self.__isPrinted = False
def run(self, dataOut):
if not self.__isPrinted:
print('Number of Records by File: %d'%dataOut.nRecords)
print('Number of Pulses: %d'%dataOut.nProfiles)
print('Number of Pulses by Frame: %d'%dataOut.npulseByFrame)
print('Number of Samples by Pulse: %d'%len(dataOut.heightList))
print('Ipp Seconds: %f'%dataOut.ippSeconds)
print('Number of Beams: %d'%dataOut.nBeams)
print('BeamCodes:')
beamStrList = ['Beam %d -> Code=%d, azimuth=%2.2f, zenith=%2.2f, gain=%2.2f'%(k,v[0],v[1],v[2],v[3]) for k,v in list(dataOut.beamCodeDict.items())]
for b in beamStrList:
print(b)
self.__isPrinted = True
return
class BeamSelector(Operation):
profileIndex = None
nProfiles = None
def __init__(self, **kwargs):
Operation.__init__(self, **kwargs)
self.profileIndex = 0
self.__isConfig = False
def incIndex(self):
self.profileIndex += 1
if self.profileIndex >= self.nProfiles:
self.profileIndex = 0
def isProfileInRange(self, minIndex, maxIndex):
if self.profileIndex < minIndex:
return False
if self.profileIndex > maxIndex:
return False
return True
def isProfileInList(self, profileList):
if self.profileIndex not in profileList:
return False
return True
def run(self, dataOut, beam=None):
dataOut.flagNoData = True
if not(self.__isConfig):
self.nProfiles = dataOut.nProfiles
self.profileIndex = dataOut.profileIndex
self.__isConfig = True
if beam != None:
if self.isProfileInList(dataOut.beamRangeDict[beam]):
beamInfo = dataOut.beamCodeDict[beam]
dataOut.azimuth = beamInfo[1]
dataOut.zenith = beamInfo[2]
dataOut.gain = beamInfo[3]
dataOut.flagNoData = False
self.incIndex()
return 1
else:
raise ValueError("BeamSelector needs beam value")
return 0
class ProfileToChannels(Operation):
def __init__(self, **kwargs):
Operation.__init__(self, **kwargs)
self.__isConfig = False
self.__counter_chan = 0
self.buffer = None
def isProfileInList(self, profileList):
if self.profileIndex not in profileList:
return False
return True
def run(self, dataOut):
dataOut.flagNoData = True
if not(self.__isConfig):
nchannels = len(list(dataOut.beamRangeDict.keys()))
nsamples = dataOut.nHeights
self.buffer = numpy.zeros((nchannels, nsamples), dtype = 'complex128')
dataOut.beam.codeList = [dataOut.beamCodeDict[x][0] for x in range(nchannels)]
dataOut.beam.azimuthList = [dataOut.beamCodeDict[x][1] for x in range(nchannels)]
dataOut.beam.zenithList = [dataOut.beamCodeDict[x][2] for x in range(nchannels)]
self.__isConfig = True
for i in range(self.buffer.shape[0]):
if dataOut.profileIndex in dataOut.beamRangeDict[i]:
self.buffer[i,:] = dataOut.data
break
self.__counter_chan += 1
if self.__counter_chan >= self.buffer.shape[0]:
self.__counter_chan = 0
dataOut.data = self.buffer.copy()
dataOut.channelList = list(range(self.buffer.shape[0]))
self.__isConfig = False
dataOut.flagNoData = False
pass