##// END OF EJS Templates
Merge EW-Drifts
Merge EW-Drifts

File last commit:

r1396:f39ad5b721a3
r1396:f39ad5b721a3
Show More
jroproc_correlation.py
178 lines | 6.8 KiB | text/x-python | PythonLexer
/ schainpy / model / proc / jroproc_correlation.py
Julio Valdez
Processing Modules added:...
r502 import numpy
George Yong
Python 2to3, Spectra (all operations) working
r1167 from .jroproc_base import ProcessingUnit, Operation
Juan C. Espinoza
Rewrite controller, remove MPDecorator to units (keep for plots an writers) use of queues for interproc comm instead of zmq, self operations are no longer supported
r1287 from schainpy.model.data.jrodata import Correlation
Julio Valdez
Processing Modules added:...
r502
class CorrelationProc(ProcessingUnit):
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 pairsList = None
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 data_cf = None
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
def __init__(self, **kwargs):
ProcessingUnit.__init__(self, **kwargs)
Julio Valdez
Processing Modules added:...
r502 self.objectDict = {}
self.buffer = None
self.firstdatatime = None
self.profIndex = 0
self.dataOut = Correlation()
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Miguel Valdez
Signal Chain GUI updated:...
r587 def __updateObjFromVoltage(self):
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 self.dataOut.timeZone = self.dataIn.timeZone
self.dataOut.dstFlag = self.dataIn.dstFlag
self.dataOut.errorCount = self.dataIn.errorCount
self.dataOut.useLocalTime = self.dataIn.useLocalTime
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 self.dataOut.radarControllerHeaderObj = self.dataIn.radarControllerHeaderObj.copy()
self.dataOut.systemHeaderObj = self.dataIn.systemHeaderObj.copy()
self.dataOut.channelList = self.dataIn.channelList
self.dataOut.heightList = self.dataIn.heightList
Merge EW-Drifts
r1396 self.dataOut.dtype = numpy.dtype([('real', '<f4'), ('imag', '<f4')])
Julio Valdez
Processing Modules added:...
r502 # self.dataOut.nHeights = self.dataIn.nHeights
# self.dataOut.nChannels = self.dataIn.nChannels
self.dataOut.nBaud = self.dataIn.nBaud
self.dataOut.nCode = self.dataIn.nCode
self.dataOut.code = self.dataIn.code
# self.dataOut.nProfiles = self.dataOut.nFFTPoints
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.dataOut.flagDiscontinuousBlock = self.dataIn.flagDiscontinuousBlock
Julio Valdez
Processing Modules added:...
r502 self.dataOut.utctime = self.firstdatatime
Merge EW-Drifts
r1396 self.dataOut.flagDecodeData = self.dataIn.flagDecodeData # asumo q la data esta decodificada
self.dataOut.flagDeflipData = self.dataIn.flagDeflipData # asumo q la data esta sin flip
Julio Valdez
Correction to Spaced Antenna libraries
r762 self.dataOut.nCohInt = self.dataIn.nCohInt
Julio Valdez
Processing Modules added:...
r502 # self.dataOut.nIncohInt = 1
self.dataOut.ippSeconds = self.dataIn.ippSeconds
Julio Valdez
Changes in Correlations Processing unit
r854 self.dataOut.nProfiles = self.dataIn.nProfiles
self.dataOut.utctime = self.dataIn.utctime
Julio Valdez
Processing Modules added:...
r502 # self.dataOut.windowOfFilter = self.dataIn.windowOfFilter
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Miguel Valdez
Signal Chain GUI updated:...
r587 # self.dataOut.timeInterval = self.dataIn.timeInterval*self.dataOut.nPoints
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 def removeDC(self, jspectra):
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 nChannel = jspectra.shape[0]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 for i in range(nChannel):
Merge EW-Drifts
r1396 jspectra_tmp = jspectra[i, :, :]
jspectra_DC = numpy.mean(jspectra_tmp, axis=0)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 jspectra_tmp = jspectra_tmp - jspectra_DC
Merge EW-Drifts
r1396 jspectra[i, :, :] = jspectra_tmp
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 return jspectra
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Merge EW-Drifts
r1396 def removeNoise(self, mode=2):
Julio Valdez
Processing Modules added:...
r502 indR = numpy.where(self.dataOut.lagR == 0)[0][0]
indT = numpy.where(self.dataOut.lagT == 0)[0][0]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Merge EW-Drifts
r1396 jspectra = self.dataOut.data_corr[:, :, indR, :]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 num_chan = jspectra.shape[0]
num_hei = jspectra.shape[2]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 freq_dc = indT
Merge EW-Drifts
r1396 ind_vel = numpy.array([-2, -1, 1, 2]) + freq_dc
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 NPot = self.dataOut.getNoise(mode)
Merge EW-Drifts
r1396 jspectra[:, freq_dc, :] = jspectra[:, freq_dc, :] - NPot
SPot = jspectra[:, freq_dc, :]
Julio Valdez
Processing Modules added:...
r502 pairsAutoCorr = self.dataOut.getPairsAutoCorr()
# self.dataOut.signalPotency = SPot
self.dataOut.noise = NPot
Merge EW-Drifts
r1396 self.dataOut.SNR = (SPot / NPot)[pairsAutoCorr]
self.dataOut.data_corr[:, :, indR, :] = jspectra
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
return 1
Merge EW-Drifts
r1396 def run(self, lags=None, mode='time', pairsList=None, fullBuffer=False, nAvg=1, removeDC=False, splitCF=False):
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 self.dataOut.flagNoData = True
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 if self.dataIn.type == "Correlation":
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 self.dataOut.copy(self.dataIn)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 return
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Processing Modules added:...
r502 if self.dataIn.type == "Voltage":
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 nChannels = self.dataIn.nChannels
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 nProfiles = self.dataIn.nProfiles
Julio Valdez
Changes in Correlations Processing unit
r854 nHeights = self.dataIn.nHeights
data_pre = self.dataIn.data
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 #--------------- Remover DC ------------
if removeDC:
data_pre = self.removeDC(data_pre)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 #---------------------------------------------
# pairsList = list(ccfList)
# for i in acfList:
# pairsList.append((i,i))
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 #
Julio Valdez
Changes in Correlations Processing unit
r854 # ccf_pairs = numpy.arange(len(ccfList))
# acf_pairs = numpy.arange(len(ccfList),len(pairsList))
self.__updateObjFromVoltage()
#----------------------------------------------------------------------
Merge EW-Drifts
r1396 # Creating temporal buffers
Julio Valdez
Changes in Correlations Processing unit
r854 if fullBuffer:
Merge EW-Drifts
r1396 tmp = numpy.zeros((len(pairsList), len(lags), nProfiles, nHeights), dtype='complex') * numpy.nan
Julio Valdez
Changes in Correlations Processing unit
r854 elif mode == 'time':
if lags == None:
Merge EW-Drifts
r1396 lags = numpy.arange(-nProfiles + 1, nProfiles)
tmp = numpy.zeros((len(pairsList), len(lags), nHeights), dtype='complex')
Julio Valdez
Changes in Correlations Processing unit
r854 elif mode == 'height':
if lags == None:
Merge EW-Drifts
r1396 lags = numpy.arange(-nHeights + 1, nHeights)
tmp = numpy.zeros(len(pairsList), (len(lags), nProfiles), dtype='complex')
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Merge EW-Drifts
r1396 # For loop
Julio Valdez
Changes in Correlations Processing unit
r854 for l in range(len(pairsList)):
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 ch0 = pairsList[l][0]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 ch1 = pairsList[l][1]
Julio Valdez
Changes in Correlations Processing unit
r854 for i in range(len(lags)):
idx = lags[i]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 if idx >= 0:
if mode == 'time':
Merge EW-Drifts
r1396 ccf0 = data_pre[ch0, :nProfiles - idx, :] * numpy.conj(data_pre[ch1, idx:, :]) # time
Julio Valdez
Changes in Correlations Processing unit
r854 else:
Merge EW-Drifts
r1396 ccf0 = data_pre[ch0, :, nHeights - idx] * numpy.conj(data_pre[ch1, :, idx:]) # heights
Julio Valdez
Changes in Correlations Processing unit
r854 else:
if mode == 'time':
Merge EW-Drifts
r1396 ccf0 = data_pre[ch0, -idx:, :] * numpy.conj(data_pre[ch1, :nProfiles + idx, :]) # time
Julio Valdez
Changes in Correlations Processing unit
r854 else:
Merge EW-Drifts
r1396 ccf0 = data_pre[ch0, :, -idx:] * numpy.conj(data_pre[ch1, :, :nHeights + idx]) # heights
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 if fullBuffer:
Merge EW-Drifts
r1396 tmp[l, i, :ccf0.shape[0], :] = ccf0
Julio Valdez
Changes in Correlations Processing unit
r854 else:
Merge EW-Drifts
r1396 tmp[l, i, :] = numpy.sum(ccf0, axis=0)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 #-----------------------------------------------------------------
if fullBuffer:
Merge EW-Drifts
r1396 tmp = numpy.sum(numpy.reshape(tmp, (tmp.shape[0], tmp.shape[1], tmp.shape[2] / nAvg, nAvg, tmp.shape[3])), axis=3)
Julio Valdez
Changes in Correlations Processing unit
r854 self.dataOut.nAvg = nAvg
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Julio Valdez
Changes in Correlations Processing unit
r854 self.dataOut.data_cf = tmp
self.dataOut.mode = mode
self.dataOut.nLags = len(lags)
self.dataOut.pairsList = pairsList
self.dataOut.nPairs = len(pairsList)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897
Merge EW-Drifts
r1396 # Se Calcula los factores de Normalizacion
Julio Valdez
Changes in Correlations Processing unit
r854 if mode == 'time':
Merge EW-Drifts
r1396 delta = self.dataIn.ippSeconds * self.dataIn.nCohInt
Julio Valdez
Changes in Correlations Processing unit
r854 else:
delta = self.dataIn.heightList[1] - self.dataIn.heightList[0]
Merge EW-Drifts
r1396 self.dataOut.lagRange = numpy.array(lags) * delta
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 # self.dataOut.nCohInt = self.dataIn.nCohInt*nAvg
Julio Valdez
Changes in Correlations Processing unit
r854 self.dataOut.flagNoData = False
Juan C. Espinoza
Add changes made by J. Oscanoa (jasmet)
r989 # a = self.dataOut.normFactor
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 return