@@ -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