##// END OF EJS Templates
Last fix 'jroproc_voltage and sophy_A' scripts
eynilupu -
r1651:97d051930860
parent child
Show More
@@ -5,7 +5,7 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation, MPDecora
5 from schainpy.model.data.jrodata import Voltage,hildebrand_sekhon
5 from schainpy.model.data.jrodata import Voltage,hildebrand_sekhon
6 from schainpy.utils import log
6 from schainpy.utils import log
7 from time import time
7 from time import time
8
8 from scipy import signal
9
9
10
10
11 class VoltageProc(ProcessingUnit):
11 class VoltageProc(ProcessingUnit):
@@ -1747,6 +1747,120 class PulsePair_vRF(Operation):
1747 dataOut.flagNoData = False
1747 dataOut.flagNoData = False
1748 return dataOut
1748 return dataOut
1749
1749
1750 class Xcorr(Operation):
1751 isConfig = False
1752 __profIndex = 0
1753 code = None
1754 nCode = None
1755 nBaud = None
1756
1757 def __init__(self, **kwargs):
1758
1759 Operation.__init__(self, **kwargs)
1760 self.isConfig = False
1761 self.setupReq = False
1762
1763
1764 def setup(self, code ,dataOut):
1765 self.__profIndex = 0
1766 self.code = code
1767 self.nCode = len(code)
1768 self.nBaud = len(code[0])
1769
1770 self.__nChannels = dataOut.nChannels
1771 self.__nProfiles = dataOut.nProfiles
1772 self.__nHeis = dataOut.nHeights
1773 print("TEST SETUP--------------------------------------------")
1774
1775 if dataOut.flagDataAsBlock:
1776
1777 self.ndatadec = self.__nHeis #- self.nBaud + 1
1778
1779 self.datadecTime = numpy.zeros((self.__nChannels, self.__nProfiles, self.ndatadec), dtype=numpy.complex_)
1780
1781 else:
1782 #Time
1783 self.ndatadec = self.__nHeis #- self.nBaud + 1
1784
1785 self.datadecTime = numpy.zeros((self.__nChannels, self.ndatadec), dtype=numpy.complex_)
1786
1787 def __XcorrByProfile(self,data):
1788 #print("shape0",data[0,:].shape)
1789 #print("shape1",self.code.shape)
1790 for i in range(self.__nChannels):
1791 #print("shape0",data[i,:].shape)
1792 #print("shape1",self.code[0].shape)
1793 c = signal.correlate(data[i,:],self.code[0], mode="full")
1794 lags = signal.correlation_lags(len(data[i,:]), len(self.code[0]), mode="full")
1795 self.datadecTime[i,:]=c[lags>=0]
1796
1797 return self.datadecTime
1798
1799 def __XcorrByBlock(self,data):
1800 repetitions = int(self.__nProfiles/ self.nCode)
1801 junk = numpy.lib.stride_tricks.as_strided(self.code, (repetitions, self.code.size), (0, self.code.itemsize))
1802 junk = junk.flatten()
1803 code_block = numpy.reshape(junk, (self.nCode*repetitions, self.nBaud))
1804
1805 profilesList = range(self.__nProfiles)
1806
1807 for i in range(self.__nChannels):
1808 for j in profilesList:
1809 c =signal.correlate(data[i,j,:], code_block[j,:], mode='full')
1810 lags = signal.correlation_lags(len(data[i,j,:]), len(code_block[j,:]), mode="full")
1811 self.datadecTime[i,j,:] = c[lags>=0]
1812 return self.datadecTime
1813
1814
1815 def run(self, dataOut, code=None,nCode= None,nBaud= None,mode = 0):
1816 if not self.isConfig:
1817 #print("CONFIGURACION..........")
1818 if code is None:
1819 if dataOut.code is None:
1820 raise ValueError("Code could not be read from %s instance. Enter a value in Code parameter" %dataOut.type)
1821
1822 code = dataOut.code
1823 else:
1824 code = numpy.array(code)
1825 code = code.reshape(int(nCode),int(nBaud))
1826 self.setup(code, dataOut)
1827 #print("-------------------------------------TEST SETUP OK")
1828 self.isConfig = True
1829
1830 self.__nProfiles = dataOut.nProfiles
1831 datadec = None
1832
1833 if dataOut.flagDataAsBlock:
1834 """
1835 Decoding when data have been read as block,
1836 """
1837 datadec = self.__XcorrByBlock(dataOut.data)
1838 else:
1839 """
1840 Decoding when data have been read profile by profile
1841 """
1842 datadec = self.__XcorrByProfile(dataOut.data)
1843 #print("type_________________________",datadec.dtype)
1844 if datadec is None:
1845 raise ValueError("Codification mode selected is not valid: mode=%d. Try selecting 0 or 1" %mode)
1846
1847 dataOut.code = self.code
1848 dataOut.nCode = self.nCode
1849 dataOut.nBaud = self.nBaud
1850
1851 dataOut.data = datadec
1852 dataOut.heightList = dataOut.heightList[0:datadec.shape[-1]]
1853
1854 dataOut.flagDecodeData = True #asumo q la data esta decodificada
1855 if self.__profIndex == self.nCode-1:
1856 self.__profIndex = 0
1857 return dataOut
1858
1859 self.__profIndex += 1
1860
1861 return dataOut
1862
1863
1750 # import collections
1864 # import collections
1751 # from scipy.stats import mode
1865 # from scipy.stats import mode
1752 #
1866 #
@@ -24,9 +24,9 META = ['heightList', 'data_azi', 'data_ele', 'mode_op', 'latitude', 'longitude'
24 'snr_threshold', 'dataPP_NOISE']
24 'snr_threshold', 'dataPP_NOISE']
25
25
26
26
27 def max_index(r, sample_rate, ipp):
27 def max_index(r, sample_rate, ipp, h0):
28
28
29 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.68/ 60)
29 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * -h0 / 60)
30
30
31 def main(args):
31 def main(args):
32
32
@@ -55,8 +55,8 def main(args):
55 end_time = args.end_time
55 end_time = args.end_time
56 else:
56 else:
57 end_time = '23:59:59'
57 end_time = '23:59:59'
58
58
59 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
59 N = int(1.0/(abs(speed_axis[0])*ipp)) # 1 GRADO DE RESOLUCION
60
60
61 path = os.path.join(PATH, experiment, 'rawdata')
61 path = os.path.join(PATH, experiment, 'rawdata')
62 path_ped = os.path.join(PATH, experiment, 'position')
62 path_ped = os.path.join(PATH, experiment, 'position')
@@ -68,7 +68,7 def main(args):
68 path_save = os.path.join(PATH, experiment, 'param{}'.format(label))
68 path_save = os.path.join(PATH, experiment, 'param{}'.format(label))
69 RMIX = 4.8#5.8 #4.8#5.68#4.8#4.8#2.64#10#2.64
69 RMIX = 4.8#5.8 #4.8#5.68#4.8#4.8#2.64#10#2.64
70 H0 = -1.68 #-1.68# -1.2#-1.68#-1.2#0.5#-1.2
70 H0 = -1.68 #-1.68# -1.2#-1.68#-1.2#0.5#-1.2
71 MASK = 0.8
71 MASK = 0.6
72 #MASK = 0.4#0.35
72 #MASK = 0.4#0.35
73
73
74 from schainpy.controller import Project
74 from schainpy.controller import Project
@@ -122,7 +122,7 def main(args):
122 if args.range > 0:
122 if args.range > 0:
123 op = voltage.addOperation(name='selectHeights')
123 op = voltage.addOperation(name='selectHeights')
124 op.addParameter(name='minIndex', value='0', format='int')
124 op.addParameter(name='minIndex', value='0', format='int')
125 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
125 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp, H0), format='int')
126
126
127 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
127 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
128 op.addParameter(name='n', value=int(N)/ncode, format='int')
128 op.addParameter(name='n', value=int(N)/ncode, format='int')
@@ -133,7 +133,8 def main(args):
133
133
134 opObj10 = proc.addOperation(name="WeatherRadar")
134 opObj10 = proc.addOperation(name="WeatherRadar")
135 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
135 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
136 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
136 # opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
137 opObj10.addParameter(name='Pt',value=200)
137
138
138 op = proc.addOperation(name='PedestalInformation')
139 op = proc.addOperation(name='PedestalInformation')
139 op.addParameter(name='path', value=path_ped, format='str')
140 op.addParameter(name='path', value=path_ped, format='str')
@@ -145,6 +146,7 def main(args):
145 op = proc.addOperation(name='Block360')
146 op = proc.addOperation(name='Block360')
146 op.addParameter(name='runNextOp', value=True)
147 op.addParameter(name='runNextOp', value=True)
147 op.addParameter(name='attr_data', value='data_param')
148 op.addParameter(name='attr_data', value='data_param')
149 op.addParameter(name='angles', value=angles)
148
150
149 op= proc.addOperation(name='WeatherParamsPlot')
151 op= proc.addOperation(name='WeatherParamsPlot')
150 if args.save: op.addParameter(name='save', value=path_plots, format='str')
152 if args.save: op.addParameter(name='save', value=path_plots, format='str')
@@ -158,8 +160,9 def main(args):
158 op.addParameter(name='save_code', value=param)
160 op.addParameter(name='save_code', value=param)
159 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
161 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
160 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
162 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
161 op.addParameter(name='bgcolor', value='white')
163 op.addParameter(name='bgcolor', value='black')
162 op.addParameter(name='localtime', value=False)
164 op.addParameter(name='localtime', value=False)
165 op.addParameter(name='shapes', value='./shapes')
163 if MASK: op.addParameter(name='mask', value=MASK, format='float')
166 if MASK: op.addParameter(name='mask', value=MASK, format='float')
164 if args.server:
167 if args.server:
165 op.addParameter(name='server', value='190.187.237.239:4444')
168 op.addParameter(name='server', value='190.187.237.239:4444')
@@ -237,7 +240,9 def main(args):
237 op.addParameter(name='code', value=code)
240 op.addParameter(name='code', value=code)
238 op.addParameter(name='nCode', value=len(code), format='int')
241 op.addParameter(name='nCode', value=len(code), format='int')
239 op.addParameter(name='nBaud', value=len(code[0]), format='int')
242 op.addParameter(name='nBaud', value=len(code[0]), format='int')
243 ncode = len(code)
240 else:
244 else:
245 ncode = 1
241 code = ['0']
246 code = ['0']
242
247
243 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
248 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
@@ -246,13 +251,13 def main(args):
246 if args.range > 0:
251 if args.range > 0:
247 op = voltage1.addOperation(name='selectHeights')
252 op = voltage1.addOperation(name='selectHeights')
248 op.addParameter(name='minIndex', value='0', format='int')
253 op.addParameter(name='minIndex', value='0', format='int')
249 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
254 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp, H0), format='int')
250
255
251 op = voltage1.addOperation(name='setH0')
256 op = voltage1.addOperation(name='setH0')
252 op.addParameter(name='h0', value=H0, format='float')
257 op.addParameter(name='h0', value=H0, format='float')
253
258
254 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
259 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
255 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
260 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/ncode, format='int')
256 if args.rmDC:
261 if args.rmDC:
257 op.addParameter(name='removeDC', value=1, format='int')
262 op.addParameter(name='removeDC', value=1, format='int')
258
263
@@ -278,7 +283,7 def main(args):
278 op.addParameter(name='attr_data', value='data_param')
283 op.addParameter(name='attr_data', value='data_param')
279 op.addParameter(name='runNextOp', value=True)
284 op.addParameter(name='runNextOp', value=True)
280 op.addParameter(name='angles', value=angles)
285 op.addParameter(name='angles', value=angles)
281
286 #op.addParameter(name='horario',value=False)
282
287
283 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
288 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
284
289
@@ -303,8 +308,8 def main(args):
303
308
304 if args.range > 0:
309 if args.range > 0:
305 op = voltage2.addOperation(name='selectHeights')
310 op = voltage2.addOperation(name='selectHeights')
306 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
311 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp, H0), format='int')
307 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
312 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp, H0), format='int')
308
313
309 op = voltage2.addOperation(name='setH0')
314 op = voltage2.addOperation(name='setH0')
310 op.addParameter(name='h0', value=H0, format='float')
315 op.addParameter(name='h0', value=H0, format='float')
@@ -322,7 +327,7 def main(args):
322 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
327 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
323 #opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
328 #opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
324 opObj10.addParameter(name='Pt',value=200)
329 opObj10.addParameter(name='Pt',value=200)
325 opObj10.addParameter(name='min_index',value=max_index(RMIX, sample_rate, ipp))
330 opObj10.addParameter(name='min_index',value=max_index(RMIX, sample_rate, ipp, H0))
326 #opObj10.addParameter(name='sesgoZD',value=7.73)
331 #opObj10.addParameter(name='sesgoZD',value=7.73)
327
332
328 op = proc2.addOperation(name='PedestalInformation')
333 op = proc2.addOperation(name='PedestalInformation')
@@ -335,6 +340,7 def main(args):
335 op.addParameter(name='attr_data', value='data_param')
340 op.addParameter(name='attr_data', value='data_param')
336 op.addParameter(name='runNextOp', value=True)
341 op.addParameter(name='runNextOp', value=True)
337 op.addParameter(name='angles', value=angles)
342 op.addParameter(name='angles', value=angles)
343 #op.addParameter(name='horario',value=False)
338
344
339 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
345 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
340 merge.addParameter(name='attr_data', value='data_param')
346 merge.addParameter(name='attr_data', value='data_param')
@@ -350,7 +356,7 def main(args):
350 op.addParameter(name='save_period', value=-1)
356 op.addParameter(name='save_period', value=-1)
351 op.addParameter(name='show', value=args.show)
357 op.addParameter(name='show', value=args.show)
352 #op.addParameter(name='channels', value='0,1')
358 #op.addParameter(name='channels', value='0,1')
353 op.addParameter(name='channels', value='1,')
359 op.addParameter(name='channels', value='0,')
354 op.addParameter(name='zmin', value=PARAM[param]['zmin'], format='int')
360 op.addParameter(name='zmin', value=PARAM[param]['zmin'], format='int')
355 op.addParameter(name='zmax', value=PARAM[param]['zmax'], format='int')
361 op.addParameter(name='zmax', value=PARAM[param]['zmax'], format='int')
356 op.addParameter(name='ymax', value=20, format='int')
362 op.addParameter(name='ymax', value=20, format='int')
@@ -389,9 +395,7 def main(args):
389 writer.addParameter(name='path', value=path_save, format='str')
395 writer.addParameter(name='path', value=path_save, format='str')
390 writer.addParameter(name='Reset', value=True)
396 writer.addParameter(name='Reset', value=True)
391 writer.addParameter(name='setType', value='weather')
397 writer.addParameter(name='setType', value='weather')
392 writer.addParameter(name='setChannel', value='1') #new parameter choose ch 0 or ch 1
398 writer.addParameter(name='setChannel', value='0') #new parameter choose ch 0 H or ch 1 V
393
394
395 writer.addParameter(name='description', value=json.dumps(desc))
399 writer.addParameter(name='description', value=json.dumps(desc))
396 writer.addParameter(name='blocksPerFile', value='1',format='int')
400 writer.addParameter(name='blocksPerFile', value='1',format='int')
397 writer.addParameter(name='metadataList', value=','.join(META))
401 writer.addParameter(name='metadataList', value=','.join(META))
@@ -463,4 +467,4 if __name__ == '__main__':
463 project.start()
467 project.start()
464
468
465 #python sophy_A.py HYO_CC4_CC64_COMB@2022-12-27T00-00-32 --parameters Z --plot --save --show --rmDC --label Z_04 --range 60 --start_time "22:00:00"
469 #python sophy_A.py HYO_CC4_CC64_COMB@2022-12-27T00-00-32 --parameters Z --plot --save --show --rmDC --label Z_04 --range 60 --start_time "22:00:00"
466 # colocar siempre el range que asume 0 y no hace la seleccion de alturas
470 # colocar siempre el range que asume 0 y no hace la seleccion de alturas No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now