##// END OF EJS Templates
Adicion de atributo dataPP_NOISE en el Met. PulsePair
avaldezp -
r1524:069b388a2dbe
parent child
Show More
@@ -144,6 +144,10 class ParametersProc(ProcessingUnit):
144
144
145 if hasattr(self.dataIn, 'dataPP_CCF'):
145 if hasattr(self.dataIn, 'dataPP_CCF'):
146 self.dataOut.dataPP_CCF = self.dataIn.dataPP_CCF
146 self.dataOut.dataPP_CCF = self.dataIn.dataPP_CCF
147
148 if hasattr(self.dataIn, 'dataPP_NOISE'):
149 self.dataOut.dataPP_NOISE = self.dataIn.dataPP_NOISE
150
147 if hasattr(self.dataIn, 'flagAskMode'):
151 if hasattr(self.dataIn, 'flagAskMode'):
148 self.dataOut.flagAskMode = self.dataIn.flagAskMode
152 self.dataOut.flagAskMode = self.dataIn.flagAskMode
149
153
@@ -3928,10 +3932,10 class WeatherRadar(Operation):
3928 Conversion Watt
3932 Conversion Watt
3929 Referencia
3933 Referencia
3930 https://www.tek.com/en/blog/calculating-rf-power-iq-samples
3934 https://www.tek.com/en/blog/calculating-rf-power-iq-samples
3931
3935
3932 data_param = (nCh, 8, nHeis)
3936 data_param = (nCh, 8, nHeis)
3933 S, V, W, SNR, Z, D, P, R
3937 S, V, W, SNR, Z, D, P, R
3934 Power, Velocity, Spectral width, SNR, Reflectivity, Differential reflectivity, PHI DP, RHO HV
3938 Power, Velocity, Spectral width, SNR, Reflectivity, Differential reflectivity, PHI DP, RHO HV
3935 '''
3939 '''
3936 isConfig = False
3940 isConfig = False
3937 variableList = None
3941 variableList = None
@@ -4086,7 +4090,7 class WeatherRadar(Operation):
4086 dataOut.data_param[:,6,:] =self.getFasediferencialPhiD_P(dataOut=dataOut, phase=True)
4090 dataOut.data_param[:,6,:] =self.getFasediferencialPhiD_P(dataOut=dataOut, phase=True)
4087 if self.variableList[i] == 'R' and dataOut.nChannels>1:
4091 if self.variableList[i] == 'R' and dataOut.nChannels>1:
4088 dataOut.data_param[:,7,:] = self.getCoeficienteCorrelacionROhv_R(dataOut)
4092 dataOut.data_param[:,7,:] = self.getCoeficienteCorrelacionROhv_R(dataOut)
4089
4093
4090 return dataOut
4094 return dataOut
4091
4095
4092 class PedestalInformation(Operation):
4096 class PedestalInformation(Operation):
@@ -4189,13 +4193,13 class PedestalInformation(Operation):
4189 elif sigma_ele < .5:
4193 elif sigma_ele < .5:
4190 flag_mode = 'PPI'
4194 flag_mode = 'PPI'
4191 break
4195 break
4192 elif sigma_azi < .5:
4196 elif sigma_azi < .5:
4193 flag_mode = 'RHI'
4197 flag_mode = 'RHI'
4194 break
4198 break
4195
4199
4196 start += sample_max
4200 start += sample_max
4197 print("MODE: ",flag_mode)
4201 print("MODE: ",flag_mode)
4198
4202
4199 return flag_mode
4203 return flag_mode
4200
4204
4201 def get_values(self):
4205 def get_values(self):
@@ -4224,7 +4228,7 class PedestalInformation(Operation):
4224 self.mode = mode
4228 self.mode = mode
4225 if mode is None:
4229 if mode is None:
4226 self.flagAskMode = True
4230 self.flagAskMode = True
4227
4231
4228 filelist = self.find_file(dataOut.utctime)
4232 filelist = self.find_file(dataOut.utctime)
4229
4233
4230 if not filelist:
4234 if not filelist:
@@ -4363,13 +4367,13 class Block360(Operation):
4363 #Se borra el dato anterior para liberar buffer y comparar el dato actual con el siguiente
4367 #Se borra el dato anterior para liberar buffer y comparar el dato actual con el siguiente
4364 self.__buffer.pop(0) #Erase first data
4368 self.__buffer.pop(0) #Erase first data
4365 self.__buffer2.pop(0)
4369 self.__buffer2.pop(0)
4366 self.__buffer3.pop(0)
4370 self.__buffer3.pop(0)
4367 self.__profIndex -= 1
4371 self.__profIndex -= 1
4368 else: #Cuando ha estado de bajada y ha vuelto a subir
4372 else: #Cuando ha estado de bajada y ha vuelto a subir
4369 #Se borra el ΓΊltimo dato
4373 #Se borra el ΓΊltimo dato
4370 self.__buffer.pop() #Erase last data
4374 self.__buffer.pop() #Erase last data
4371 self.__buffer2.pop()
4375 self.__buffer2.pop()
4372 self.__buffer3.pop()
4376 self.__buffer3.pop()
4373 data_360, n, data_p, data_e = self.pushData(data=dataOut,flagMode=flagMode,case_flag=case_flag)
4377 data_360, n, data_p, data_e = self.pushData(data=dataOut,flagMode=flagMode,case_flag=case_flag)
4374 self.__dataReady = True
4378 self.__dataReady = True
4375
4379
@@ -4428,7 +4432,7 class Block360(Operation):
4428 dataOut.flagNoData = True
4432 dataOut.flagNoData = True
4429
4433
4430 if self.__dataReady:
4434 if self.__dataReady:
4431 setattr(dataOut, attr_data, data_360 )
4435 setattr(dataOut, attr_data, data_360 )
4432 dataOut.data_azi = data_p + 26.2
4436 dataOut.data_azi = data_p + 26.2
4433 dataOut.data_azi[dataOut.data_azi>360] = dataOut.data_azi[dataOut.data_azi>360] - 360
4437 dataOut.data_azi[dataOut.data_azi>360] = dataOut.data_azi[dataOut.data_azi>360] - 360
4434 dataOut.data_ele = data_e
4438 dataOut.data_ele = data_e
@@ -1630,6 +1630,7 class PulsePair_vRF(Operation):
1630 daux = numpy.sort(pair0[i,:,:],axis= None)
1630 daux = numpy.sort(pair0[i,:,:],axis= None)
1631 self.noise[i]=hildebrand_sekhon( daux/pwcode ,self.nCohInt)
1631 self.noise[i]=hildebrand_sekhon( daux/pwcode ,self.nCohInt)
1632
1632
1633 data_noise = self.noise
1633 self.noise = self.noise.reshape(self.__nch,1)
1634 self.noise = self.noise.reshape(self.__nch,1)
1634 self.noise = numpy.tile(self.noise,[1,self.__nHeis])
1635 self.noise = numpy.tile(self.noise,[1,self.__nHeis])
1635 noise_buffer = self.noise.reshape(self.__nch,1,self.__nHeis)
1636 noise_buffer = self.noise.reshape(self.__nch,1,self.__nHeis)
@@ -1663,7 +1664,6 class PulsePair_vRF(Operation):
1663 #---------------- Potencia promedio estimada de la Senal-----------
1664 #---------------- Potencia promedio estimada de la Senal-----------
1664 lag_0 = data_power
1665 lag_0 = data_power
1665 S = lag_0-self.noise
1666 S = lag_0-self.noise
1666
1667 #---------------- Frecuencia Doppler promedio ---------------------
1667 #---------------- Frecuencia Doppler promedio ---------------------
1668 lag_1 = lag_1/((self.n-1)*pwcode*self.nCohInt)
1668 lag_1 = lag_1/((self.n-1)*pwcode*self.nCohInt)
1669 R1 = numpy.abs(lag_1)
1669 R1 = numpy.abs(lag_1)
@@ -1685,7 +1685,7 class PulsePair_vRF(Operation):
1685
1685
1686 self.__buffer = numpy.zeros((self.__nch, self.__nProf,self.__nHeis), dtype='complex')
1686 self.__buffer = numpy.zeros((self.__nch, self.__nProf,self.__nHeis), dtype='complex')
1687 self.__profIndex = 0
1687 self.__profIndex = 0
1688 return data_power,data_intensity,data_velocity,data_snrPP,data_specwidth,data_ccf,n
1688 return data_power,data_intensity,data_velocity,data_snrPP,data_specwidth,data_ccf,data_noise,n
1689
1689
1690
1690
1691 def pulsePairbyProfiles(self,dataOut,n):
1691 def pulsePairbyProfiles(self,dataOut,n):
@@ -1697,33 +1697,34 class PulsePair_vRF(Operation):
1697 data_specwidth = None
1697 data_specwidth = None
1698 data_snrPP = None
1698 data_snrPP = None
1699 data_ccf = None
1699 data_ccf = None
1700 data_noise = None
1700
1701
1701 if dataOut.flagDataAsBlock:
1702 if dataOut.flagDataAsBlock:
1702 self.putDataByBlock(data=dataOut.data,n=n)
1703 self.putDataByBlock(data=dataOut.data,n=n)
1703 else:
1704 else:
1704 self.putData(data=dataOut.data)
1705 self.putData(data=dataOut.data)
1705 if self.__profIndex == self.n:
1706 if self.__profIndex == self.n:
1706 data_power,data_intensity, data_velocity,data_snrPP,data_specwidth,data_ccf, n = self.pushData(dataOut=dataOut)
1707 data_power,data_intensity, data_velocity,data_snrPP,data_specwidth,data_ccf,data_noise, n = self.pushData(dataOut=dataOut)
1707 self.__dataReady = True
1708 self.__dataReady = True
1708
1709
1709 return data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf
1710 return data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf,data_noise
1710
1711
1711
1712
1712 def pulsePairOp(self, dataOut, n, datatime= None):
1713 def pulsePairOp(self, dataOut, n, datatime= None):
1713
1714
1714 if self.__initime == None:
1715 if self.__initime == None:
1715 self.__initime = datatime
1716 self.__initime = datatime
1716 data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf = self.pulsePairbyProfiles(dataOut,n)
1717 data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf,data_noise = self.pulsePairbyProfiles(dataOut,n)
1717 self.__lastdatatime = datatime
1718 self.__lastdatatime = datatime
1718
1719
1719 if data_power is None:
1720 if data_power is None:
1720 return None, None, None,None,None,None,None
1721 return None, None, None,None,None,None,None,None
1721
1722
1722 avgdatatime = self.__initime
1723 avgdatatime = self.__initime
1723 deltatime = datatime - self.__lastdatatime
1724 deltatime = datatime - self.__lastdatatime
1724 self.__initime = datatime
1725 self.__initime = datatime
1725
1726
1726 return data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf, avgdatatime
1727 return data_power, data_intensity, data_velocity, data_snrPP,data_specwidth,data_ccf, data_noise, avgdatatime
1727
1728
1728 def run(self, dataOut,n = None,removeDC= False, overlapping= False,wradar=False,**kwargs):
1729 def run(self, dataOut,n = None,removeDC= False, overlapping= False,wradar=False,**kwargs):
1729
1730
@@ -1735,7 +1736,7 class PulsePair_vRF(Operation):
1735 self.setup(dataOut = dataOut, n = n , removeDC=removeDC , wradar=wradar,**kwargs)
1736 self.setup(dataOut = dataOut, n = n , removeDC=removeDC , wradar=wradar,**kwargs)
1736 self.isConfig = True
1737 self.isConfig = True
1737
1738
1738 data_power, data_intensity, data_velocity,data_snrPP,data_specwidth,data_ccf, avgdatatime = self.pulsePairOp(dataOut, n, dataOut.utctime)
1739 data_power, data_intensity, data_velocity,data_snrPP,data_specwidth,data_ccf, data_noise,avgdatatime = self.pulsePairOp(dataOut, n, dataOut.utctime)
1739 dataOut.flagNoData = True
1740 dataOut.flagNoData = True
1740
1741
1741 if self.__dataReady:
1742 if self.__dataReady:
@@ -1746,6 +1747,7 class PulsePair_vRF(Operation):
1746 dataOut.dataPP_SNR = data_snrPP
1747 dataOut.dataPP_SNR = data_snrPP
1747 dataOut.dataPP_WIDTH = data_specwidth
1748 dataOut.dataPP_WIDTH = data_specwidth
1748 dataOut.dataPP_CCF = data_ccf
1749 dataOut.dataPP_CCF = data_ccf
1750 dataOut.dataPP_NOISE = data_noise
1749 dataOut.PRFbyAngle = self.n #numero de PRF*cada angulo rotado que equivale a un tiempo.
1751 dataOut.PRFbyAngle = self.n #numero de PRF*cada angulo rotado que equivale a un tiempo.
1750 dataOut.nProfiles = int(dataOut.nProfiles/n)
1752 dataOut.nProfiles = int(dataOut.nProfiles/n)
1751 dataOut.utctime = avgdatatime
1753 dataOut.utctime = avgdatatime
General Comments 0
You need to be logged in to leave comments. Login now