##// END OF EJS Templates
Class to filter data by snr threshold. To calculate vertical and zonal velocities, vertical and zonal errors and SNR.
Class to filter data by snr threshold. To calculate vertical and zonal velocities, vertical and zonal errors and SNR.

File last commit:

r1396:f39ad5b721a3
r1662:30ff981335bb
Show More
jroamisr.py
87 lines | 2.9 KiB | text/x-python | PythonLexer
import numpy
import copy
class Beam:
def __init__(self):
self.codeList = []
self.azimuthList = []
self.zenithList = []
class AMISR:
def __init__(self):
self.flagNoData = True
self.data = None
self.utctime = None
self.type = "AMISR"
# propiedades para compatibilidad con Voltages
self.timeZone = 0 # timezone like jroheader, difference in minutes between UTC and localtime
self.dstFlag = 0 # self.dataIn.dstFlag
self.errorCount = 0 # self.dataIn.errorCount
self.useLocalTime = True # self.dataIn.useLocalTime
self.radarControllerHeaderObj = None # self.dataIn.radarControllerHeaderObj.copy()
self.systemHeaderObj = None # self.dataIn.systemHeaderObj.copy()
self.channelList = [0] # self.dataIn.channelList esto solo aplica para el caso de AMISR
self.dtype = numpy.dtype([('real', '<f4'), ('imag', '<f4')])
self.flagDiscontinuousBlock = None # self.dataIn.flagDiscontinuousBlock
# self.utctime = #self.firstdatatime
self.flagDecodeData = None # self.dataIn.flagDecodeData #asumo q la data esta decodificada
self.flagDeflipData = None # self.dataIn.flagDeflipData #asumo q la data esta sin flip
self.nCohInt = 1 # self.dataIn.nCohInt
self.nIncohInt = 1
self.ippSeconds = None # self.dataIn.ippSeconds, segun el filename/Setup/Tufile
self.windowOfFilter = None # self.dataIn.windowOfFilter
self.timeInterval = None # self.dataIn.timeInterval*self.dataOut.nFFTPoints*self.dataOut.nIncohInt
self.frequency = None # self.dataIn.frequency
self.realtime = 0 # self.dataIn.realtime
# actualizar en la lectura de datos
self.heightList = None # self.dataIn.heightList
self.nProfiles = None # Number of samples or nFFTPoints
self.nRecords = None
self.nBeams = None
self.nBaud = None # self.dataIn.nBaud
self.nCode = None # self.dataIn.nCode
self.code = None # self.dataIn.code
# consideracion para los Beams
self.beamCodeDict = None
self.beamRangeDict = None
self.beamcode = None
self.azimuth = None
self.zenith = None
self.gain = None
self.npulseByFrame = None
self.profileIndex = None
self.beam = Beam()
def copy(self, inputObj=None):
if inputObj is None:
return copy.deepcopy(self)
for key in list(inputObj.__dict__.keys()):
self.__dict__[key] = inputObj.__dict__[key]
@property
def nHeights(self):
return len(self.heightList)
def isEmpty(self):
return self.flagNoData
@property
def timeInterval(self):
return self.ippSeconds * self.nCohInt