##// END OF EJS Templates
Test general para merge de pulsos0
avaldezp -
r1495:12343fa21ce1
parent child
Show More
@@ -1,343 +1,350
1 # SOPHY PROC script
1 # SOPHY PROC script
2 import os, sys, json, argparse
2 import os, sys, json, argparse
3 import datetime
3 import datetime
4 import time
4 import time
5
5
6 PATH = '/DATA_RM/DATA'
6 PATH = '/DATA_RM/DATA'
7 #PATH = '/media/jespinoza/Elements'
7 #PATH = '/media/jespinoza/Elements'
8 #PATH = '/media/jespinoza/data/SOPHY'
8 #PATH = '/media/jespinoza/data/SOPHY'
9 PATH = '/home/soporte/Documents/HUANCAYO'
9 PATH = '/home/soporte/Documents/HUANCAYO'
10 PATH = '/home/soporte/Documents/EVENTO/'
11 #HYO_PM@2022-05-31T12-00-17
10
12
11 PARAM = {
13 PARAM = {
12 'S': {'name': 'dataPP_POWER', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
14 '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},
15 #'V': {'name': 'dataPP_DOP', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
16 'V': {'name': 'velRadial_V', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', '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},
17 '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},
18 '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},
19 '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},
20 'Z': {'name': 'Zdb', 'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','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}
21 'W': {'name': 'Sigmav_W', 'zmin': -20, 'zmax': 60, 'colormap': 'sophy_w','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
19 }
22 }
20
23
21 def max_index(r, sample_rate, ipp):
24 def max_index(r, sample_rate, ipp):
22
25
23 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
26 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
24
27
25 def main(args):
28 def main(args):
26
29
27 experiment = args.experiment
30 experiment = args.experiment
28 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
31 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
29 conf = json.loads(fp.read())
32 conf = json.loads(fp.read())
30
33
31 ipp_km = conf['usrp_tx']['ipp']
34 ipp_km = conf['usrp_tx']['ipp']
32 ipp = ipp_km * 2 /300000
35 ipp = ipp_km * 2 /300000
33 sample_rate = conf['usrp_rx']['sample_rate']
36 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
37 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
35 speed_axis = conf['pedestal']['speed']
38 speed_axis = conf['pedestal']['speed']
36 steps = conf['pedestal']['table']
39 steps = conf['pedestal']['table']
37 time_offset = args.time_offset
40 time_offset = args.time_offset
38 parameters = args.parameters
41 parameters = args.parameters
39 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
42 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
40 end_date = start_date
43 end_date = start_date
41 if args.start_time:
44 if args.start_time:
42 start_time = args.start_time
45 start_time = args.start_time
43 else:
46 else:
44 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
47 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
45 #start_time = '13:00:00'
48 #start_time = '16:15:00'
46 end_time = '23:59:59'
49 end_time = '23:59:59'
47 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
50 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
48 path = os.path.join(PATH, experiment, 'rawdata')
51 path = os.path.join(PATH, experiment, 'rawdata')
49 path_ped = os.path.join(PATH, experiment, 'position')
52 path_ped = os.path.join(PATH, experiment, 'position')
50 path_plots = os.path.join(PATH, experiment, 'plots')
53 path_plots = os.path.join(PATH, experiment, 'plots_R5km_M1.62km')
51 path_save = os.path.join(PATH, experiment, 'param')
54 path_save = os.path.join(PATH, experiment, 'param')
52 RMIX = 1
55 RMIX = 1.62
53
56
54 from schainpy.controller import Project
57 from schainpy.controller import Project
55
58
56 project = Project()
59 project = Project()
57 project.setup(id='1', name='Sophy', description='sophy proc')
60 project.setup(id='1', name='Sophy', description='sophy proc')
58
61
59 reader = project.addReadUnit(datatype='DigitalRFReader',
62 reader = project.addReadUnit(datatype='DigitalRFReader',
60 path=path,
63 path=path,
61 startDate=start_date,
64 startDate=start_date,
62 endDate=end_date,
65 endDate=end_date,
63 start_time=start_time,
66 startTime=start_time,
64 endTime=end_time,
67 endTime=end_time,
65 delay=30,
68 delay=30,
66 online=args.online,
69 online=args.online,
67 walk=1,
70 walk=1,
68 ippKm = ipp_km,
71 ippKm = ipp_km,
69 getByBlock = 1,
72 getByBlock = 1,
70 nProfileBlocks = N,
73 nProfileBlocks = N,
71 )
74 )
72
75
73 if not conf['usrp_tx']['enable_2']: # One Pulse
76 if not conf['usrp_tx']['enable_2']: # One Pulse
74 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
77 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
75
78
76 if conf['usrp_tx']['code_type_1'] != 'None':
79 if conf['usrp_tx']['code_type_1'] != 'None':
77 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
80 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
78 code = []
81 code = []
79 for c in codes:
82 for c in codes:
80 code.append([int(x) for x in c])
83 code.append([int(x) for x in c])
81 op = voltage.addOperation(name='Decoder', optype='other')
84 op = voltage.addOperation(name='Decoder', optype='other')
82 op.addParameter(name='code', value=code)
85 op.addParameter(name='code', value=code)
83 op.addParameter(name='nCode', value=len(code), format='int')
86 op.addParameter(name='nCode', value=len(code), format='int')
84 op.addParameter(name='nBaud', value=len(code[0]), format='int')
87 op.addParameter(name='nBaud', value=len(code[0]), format='int')
85
88
86 op = voltage.addOperation(name='setH0')
89 op = voltage.addOperation(name='setH0')
87 op.addParameter(name='h0', value='-1.2')
90 op.addParameter(name='h0', value='-1.2')
88
91
89 if args.range > 0:
92 if args.range > 0:
90 op = voltage.addOperation(name='selectHeights')
93 op = voltage.addOperation(name='selectHeights')
91 op.addParameter(name='minIndex', value='0', format='int')
94 op.addParameter(name='minIndex', value='0', format='int')
92 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
95 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
93
96
94 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
97 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
95 op.addParameter(name='n', value=int(N), format='int')
98 op.addParameter(name='n', value=int(N), format='int')
96
99
97 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
100 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
98
101
99 opObj10 = proc.addOperation(name="WeatherRadar")
102 opObj10 = proc.addOperation(name="WeatherRadar")
100 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
103 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
101
104
102 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
105 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
103
106
104 op = proc.addOperation(name='PedestalInformation')
107 op = proc.addOperation(name='PedestalInformation')
105 op.addParameter(name='path', value=path_ped, format='str')
108 op.addParameter(name='path', value=path_ped, format='str')
106 op.addParameter(name='interval', value='0.04')
109 op.addParameter(name='interval', value='0.04')
107 op.addParameter(name='time_offset', value=time_offset)
110 op.addParameter(name='time_offset', value=time_offset)
108 #op.addParameter(name='az_offset', value=-26.2)
111 #op.addParameter(name='az_offset', value=-26.2)
109 op.addParameter(name='mode', value='PPI')
112 op.addParameter(name='mode', value='PPI')
110
113
111 for param in parameters:
114 for param in parameters:
112 op = proc.addOperation(name='Block360_vRF4')
115 op = proc.addOperation(name='Block360')
113 op.addParameter(name='attr_data', value=PARAM[param]['name'])
116 op.addParameter(name='attr_data', value=PARAM[param]['name'])
114 op.addParameter(name='runNextOp', value=True)
117 op.addParameter(name='runNextOp', value=True)
115
118
116 op= proc.addOperation(name='WeatherParamsPlot')
119 op= proc.addOperation(name='WeatherParamsPlot')
117 if args.save: op.addParameter(name='save', value=path_plots, format='str')
120 if args.save: op.addParameter(name='save', value=path_plots, format='str')
118 op.addParameter(name='save_period', value=-1)
121 op.addParameter(name='save_period', value=-1)
119 op.addParameter(name='show', value=args.show)
122 op.addParameter(name='show', value=args.show)
120 op.addParameter(name='channels', value='1,')
123 op.addParameter(name='channels', value='1,')
121 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
124 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
122 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
125 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
123 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
126 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
124 op.addParameter(name='labels', value=[PARAM[param]['label']])
127 op.addParameter(name='labels', value=[PARAM[param]['label']])
125 op.addParameter(name='save_code', value=param)
128 op.addParameter(name='save_code', value=param)
126 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
129 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
127 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
130 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
128
131
129 desc = {
132 desc = {
130 'Data': {
133 'Data': {
131 PARAM[param]['name']: PARAM[param]['wrname'],
134 PARAM[param]['name']: PARAM[param]['wrname'],
132 'utctime': 'time'
135 'utctime': 'time'
133 },
136 },
134 'Metadata': {
137 'Metadata': {
135 'heightList': 'range',
138 'heightList': 'range',
136 'data_azi': 'azimuth',
139 'data_azi': 'azimuth',
137 'data_ele': 'elevation',
140 'data_ele': 'elevation',
138 }
141 }
139 }
142 }
140
143
141 if args.save:
144 if args.save:
142 opObj10 = proc.addOperation(name='HDFWriter')
145 opObj10 = proc.addOperation(name='HDFWriter')
143 opObj10.addParameter(name='path', value=path_save, format='str')
146 opObj10.addParameter(name='path', value=path_save, format='str')
144 opObj10.addParameter(name='Reset', value=True)
147 opObj10.addParameter(name='Reset', value=True)
145 opObj10.addParameter(name='setType', value='weather')
148 opObj10.addParameter(name='setType', value='weather')
146 opObj10.addParameter(name='description', value=json.dumps(desc))
149 opObj10.addParameter(name='description', value=json.dumps(desc))
147 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
150 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
148 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
151 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
149 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
152 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
150
153
151 else: #Two pulses
154 else: #Two pulses
152
155
153 voltage1 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
156 voltage1 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
154
157
155 op = voltage1.addOperation(name='ProfileSelector')
158 op = voltage1.addOperation(name='ProfileSelector')
156 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
159 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
157
160
158 if conf['usrp_tx']['code_type_1'] != 'None':
161 if conf['usrp_tx']['code_type_1'] != 'None':
159 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
162 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
160 code = []
163 code = []
161 for c in codes:
164 for c in codes:
162 code.append([int(x) for x in c])
165 code.append([int(x) for x in c])
163 op = voltage1.addOperation(name='Decoder', optype='other')
166 op = voltage1.addOperation(name='Decoder', optype='other')
164 op.addParameter(name='code', value=code)
167 op.addParameter(name='code', value=code)
165 op.addParameter(name='nCode', value=len(code), format='int')
168 op.addParameter(name='nCode', value=len(code), format='int')
166 op.addParameter(name='nBaud', value=len(code[0]), format='int')
169 op.addParameter(name='nBaud', value=len(code[0]), format='int')
167 else:
170 else:
168 code=[[1]]
171 code=[[1]]
169
172
170
173
171 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
174 op = voltage1.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
172 op.addParameter(name='n', value=2, format='int')
175 op.addParameter(name='n', value=2, format='int')
173
176
174 op = voltage1.addOperation(name='setH0')
177 op = voltage1.addOperation(name='setH0')
175 op.addParameter(name='h0', value='-1.6')
178 op.addParameter(name='h0', value='-1.68')
176
179
177 if args.range > 0:
180 if args.range > 0:
178 op = voltage1.addOperation(name='selectHeights')
181 op = voltage1.addOperation(name='selectHeights')
179 op.addParameter(name='minIndex', value='0', format='int')
182 op.addParameter(name='minIndex', value='0', format='int')
180 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
183 op.addParameter(name='maxIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
181
184
182 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
185 op = voltage1.addOperation(name='PulsePair_vRF', optype='other')
183 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
186 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
184
187
185 proc1 = project.addProcUnit(datatype='ParametersProc', inputId=voltage1.getId())
188 proc1 = project.addProcUnit(datatype='ParametersProc', inputId=voltage1.getId())
186 proc1.addParameter(name='runNextUnit', value=True)
189 proc1.addParameter(name='runNextUnit', value=True)
187
190
188 opObj10 = proc1.addOperation(name="WeatherRadar")
191 opObj10 = proc1.addOperation(name="WeatherRadar")
189 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
192 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
190 print("sample_rate",sample_rate)
193 print("sample_rate",sample_rate)
191 print("tauw1",(1e-6/sample_rate)*len(code[0]))
194 print("tauw1",(1e-6/sample_rate)*len(code[0]))
192 print("Pt1",((1e-6/sample_rate)*len(code[0])/ipp)*200)
195 print("Pt1",((1e-6/sample_rate)*len(code[0])/ipp)*200)
193 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
196 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)
197 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
195
198
196
199
197 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
200 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
198
201
199 op = proc1.addOperation(name='PedestalInformation')
202 op = proc1.addOperation(name='PedestalInformation')
200 op.addParameter(name='path', value=path_ped, format='str')
203 op.addParameter(name='path', value=path_ped, format='str')
201 op.addParameter(name='interval', value='0.04')
204 op.addParameter(name='interval', value='0.04')
202 op.addParameter(name='time_offset', value=time_offset)
205 op.addParameter(name='time_offset', value=time_offset)
203 op.addParameter(name='az_offset', value=-26.2)
206 #op.addParameter(name='az_offset', value=-26.2)
204 op.addParameter(name='mode', value='PPI')
207 op.addParameter(name='mode', value='PPI')
205
208
206 for param in parameters:
209 for param in parameters:
207 op = proc1.addOperation(name='Block360_vRF4')
210 op = proc1.addOperation(name='Block360')
208 op.addParameter(name='attr_data', value=PARAM[param]['name'])
211 op.addParameter(name='attr_data', value=PARAM[param]['name'])
209 op.addParameter(name='runNextOp', value=True)
212 op.addParameter(name='runNextOp', value=True)
210
213
211 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
214 voltage2 = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
212
215
213 op = voltage2.addOperation(name='ProfileSelector')
216 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))
217 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
215
218
216
219
217 if conf['usrp_tx']['code_type_2']:
220 if conf['usrp_tx']['code_type_2']:
218 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
221 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
219 code = []
222 code = []
220 for c in codes:
223 for c in codes:
221 code.append([int(x) for x in c])
224 code.append([int(x) for x in c])
222 op = voltage2.addOperation(name='Decoder', optype='other')
225 op = voltage2.addOperation(name='Decoder', optype='other')
223 op.addParameter(name='code', value=code)
226 op.addParameter(name='code', value=code)
224 op.addParameter(name='nCode', value=len(code), format='int')
227 op.addParameter(name='nCode', value=len(code), format='int')
225 op.addParameter(name='nBaud', value=len(code[0]), format='int')
228 op.addParameter(name='nBaud', value=len(code[0]), format='int')
226
229
227 op = voltage2.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
230 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')
231 op.addParameter(name='n', value=len(code), format='int')
229 ncode = len(code)
232 ncode = len(code)
230 else:
233 else:
231 ncode = 1
234 ncode = 1
232
235
233 op = voltage2.addOperation(name='setH0')
236 op = voltage2.addOperation(name='setH0')
234 op.addParameter(name='h0', value='-1.6')
237 op.addParameter(name='h0', value='-1.68')
235
238
236 if args.range > 0:
239 if args.range > 0:
237 op = voltage2.addOperation(name='selectHeights')
240 op = voltage2.addOperation(name='selectHeights')
238 op.addParameter(name='minIndex', value=max_index(RMIX, sample_rate, ipp), format='int')
241 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')
242 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
240
243
241 op = voltage2.addOperation(name='PulsePair_vRF', optype='other')
244 op = voltage2.addOperation(name='PulsePair_vRF', optype='other')
242 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/ncode, format='int')
245 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/ncode, format='int')
243
246
244 proc2 = project.addProcUnit(datatype='ParametersProc', inputId=voltage2.getId())
247 proc2 = project.addProcUnit(datatype='ParametersProc', inputId=voltage2.getId())
245
248
246 opObj10 = proc2.addOperation(name="WeatherRadar")
249 opObj10 = proc2.addOperation(name="WeatherRadar")
247 opObj10.addParameter(name='variableList',value='Reflectividad,AnchoEspectral')
250 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
248 print("tauw2",(1e-6/sample_rate)*len(code[0]))
251 print("tauw2",(1e-6/sample_rate)*len(code[0]))
249 print("Pt2",((1e-6/sample_rate)*len(code[0])/ipp)*200)
252 print("Pt2",((1e-6/sample_rate)*len(code[0])/ipp)*200)
250 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
253 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)
254 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
252 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
255 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
253
256
254 op = proc2.addOperation(name='PedestalInformation')
257 op = proc2.addOperation(name='PedestalInformation')
255 op.addParameter(name='path', value=path_ped, format='str')
258 op.addParameter(name='path', value=path_ped, format='str')
256 op.addParameter(name='interval', value='0.04')
259 op.addParameter(name='interval', value='0.04')
257 op.addParameter(name='time_offset', value=time_offset)
260 op.addParameter(name='time_offset', value=time_offset)
258 op.addParameter(name='az_offset', value=-26.2)
261 #op.addParameter(name='az_offset', value=-26.2)
259 op.addParameter(name='mode', value='PPI')
262 op.addParameter(name='mode', value='PPI')
260
263
261 for param in parameters:
264 for param in parameters:
262 op = proc2.addOperation(name='Block360_vRF4')
265 op = proc2.addOperation(name='Block360')
263 #op.addParameter(name='axis', value=','.join(axis))
266 #op.addParameter(name='axis', value=','.join(axis))
264 op.addParameter(name='attr_data', value=PARAM[param]['name'])
267 op.addParameter(name='attr_data', value=PARAM[param]['name'])
265 op.addParameter(name='runNextOp', value=True)
268 op.addParameter(name='runNextOp', value=True)
266
269
267 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
270 merge = project.addProcUnit(datatype='MergeProc', inputId=[proc1.getId(), proc2.getId()])
268 merge.addParameter(name='attr_data', value=PARAM[param]['name'])
271 merge.addParameter(name='attr_data', value=PARAM[param]['name'])
269 merge.addParameter(name='mode', value='7') #RM
272 merge.addParameter(name='mode', value='7') #RM
270
273
271 op= merge.addOperation(name='WeatherParamsPlot')
274 op= merge.addOperation(name='WeatherParamsPlot')
272 if args.save: op.addParameter(name='save', value=path_plots, format='str')
275 if args.save: op.addParameter(name='save', value=path_plots, format='str')
273 op.addParameter(name='save_period', value=-1)
276 op.addParameter(name='save_period', value=-1)
274 op.addParameter(name='show', value=args.show)
277 op.addParameter(name='show', value=args.show)
275 op.addParameter(name='channels', value='0,')
278 op.addParameter(name='channels', value='0,')
276 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
279 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
277 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
280 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
278 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
281 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
279 op.addParameter(name='labels', value=[PARAM[param]['label']])
282 op.addParameter(name='labels', value=[PARAM[param]['label']])
280 op.addParameter(name='save_code', value=param)
283 op.addParameter(name='save_code', value=param)
281 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
284 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
282 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
285 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
286 op.addParameter(name='bgcolor',value='black')
287 op.addParameter(name='snr_threshold',value=0.4)
288
289
283
290
284 desc = {
291 desc = {
285 'Data': {
292 'Data': {
286 PARAM[param]['name']: {PARAM[param]['wrname']: ['H', 'V']},
293 PARAM[param]['name']: {PARAM[param]['wrname']: ['H', 'V']},
287 'utctime': 'time'
294 'utctime': 'time'
288 },
295 },
289 'Metadata': {
296 'Metadata': {
290 'heightList': 'range',
297 'heightList': 'range',
291 'data_azi': 'azimuth',
298 'data_azi': 'azimuth',
292 'data_ele': 'elevation',
299 'data_ele': 'elevation',
293 'mode_op': 'scan_type',
300 'mode_op': 'scan_type',
294 'h0': 'range_correction',
301 'h0': 'range_correction',
295 }
302 }
296 }
303 }
297
304
298 if args.save:
305 if args.save:
299 writer = merge.addOperation(name='HDFWriter')
306 writer = merge.addOperation(name='HDFWriter')
300 writer.addParameter(name='path', value=path_save, format='str')
307 writer.addParameter(name='path', value=path_save, format='str')
301 writer.addParameter(name='Reset', value=True)
308 writer.addParameter(name='Reset', value=True)
302 writer.addParameter(name='setType', value='weather')
309 writer.addParameter(name='setType', value='weather')
303 writer.addParameter(name='description', value=json.dumps(desc))
310 writer.addParameter(name='description', value=json.dumps(desc))
304 writer.addParameter(name='blocksPerFile', value='1',format='int')
311 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')
312 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']))
313 writer.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
307 # meta
314 # meta
308 writer.addParameter(name='latitude', value='-12.0404828587')
315 writer.addParameter(name='latitude', value='-12.0404828587')
309 writer.addParameter(name='longitude', value='-75.2147483647')
316 writer.addParameter(name='longitude', value='-75.2147483647')
310 writer.addParameter(name='altitude', value='3379.2147483647')
317 writer.addParameter(name='altitude', value='3379.2147483647')
311 writer.addParameter(name='heading', value='0')
318 writer.addParameter(name='heading', value='0')
312 writer.addParameter(name='radar_name', value='SOPHy')
319 writer.addParameter(name='radar_name', value='SOPHy')
313 writer.addParameter(name='institution', value='IGP')
320 writer.addParameter(name='institution', value='IGP')
314 writer.addParameter(name='contact', value='dscipion@igp.gob.pe')
321 writer.addParameter(name='contact', value='dscipion@igp.gob.pe')
315 writer.addParameter(name='created_by', value='Signal Chain (https://pypi.org/project/schainpy/)')
322 writer.addParameter(name='created_by', value='Signal Chain (https://pypi.org/project/schainpy/)')
316 writer.addParameter(name='range_unit', value='km')
323 writer.addParameter(name='range_unit', value='km')
317
324
318 project.start()
325 project.start()
319
326
320 if __name__ == '__main__':
327 if __name__ == '__main__':
321
328
322 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
329 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
323 parser.add_argument('experiment',
330 parser.add_argument('experiment',
324 help='Experiment name')
331 help='Experiment name')
325 parser.add_argument('--parameters', nargs='*', default=['S'],
332 parser.add_argument('--parameters', nargs='*', default=['S'],
326 help='Variables to process: P, Z, V')
333 help='Variables to process: P, Z, V')
327 parser.add_argument('--time_offset', default=0,
334 parser.add_argument('--time_offset', default=0,
328 help='Fix time offset')
335 help='Fix time offset')
329 parser.add_argument('--range', default=0, type=float,
336 parser.add_argument('--range', default=0, type=float,
330 help='Max range to plot')
337 help='Max range to plot')
331 parser.add_argument('--save', action='store_true',
338 parser.add_argument('--save', action='store_true',
332 help='Create output files')
339 help='Create output files')
333 parser.add_argument('--show', action='store_true',
340 parser.add_argument('--show', action='store_true',
334 help='Show matplotlib plot.')
341 help='Show matplotlib plot.')
335 parser.add_argument('--online', action='store_true',
342 parser.add_argument('--online', action='store_true',
336 help='Set online mode.')
343 help='Set online mode.')
337 parser.add_argument('--start_time', default='',
344 parser.add_argument('--start_time', default='',
338 help='Set start time.')
345 help='Set start time.')
339
346
340
347
341 args = parser.parse_args()
348 args = parser.parse_args()
342
349
343 main(args)
350 main(args)
General Comments 0
You need to be logged in to leave comments. Login now