##// 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 1 # SOPHY PROC script
2 2 import os, sys, json, argparse
3 3 import datetime
4 4 import time
5 5
6 6 PATH = '/DATA_RM/DATA'
7 7 # PATH = '/Users/jespinoza/workspace/data/'
8 8 #PATH = '/home/roberto/DATA/data_WR_RHI/RHI'
9 9 PATH = '/home/soporte/Downloads/data_WR_RHI'
10 10 PATH = '/home/soporte/Documents/EVENTO/'
11 11
12 12
13 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 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},
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},
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},
21 'W': {'name': 'Sigmav_W', 'zmin': 0, 'zmax': 12, 'colormap': 'sophy_w','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
16 'V': { 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
17 'R': { 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
18 'P': { 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
19 'D': { 'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
20 'Z': {'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','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 24 def max_index(r, sample_rate, ipp):
25 25
26 26 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
27 27
28 28 def main(args):
29 29
30 30 experiment = args.experiment
31 31 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
32 32 conf = json.loads(fp.read())
33 33
34 34 ipp_km = conf['usrp_tx']['ipp']
35 35 ipp = ipp_km * 2 /300000
36 36 sample_rate = conf['usrp_rx']['sample_rate']
37 37 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
38 38 speed_axis = conf['pedestal']['speed']
39 39 steps = conf['pedestal']['table']
40 40 time_offset = args.time_offset
41 41 parameters = args.parameters
42 42 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
43 43 end_date = start_date
44 44 if args.start_time:
45 45 start_time = args.start_time
46 46 else:
47 47 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
48 48 #start_time = '16:15:00'
49 49 end_time = '23:59:59'
50 50 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
51 51 path = os.path.join(PATH, experiment, 'rawdata')
52 52 path_ped = os.path.join(PATH, experiment, 'position')
53 53 path_plots = os.path.join(PATH, experiment, 'plotsC0_PC_R'+str(args.range)+'km')
54 54 path_save = os.path.join(PATH, experiment, 'paramC0_PC_R'+str(args.range)+'km')
55 55 RMIX = 1.62
56 56
57 57 from schainpy.controller import Project
58 58
59 59 project = Project()
60 60 project.setup(id='1', name='Sophy', description='sophy proc')
61 61
62 62 reader = project.addReadUnit(datatype='DigitalRFReader',
63 63 path=path,
64 64 startDate=start_date,
65 65 endDate=end_date,
66 66 startTime=start_time,
67 67 endTime=end_time,
68 68 delay=30,
69 69 online=args.online,
70 70 walk=1,
71 71 ippKm = ipp_km,
72 72 getByBlock = 1,
73 73 nProfileBlocks = N,
74 74 )
75 75 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
76 76
77 77 op = voltage.addOperation(name='ProfileSelector')
78 78 op.addParameter(name='profileRangeList', value='0,{}'.format(conf['usrp_tx']['repetitions_1']-1))
79 79
80 80 if conf['usrp_tx']['code_type_1'] != 'None':
81 81 codes = [ c.strip() for c in conf['usrp_tx']['code_1'].split(',')]
82 82 code = []
83 83 for c in codes:
84 84 code.append([int(x) for x in c])
85 85 op = voltage1.addOperation(name='Decoder', optype='other')
86 86 op.addParameter(name='code', value=code)
87 87 op.addParameter(name='nCode', value=len(code), format='int')
88 88 op.addParameter(name='nBaud', value=len(code[0]), format='int')
89 89 else:
90 90 code=[[1]]
91 91
92 92 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
93 93 op.addParameter(name='n', value=2, format='int')
94 94
95 95 op = voltage.addOperation(name='setH0')
96 96 op.addParameter(name='h0', value='-1.68')
97 97
98 98 if args.range > 0:
99 99 op = voltage.addOperation(name='selectHeights')
100 100 op.addParameter(name='minIndex', value='0', format='int')
101 101 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
102 102
103 103 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
104 104 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_1'])/2, format='int')
105 105
106 106 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
107 107
108 108 opObj10 = proc.addOperation(name="WeatherRadar")
109 109 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
110 110 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
111 111 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
112 112
113 113 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
114 114
115 115 op = proc.addOperation(name='PedestalInformation')
116 116 op.addParameter(name='path', value=path_ped, format='str')
117 117 op.addParameter(name='interval', value='0.04')
118 118 op.addParameter(name='time_offset', value=time_offset)
119 119 #op.addParameter(name='az_offset', value=-26.2)
120 120 op.addParameter(name='mode', value='PPI')
121 121
122 122 for param in parameters:
123 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 126 op.addParameter(name='runNextOp', value=True)
126 127
127 128 op= proc.addOperation(name='WeatherParamsPlot')
128 129 if args.save: op.addParameter(name='save', value=path_plots, format='str')
129 130 op.addParameter(name='save_period', value=-1)
130 131 op.addParameter(name='show', value=args.show)
131 132 op.addParameter(name='channels', value='0,')
132 133 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
133 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 136 op.addParameter(name='labels', value=[PARAM[param]['label']])
136 137 op.addParameter(name='save_code', value=param)
137 138 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
138 139 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
139 140 op.addParameter(name='bgcolor',value='black')
140 141 op.addParameter(name='snr_threshold',value=0.4)
141 142
142 143 desc = {
143 144 'Data': {
144 PARAM[param]['name']: PARAM[param]['wrname'],
145 'data_param': PARAM[param]['wrname'],
145 146 'utctime': 'time'
146 147 },
147 148 'Metadata': {
148 149 'heightList': 'range',
149 150 'data_azi': 'azimuth',
150 151 'data_ele': 'elevation',
151 152 }
152 153 }
153 154
154 155 if args.save:
155 156 opObj10 = proc.addOperation(name='HDFWriter')
156 157 opObj10.addParameter(name='path', value=path_save, format='str')
157 158 opObj10.addParameter(name='Reset', value=True)
158 159 opObj10.addParameter(name='setType', value='weather')
159 160 opObj10.addParameter(name=' description', value=json.dumps(desc))
160 161 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
161 162 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
162 163 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
163 164 project.start()
164 165
165 166
166 167
167 168 if __name__ == '__main__':
168 169
169 170 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
170 171 parser.add_argument('experiment',
171 172 help='Experiment name')
172 173 parser.add_argument('--parameters', nargs='*', default=['S'],
173 174 help='Variables to process: P, Z, V')
174 175 parser.add_argument('--time_offset', default=0,
175 176 help='Fix time offset')
176 177 parser.add_argument('--range', default=0, type=float,
177 178 help='Max range to plot')
178 179 parser.add_argument('--save', action='store_true',
179 180 help='Create output files')
180 181 parser.add_argument('--show', action='store_true',
181 182 help='Show matplotlib plot.')
182 183 parser.add_argument('--online', action='store_true',
183 184 help='Set online mode.')
184 185 parser.add_argument('--start_time', default='',
185 186 help='Set start time.')
186 187
187 188
188 189 args = parser.parse_args()
189 190
190 191 main(args)
@@ -1,198 +1,198
1 1 # SOPHY PROC script
2 2 import os, sys, json, argparse
3 3 import datetime
4 4 import time
5 5
6 6 PATH = '/DATA_RM/DATA'
7 7 # PATH = '/Users/jespinoza/workspace/data/'
8 8 #PATH = '/home/roberto/DATA/data_WR_RHI/RHI'
9 9 PATH = '/home/soporte/Downloads/data_WR_RHI'
10 10 PATH = '/home/soporte/Documents/EVENTO/'
11 11
12 12
13 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 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},
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},
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},
21 'W': {'name': 'Sigmav_W', 'zmin': 0, 'zmax': 12, 'colormap': 'sophy_w','label': 'Spectral Width', 'wrname':'spectral_width', 'cb_label': 'hz', 'ch':1}
16 'V': {'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
17 'R': {'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
18 'P': {'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
19 'D': {'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
20 'Z': {'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','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 24 def max_index(r, sample_rate, ipp):
25 25
26 26 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
27 27
28 28 def main(args):
29 29
30 30 experiment = args.experiment
31 31 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
32 32 conf = json.loads(fp.read())
33 33
34 34 ipp_km = conf['usrp_tx']['ipp']
35 35 ipp = ipp_km * 2 /300000
36 36 sample_rate = conf['usrp_rx']['sample_rate']
37 37 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
38 38 speed_axis = conf['pedestal']['speed']
39 39 steps = conf['pedestal']['table']
40 40 time_offset = args.time_offset
41 41 parameters = args.parameters
42 42 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
43 43 end_date = start_date
44 44 if args.start_time:
45 45 start_time = args.start_time
46 46 else:
47 47 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
48 48 #start_time = '16:15:00'
49 49 end_time = '23:59:59'
50 50 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
51 51 path = os.path.join(PATH, experiment, 'rawdata')
52 52 path_ped = os.path.join(PATH, experiment, 'position')
53 53 path_plots = os.path.join(PATH, experiment, 'plotsC0_PL_R'+str(args.range)+'km_removeDC')
54 54 path_save = os.path.join(PATH, experiment, 'paramC0_PL_R'+str(args.range)+'km_removeDC')
55 55 #path_plots = os.path.join(PATH, experiment, 'plotsC0_PL_R'+str(args.range)+'km')
56 56 #path_save = os.path.join(PATH, experiment, 'paramC0_PL_R'+str(args.range)+'km')
57 57 RMIX = 1.62
58 58
59 59 from schainpy.controller import Project
60 60
61 61 project = Project()
62 62 project.setup(id='1', name='Sophy', description='sophy proc')
63 63
64 64 reader = project.addReadUnit(datatype='DigitalRFReader',
65 65 path=path,
66 66 startDate=start_date,
67 67 endDate=end_date,
68 68 startTime=start_time,
69 69 endTime=end_time,
70 70 delay=30,
71 71 online=args.online,
72 72 walk=1,
73 73 ippKm = ipp_km,
74 74 getByBlock = 1,
75 75 nProfileBlocks = N,
76 76 )
77 77 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
78 78
79 79 op = voltage.addOperation(name='ProfileSelector')
80 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 85 if conf['usrp_tx']['code_type_2']:
86 86 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
87 87 code = []
88 88 for c in codes:
89 89 code.append([int(x) for x in c])
90 90 op = voltage.addOperation(name='Decoder', optype='other')
91 91 op.addParameter(name='code', value=code)
92 92 op.addParameter(name='nCode', value=len(code), format='int')
93 93 op.addParameter(name='nBaud', value=len(code[0]), format='int')
94 94
95 95 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
96 96 op.addParameter(name='n', value=len(code), format='int')
97 97 ncode = len(code)
98 98 else:
99 99 ncode = 1
100 100
101 101 op = voltage.addOperation(name='setH0')
102 102 op.addParameter(name='h0', value='-1.68')
103 103
104 104 if args.range > 0:
105 105 op = voltage.addOperation(name='selectHeights')
106 106 op.addParameter(name='minIndex', value='0', format='int')
107 107 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
108 108
109 109 op = voltage.addOperation(name='PulsePair_vRF', optype='other')
110 110 op.addParameter(name='n', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
111 111 #op.addParameter(name='removeDC', value=1, format='int')
112 112
113 113
114 114 proc = project.addProcUnit(datatype='ParametersProc', inputId=voltage.getId())
115 115
116 116 opObj10 = proc.addOperation(name="WeatherRadar")
117 117 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
118 118 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
119 119 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
120 120
121 121 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
122 122
123 123 op = proc.addOperation(name='PedestalInformation')
124 124 op.addParameter(name='path', value=path_ped, format='str')
125 125 op.addParameter(name='interval', value='0.04')
126 126 op.addParameter(name='time_offset', value=time_offset)
127 127 #op.addParameter(name='az_offset', value=-26.2)
128 128 op.addParameter(name='mode', value='PPI')
129 129
130 130 for param in parameters:
131 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 133 op.addParameter(name='runNextOp', value=True)
134 134
135 135 op= proc.addOperation(name='WeatherParamsPlot')
136 136 if args.save: op.addParameter(name='save', value=path_plots, format='str')
137 137 op.addParameter(name='save_period', value=-1)
138 138 op.addParameter(name='show', value=args.show)
139 139 op.addParameter(name='channels', value='0,')
140 140 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
141 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 143 op.addParameter(name='labels', value=[PARAM[param]['label']])
144 144 op.addParameter(name='save_code', value=param)
145 145 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
146 146 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
147 147 op.addParameter(name='bgcolor',value='black')
148 148 op.addParameter(name='snr_threshold',value=0.4)
149 149
150 150 desc = {
151 151 'Data': {
152 PARAM[param]['name']: PARAM[param]['wrname'],
152 'data_param': PARAM[param]['wrname'],
153 153 'utctime': 'time'
154 154 },
155 155 'Metadata': {
156 156 'heightList': 'range',
157 157 'data_azi': 'azimuth',
158 158 'data_ele': 'elevation',
159 159 }
160 160 }
161 161
162 162 if args.save:
163 163 opObj10 = proc.addOperation(name='HDFWriter')
164 164 opObj10.addParameter(name='path', value=path_save, format='str')
165 165 opObj10.addParameter(name='Reset', value=True)
166 166 opObj10.addParameter(name='setType', value='weather')
167 167 opObj10.addParameter(name=' description', value=json.dumps(desc))
168 168 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
169 169 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
170 170 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
171 171 project.start()
172 172
173 173
174 174
175 175 if __name__ == '__main__':
176 176
177 177 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
178 178 parser.add_argument('experiment',
179 179 help='Experiment name')
180 180 parser.add_argument('--parameters', nargs='*', default=['S'],
181 181 help='Variables to process: P, Z, V')
182 182 parser.add_argument('--time_offset', default=0,
183 183 help='Fix time offset')
184 184 parser.add_argument('--range', default=0, type=float,
185 185 help='Max range to plot')
186 186 parser.add_argument('--save', action='store_true',
187 187 help='Create output files')
188 188 parser.add_argument('--show', action='store_true',
189 189 help='Show matplotlib plot.')
190 190 parser.add_argument('--online', action='store_true',
191 191 help='Set online mode.')
192 192 parser.add_argument('--start_time', default='',
193 193 help='Set start time.')
194 194
195 195
196 196 args = parser.parse_args()
197 197
198 198 main(args)
@@ -1,207 +1,207
1 1 # SOPHY PROC script
2 2 import os, sys, json, argparse
3 3 import datetime
4 4 import time
5 5
6 6 PATH = '/DATA_RM/DATA'
7 7 # PATH = '/Users/jespinoza/workspace/data/'
8 8 #PATH = '/home/roberto/DATA/data_WR_RHI/RHI'
9 9 PATH = '/home/soporte/Downloads/data_WR_RHI'
10 10 PATH = '/home/soporte/Documents/EVENTO/'
11 11
12 12
13 13 PARAM = {
14 14 'S': {'name': 'dataPP_POWER', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
15 15 'S2': {'name': 'data_pow', 'zmin': -45, 'zmax': -15, 'colormap': 'jet', 'label': 'Power', 'wrname': 'power','cb_label': 'dBm', 'ch':0},
16 16 #'V': {'name': 'dataPP_DOP', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
17 17 'V': {'name': 'velRadial_V', 'zmin': -10, 'zmax': 10, 'colormap': 'sophy_v', 'label': 'Velocity', 'wrname': 'velocity', 'cb_label': 'm/s', 'ch':0},
18 18 'R': {'name': 'RhoHV_R', 'zmin': 0, 'zmax': 1, 'colormap': 'jet', 'label': 'RhoHV', 'wrname':'rhoHV', 'cb_label': '*', 'ch':0},
19 19 'P': {'name': 'PhiD_P', 'zmin': -180,'zmax': 180,'colormap': 'RdBu_r', 'label': 'PhiDP', 'wrname':'phiDP' , 'cb_label': 'ΒΊ', 'ch':0},
20 20 'D': {'name': 'Zdb_D', 'zmin': -20, 'zmax': 80, 'colormap': 'gist_ncar','label': 'ZDR','wrname':'differential_reflectivity' , 'cb_label': 'dBz','ch':0},
21 21 'Z': {'name': 'Zdb', 'zmin': -30, 'zmax': 80, 'colormap': 'sophy_r','label': 'Reflectivity', 'wrname':'reflectivity', 'cb_label': 'dBz','ch':1},
22 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 25 def max_index(r, sample_rate, ipp):
26 26
27 27 return int(sample_rate*ipp*1e6 * r / 60) + int(sample_rate*ipp*1e6 * 1.2 / 60)
28 28
29 29 def main(args):
30 30
31 31 experiment = args.experiment
32 32 fp = open(os.path.join(PATH, experiment, 'experiment.conf'))
33 33 conf = json.loads(fp.read())
34 34
35 35 ipp_km = conf['usrp_tx']['ipp']
36 36 ipp = ipp_km * 2 /300000
37 37 sample_rate = conf['usrp_rx']['sample_rate']
38 38 axis = ['0' if x=='elevation' else '1' for x in conf['pedestal']['axis']] # AZIMUTH 1 ELEVACION 0
39 39 speed_axis = conf['pedestal']['speed']
40 40 steps = conf['pedestal']['table']
41 41 time_offset = args.time_offset
42 42 parameters = args.parameters
43 43 start_date = experiment.split('@')[1].split('T')[0].replace('-', '/')
44 44 end_date = start_date
45 45 if args.start_time:
46 46 start_time = args.start_time
47 47 else:
48 48 start_time = experiment.split('@')[1].split('T')[1].replace('-', ':')
49 49 #start_time = '16:15:00'
50 50 end_time = '23:59:59'
51 51 N = int(1/(speed_axis[0]*ipp)) # 1 GRADO DE RESOLUCION
52 52 path = os.path.join(PATH, experiment, 'rawdata')
53 53 path_ped = os.path.join(PATH, experiment, 'position')
54 54 #path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km_removeDC')
55 55 #path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km_removeDC')
56 56 path_plots = os.path.join(PATH, experiment, 'plotsC0_FD_PL_R'+str(args.range)+'km')
57 57 path_save = os.path.join(PATH, experiment, 'paramC0_FD_PL_R'+str(args.range)+'km')
58 58 RMIX = 1.62
59 59
60 60 from schainpy.controller import Project
61 61
62 62 project = Project()
63 63 project.setup(id='1', name='Sophy', description='sophy proc')
64 64
65 65 reader = project.addReadUnit(datatype='DigitalRFReader',
66 66 path=path,
67 67 startDate=start_date,
68 68 endDate=end_date,
69 69 startTime=start_time,
70 70 endTime=end_time,
71 71 delay=30,
72 72 online=args.online,
73 73 walk=1,
74 74 ippKm = ipp_km,
75 75 getByBlock = 1,
76 76 nProfileBlocks = N,
77 77 )
78 78 voltage = project.addProcUnit(datatype='VoltageProc', inputId=reader.getId())
79 79
80 80 op = voltage.addOperation(name='setAttribute')
81 81 op.addParameter(name='frequency', value='9345.e6', format='float')
82 82
83 83 op = voltage.addOperation(name='ProfileSelector')
84 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 86 if conf['usrp_tx']['code_type_2']:
87 87 codes = [ c.strip() for c in conf['usrp_tx']['code_2'].split(',')]
88 88 code = []
89 89 for c in codes:
90 90 code.append([int(x) for x in c])
91 91 op = voltage.addOperation(name='Decoder', optype='other')
92 92 op.addParameter(name='code', value=code)
93 93 op.addParameter(name='nCode', value=len(code), format='int')
94 94 op.addParameter(name='nBaud', value=len(code[0]), format='int')
95 95
96 96 op = voltage.addOperation(name='CohInt', optype='other') #Minimo integrar 2 perfiles por ser codigo complementario
97 97 op.addParameter(name='n', value=len(code), format='int')
98 98 ncode = len(code)
99 99 else:
100 100 ncode = 1
101 101
102 102 op = voltage.addOperation(name='setH0')
103 103 op.addParameter(name='h0', value='-1.68')
104 104
105 105 if args.range > 0:
106 106 op = voltage.addOperation(name='selectHeights')
107 107 op.addParameter(name='minIndex', value='0', format='int')
108 108 op.addParameter(name='maxIndex', value=max_index(args.range, sample_rate, ipp), format='int')
109 109
110 110 #---------------------------------------NEW PROCESSING -----------------------------------------------------
111 111 procB = project.addProcUnit(datatype='SpectraProc', inputId=voltage.getId())
112 112 procB.addParameter(name='nFFTPoints', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
113 113 procB.addParameter(name='nProfiles', value=int(conf['usrp_tx']['repetitions_2'])/2, format='int')
114 114
115 115 #opObj11 = procB.addOperation(name='removeDC')
116 116 #opObj11.addParameter(name='mode', value=2)
117 117
118 118 proc= project.addProcUnit(datatype='ParametersProc',inputId=procB.getId())
119 119
120 120 opObj10 = proc.addOperation(name='SpectralMoments')
121 121 opObj10.addParameter(name='wradar',value=True)
122 122
123 123 #---------------------------------------NEW PROCESSING -----------------------------------------------------
124 124
125 125 opObj10 = proc.addOperation(name="WeatherRadar")
126 126 opObj10.addParameter(name='variableList',value='Reflectividad,VelocidadRadial,AnchoEspectral')
127 127 opObj10.addParameter(name='tauW',value=(1e-6/sample_rate)*len(code[0]))
128 128 opObj10.addParameter(name='Pt',value=((1e-6/sample_rate)*len(code[0])/ipp)*200)
129 129
130 130 # {"latitude": -12.0404828587, "longitude": -75.2147483647, "altitude": 3379.2147483647}
131 131
132 132 op = proc.addOperation(name='PedestalInformation')
133 133 op.addParameter(name='path', value=path_ped, format='str')
134 134 op.addParameter(name='interval', value='0.04')
135 135 op.addParameter(name='time_offset', value=time_offset)
136 136 #op.addParameter(name='az_offset', value=-26.2)
137 137 op.addParameter(name='mode', value='PPI')
138 138
139 139 for param in parameters:
140 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 142 op.addParameter(name='runNextOp', value=True)
143 143
144 144 op= proc.addOperation(name='WeatherParamsPlot')
145 145 if args.save: op.addParameter(name='save', value=path_plots, format='str')
146 146 op.addParameter(name='save_period', value=-1)
147 147 op.addParameter(name='show', value=args.show)
148 148 op.addParameter(name='channels', value='0,')
149 149 op.addParameter(name='zmin', value=PARAM[param]['zmin'])
150 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 152 op.addParameter(name='labels', value=[PARAM[param]['label']])
153 153 op.addParameter(name='save_code', value=param)
154 154 op.addParameter(name='cb_label', value=PARAM[param]['cb_label'])
155 155 op.addParameter(name='colormap', value=PARAM[param]['colormap'])
156 156 op.addParameter(name='bgcolor',value='black')
157 157 op.addParameter(name='snr_threshold',value=0.4)
158 158
159 159 desc = {
160 160 'Data': {
161 PARAM[param]['name']: PARAM[param]['wrname'],
161 'data_param': PARAM[param]['wrname'],
162 162 'utctime': 'time'
163 163 },
164 164 'Metadata': {
165 165 'heightList': 'range',
166 166 'data_azi': 'azimuth',
167 167 'data_ele': 'elevation',
168 168 }
169 169 }
170 170
171 171 if args.save:
172 172 opObj10 = proc.addOperation(name='HDFWriter')
173 173 opObj10.addParameter(name='path', value=path_save, format='str')
174 174 opObj10.addParameter(name='Reset', value=True)
175 175 opObj10.addParameter(name='setType', value='weather')
176 176 opObj10.addParameter(name=' description', value=json.dumps(desc))
177 177 opObj10.addParameter(name='blocksPerFile', value='1',format='int')
178 178 opObj10.addParameter(name='metadataList', value='heightList,data_azi,data_ele')
179 179 opObj10.addParameter(name='dataList', value='{},utctime'.format(PARAM[param]['name']))
180 180 project.start()
181 181
182 182
183 183
184 184 if __name__ == '__main__':
185 185
186 186 parser = argparse.ArgumentParser(description='Script to process SOPHy data.')
187 187 parser.add_argument('experiment',
188 188 help='Experiment name')
189 189 parser.add_argument('--parameters', nargs='*', default=['S'],
190 190 help='Variables to process: P, Z, V')
191 191 parser.add_argument('--time_offset', default=0,
192 192 help='Fix time offset')
193 193 parser.add_argument('--range', default=0, type=float,
194 194 help='Max range to plot')
195 195 parser.add_argument('--save', action='store_true',
196 196 help='Create output files')
197 197 parser.add_argument('--show', action='store_true',
198 198 help='Show matplotlib plot.')
199 199 parser.add_argument('--online', action='store_true',
200 200 help='Set online mode.')
201 201 parser.add_argument('--start_time', default='',
202 202 help='Set start time.')
203 203
204 204
205 205 args = parser.parse_args()
206 206
207 207 main(args)
General Comments 0
You need to be logged in to leave comments. Login now