##// END OF EJS Templates
test de revision, pruebas y mediciones
avaldezp -
r1484:54ce90295eca
parent child
Show More
@@ -0,0 +1,343
1 # SOPHY PROC script
2 import os, sys, json, argparse
3 import datetime
4 import time
5
6 PATH = '/DATA_RM/DATA'
7 #PATH = '/media/jespinoza/Elements'
8 #PATH = '/media/jespinoza/data/SOPHY'
9 PATH = '/home/soporte/Documents/HUANCAYO'
10
11 PARAM = {
12 'S': {'name': 'dataPP_POWER', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
13 'V': {'name': 'dataPP_DOP', 'zmin': -10, 'zmax': 10, 'colormap': 'RdYlGn', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
14 'R': {'name': 'RhoHV_R', 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
15 'P': {'name': 'PhiD_P', 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
16 'D': {'name': 'Zdb_D', 'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
17 'Z': {'name': 'Zdb', 'zmin': -20, 'zmax': 60, 'colormap': 'gist_ncar','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','ch':1},
18 'W': {'name': 'Sigmav_W', 'zmin': -20, 'zmax': 60, 'colormap': 'viridis','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
19 }
20
21 def max_index(r, sample_rate, ipp):
22
23 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
24
25 def main(args):
26
27 experiment = args.experiment
28 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
29 conf = json.loads(fp.read())
30
31 ipp_km = conf['usrp_tx']['ipp']
32 ipp = ipp_km * 2 /300000
33 sample_rate = conf['usrp_rx']['sample_rate']
34 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
35 speed_axis = conf['pedestal']['speed']
36 steps = conf['pedestal']['table']
37 time_offset = args.time_offset
38 parameters = args.parameters
39 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
40 end_date = start_date
41 if args.start_time:
42 start_time = args.start_time
43 else:
44 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
45 #start_time = '13:00:00'
46 end_time = '23:59:59'
47 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
48 path = os.path.join(PATH, experiment, 'rawdata')
49 path_ped = os.path.join(PATH, experiment, 'position')
50 path_plots = os.path.join(PATH, experiment, 'plots')
51 path_save = os.path.join(PATH, experiment, 'param')
52 RMIX = 1
53
54 from schainpy.controller import Project
55
56 project = Project()
57 project.setup(id='1', name='Sophy', description='sophy proc')
58
59 reader = project.addReadUnit(datatype='DigitalRFReader',
60 path=path,
61 startDate=start_date,
62 endDate=end_date,
63 start_time=start_time,
64 endTime=end_time,
65 delay=30,
66 online=args.online,
67 walk=1,
68 ippKm = ipp_km,
69 getByBlock = 1,
70 nProfileBlocks = N,
71 )
72
73 if not conf['usrp_tx']['enable_2']: # One Pulse
74 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
75
76 if conf['usrp_tx']['code_type_1'] != 'None':
77 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
78 code = []
79 for c in codes:
80 code.append([int(x) for x in c])
81 op = voltage.addOperation(name='Decoder', optype='other')
82 op.addParameter(name='code', value=code)
83 op.addParameter(name='nCode', value=len(code), format='int')
84 op.addParameter(name='nBaud', value=len(code[0]), format='int')
85
86 op = voltage.addOperation(name='setH0')
87 op.addParameter(name='h0', value='-1.2')
88
89 if args.range > 0:
90 op = voltage.addOperation(name='selectHeights')
91 op.addParameter(name='minIndex', value='0', format='int')
92 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
93
94 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
95 op.addParameter(name='n', value=int(N), format='int')
96
97 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
98
99 opObj10 = proc.addOperation(name="WeatherRadar")
100 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
101
102 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
103
104 op = proc.addOperation(name='PedestalInformation')
105 op.addParameter(name='path', value=path_ped, format='str')
106 op.addParameter(name='interval', value='0.04')
107 op.addParameter(name='time_offset', value=time_offset)
108 #op.addParameter(name='az_offset', value=-26.2)
109 op.addParameter(name='mode', value='PPI')
110
111 for param in parameters:
112 op = proc.addOperation(name='Block360_vRF4')
113 op.addParameter(name='attr_data', value=PARAM[param]['name'])
114 op.addParameter(name='runNextOp', value=True)
115
116 op= proc.addOperation(name='WeatherParamsPlot')
117 if args.save: op.addParameter(name='save', value=path_plots, format='str')
118 op.addParameter(name='save_period', value=-1)
119 op.addParameter(name='show', value=args.show)
120 op.addParameter(name='channels', value='1,')
121 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
122 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
123 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
124 op.addParameter(name='labels', value=[PARAM[param]['label']])
125 op.addParameter(name='save_code', value=param)
126 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
127 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
128
129 desc = {
130 'Data': {
131 PARAM[param]['name']: PARAM[param]['wrname'],
132 'utctime': 'time'
133 },
134 'Metadata': {
135 'heightList': 'range',
136 'data_azi': 'azimuth',
137 'data_ele': 'elevation',
138 }
139 }
140
141 if args.save:
142 opObj10 = proc.addOperation(name='HDFWriter')
143 opObj10.addParameter(name='path', value=path_save, format='str')
144 opObj10.addParameter(name='Reset', value=True)
145 opObj10.addParameter(name='setType', value='weather')
146 opObj10.addParameter(name='description', value=json.dumps(desc))
147 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
148 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
149 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
150
151 else: #Two pulses
152
153 voltage1 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
154
155 op = voltage1.addOperation(name='ProfileSelector')
156 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
157
158 if conf['usrp_tx']['code_type_1'] != 'None':
159 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
160 code = []
161 for c in codes:
162 code.append([int(x) for x in c])
163 op = voltage1.addOperation(name='Decoder', optype='other')
164 op.addParameter(name='code', value=code)
165 op.addParameter(name='nCode', value=len(code), format='int')
166 op.addParameter(name='nBaud', value=len(code[0]), format='int')
167 else:
168 code=[[1]]
169
170
171 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
172 op.addParameter(name='n', value=2, format='int')
173
174 op = voltage1.addOperation(name='setH0')
175 op.addParameter(name='h0', value='-1.6')
176
177 if args.range > 0:
178 op = voltage1.addOperation(name='selectHeights')
179 op.addParameter(name='minIndex', value='0', format='int')
180 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
181
182 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
183 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
184
185 proc1 = project.addProcUnit(datatype='ParametersProc', inputId=voltage1.getId())
186 proc1.addParameter(name='runNextUnit', value=True)
187
188 opObj10 = proc1.addOperation(name="WeatherRadar")
189 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
190 print("sample_rate",sample_rate)
191 print("tauw1",(1e-6/sample_rate)*len(code[0]))
192 print("Pt1",((1e-6/sample_rate)*len(code[0])/ipp)*200)
193 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
194 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
195
196
197 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
198
199 op = proc1.addOperation(name='PedestalInformation')
200 op.addParameter(name='path', value=path_ped, format='str')
201 op.addParameter(name='interval', value='0.04')
202 op.addParameter(name='time_offset', value=time_offset)
203 op.addParameter(name='az_offset', value=-26.2)
204 op.addParameter(name='mode', value='PPI')
205
206 for param in parameters:
207 op = proc1.addOperation(name='Block360_vRF4')
208 op.addParameter(name='attr_data', value=PARAM[param]['name'])
209 op.addParameter(name='runNextOp', value=True)
210
211 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
212
213 op = voltage2.addOperation(name='ProfileSelector')
214 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
215
216
217 if conf['usrp_tx']['code_type_2']:
218 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
219 code = []
220 for c in codes:
221 code.append([int(x) for x in c])
222 op = voltage2.addOperation(name='Decoder', optype='other')
223 op.addParameter(name='code', value=code)
224 op.addParameter(name='nCode', value=len(code), format='int')
225 op.addParameter(name='nBaud', value=len(code[0]), format='int')
226
227 op = voltage2.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
228 op.addParameter(name='n', value=len(code), format='int')
229 ncode = len(code)
230 else:
231 ncode = 1
232
233 op = voltage2.addOperation(name='setH0')
234 op.addParameter(name='h0', value='-1.6')
235
236 if args.range > 0:
237 op = voltage2.addOperation(name='selectHeights')
238 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
239 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
240
241 op = voltage2.addOperation(name='PulsePair_vRF', optype='other')
242 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/ncode, format='int')
243
244 proc2 = project.addProcUnit(datatype='ParametersProc', inputId=voltage2.getId())
245
246 opObj10 = proc2.addOperation(name="WeatherRadar")
247 opObj10.addParameter(name='variableList',value='Reflectividad,AnchoEspectral')
248 print("tauw2",(1e-6/sample_rate)*len(code[0]))
249 print("Pt2",((1e-6/sample_rate)*len(code[0])/ipp)*200)
250 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
251 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
252 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
253
254 op = proc2.addOperation(name='PedestalInformation')
255 op.addParameter(name='path', value=path_ped, format='str')
256 op.addParameter(name='interval', value='0.04')
257 op.addParameter(name='time_offset', value=time_offset)
258 op.addParameter(name='az_offset', value=-26.2)
259 op.addParameter(name='mode', value='PPI')
260
261 for param in parameters:
262 op = proc2.addOperation(name='Block360_vRF4')
263 #op.addParameter(name='axis', value=','.join(axis))
264 op.addParameter(name='attr_data', value=PARAM[param]['name'])
265 op.addParameter(name='runNextOp', value=True)
266
267 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
268 merge.addParameter(name='attr_data', value=PARAM[param]['name'])
269 merge.addParameter(name='mode', value='7') #RM
270
271 op= merge.addOperation(name='WeatherParamsPlot')
272 if args.save: op.addParameter(name='save', value=path_plots, format='str')
273 op.addParameter(name='save_period', value=-1)
274 op.addParameter(name='show', value=args.show)
275 op.addParameter(name='channels', value='0,')
276 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
277 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
278 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
279 op.addParameter(name='labels', value=[PARAM[param]['label']])
280 op.addParameter(name='save_code', value=param)
281 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
282 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
283
284 desc = {
285 'Data': {
286 PARAM[param]['name']: {PARAM[param]['wrname']: ['H', 'V']},
287 'utctime': 'time'
288 },
289 'Metadata': {
290 'heightList': 'range',
291 'data_azi': 'azimuth',
292 'data_ele': 'elevation',
293 'mode_op': 'scan_type',
294 'h0': 'range_correction',
295 }
296 }
297
298 if args.save:
299 writer = merge.addOperation(name='HDFWriter')
300 writer.addParameter(name='path', value=path_save, format='str')
301 writer.addParameter(name='Reset', value=True)
302 writer.addParameter(name='setType', value='weather')
303 writer.addParameter(name='description', value=json.dumps(desc))
304 writer.addParameter(name='blocksPerFile', value='1',format='int')
305 writer.addParameter(name='metadataList', value='heightList,data_azi,data_ele,mode_op,latitude,longitude,altitude,heading,radar_name,institution,contact,h0,range_unit')
306 writer.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
307 # meta
308 writer.addParameter(name='latitude', value='-12.0404828587')
309 writer.addParameter(name='longitude', value='-75.2147483647')
310 writer.addParameter(name='altitude', value='3379.2147483647')
311 writer.addParameter(name='heading', value='0')
312 writer.addParameter(name='radar_name', value='SOPHy')
313 writer.addParameter(name='institution', value='IGP')
314 writer.addParameter(name='contact', value='dscipion@igp.gob.pe')
315 writer.addParameter(name='created_by', value='Signal Chain (https://pypi.org/project/schainpy/)')
316 writer.addParameter(name='range_unit', value='km')
317
318 project.start()
319
320 if __name__ == '__main__':
321
322 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
323 parser.add_argument('experiment',
324 help='Experiment name')
325 parser.add_argument('--parameters', nargs='*', default=['S'],
326 help='Variables to process: P, Z, V')
327 parser.add_argument('--time_offset', default=0,
328 help='Fix time offset')
329 parser.add_argument('--range', default=0, type=float,
330 help='Max range to plot')
331 parser.add_argument('--save', action='store_true',
332 help='Create output files')
333 parser.add_argument('--show', action='store_true',
334 help='Show matplotlib plot.')
335 parser.add_argument('--online', action='store_true',
336 help='Set online mode.')
337 parser.add_argument('--start_time', default='',
338 help='Set start time.')
339
340
341 args = parser.parse_args()
342
343 main(args)
@@ -0,0 +1,362
1 #!python
2 '''
3 '''
4
5 import os, sys
6 import datetime
7 import time
8
9 #path = os.path.dirname(os.getcwd())
10 #path = os.path.dirname(path)
11 #sys.path.insert(0, path)
12
13 from schainpy.controller import Project
14
15 desc = "USRP_test"
16 filename = "USRP_processing.xml"
17 controllerObj = Project()
18 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
19
20 ############## USED TO PLOT IQ VOLTAGE, POWER AND SPECTRA #############
21
22 #######################################################################
23 ######PATH DE LECTURA, ESCRITURA, GRAFICOS Y ENVIO WEB#################
24 #######################################################################
25 #path = '/media/data/data/vientos/57.2063km/echoes/NCO_Woodman'
26 #path = '/DATA_RM/TEST_INTEGRACION'
27 #path = '/DATA_RM/PRUEBA_USRP_RP'
28 #path = '/DATA_RM/PRUEBA_USRP_RP'
29
30 path = '/DATA_RM/TEST_2M'
31 path = '/DATA_RM/TEST_2M_UD'
32 path = '/DATA_RM/2MHZ17022022'
33 path = '/DATA_RM/10MHZTEST/'
34 path = '/DATA_RM/10MHZDRONE/'
35
36
37 path= '/home/soporte/TEST_500mVPP'
38 path= '/home/soporte/TEST_1VPP+500mVDC'
39 path = '/home/soporte/TEST_500mVPP+500mVDC'
40 path = '/home/soporte/TEST_1.5VPP'
41 path = '/home/soporte/TEST_2VPP'
42 path= '/home/soporte/TEST_1VPP'
43 path = '/home/soporte/Documents/HUANCAYO/TEST_HYO_PM@2022-05-14T11-28-19/rawdata'
44
45 #HYO_PM@2022-05-28T00-00-17
46 path = '/DATA_RM/DATA/HYO_PM@2022-05-28T00-00-17/rawdata'
47
48 #figpath = '/home/soporte/Pictures/TEST_RP_0001'
49 #figpath = '/home/soporte/Pictures/TEST_RP_6000'
50 figpath = '/home/soporte/Pictures/USRP_TEST_2M'
51 figpath = '/home/soporte/Pictures/USRP_TEST_2M_UD'
52 figpath = '/home/soporte/Pictures/10MHZDRONE'
53 figpath = '/home/soporte/Pictures/500mVPP'
54 figpath = '/home/soporte/Pictures/1VPP+500mVDC'
55 figpath = '/home/soporte/Pictures/TEST_500mVPP+500mVDC'
56 figpath = '/home/soporte/Pictures/TEST_1.5VPP'
57 figpath = '/home/soporte/Pictures/TEST_2VPP'
58 figpath = '/home/soporte/Pictures/TEST_1VPP'
59
60
61
62
63 #remotefolder = "/home/wmaster/graficos"
64 #######################################################################
65 ################# RANGO DE PLOTEO######################################
66 #######################################################################
67 dBmin = '-60'#'-20'
68 dBmax = '-5'#'-85'
69 xmin = '0'
70 xmax ='24'
71 ymin = '0'
72 ymax = '10'
73 #######################################################################
74 ########################FECHA##########################################
75 #######################################################################
76 str = datetime.date.today()
77 today = str.strftime("%Y/%m/%d")
78 str2 = str - datetime.timedelta(days=1)
79 yesterday = str2.strftime("%Y/%m/%d")
80 #######################################################################
81 ######################## UNIDAD DE LECTURA#############################
82 #######################################################################
83 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
84 path=path,
85 startDate="2022/05/28",#today,
86 endDate="2022/05/28",#today,
87 startTime='00:00:00',# inicio libre
88 #startTime='00:00:00',
89 endTime='23:59:59',
90 delay=0,
91 #set=0,
92 online=0,
93 walk=1,
94 ippKm = 60)
95
96 opObj11 = readUnitConfObj.addOperation(name='printInfo')
97 #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock')
98 #######################################################################
99 ################ OPERACIONES DOMINIO DEL TIEMPO########################
100 #######################################################################
101
102 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
103
104 op3 = procUnitConfObjA.addOperation(name='ProfileSelector', optype='other')
105 op3.addParameter(name='profileRangeList', value='1,123')
106
107
108 code=[[1]]
109
110 opObj11 = procUnitConfObjA.addOperation(name='Decoder', optype='other')
111 opObj11.addParameter(name='code', value=code)
112 opObj11.addParameter(name='nCode', value='1', format='int')
113 opObj11.addParameter(name='nBaud', value='1', format='int')
114
115
116 '''
117 op3 = procUnitConfObjA.addOperation(name='ProfileSelector', optype='other')
118 op3.addParameter(name='profileRangeList', value='122,249')
119 code8=[[1,1,1,0,1,1,0,1],[1,1,1,0,0,0,1,0]]
120
121 opObj11 = procUnitConfObjA.addOperation(name='Decoder', optype='other')
122 opObj11.addParameter(name='code', value=code8)
123 opObj11.addParameter(name='nCode', value='2', format='int')
124 opObj11.addParameter(name='nBaud', value='8', format='int')
125 '''
126 op = procUnitConfObjA.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
127 op.addParameter(name='n', value=2, format='int')
128
129
130 '''
131
132 # OJO SCOPE
133 opObj10 = procUnitConfObjA.addOperation(name='ScopePlot', optype='external')
134 opObj10.addParameter(name='id', value='10', format='int')
135 opObj10.addParameter(name='xmin', value='0', format='int')
136 opObj10.addParameter(name='xmax', value='60', format='int')
137 opObj10.addParameter(name='type', value='iq')
138 #opObj10.addParameter(name='ymin', value='-0.20000', format='int')
139 #opObj10.addParameter(name='ymax', value='0.20000', format='int')
140 opObj10.addParameter(name='save', value=figpath, format='str')
141 opObj10.addParameter(name='save_period', value=1, format='int')
142 '''
143 '''
144 opObj11 = procUnitConfObjA.addOperation(name='selectHeights')
145 opObj11.addParameter(name='minIndex', value='1', format='int')
146 # opObj11.addParameter(name='maxIndex', value='10000', format='int')
147 opObj11.addParameter(name='maxIndex', value='200', format='int')
148 '''
149 #
150 # codigo64='1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,'+\
151 # '1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,0,1,1,1,0,1'
152
153 #opObj11 = procUnitConfObjA.addOperation(name='setRadarFrequency')
154 #opObj11.addParameter(name='frequency', value='49920000')
155
156 '''
157 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
158 opObj11.addParameter(name='n', value='625', format='int')#10
159 opObj11.addParameter(name='removeDC', value=1, format='int')
160 '''
161
162 # Ploteo TEST
163 '''
164 opObj11 = procUnitConfObjA.addOperation(name='PulsepairPowerPlot', optype='other')
165 opObj11 = procUnitConfObjA.addOperation(name='PulsepairSignalPlot', optype='other')
166 opObj11 = procUnitConfObjA.addOperation(name='PulsepairVelocityPlot', optype='other')
167 #opObj11.addParameter(name='xmax', value=8)
168 opObj11 = procUnitConfObjA.addOperation(name='PulsepairSpecwidthPlot', optype='other')
169 '''
170 # OJO SCOPE
171 #opObj10 = procUnitConfObjA.addOperation(name='ScopePlot', optype='external')
172 #opObj10.addParameter(name='id', value='10', format='int')
173 ##opObj10.addParameter(name='xmin', value='0', format='int')
174 ##opObj10.addParameter(name='xmax', value='50', format='int')
175 #opObj10.addParameter(name='type', value='iq')
176 ##opObj10.addParameter(name='ymin', value='-5000', format='int')
177 ##opObj10.addParameter(name='ymax', value='8500', format='int')
178 #opObj11.addParameter(name='save', value=figpath, format='str')
179 #opObj11.addParameter(name='save_period', value=10, format='int')
180
181 #opObj10 = procUnitConfObjA.addOperation(name='setH0')
182 #opObj10.addParameter(name='h0', value='-5000', format='float')
183
184 #opObj11 = procUnitConfObjA.addOperation(name='filterByHeights')
185 #opObj11.addParameter(name='window', value='1', format='int')
186
187 #codigo='1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1'
188 #opObj11 = procUnitConfObjSousy.addOperation(name='Decoder', optype='other')
189 #opObj11.addParameter(name='code', value=codigo, format='floatlist')
190 #opObj11.addParameter(name='nCode', value='1', format='int')
191 #opObj11.addParameter(name='nBaud', value='28', format='int')
192
193 #opObj11 = procUnitConfObjA.addOperation(name='CohInt', optype='other')
194 #opObj11.addParameter(name='n', value='100', format='int')
195
196 #######################################################################
197 ########## OPERACIONES ParametersProc########################
198 #######################################################################
199 ###procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
200 '''
201
202 opObj11 = procUnitConfObjA.addOperation(name='PedestalInformation')
203 opObj11.addParameter(name='path_ped', value=path_ped)
204 opObj11.addParameter(name='path_adq', value=path_adq)
205 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
206 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
207 opObj11.addParameter(name='blocksPerfile', value='100', format='int')
208 opObj11.addParameter(name='f_a_p', value='25', format='int')
209 opObj11.addParameter(name='online', value='0', format='int')
210
211 opObj11 = procUnitConfObjA.addOperation(name='Block360')
212 opObj11.addParameter(name='n', value='40', format='int')
213
214 opObj11= procUnitConfObjA.addOperation(name='WeatherPlot',optype='other')
215 opObj11.addParameter(name='save', value=figpath)
216 opObj11.addParameter(name='save_period', value=1)
217
218 8
219 '''
220
221
222 '''
223 opObj11 = procUnitConfObjA.addOperation(name='CohInt', optype='other')
224 opObj11.addParameter(name='n', value='250', format='int')
225 '''
226 #######################################################################
227 ########## OPERACIONES DOMINIO DE LA FRECUENCIA########################
228 #######################################################################
229 '''
230 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
231 procUnitConfObjB.addParameter(name='nFFTPoints', value='64', format='int')
232 procUnitConfObjB.addParameter(name='nProfiles', value='64', format='int')
233 '''
234
235 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
236 procUnitConfObjB.addParameter(name='nFFTPoints', value='61', format='int')
237 procUnitConfObjB.addParameter(name='nProfiles', value='61', format='int')
238
239 '''
240 procUnitConfObjC = controllerObj.addProcUnit(datatype='SpectraHeisProc', inputId=procUnitConfObjA.getId())
241 #procUnitConfObjB.addParameter(name='nFFTPoints', value='64', format='int')
242 #procUnitConfObjB.addParameter(name='nProfiles', value='64', format='int')
243 opObj11 = procUnitConfObjC.addOperation(name='IncohInt4SpectraHeis', optype='other')
244 #opObj11.addParameter(name='timeInterval', value='4', format='int')
245 opObj11.addParameter(name='n', value='100', format='int')
246
247 #procUnitConfObjB.addParameter(name='pairsList', value='(0,0),(1,1),(0,1)', format='pairsList')
248
249 #opObj13 = procUnitConfObjB.addOperation(name='removeDC')
250 #opObj13.addParameter(name='mode', value='2', format='int')
251
252 #opObj11 = procUnitConfObjB.addOperation(name='IncohInt', optype='other')
253 #opObj11.addParameter(name='n', value='8', format='float')
254 #######################################################################
255 ########## PLOTEO DOMINIO DE LA FRECUENCIA#############################
256 #######################################################################
257 #----
258 '''
259 '''
260 opObj11 = procUnitConfObjC.addOperation(name='SpectraHeisPlot')
261 opObj11.addParameter(name='id', value='10', format='int')
262 opObj11.addParameter(name='wintitle', value='Spectra_Alturas', format='str')
263 #opObj11.addParameter(name='xmin', value=-100000, format='float')
264 #opObj11.addParameter(name='xmax', value=100000, format='float')
265 opObj11.addParameter(name='oneFigure', value=False,format='bool')
266 #opObj11.addParameter(name='zmin', value=-10, format='int')
267 #opObj11.addParameter(name='zmax', value=40, format='int')
268 opObj11.addParameter(name='ymin', value=10, format='int')
269 opObj11.addParameter(name='ymax', value=55, format='int')
270 opObj11.addParameter(name='grid', value=True, format
271 [Reading] 2022-05-23 12:27:32.732775: 21333 samples <> 0.010667 sec
272 ='bool')
273 #opObj11.addParameter(name='showprofile', value='1', format='int')
274 opObj11.addParameter(name='save', value=figpath, format='str')
275 #opObj11.addParameter(name='save_period', value=10, format='int')
276 '''
277 '''
278 opObj11 = procUnitConfObjC.addOperation(name='RTIHeisPlot')
279 opObj11.addParameter(name='id', value='10', format='int')
280 opObj11.addParameter(name='wintitle', value='RTI_Alturas', format='str')
281 opObj11.addParameter(name='xmin', value=11.0, format='float')
282 opObj11.addParameter(name='xmax', value=18.0, format='float')
283 opObj11.addParameter(name='zmin', value=10, format='int')
284 opObj11.addParameter(name='zmax', value=30, format='int')
285 opObj11.addParameter(name='ymin', value=5, format='int')
286 opObj11.addParameter(name='ymax', value=28, format='int')
287 opObj11.addParameter(name='showprofile', value='1', format='int')
288 opObj11.addParameter(name='save', value=figpath, format='str')
289 opObj11.addParameter(name='save_period', value=10, format='int')
290 '''
291
292 #SpectraPlot
293
294 opObj11 = procUnitConfObjB.addOperation(name='SpectraPlot', optype='external')
295 opObj11.addParameter(name='id', value='1', format='int')
296 opObj11.addParameter(name='wintitle', value='Spectra', format='str')
297 #opObj11.addParameter(name='xmin', value=-0.01, format='float')
298 #opObj11.addParameter(name='xmax', value=0.01, format='float')
299 opObj11.addParameter(name='zmin', value=dBmin, format='int')
300 opObj11.addParameter(name='zmax', value=dBmax, format='int')
301 opObj11.addParameter(name='ymin', value=ymin, format='int')
302 opObj11.addParameter(name='ymax', value=ymax, format='int')
303 opObj11.addParameter(name='showprofile', value='1', format='int')
304 opObj11.addParameter(name='save', value=figpath, format='str')
305 opObj11.addParameter(name='save_period', value=10, format='int')
306
307
308 #RTIPLOT
309 '''
310 opObj11 = procUnitConfObjB.addOperation(name='RTIPlot', optype='external')
311 opObj11.addParameter(name='id', value='2', format='int')
312 opObj11.addParameter(name='wintitle', value='RTIPlot', format='str')
313 opObj11.addParameter(name='zmin', value=dBmin, format='int')
314 opObj11.addParameter(name='zmax', value=dBmax, format='int')
315 #opObj11.addParameter(name='ymin', value=ymin, format='int')
316 #opObj11.addParameter(name='ymax', value=ymax, format='int')
317 #opObj11.addParameter(name='xmin', value=15, format='int')
318 #opObj11.addParameter(name='xmax', value=16, format='int')
319 opObj11.addParameter(name='zmin', value=dBmin, format='int')
320 opObj11.addParameter(name='zmax', value=dBmax, format='int')
321
322 opObj11.addParameter(name='showprofile', value='1', format='int')
323 opObj11.addParameter(name='save', value=figpath, format='str')
324 opObj11.addParameter(name='save_period', value=10, format='int')
325 '''
326 '''
327 # opObj11 = procUnitConfObjB.addOperation(name='CrossSpectraPlot', optype='other')
328 # opObj11.addParameter(name='id', value='3', format='int')
329 # opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
330 # opObj11.addParameter(name='ymin', value=ymin, format='int')
331 # opObj11.addParameter(name='ymax', value=ymax, format='int')
332 # opObj11.addParameter(name='phase_cmap', value='jet', format='str')
333 # opObj11.addParameter(name='zmin', value=dBmin, format='int')
334 # opObj11.addParameter(name='zmax', value=dBmax, format='int')
335 # opObj11.addParameter(name='figpath', value=figures_path, format='str')
336 # opObj11.addParameter(name='save', value=0, format='bool')
337 # opObj11.addParameter(name='pairsList', value='(0,1)', format='pairsList')
338 # #
339 # opObj11 = procUnitConfObjB.addOperation(name='CoherenceMap', optype='other')
340 # opObj11.addParameter(name='id', value='4', format='int')
341 # opObj11.addParameter(name='wintitle', value='Coherence', format='str')
342 # opObj11.addParameter(name='phase_cmap', value='jet', format='str')
343 # opObj11.addParameter(name='xmin', value=xmin, format='float')
344 # opObj11.addParameter(name='xmax', value=xmax, format='float')
345 # opObj11.addParameter(name='figpath', value=figures_path, format='str')
346 # opObj11.addParameter(name='save', value=0, format='bool')
347 # opObj11.addParameter(name='pairsList', value='(0,1)', format='pairsList')
348 #
349 '''
350 '''
351 #######################################################################
352 ############### UNIDAD DE ESCRITURA ###################################
353 #######################################################################
354 #opObj11 = procUnitConfObjB.addOperation(name='SpectraWriter', optype='other')
355 #opObj11.addParameter(name='path', value=wr_path)
356 #opObj11.addParameter(name='blocksPerFile', value='50', format='int')
357 print ("Escribiendo el archivo XML")
358 print ("Leyendo el archivo XML")
359 '''
360
361
362 controllerObj.start()
@@ -0,0 +1,378
1
2 # SOPHY PROC script
3 import os, sys, json, argparse
4 import datetime
5 import time
6
7 PATH = '/DATA_RM/DATA'
8 # PATH = '/Users/jespinoza/workspace/data/'
9 #PATH = '/home/soporte/Documents/HUANCAYO'
10 PARAM = {
11 'P': {'name': 'dataPP_POWER', 'zmin': -45, 'zmax': -25, 'colormap': 'jet', 'label': 'Power', 'wrname': 'Pow','cb_label': 'dB', 'ch':0},
12 'V': {'name': 'dataPP_DOP', 'zmin': -20, 'zmax': 20, 'colormap': 'seismic', 'label': 'Velocity', 'wrname': 'Vel', 'cb_label': 'm/s', 'ch':0},
13 'RH': {'name': 'RhoHV_R', 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'Coef.Correlacion', 'wrname':'R', 'cb_label': '*', 'ch':0},
14 'FD': {'name': 'PhiD_P', 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'Fase Diferencial', 'wrname':'P' , 'cb_label': 'ΒΊ', 'ch':0},
15 'ZD': {'name': 'Zdb_D', 'zmin': -20, 'zmax': 60, 'colormap': 'viridis','label': 'Reflect.Diferencial','wrname':'D' , 'cb_label': 'dBz','ch':0},
16 'Z': {'name': 'Zdb', 'zmin': -20, 'zmax': 70, 'colormap': 'gist_ncar','label': 'Reflectividad', 'wrname':'Z', 'cb_label': 'dBz','ch':1},
17 'W': {'name': 'Sigmav_W', 'zmin': 0, 'zmax':5, 'colormap': 'viridis','label': 'AnchoEspectral', 'wrname':'S', 'cb_label': 'hz', 'ch':1}
18 }
19
20 #
21 def max_index(r, sample_rate, ipp):
22
23 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
24
25 def main(args):
26
27 experiment = args.experiment
28 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
29 conf = json.loads(fp.read())
30
31 ipp_km = conf['usrp_tx']['ipp']
32 ipp = ipp_km * 2 /300000
33 sample_rate = conf['usrp_rx']['sample_rate']
34 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
35 speed_axis = conf['pedestal']['speed']
36 steeps = conf['pedestal']['table']
37 time_offset = args.time_offset
38 parameters = args.parameters
39 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
40 end_date = start_date
41 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
42 end_time = '23:59:59'
43 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
44 path = os.path.join(PATH, experiment, 'rawdata')
45 path_ped = os.path.join(PATH, experiment, 'position')
46 path_plots = os.path.join(PATH, experiment, 'plots_ch0')
47 path_save = os.path.join(PATH, experiment, 'param')
48 RMIX = 20
49
50 from schainpy.controller import Project
51
52 project = Project()
53 project.setup(id='1', name='Sophy', description='sophy proc')
54
55 reader = project.addReadUnit(datatype='DigitalRFReader',
56 path=path,
57 startDate=start_date,
58 endDate=end_date,
59 startTime=start_time,
60 endTime=end_time,
61 delay=30,
62 channelList='0',
63 online=args.online,
64 walk=1,
65 ippKm = ipp_km,
66 getByBlock = 1,
67 nProfileBlocks = N,
68 )
69
70 if not conf['usrp_tx']['enable_2']: # One Pulse
71 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
72
73 if conf['usrp_tx']['code_type_1']:
74 code = [c.split() for c in conf['usrp']['code_1']]
75 op = voltage.addOperation(name='Decoder', optype='other')
76 op.addParameter(name='code', value=code)
77 op.addParameter(name='nCode', value=len(code), format='int')
78 op.addParameter(name='nBaud', value=len(code[0]), format='int')
79
80 op = voltage.addOperation(name='setH0')
81 op.addParameter(name='h0', value='-1.2')
82
83 if args.range >= 0:
84 op = voltage.addOperation(name='selectHeights')
85 op.addParameter(name='minIndex', value='0', format='int')
86 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
87
88 code=[[1]]
89 opObj11 = voltage.addOperation(name='Decoder', optype='other')
90 opObj11.addParameter(name='code', value=code)
91 opObj11.addParameter(name='nCode', value='1', format='int')
92 opObj11.addParameter(name='nBaud', value='1', format='int')
93
94 op = voltage2.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
95 op.addParameter(name='n', value=2*len(code), format='int')
96
97 #op = voltage.addOperation(name='PulsePair_vRF', optype='other')
98 #op.addParameter(name='n', value=int(N), format='int')
99
100 if args.range >= 0:
101 op = voltage.addOperation(name='selectHeights')
102 op.addParameter(name='minIndex', value='0', format='int')
103 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
104
105
106 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
107 op.addParameter(name='n', value=125, format='int')
108
109
110 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
111 #procUnitConfObjB.addParameter(name='runNextUnit', value=True)
112
113 opObj10 = proc.addOperation(name="WeatherRadar")
114 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
115
116 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
117
118 op = proc.addOperation(name='PedestalInformation')
119 op.addParameter(name='path', value=path_ped, format='str')
120 op.addParameter(name='interval', value='0.04')
121 op.addParameter(name='time_offset', value=time_offset)
122 op.addParameter(name='az_offset', value=-26.2)
123
124 for param in parameters:
125 op = proc.addOperation(name='Block360_vRF4')
126 #op.addParameter(name='axis', value=','.join(axis))
127 op.addParameter(name='attr_data', value=PARAM[param]['name'])
128 op.addParameter(name='runNextOp', value=True)
129
130 op= proc.addOperation(name='WeatherParamsPlot')
131 if args.save: op.addParameter(name='save', value=path_plots, format='str')
132 op.addParameter(name='save_period', value=-1)
133 op.addParameter(name='show', value=args.show)
134 op.addParameter(name='channels', value='0,')
135 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
136 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
137 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
138 op.addParameter(name='labels', value=[PARAM[param]['label']])
139 op.addParameter(name='save_code', value=param)
140 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
141 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
142
143 desc = {
144 'Data': {
145 PARAM[param]['name']: PARAM[param]['label'],
146 'utctime': 'time'
147 },
148 'Metadata': {
149 'heightList': 'range',
150 'data_azi': 'azimuth',
151 'data_ele': 'elevation',
152 }
153 }
154
155 if args.save:
156 opObj10 = proc.addOperation(name='HDFWriter')
157 opObj10.addParameter(name='path',value=path_save+'-{}'.format(param), format='str')
158 opObj10.addParameter(name='Reset',value=True)
159 opObj10.addParameter(name='setType',value='weather')
160 opObj10.addParameter(name='description',value='desc')
161 opObj10.addParameter(name='blocksPerFile',value='1',format='int')
162 opObj10.addParameter(name='metadataList',value='heightList,data_azi,data_ele')
163 opObj10.addParameter(name='dataList',value='{},utctime'.format(PARAM[param]['name']))
164
165 else: #Two pulses
166
167 voltage1 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
168
169 print("repetions",conf['usrp_tx']['repetitions_1'])
170
171 op = voltage1.addOperation(name='ProfileSelector')
172 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
173
174
175 #op3 = voltage1.addOperation(name='ProfileSelector', optype='other')
176 #op3.addParameter(name='profileRangeList', value='1,123')
177
178 '''
179 if conf['usrp_tx']['code_type_1'] != 'None':
180 code = [c.split() for c in conf['usrp_tx']['code_1']]
181 op = voltage1.addOperation(name='Decoder', optype='other')
182 op.addParameter(name='code', value=code)
183 op.addParameter(name='nCode', value=len(code), format='int')
184 op.addParameter(name='nBaud', value=len(code[0]), format='int')
185 '''
186
187 code=[[1]]
188
189 opObj11 = voltage1.addOperation(name='Decoder', optype='other')
190 opObj11.addParameter(name='code', value=code)
191 opObj11.addParameter(name='nCode', value='1', format='int')
192 opObj11.addParameter(name='nBaud', value='1', format='int')
193
194 op = voltage1.addOperation(name='setH0')
195 op.addParameter(name='h0', value='-1.2')
196
197 if args.range >= 0:
198 op = voltage1.addOperation(name='selectHeights')
199 op.addParameter(name='minIndex', value='0', format='int')
200 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
201
202 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
203 op.addParameter(name='n', value=2, format='int')
204
205 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
206 #op.addParameter(name='n', value=int(N), format='int')
207 op.addParameter(name='n', value=61, format='int')
208 #op.addParameter(name='removeDC',value=True)
209
210 '''
211 if args.range >= 0:
212 print("corto",max_index(RMIX, sample_rate, ipp))
213 op = voltage1.addOperation(name='selectHeights')
214 op.addParameter(name='minIndex', value='0', format='int')
215 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
216 '''
217 proc1 = project.addProcUnit(datatype='ParametersProc', inputId=voltage1.getId())
218 proc1.addParameter(name='runNextUnit', value=True)
219
220 opObj10 = proc1.addOperation(name="WeatherRadar")
221 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
222 opObj10.addParameter(name='tauW',value=0.4*1e-6)
223 opObj10.addParameter(name='Pt',value=0.2)
224
225 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
226
227 op = proc1.addOperation(name='PedestalInformation')
228 op.addParameter(name='path', value=path_ped, format='str')
229 op.addParameter(name='interval', value='0.04')
230 op.addParameter(name='time_offset', value=time_offset)
231 op.addParameter(name='az_offset', value=-26.2)
232
233 for param in parameters:
234 op = proc1.addOperation(name='Block360_vRF4')
235 op.addParameter(name='attr_data', value=PARAM[param]['name'])
236 op.addParameter(name='runNextOp', value=True)
237
238 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
239
240 op = voltage2.addOperation(name='ProfileSelector')
241 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
242
243
244 if conf['usrp_tx']['code_type_2']:
245 print(conf['usrp_tx']['code_2'])
246 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
247 code = []
248 for c in codes:
249 code.append([int(x) for x in c])
250 print(code)
251 print(code[0])
252 op = voltage2.addOperation(name='Decoder', optype='other')
253 op.addParameter(name='code', value=code)
254 op.addParameter(name='nCode', value=len(code), format='int')
255 op.addParameter(name='nBaud', value=len(code[0]), format='int')
256 import numpy
257 pwcode = numpy.sum(numpy.array(code[0])**2)
258 print("pwcode",pwcode)
259
260 op = voltage2.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
261 op.addParameter(name='n', value=len(code), format='int')
262 ncode = len(code)
263 else:
264 ncode = 1
265
266 op = voltage2.addOperation(name='setH0')
267 op.addParameter(name='h0', value='-1.2')
268
269 if args.range >= 0:
270 if args.range==0:
271 args.range= ipp_km
272 op = voltage2.addOperation(name='selectHeights')
273 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
274 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
275
276 #op = voltage2.addOperation(name='PulsePair_vRF', optype='other')
277 #op.addParameter(name='n', value=int(N)/ncode, format='int')
278 op = voltage2.addOperation(name='PulsePair_vRF', optype='other')
279 op.addParameter(name='n', value=64, format='int')
280 #op.addParameter(name='removeDC',value=True)
281
282 '''
283
284 if args.range >= 0:
285 if args.range==0:
286 args.range= ipp_km
287 op = voltage2.addOperation(name='selectHeights')
288 print("largo",max_index(RMIX, sample_rate, ipp))
289 print("largo2",max_index(args.range, sample_rate, ipp))
290
291 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
292 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
293 '''
294
295 proc2 = project.addProcUnit(datatype='ParametersProc', inputId=voltage2.getId())
296
297 opObj10 = proc2.addOperation(name="WeatherRadar")
298 opObj10.addParameter(name='variableList',value='Reflectividad,AnchoEspectral')
299 opObj10.addParameter(name='tauW',value=6.3*1e-6)
300 opObj10.addParameter(name='Pt',value=3.2)
301
302
303 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
304
305 op = proc2.addOperation(name='PedestalInformation')
306 op.addParameter(name='path', value=path_ped, format='str')
307 op.addParameter(name='interval', value='0.04')
308 op.addParameter(name='time_offset', value=time_offset)
309 op.addParameter(name='az_offset', value=-26.2)
310
311 for param in parameters:
312 op = proc2.addOperation(name='Block360_vRF4')
313 #op.addParameter(name='axis', value=','.join(axis))
314 op.addParameter(name='attr_data', value=PARAM[param]['name'])
315 op.addParameter(name='runNextOp', value=True)
316
317 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
318 merge.addParameter(name='attr_data', value=PARAM[param]['name'])
319 merge.addParameter(name='mode', value='7') #RM
320
321 op= merge.addOperation(name='WeatherParamsPlot')
322 if args.save: op.addParameter(name='save', value=path_plots, format='str')
323 op.addParameter(name='save_period', value=-1)
324 op.addParameter(name='show', value=args.show)
325 op.addParameter(name='channels', value='0,')
326 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
327 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
328 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
329 op.addParameter(name='labels', value=[PARAM[param]['label']])
330 op.addParameter(name='save_code', value=param)
331 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
332 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
333
334 desc = {
335 'Data': {
336 PARAM[param]['name']: PARAM[param]['label'],
337 'utctime': 'time'
338 },
339 'Metadata': {
340 'heightList': 'range',
341 'data_azi': 'azimuth',
342 'data_ele': 'elevation',
343 }
344 }
345
346 if args.save:
347 opObj10 = merge.addOperation(name='HDFWriter')
348 opObj10.addParameter(name='path',value=path_save, format='str')
349 opObj10.addParameter(name='Reset',value=True)
350 opObj10.addParameter(name='setType',value='weather')
351 opObj10.addParameter(name='description',value='desc')
352 opObj10.addParameter(name='blocksPerFile',value='1',format='int')
353 opObj10.addParameter(name='metadataList',value='heightList,data_azi,data_ele')
354 opObj10.addParameter(name='dataList',value='{},utctime'.format(PARAM[param]['name']))
355
356 project.start()
357
358 if __name__ == '__main__':
359
360 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
361 parser.add_argument('experiment',
362 help='Experiment name')
363 parser.add_argument('--parameters', nargs='*', default=['P'],
364 help='Variables to process: P, Z, V')
365 parser.add_argument('--time_offset', default=0,
366 help='Fix time offset')
367 parser.add_argument('--range', default=0, type=float,
368 help='Max range to plot')
369 parser.add_argument('--save', action='store_true',
370 help='Create output files')
371 parser.add_argument('--show', action='store_true',
372 help='Show matplotlib plot.')
373 parser.add_argument('--online', action='store_true',
374 help='Set online mode.')
375
376 args = parser.parse_args()
377
378 main(args)
General Comments 0
You need to be logged in to leave comments. Login now