##// END OF EJS Templates
Se realizar la lectura en modo online llamando al metodo digitalRFReader(self.path) en reemplazo del metodo reload(), grabando previamente el path de lectura o directorio superior donde se almacena la data. Adicionalmente, se ha definido un tiempo de espera de 3 segundos para dar tiempo suficiente al programa de adquisicion de generar archivos. ...
Se realizar la lectura en modo online llamando al metodo digitalRFReader(self.path) en reemplazo del metodo reload(), grabando previamente el path de lectura o directorio superior donde se almacena la data. Adicionalmente, se ha definido un tiempo de espera de 3 segundos para dar tiempo suficiente al programa de adquisicion de generar archivos. El archivo jroIO_digitalRF.py utiliza la libreria digital_rf cuya version actual es la 2.62( 2017 ) ,esta libreria no tiene definido el metodo o clase reload, este metodo existe en la version 2.0(2014), si uno revisa el archivo jroIO_usrp.py, esta unidad de lectura trabaja con la version 2.0 llamada digital_rf_hdf5, para hacer uso de esta unidad de lectura se instalan los programas correspondiente pero el formato y la informacion difiere un poco de la version actual. Se infiere entonces que al desarrollar del archivo jroIO_digitalRF.py, esperaba que la libreria aun tenga incluido el metodo reload con el update de las versiones pero este ya no es parte del desarrollo, Se realizo la consulta al desarrollador actual de digitalRF Ryan Voltz si se iba a incluir a futuro pero indico que no era necesario.

File last commit:

r989:57782215c6e2
r1234:b6a76136b1f3
Show More
jroproc_correlation.py
178 lines | 6.7 KiB | text/x-python | PythonLexer
/ schainpy / model / proc / jroproc_correlation.py
Julio Valdez
Processing Modules added:...
r502 import numpy
from jroproc_base import ProcessingUnit, Operation
Julio Valdez
Changes in Correlations Processing unit
r854 from schainpy.model.data.jrodata import Correlation, hildebrand_sekhon
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
self.dataOut.dtype = numpy.dtype([('real','<f4'),('imag','<f4')])
# 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
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):
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
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
Julio Valdez
Processing Modules added:...
r502 def removeNoise(self, mode = 2):
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
Julio Valdez
Processing Modules added:...
r502 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
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)
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 jspectra[:,freq_dc,:] = jspectra[:,freq_dc,:] - NPot
Julio Valdez
Processing Modules added:...
r502 SPot = jspectra[:,freq_dc,:]
pairsAutoCorr = self.dataOut.getPairsAutoCorr()
# self.dataOut.signalPotency = SPot
self.dataOut.noise = NPot
self.dataOut.SNR = (SPot/NPot)[pairsAutoCorr]
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 self.dataOut.data_corr[:,:,indR,:] = jspectra
return 1
Julio Valdez
Changes in Correlations Processing unit
r854 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()
#----------------------------------------------------------------------
#Creating temporal buffers
if fullBuffer:
José Chávez
cambiados los kwargs para cada operacion/unidad de procesamiento
r897 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:
lags = numpy.arange(-nProfiles+1, nProfiles)
tmp = numpy.zeros((len(pairsList), len(lags), nHeights),dtype='complex')
elif mode == 'height':
if lags == None:
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
Julio Valdez
Changes in Correlations Processing unit
r854 #For loop
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':
ccf0 = data_pre[ch0,:nProfiles-idx,:]*numpy.conj(data_pre[ch1,idx:,:]) #time
else:
ccf0 = data_pre[ch0,:,nHeights-idx]*numpy.conj(data_pre[ch1,:,idx:]) #heights
else:
if mode == 'time':
ccf0 = data_pre[ch0,-idx:,:]*numpy.conj(data_pre[ch1,:nProfiles+idx,:]) #time
else:
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:
tmp[l,i,:ccf0.shape[0],:] = ccf0
else:
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:
tmp = numpy.sum(numpy.reshape(tmp,(tmp.shape[0],tmp.shape[1],tmp.shape[2]/nAvg,nAvg,tmp.shape[3])),axis=3)
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
Julio Valdez
Changes in Correlations Processing unit
r854 #Se Calcula los factores de Normalizacion
if mode == 'time':
delta = self.dataIn.ippSeconds*self.dataIn.nCohInt
else:
delta = self.dataIn.heightList[1] - self.dataIn.heightList[0]
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