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