##// END OF EJS Templates
update scripts y test de ruido
avaldezp -
r1523:2230f258b9f3
parent child
Show More
@@ -0,0 +1,291
1 import numpy
2 print("PULSO CORTO PULSEPAIR:")
3 NOISE=numpy.array([7.058371817678165e-06,
4 7.275877510349e-06,
5 7.08567532050105e-06,
6 6.81062729431438e-06,
7 7.154584392039524e-06,
8 6.9536401673704544e-06,
9 6.990855494619673e-06,
10 6.967875252515689e-06,
11 7.0560893781090685e-06,
12 7.209407465125922e-06,
13 7.231202073381786e-06,
14 7.265750279899678e-06,
15 7.107734872936774e-06,
16 7.424520982726322e-06,
17 7.197484122482031e-06,
18 7.090358800962431e-06,
19 7.0464851158512365e-06,
20 7.044107525827826e-06,
21 6.865979553859618e-06,
22 7.203323109154303e-06,
23 7.209868850961483e-06,
24 7.083282347578637e-06,
25 7.056842419342491e-06,
26 7.152784874057129e-06,
27 7.163698691478186e-06,
28 7.199027309307966e-06,
29 7.252667761463652e-06,
30 7.046838674931362e-06,
31 7.040921076201627e-06,
32 7.0487383768338805e-06,
33 7.05724689017809e-06,
34 7.065717157755511e-06,
35 7.051678380255241e-06,
36 7.072835678313185e-06,
37 6.861349586883288e-06,
38 7.031211299456376e-06,
39 6.833436241886199e-06,
40 7.047831707967921e-06,
41 7.0713983455050595e-06,
42 7.148736754511013e-06,
43 7.010069669415208e-06,
44 7.0013783515682e-06,
45 7.098992971204625e-06,
46 6.892285595650846e-06,
47 7.231184307898404e-06,
48 6.962965300211762e-06,
49 7.044368436000366e-06,
50 6.942974554761911e-06,
51 6.914651484254672e-06,
52 7.007187218040909e-06,
53 7.022009457846838e-06,
54 6.977184020382861e-06,
55 6.924042003696802e-06,
56 7.108313170135402e-06,
57 6.989743863048102e-06,
58 7.048388533120441e-06,
59 7.056638057324237e-06,
60 7.011720610927682e-06])
61 print("LONGITUD :",len(NOISE))
62 NOISE_AVG = numpy.sum(NOISE)/(len(NOISE))
63 print("NOISE_AVG :",NOISE_AVG)
64 print("NOISE_AVG dB:",10*numpy.log10(NOISE_AVG))
65 print("NOISE :",NOISE )
66
67
68
69 print("PULSO LARGO PULSE PAIR")
70 NOISE2=numpy.array([7.1565378542770335e-06,
71 6.972157397106454e-06,
72 7.048872107524711e-06,
73 7.309746521587835e-06,
74 7.4796261680091e-06,
75 7.295291344156035e-06,
76 7.076843902277241e-06,
77 7.04421932353362e-06,
78 7.456298427316662e-06,
79 7.182581655972693e-06,
80 7.58788356312701e-06,
81 7.496525980066003e-06,
82 7.660499656416317e-06,
83 7.517766693476798e-06,
84 7.677073862655797e-06,
85 7.013506288258279e-06,
86 7.478202328226235e-06,
87 7.212604692186345e-06,
88 7.187593606046117e-06,
89 7.2734641705577155e-06,
90 7.491451637527428e-06,
91 7.2990133131716125e-06,
92 7.3708673242234215e-06,
93 7.343146430381782e-06,
94 7.371159755822349e-06,
95 7.484676494237511e-06,
96 7.615252497384968e-06,
97 7.4125206140761264e-06,
98 7.199400161482942e-06,
99 7.549748730417132e-06,
100 7.289268618106982e-06,
101 7.2705490958860185e-06,
102 7.16537572582382e-06,
103 7.154628772091394e-06,
104 7.230639926573772e-06,
105 7.127823088507154e-06,
106 7.430466902457178e-06,
107 7.346943616999105e-06,
108 7.373530337538375e-06,
109 7.048477302439197e-06,
110 7.252816217618462e-06,
111 6.995543397732151e-06,
112 7.49111263133727e-06,
113 7.210551746855847e-06,
114 7.361411752991037e-06,
115 7.261787613473075e-06,
116 7.181385521610965e-06,
117 6.815063845021763e-06,
118 7.099572698347567e-06,
119 7.237832082243544e-06,
120 7.0709738400826794e-06,
121 7.301158361787179e-06,
122 7.340100450663536e-06,
123 7.496934745103125e-06,
124 7.357023364175648e-06,
125 7.416106753434862e-06,
126 7.384383887559784e-06,
127 7.447316987122185e-06,
128 7.472916460116349e-06,
129 7.504206698039756e-06,
130 7.431935409978463e-06,
131 7.379363088805881e-06,
132 7.339162913477491e-06,
133 7.350391084789767e-06,
134 7.5746826017888346e-06,
135 7.317012708547843e-06,
136 7.290728565159114e-06,
137 7.433816153858191e-06,
138 7.638111271367376e-06,
139 7.552784078429459e-06,
140 7.437529555405933e-06,
141 7.673203268647856e-06,
142 7.702162130633843e-06,
143 7.516160930650763e-06,
144 7.2130629756353514e-06,
145 7.241118065364274e-06,
146 7.393124427054974e-06,
147 7.462177513817854e-06,
148 7.525508579421909e-06,
149 7.6171160762888685e-06,
150 7.5835820977287764e-06,
151 7.665218181974922e-06,
152 7.731323154751701e-06,
153 7.3708481606389364e-06,
154 7.618145650759882e-06,
155 7.556526433097294e-06,
156 7.360553158516033e-06,
157 7.700951136862002e-06,
158 7.378343793920657e-06,
159 7.322690297714378e-06,
160 7.2940869124493325e-06,
161 7.199946382806911e-06,
162 7.299681033643804e-06,
163 7.164110592283668e-06,
164 7.374987030621029e-06,
165 7.437533406155818e-06,
166 7.143501776066717e-06,
167 7.162861789301104e-06,
168 7.305254357193068e-06,
169 7.4802314902935914e-06,
170 7.350014227780263e-06,
171 7.381643930745679e-06,
172 7.214508353861626e-06,
173 7.266679682543046e-06,
174 7.262206452087994e-06,
175 7.3586314470399245e-06])
176
177 print("LONGITUD :",len(NOISE2))
178 NOISE2_AVG = numpy.sum(NOISE2)/(len(NOISE2))
179 print("NOISE_AVG :",NOISE2_AVG)
180 print("NOISE_AVG dBz:",10*numpy.log10(NOISE2_AVG))
181 print("NOISE :",NOISE2 )
182
183
184 print("PULSO LARGO MOMENTOS")
185
186 NOISE_M=numpy.array([7.03196744e-06,
187 7.03534479e-06,
188 7.17279532e-06,
189 7.12066195e-06,
190 7.12127453e-06,
191 7.06531925e-06,
192 7.11292408e-06,
193 7.1800289e-06,
194 7.14391236e-06,
195 7.10392988e-06,
196 7.3184699e-06,
197 7.35842827e-06,
198 7.31158043e-06,
199 7.25739358e-06,
200 7.2498753e-06,
201 7.19480709e-06,
202 7.12833865e-06,
203 7.11898311e-06,
204 7.13012482e-06,
205 7.285936e-06,
206 7.12800017e-06,
207 7.16027593e-06,
208 7.12791678e-06,
209 7.18820326e-06,
210 7.1803628e-06,
211 7.15598537e-06,
212 7.15292974e-06,
213 6.96587204e-06,
214 7.20321066e-06,
215 7.0339905e-06,
216 7.09050735e-06,
217 7.01473465e-06,
218 7.08961568e-06,
219 6.9928101e-06,
220 6.98041031e-06,
221 7.07702413e-06,
222 7.07114106e-06,
223 7.1612535e-06,
224 7.02738743e-06,
225 7.08273243e-06,
226 7.07431318e-06,
227 7.15725072e-06,
228 7.11387521e-06,
229 7.11936201e-06,
230 7.0043304e-06,
231 7.13803972e-06,
232 6.93230427e-06,
233 7.01482575e-06,
234 7.02118331e-06,
235 7.00942707e-06,
236 6.98153473e-06,
237 7.14089044e-06,
238 7.07960945e-06,
239 7.06428977e-06,
240 7.14305083e-06,
241 7.22311622e-06,
242 7.18483676e-06,
243 7.13146742e-06,
244 7.15249878e-06,
245 7.13268722e-06,
246 7.12472592e-06,
247 7.11576543e-06,
248 7.20606446e-06,
249 7.14676932e-06,
250 7.13615415e-06,
251 7.18083288e-06,
252 7.05755055e-06,
253 7.09263083e-06,
254 7.17132213e-06,
255 7.1242792e-06,
256 7.15415339e-06,
257 7.27700591e-06,
258 7.3069339e-06,
259 7.09340429e-06,
260 7.06209528e-06,
261 7.09263394e-06,
262 7.15860332e-06,
263 7.06919788e-06,
264 7.06625609e-06,
265 7.12542856e-06,
266 7.2526423e-06,
267 7.13511504e-06,
268 7.19948604e-06,
269 7.24094747e-06,
270 7.08260554e-06,
271 7.06477131e-06,
272 7.26516081e-06,
273 7.07306189e-06,
274 7.1965219e-06,
275 7.17638118e-06,
276 7.03142256e-06,
277 7.05465432e-06,
278 7.19451664e-06,
279 7.07150133e-06,
280 6.95460518e-06,
281 7.0334121e-06,
282 7.04119911e-06,
283 7.20777715e-06,
284 7.21999712e-06,
285 7.06781868e-06])
286 print("NOTA:SE HA CONSIDERADO FACTOR: 64*2*10=1280")
287 print("LONGITUD :",len(NOISE_M))
288 NOISE_M_AVG = numpy.sum(NOISE_M)/(len(NOISE_M))
289 print("NOISE_M_AVG :",NOISE_M_AVG)
290 print("NOISE_M_AVG dBz :",10*numpy.log10(NOISE_M_AVG))
291 print("NOISE_M :",NOISE_M )
@@ -1,190 +1,191
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': { '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': { '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': { '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': { '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': { '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': {'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': {'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_PC_R'+str(args.range)+'km')
53 path_plots = os.path.join(PATH, experiment, 'plotsC0_PC_R'+str(args.range)+'km')
54 path_save = os.path.join(PATH, experiment, 'paramC0_PC_R'+str(args.range)+'km')
54 path_save = os.path.join(PATH, experiment, 'paramC0_PC_R'+str(args.range)+'km')
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='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
78 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
79
79
80 if conf['usrp_tx']['code_type_1'] != 'None':
80 if conf['usrp_tx']['code_type_1'] != 'None':
81 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
81 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
82 code = []
82 code = []
83 for c in codes:
83 for c in codes:
84 code.append([int(x) for x in c])
84 code.append([int(x) for x in c])
85 op = voltage1.addOperation(name='Decoder', optype='other')
85 op = voltage1.addOperation(name='Decoder', optype='other')
86 op.addParameter(name='code', value=code)
86 op.addParameter(name='code', value=code)
87 op.addParameter(name='nCode', value=len(code), format='int')
87 op.addParameter(name='nCode', value=len(code), format='int')
88 op.addParameter(name='nBaud', value=len(code[0]), format='int')
88 op.addParameter(name='nBaud', value=len(code[0]), format='int')
89 else:
89 else:
90 code=[[1]]
90 code=[[1]]
91
91
92 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
92 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
93 op.addParameter(name='n', value=2, format='int')
93 op.addParameter(name='n', value=2, format='int')
94
94
95 op = voltage.addOperation(name='setH0')
95 op = voltage.addOperation(name='setH0')
96 op.addParameter(name='h0', value='-1.68')
96 op.addParameter(name='h0', value='-1.68')
97
97
98 if args.range > 0:
98 if args.range > 0:
99 op = voltage.addOperation(name='selectHeights')
99 op = voltage.addOperation(name='selectHeights')
100 op.addParameter(name='minIndex', value='0', format='int')
100 op.addParameter(name='minIndex', value='0', format='int')
101 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
101 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
102
102
103 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
103 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
104 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
104 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
105
105
106 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
106 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
107
107
108 opObj10 = proc.addOperation(name="WeatherRadar")
108 opObj10 = proc.addOperation(name="WeatherRadar")
109 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
109 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
110 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
110 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
111 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
111 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
112
112
113 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
113 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
114
114
115 op = proc.addOperation(name='PedestalInformation')
115 op = proc.addOperation(name='PedestalInformation')
116 op.addParameter(name='path', value=path_ped, format='str')
116 op.addParameter(name='path', value=path_ped, format='str')
117 op.addParameter(name='interval', value='0.04')
117 op.addParameter(name='interval', value='0.04')
118 op.addParameter(name='time_offset', value=time_offset)
118 op.addParameter(name='time_offset', value=time_offset)
119 #op.addParameter(name='az_offset', value=-26.2)
119 #op.addParameter(name='az_offset', value=-26.2)
120 op.addParameter(name='mode', value='PPI')
120 op.addParameter(name='mode', value='PPI')
121
121
122 for param in parameters:
122 for param in parameters:
123 op = proc.addOperation(name='Block360')
123 op = proc.addOperation(name='Block360')
124 op.addParameter(name='attr_data', value=PARAM[param]['name'])
124 #op.addParameter(name='attr_data', value=PARAM[param]['name'])
125 op.addParameter(name='attr_data', value='data_param')
125 op.addParameter(name='runNextOp', value=True)
126 op.addParameter(name='runNextOp', value=True)
126
127
127 op= proc.addOperation(name='WeatherParamsPlot')
128 op= proc.addOperation(name='WeatherParamsPlot')
128 if args.save: op.addParameter(name='save', value=path_plots, format='str')
129 if args.save: op.addParameter(name='save', value=path_plots, format='str')
129 op.addParameter(name='save_period', value=-1)
130 op.addParameter(name='save_period', value=-1)
130 op.addParameter(name='show', value=args.show)
131 op.addParameter(name='show', value=args.show)
131 op.addParameter(name='channels', value='0,')
132 op.addParameter(name='channels', value='0,')
132 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
133 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
133 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
134 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
134 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
135 op.addParameter(name='attr_data', value=param, format='str')
135 op.addParameter(name='labels', value=[PARAM[param]['label']])
136 op.addParameter(name='labels', value=[PARAM[param]['label']])
136 op.addParameter(name='save_code', value=param)
137 op.addParameter(name='save_code', value=param)
137 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
138 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
138 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
139 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
139 op.addParameter(name='bgcolor',value='black')
140 op.addParameter(name='bgcolor',value='black')
140 op.addParameter(name='snr_threshold',value=0.4)
141 op.addParameter(name='snr_threshold',value=0.4)
141
142
142 desc = {
143 desc = {
143 'Data': {
144 'Data': {
144 PARAM[param]['name']: PARAM[param]['wrname'],
145 'data_param': PARAM[param]['wrname'],
145 'utctime': 'time'
146 'utctime': 'time'
146 },
147 },
147 'Metadata': {
148 'Metadata': {
148 'heightList': 'range',
149 'heightList': 'range',
149 'data_azi': 'azimuth',
150 'data_azi': 'azimuth',
150 'data_ele': 'elevation',
151 'data_ele': 'elevation',
151 }
152 }
152 }
153 }
153
154
154 if args.save:
155 if args.save:
155 opObj10 = proc.addOperation(name='HDFWriter')
156 opObj10 = proc.addOperation(name='HDFWriter')
156 opObj10.addParameter(name='path', value=path_save, format='str')
157 opObj10.addParameter(name='path', value=path_save, format='str')
157 opObj10.addParameter(name='Reset', value=True)
158 opObj10.addParameter(name='Reset', value=True)
158 opObj10.addParameter(name='setType', value='weather')
159 opObj10.addParameter(name='setType', value='weather')
159 opObj10.addParameter(name=' description', value=json.dumps(desc))
160 opObj10.addParameter(name=' description', value=json.dumps(desc))
160 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
161 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
161 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
162 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
162 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
163 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
163 project.start()
164 project.start()
164
165
165
166
166
167
167 if __name__ == '__main__':
168 if __name__ == '__main__':
168
169
169 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
170 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
170 parser.add_argument('experiment',
171 parser.add_argument('experiment',
171 help='Experiment name')
172 help='Experiment name')
172 parser.add_argument('--parameters', nargs='*', default=['S'],
173 parser.add_argument('--parameters', nargs='*', default=['S'],
173 help='Variables to process: P, Z, V')
174 help='Variables to process: P, Z, V')
174 parser.add_argument('--time_offset', default=0,
175 parser.add_argument('--time_offset', default=0,
175 help='Fix time offset')
176 help='Fix time offset')
176 parser.add_argument('--range', default=0, type=float,
177 parser.add_argument('--range', default=0, type=float,
177 help='Max range to plot')
178 help='Max range to plot')
178 parser.add_argument('--save', action='store_true',
179 parser.add_argument('--save', action='store_true',
179 help='Create output files')
180 help='Create output files')
180 parser.add_argument('--show', action='store_true',
181 parser.add_argument('--show', action='store_true',
181 help='Show matplotlib plot.')
182 help='Show matplotlib plot.')
182 parser.add_argument('--online', action='store_true',
183 parser.add_argument('--online', action='store_true',
183 help='Set online mode.')
184 help='Set online mode.')
184 parser.add_argument('--start_time', default='',
185 parser.add_argument('--start_time', default='',
185 help='Set start time.')
186 help='Set start time.')
186
187
187
188
188 args = parser.parse_args()
189 args = parser.parse_args()
189
190
190 main(args)
191 main(args)
@@ -1,198 +1,198
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': {'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': {'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': {'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': {'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': {'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': {'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': {'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_removeDC')
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_removeDC')
54 path_save = os.path.join(PATH, experiment, 'paramC0_PL_R'+str(args.range)+'km_removeDC')
55 #path_plots = os.path.join(PATH, experiment, 'plotsC0_PL_R'+str(args.range)+'km')
55 #path_plots = os.path.join(PATH, experiment, 'plotsC0_PL_R'+str(args.range)+'km')
56 #path_save = os.path.join(PATH, experiment, 'paramC0_PL_R'+str(args.range)+'km')
56 #path_save = os.path.join(PATH, experiment, 'paramC0_PL_R'+str(args.range)+'km')
57 RMIX = 1.62
57 RMIX = 1.62
58
58
59 from schainpy.controller import Project
59 from schainpy.controller import Project
60
60
61 project = Project()
61 project = Project()
62 project.setup(id='1', name='Sophy', description='sophy proc')
62 project.setup(id='1', name='Sophy', description='sophy proc')
63
63
64 reader = project.addReadUnit(datatype='DigitalRFReader',
64 reader = project.addReadUnit(datatype='DigitalRFReader',
65 path=path,
65 path=path,
66 startDate=start_date,
66 startDate=start_date,
67 endDate=end_date,
67 endDate=end_date,
68 startTime=start_time,
68 startTime=start_time,
69 endTime=end_time,
69 endTime=end_time,
70 delay=30,
70 delay=30,
71 online=args.online,
71 online=args.online,
72 walk=1,
72 walk=1,
73 ippKm = ipp_km,
73 ippKm = ipp_km,
74 getByBlock = 1,
74 getByBlock = 1,
75 nProfileBlocks = N,
75 nProfileBlocks = N,
76 )
76 )
77 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
77 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
78
78
79 op = voltage.addOperation(name='ProfileSelector')
79 op = voltage.addOperation(name='ProfileSelector')
80 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
80 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
81
81
82
82
83
83
84
84
85 if conf['usrp_tx']['code_type_2']:
85 if conf['usrp_tx']['code_type_2']:
86 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
86 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
87 code = []
87 code = []
88 for c in codes:
88 for c in codes:
89 code.append([int(x) for x in c])
89 code.append([int(x) for x in c])
90 op = voltage.addOperation(name='Decoder', optype='other')
90 op = voltage.addOperation(name='Decoder', optype='other')
91 op.addParameter(name='code', value=code)
91 op.addParameter(name='code', value=code)
92 op.addParameter(name='nCode', value=len(code), format='int')
92 op.addParameter(name='nCode', value=len(code), format='int')
93 op.addParameter(name='nBaud', value=len(code[0]), format='int')
93 op.addParameter(name='nBaud', value=len(code[0]), format='int')
94
94
95 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
95 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
96 op.addParameter(name='n', value=len(code), format='int')
96 op.addParameter(name='n', value=len(code), format='int')
97 ncode = len(code)
97 ncode = len(code)
98 else:
98 else:
99 ncode = 1
99 ncode = 1
100
100
101 op = voltage.addOperation(name='setH0')
101 op = voltage.addOperation(name='setH0')
102 op.addParameter(name='h0', value='-1.68')
102 op.addParameter(name='h0', value='-1.68')
103
103
104 if args.range > 0:
104 if args.range > 0:
105 op = voltage.addOperation(name='selectHeights')
105 op = voltage.addOperation(name='selectHeights')
106 op.addParameter(name='minIndex', value='0', format='int')
106 op.addParameter(name='minIndex', value='0', format='int')
107 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
107 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
108
108
109 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
109 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
110 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
110 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
111 #op.addParameter(name='removeDC', value=1, format='int')
111 #op.addParameter(name='removeDC', value=1, format='int')
112
112
113
113
114 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
114 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
115
115
116 opObj10 = proc.addOperation(name="WeatherRadar")
116 opObj10 = proc.addOperation(name="WeatherRadar")
117 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
117 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
118 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
118 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
119 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
119 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
120
120
121 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
121 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
122
122
123 op = proc.addOperation(name='PedestalInformation')
123 op = proc.addOperation(name='PedestalInformation')
124 op.addParameter(name='path', value=path_ped, format='str')
124 op.addParameter(name='path', value=path_ped, format='str')
125 op.addParameter(name='interval', value='0.04')
125 op.addParameter(name='interval', value='0.04')
126 op.addParameter(name='time_offset', value=time_offset)
126 op.addParameter(name='time_offset', value=time_offset)
127 #op.addParameter(name='az_offset', value=-26.2)
127 #op.addParameter(name='az_offset', value=-26.2)
128 op.addParameter(name='mode', value='PPI')
128 op.addParameter(name='mode', value='PPI')
129
129
130 for param in parameters:
130 for param in parameters:
131 op = proc.addOperation(name='Block360')
131 op = proc.addOperation(name='Block360')
132 op.addParameter(name='attr_data', value=PARAM[param]['name'])
132 op.addParameter(name='attr_data', value='data_param')
133 op.addParameter(name='runNextOp', value=True)
133 op.addParameter(name='runNextOp', value=True)
134
134
135 op= proc.addOperation(name='WeatherParamsPlot')
135 op= proc.addOperation(name='WeatherParamsPlot')
136 if args.save: op.addParameter(name='save', value=path_plots, format='str')
136 if args.save: op.addParameter(name='save', value=path_plots, format='str')
137 op.addParameter(name='save_period', value=-1)
137 op.addParameter(name='save_period', value=-1)
138 op.addParameter(name='show', value=args.show)
138 op.addParameter(name='show', value=args.show)
139 op.addParameter(name='channels', value='0,')
139 op.addParameter(name='channels', value='0,')
140 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
140 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
141 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
141 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
142 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
142 op.addParameter(name='attr_data', value=param, format='str')
143 op.addParameter(name='labels', value=[PARAM[param]['label']])
143 op.addParameter(name='labels', value=[PARAM[param]['label']])
144 op.addParameter(name='save_code', value=param)
144 op.addParameter(name='save_code', value=param)
145 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
145 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
146 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
146 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
147 op.addParameter(name='bgcolor',value='black')
147 op.addParameter(name='bgcolor',value='black')
148 op.addParameter(name='snr_threshold',value=0.4)
148 op.addParameter(name='snr_threshold',value=0.4)
149
149
150 desc = {
150 desc = {
151 'Data': {
151 'Data': {
152 PARAM[param]['name']: PARAM[param]['wrname'],
152 'data_param': PARAM[param]['wrname'],
153 'utctime': 'time'
153 'utctime': 'time'
154 },
154 },
155 'Metadata': {
155 'Metadata': {
156 'heightList': 'range',
156 'heightList': 'range',
157 'data_azi': 'azimuth',
157 'data_azi': 'azimuth',
158 'data_ele': 'elevation',
158 'data_ele': 'elevation',
159 }
159 }
160 }
160 }
161
161
162 if args.save:
162 if args.save:
163 opObj10 = proc.addOperation(name='HDFWriter')
163 opObj10 = proc.addOperation(name='HDFWriter')
164 opObj10.addParameter(name='path', value=path_save, format='str')
164 opObj10.addParameter(name='path', value=path_save, format='str')
165 opObj10.addParameter(name='Reset', value=True)
165 opObj10.addParameter(name='Reset', value=True)
166 opObj10.addParameter(name='setType', value='weather')
166 opObj10.addParameter(name='setType', value='weather')
167 opObj10.addParameter(name=' description', value=json.dumps(desc))
167 opObj10.addParameter(name=' description', value=json.dumps(desc))
168 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
168 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
169 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
169 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
170 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
170 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
171 project.start()
171 project.start()
172
172
173
173
174
174
175 if __name__ == '__main__':
175 if __name__ == '__main__':
176
176
177 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
177 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
178 parser.add_argument('experiment',
178 parser.add_argument('experiment',
179 help='Experiment name')
179 help='Experiment name')
180 parser.add_argument('--parameters', nargs='*', default=['S'],
180 parser.add_argument('--parameters', nargs='*', default=['S'],
181 help='Variables to process: P, Z, V')
181 help='Variables to process: P, Z, V')
182 parser.add_argument('--time_offset', default=0,
182 parser.add_argument('--time_offset', default=0,
183 help='Fix time offset')
183 help='Fix time offset')
184 parser.add_argument('--range', default=0, type=float,
184 parser.add_argument('--range', default=0, type=float,
185 help='Max range to plot')
185 help='Max range to plot')
186 parser.add_argument('--save', action='store_true',
186 parser.add_argument('--save', action='store_true',
187 help='Create output files')
187 help='Create output files')
188 parser.add_argument('--show', action='store_true',
188 parser.add_argument('--show', action='store_true',
189 help='Show matplotlib plot.')
189 help='Show matplotlib plot.')
190 parser.add_argument('--online', action='store_true',
190 parser.add_argument('--online', action='store_true',
191 help='Set online mode.')
191 help='Set online mode.')
192 parser.add_argument('--start_time', default='',
192 parser.add_argument('--start_time', default='',
193 help='Set start time.')
193 help='Set start time.')
194
194
195
195
196 args = parser.parse_args()
196 args = parser.parse_args()
197
197
198 main(args)
198 main(args)
@@ -1,207 +1,207
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 'S2': {'name': 'data_pow', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
15 'S2': {'name': 'data_pow', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
16 #'V': {'name': 'dataPP_DOP', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
16 #'V': {'name': 'dataPP_DOP', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
17 'V': {'name': 'velRadial_V', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
17 'V': {'name': 'velRadial_V', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
18 'R': {'name': 'RhoHV_R', 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
18 'R': {'name': 'RhoHV_R', 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
19 'P': {'name': 'PhiD_P', 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
19 'P': {'name': 'PhiD_P', 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
20 'D': {'name': 'Zdb_D', 'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
20 'D': {'name': 'Zdb_D', 'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
21 'Z': {'name': 'Zdb', 'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','ch':1},
21 'Z': {'name': 'Zdb', 'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','ch':1},
22 'W': {'name': 'Sigmav_W', 'zmin': 0, 'zmax': 12, 'colormap': 'sophy_w','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
22 'W': {'name': 'Sigmav_W', 'zmin': 0, 'zmax': 12, 'colormap': 'sophy_w','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
23 }
23 }
24
24
25 def max_index(r, sample_rate, ipp):
25 def max_index(r, sample_rate, ipp):
26
26
27 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
27 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
28
28
29 def main(args):
29 def main(args):
30
30
31 experiment = args.experiment
31 experiment = args.experiment
32 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
32 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
33 conf = json.loads(fp.read())
33 conf = json.loads(fp.read())
34
34
35 ipp_km = conf['usrp_tx']['ipp']
35 ipp_km = conf['usrp_tx']['ipp']
36 ipp = ipp_km * 2 /300000
36 ipp = ipp_km * 2 /300000
37 sample_rate = conf['usrp_rx']['sample_rate']
37 sample_rate = conf['usrp_rx']['sample_rate']
38 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
38 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
39 speed_axis = conf['pedestal']['speed']
39 speed_axis = conf['pedestal']['speed']
40 steps = conf['pedestal']['table']
40 steps = conf['pedestal']['table']
41 time_offset = args.time_offset
41 time_offset = args.time_offset
42 parameters = args.parameters
42 parameters = args.parameters
43 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
43 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
44 end_date = start_date
44 end_date = start_date
45 if args.start_time:
45 if args.start_time:
46 start_time = args.start_time
46 start_time = args.start_time
47 else:
47 else:
48 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
48 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
49 #start_time = '16:15:00'
49 #start_time = '16:15:00'
50 end_time = '23:59:59'
50 end_time = '23:59:59'
51 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
51 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
52 path = os.path.join(PATH, experiment, 'rawdata')
52 path = os.path.join(PATH, experiment, 'rawdata')
53 path_ped = os.path.join(PATH, experiment, 'position')
53 path_ped = os.path.join(PATH, experiment, 'position')
54 #path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km_removeDC')
54 #path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km_removeDC')
55 #path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km_removeDC')
55 #path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km_removeDC')
56 path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km')
56 path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km')
57 path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km')
57 path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km')
58 RMIX = 1.62
58 RMIX = 1.62
59
59
60 from schainpy.controller import Project
60 from schainpy.controller import Project
61
61
62 project = Project()
62 project = Project()
63 project.setup(id='1', name='Sophy', description='sophy proc')
63 project.setup(id='1', name='Sophy', description='sophy proc')
64
64
65 reader = project.addReadUnit(datatype='DigitalRFReader',
65 reader = project.addReadUnit(datatype='DigitalRFReader',
66 path=path,
66 path=path,
67 startDate=start_date,
67 startDate=start_date,
68 endDate=end_date,
68 endDate=end_date,
69 startTime=start_time,
69 startTime=start_time,
70 endTime=end_time,
70 endTime=end_time,
71 delay=30,
71 delay=30,
72 online=args.online,
72 online=args.online,
73 walk=1,
73 walk=1,
74 ippKm = ipp_km,
74 ippKm = ipp_km,
75 getByBlock = 1,
75 getByBlock = 1,
76 nProfileBlocks = N,
76 nProfileBlocks = N,
77 )
77 )
78 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
78 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
79
79
80 op = voltage.addOperation(name='setAttribute')
80 op = voltage.addOperation(name='setAttribute')
81 op.addParameter(name='frequency', value='9345.e6', format='float')
81 op.addParameter(name='frequency', value='9345.e6', format='float')
82
82
83 op = voltage.addOperation(name='ProfileSelector')
83 op = voltage.addOperation(name='ProfileSelector')
84 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
84 op.addParameter(name='profileRangeList', value='{},{}'.format(conf['usrp_tx']['repetitions_1'], conf['usrp_tx']['repetitions_1']+conf['usrp_tx']['repetitions_2']-1))
85
85
86 if conf['usrp_tx']['code_type_2']:
86 if conf['usrp_tx']['code_type_2']:
87 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
87 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
88 code = []
88 code = []
89 for c in codes:
89 for c in codes:
90 code.append([int(x) for x in c])
90 code.append([int(x) for x in c])
91 op = voltage.addOperation(name='Decoder', optype='other')
91 op = voltage.addOperation(name='Decoder', optype='other')
92 op.addParameter(name='code', value=code)
92 op.addParameter(name='code', value=code)
93 op.addParameter(name='nCode', value=len(code), format='int')
93 op.addParameter(name='nCode', value=len(code), format='int')
94 op.addParameter(name='nBaud', value=len(code[0]), format='int')
94 op.addParameter(name='nBaud', value=len(code[0]), format='int')
95
95
96 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
96 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
97 op.addParameter(name='n', value=len(code), format='int')
97 op.addParameter(name='n', value=len(code), format='int')
98 ncode = len(code)
98 ncode = len(code)
99 else:
99 else:
100 ncode = 1
100 ncode = 1
101
101
102 op = voltage.addOperation(name='setH0')
102 op = voltage.addOperation(name='setH0')
103 op.addParameter(name='h0', value='-1.68')
103 op.addParameter(name='h0', value='-1.68')
104
104
105 if args.range > 0:
105 if args.range > 0:
106 op = voltage.addOperation(name='selectHeights')
106 op = voltage.addOperation(name='selectHeights')
107 op.addParameter(name='minIndex', value='0', format='int')
107 op.addParameter(name='minIndex', value='0', format='int')
108 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
108 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
109
109
110 #---------------------------------------NEW PROCESSING -----------------------------------------------------
110 #---------------------------------------NEW PROCESSING -----------------------------------------------------
111 procB = project.addProcUnit(datatype='SpectraProc', inputId=voltage.getId())
111 procB = project.addProcUnit(datatype='SpectraProc', inputId=voltage.getId())
112 procB.addParameter(name='nFFTPoints', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
112 procB.addParameter(name='nFFTPoints', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
113 procB.addParameter(name='nProfiles', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
113 procB.addParameter(name='nProfiles', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
114
114
115 #opObj11 = procB.addOperation(name='removeDC')
115 #opObj11 = procB.addOperation(name='removeDC')
116 #opObj11.addParameter(name='mode', value=2)
116 #opObj11.addParameter(name='mode', value=2)
117
117
118 proc= project.addProcUnit(datatype='ParametersProc',inputId=procB.getId())
118 proc= project.addProcUnit(datatype='ParametersProc',inputId=procB.getId())
119
119
120 opObj10 = proc.addOperation(name='SpectralMoments')
120 opObj10 = proc.addOperation(name='SpectralMoments')
121 opObj10.addParameter(name='wradar',value=True)
121 opObj10.addParameter(name='wradar',value=True)
122
122
123 #---------------------------------------NEW PROCESSING -----------------------------------------------------
123 #---------------------------------------NEW PROCESSING -----------------------------------------------------
124
124
125 opObj10 = proc.addOperation(name="WeatherRadar")
125 opObj10 = proc.addOperation(name="WeatherRadar")
126 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
126 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
127 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
127 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
128 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
128 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
129
129
130 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
130 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
131
131
132 op = proc.addOperation(name='PedestalInformation')
132 op = proc.addOperation(name='PedestalInformation')
133 op.addParameter(name='path', value=path_ped, format='str')
133 op.addParameter(name='path', value=path_ped, format='str')
134 op.addParameter(name='interval', value='0.04')
134 op.addParameter(name='interval', value='0.04')
135 op.addParameter(name='time_offset', value=time_offset)
135 op.addParameter(name='time_offset', value=time_offset)
136 #op.addParameter(name='az_offset', value=-26.2)
136 #op.addParameter(name='az_offset', value=-26.2)
137 op.addParameter(name='mode', value='PPI')
137 op.addParameter(name='mode', value='PPI')
138
138
139 for param in parameters:
139 for param in parameters:
140 op = proc.addOperation(name='Block360')
140 op = proc.addOperation(name='Block360')
141 op.addParameter(name='attr_data', value=PARAM[param]['name'])
141 op.addParameter(name='attr_data', value='data_param')
142 op.addParameter(name='runNextOp', value=True)
142 op.addParameter(name='runNextOp', value=True)
143
143
144 op= proc.addOperation(name='WeatherParamsPlot')
144 op= proc.addOperation(name='WeatherParamsPlot')
145 if args.save: op.addParameter(name='save', value=path_plots, format='str')
145 if args.save: op.addParameter(name='save', value=path_plots, format='str')
146 op.addParameter(name='save_period', value=-1)
146 op.addParameter(name='save_period', value=-1)
147 op.addParameter(name='show', value=args.show)
147 op.addParameter(name='show', value=args.show)
148 op.addParameter(name='channels', value='0,')
148 op.addParameter(name='channels', value='0,')
149 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
149 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
150 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
150 op.addParameter(name='zmax', value=PARAM[param]['zmax'])
151 op.addParameter(name='attr_data', value=PARAM[param]['name'], format='str')
151 op.addParameter(name='attr_data', value=param, format='str')
152 op.addParameter(name='labels', value=[PARAM[param]['label']])
152 op.addParameter(name='labels', value=[PARAM[param]['label']])
153 op.addParameter(name='save_code', value=param)
153 op.addParameter(name='save_code', value=param)
154 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
154 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
155 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
155 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
156 op.addParameter(name='bgcolor',value='black')
156 op.addParameter(name='bgcolor',value='black')
157 op.addParameter(name='snr_threshold',value=0.4)
157 op.addParameter(name='snr_threshold',value=0.4)
158
158
159 desc = {
159 desc = {
160 'Data': {
160 'Data': {
161 PARAM[param]['name']: PARAM[param]['wrname'],
161 'data_param': PARAM[param]['wrname'],
162 'utctime': 'time'
162 'utctime': 'time'
163 },
163 },
164 'Metadata': {
164 'Metadata': {
165 'heightList': 'range',
165 'heightList': 'range',
166 'data_azi': 'azimuth',
166 'data_azi': 'azimuth',
167 'data_ele': 'elevation',
167 'data_ele': 'elevation',
168 }
168 }
169 }
169 }
170
170
171 if args.save:
171 if args.save:
172 opObj10 = proc.addOperation(name='HDFWriter')
172 opObj10 = proc.addOperation(name='HDFWriter')
173 opObj10.addParameter(name='path', value=path_save, format='str')
173 opObj10.addParameter(name='path', value=path_save, format='str')
174 opObj10.addParameter(name='Reset', value=True)
174 opObj10.addParameter(name='Reset', value=True)
175 opObj10.addParameter(name='setType', value='weather')
175 opObj10.addParameter(name='setType', value='weather')
176 opObj10.addParameter(name=' description', value=json.dumps(desc))
176 opObj10.addParameter(name=' description', value=json.dumps(desc))
177 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
177 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
178 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
178 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
179 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
179 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
180 project.start()
180 project.start()
181
181
182
182
183
183
184 if __name__ == '__main__':
184 if __name__ == '__main__':
185
185
186 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
186 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
187 parser.add_argument('experiment',
187 parser.add_argument('experiment',
188 help='Experiment name')
188 help='Experiment name')
189 parser.add_argument('--parameters', nargs='*', default=['S'],
189 parser.add_argument('--parameters', nargs='*', default=['S'],
190 help='Variables to process: P, Z, V')
190 help='Variables to process: P, Z, V')
191 parser.add_argument('--time_offset', default=0,
191 parser.add_argument('--time_offset', default=0,
192 help='Fix time offset')
192 help='Fix time offset')
193 parser.add_argument('--range', default=0, type=float,
193 parser.add_argument('--range', default=0, type=float,
194 help='Max range to plot')
194 help='Max range to plot')
195 parser.add_argument('--save', action='store_true',
195 parser.add_argument('--save', action='store_true',
196 help='Create output files')
196 help='Create output files')
197 parser.add_argument('--show', action='store_true',
197 parser.add_argument('--show', action='store_true',
198 help='Show matplotlib plot.')
198 help='Show matplotlib plot.')
199 parser.add_argument('--online', action='store_true',
199 parser.add_argument('--online', action='store_true',
200 help='Set online mode.')
200 help='Set online mode.')
201 parser.add_argument('--start_time', default='',
201 parser.add_argument('--start_time', default='',
202 help='Set start time.')
202 help='Set start time.')
203
203
204
204
205 args = parser.parse_args()
205 args = parser.parse_args()
206
206
207 main(args)
207 main(args)
General Comments 0
You need to be logged in to leave comments. Login now