##// END OF EJS Templates
Se adiciona script Julia_EEJ.py para test y la operaciones GetSNR
Alexander Valdez -
r1684:1f582a059484
parent child
Show More
@@ -0,0 +1,291
1 #!/usr/bin/env python
2 '''
3 Created on Jul 7, 2014
4
5 @author: roj-idl71
6 '''
7 import os, sys, json
8
9 #path = os.path.dirname(os.getcwd())
10 #path = os.path.join(path, 'source')
11 #sys.path.insert(0, path)
12
13 from schainpy.controller import Project
14
15 if __name__ == '__main__':
16
17 desc = "JULIA raw experiment "
18 filename = "schain.xml"
19
20 dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2022/'
21 dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2021/'
22 dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2017/'
23 dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2021/'
24 dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2018/'
25 #dpath = '/home/roberto/puma/JULIA_NEW/JULIA_EW/D2017/'
26 #dpath = '/home/roberto/Folder_aux/D2019/'
27
28 ##dpath = '/home/roberto/puma/JULIA_EW_IMAGING/JULIA_EW/D2017/'
29 dpath = '/home/soporte/PUMA/JULIA_EW_IMAGING/JULIA_EW/D2017/'
30
31 figpath = '/home/soporte/DATA/Pictures/JULIA/EEJ/Skew_but_dop_is_shift'+'/'+dpath[-5:-1]
32 ppath = "/home/soporte/DATA/MLT/Oblique/2022_03/data_reshape"
33 spcdata = '/home/soporte/DATA/JULIA/EEJ/SPC'
34 path_parameters = '/home/soporte/DATA/JULIA/EEJ/Params'
35 db_range=['25','35']
36 db_range=['10','20']
37 #db_range=['14','20']
38 db_range=['10','23']
39 db_range=['13','20']
40 db_range=['21','30']
41 db_range=['15','30']
42 db_range=['13','28']
43 tiempo=['7','18']
44 altura1=[2,20]
45 altura1=[90,220]
46 velocity=['-80','80']
47 period=60
48 # PROJECT 1
49
50 show_spc = 0
51 save_spc = 0
52 fitting = 1
53 save_params = 1
54 plot_params = 0
55
56 controllerObj = Project()
57 controllerObj.setup(id = '191', name='altura1', description=desc)
58
59 readUnitConfObj1 = controllerObj.addReadUnit(datatype='SpectraReader',
60 path=dpath,
61 startDate='2017/09/01', #Check 21-29 Jun 2021, 18 May 2022
62 endDate='2017/09/30', #05,06,07-01-18
63 #startTime='06:00:00',
64 #endTime='18:00:00',
65 startTime='07:00:00',
66 #startTime='10:00:00',
67 #startTime='08:38:01',
68 #startTime='11:16:00',
69 #startTime='08:13:00',
70 endTime='17:59:59',
71 #startTime='16:30:00',
72 #endTime='17:30:59',
73 online=0,
74 walk=1,
75 expLabel='150EEJ',
76 getByBlock=1,
77 delay=20)
78
79 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
80 # opObj00 = readUnitConfObj.addOperation(name='printNumberOfBlock')
81
82 procUnitConfObj1 = controllerObj.addProcUnit(datatype='SpectraProc', inputId=readUnitConfObj1.getId())
83
84 opObj11 = procUnitConfObj1.addOperation(name='selectChannels')
85 opObj11.addParameter(name='channelList', value='2,', format='intlist')
86
87 '''
88 opObj11 = procUnitConfObj1SPC.addOperation(name='removeDC')
89 opObj11.addParameter(name='mode', value='2', format='int')
90 '''
91
92 #opObj11 = procUnitConfObj1.addOperation(name='dopplerFlip') #It fixes the Doppler
93 #opObj11.addParameter(name='chann', value='0', format='int')
94
95 opObj11 = procUnitConfObj1.addOperation(name='removeInterference')
96
97 opObj11 = procUnitConfObj1.addOperation(name='IncohInt', optype='other')
98 #opObj11.addParameter(name='n', value='20', format='int')
99 opObj11.addParameter(name='n', value='1', format='int')
100
101 opObj11 = procUnitConfObj1.addOperation(name='GetSNR', optype='other')
102
103 if save_spc:
104 dataList=['data_spc',
105 'utctime']
106 metadataList=['nFFTPoints','VelRange','normFactor',
107 'heightList','timeZone']
108
109 op221 = procUnitConfObj1.addOperation(name='HDFWriter', optype='external')
110 op221.addParameter(name='path', value=spcdata)
111 #op221.addParameter(name='mode', value=1, format='int')
112 op221.addParameter(name='dataList', value=dataList)
113 op221.addParameter(name='metadataList', value=metadataList)
114 #op221.addParameter(name='blocksPerFile', value=500)
115 op221.addParameter(name='blocksPerFile', value=2000)
116
117 if show_spc:
118 #'''
119 # opObj11 = procUnitConfObj1SPC.addOperation(name='removeInterference')
120
121 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
122 opObj11.addParameter(name='id', value='1', format='int')
123 opObj11.addParameter(name='wintitle', value='Oblique', format='str')
124 opObj11.addParameter(name='zmin', value=db_range[0], format='int')
125 opObj11.addParameter(name='zmax', value=db_range[1], format='int')
126 opObj11.addParameter(name='xaxis', value='velocity', format='str')
127 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
128 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
129 # opObj11.addParameter(name='xmin', value=velocity[0], format='int')
130 # opObj11.addParameter(name='xmax', value=velocity[1], format='int')
131 opObj11.addParameter(name='showprofile', value='1', format='int')
132 opObj11.addParameter(name='save', value=figpath, format='str')
133 #'''
134 #'''
135 opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other')
136 opObj11.addParameter(name='id', value='10', format='int')
137 opObj11.addParameter(name='wintitle', value='JULIA EEJ RTI', format='str')
138 opObj11.addParameter(name='xmin', value=tiempo[0], format='float')
139 opObj11.addParameter(name='xmax', value=tiempo[1], format='float')
140 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
141 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
142 opObj11.addParameter(name='zmin', value=db_range[0], format='int')
143 opObj11.addParameter(name='zmax', value=db_range[1], format='int')
144 opObj11.addParameter(name='showprofile', value='1', format='int')
145 #opObj11.addParameter(name='save_period', value=40, format='str')
146 opObj11.addParameter(name='save', value=figpath, format='str')
147 #opObj11.addParameter(name='throttle', value=1, format='str')
148 #'''
149 '''
150 opObj11 = procUnitConfObj1.addOperation(name='SnrPlot', optype='other')
151 opObj11.addParameter(name='id', value='10', format='int')
152 opObj11.addParameter(name='wintitle', value='JULIA EEJ SNR', format='str')
153 opObj11.addParameter(name='xmin', value=tiempo[0], format='float')
154 opObj11.addParameter(name='xmax', value=tiempo[1], format='float')
155 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
156 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
157 opObj11.addParameter(name='zmin', value=0.1, format='int')
158 opObj11.addParameter(name='zmax', value=50, format='int')
159 #opObj11.addParameter(name='showprofile', value='1', format='int')
160 opObj11.addParameter(name='save', value=figpath, format='str')
161 '''
162 if fitting:
163 Dop = 'Max' #Plot and Save the Pos[Max_val] as the Doppler Shift
164 Dop = 'Shift' #Plot and Save the Skew Gaussian Shift as the Doppler Shift
165 opObj11 = procUnitConfObj1.addOperation(name='Oblique_Gauss_Fit', optype='other')
166 opObj11.addParameter(name='mode', value=9, format='int') #Skew
167 opObj11.addParameter(name='Dop', value=Dop)
168 #opObj11.addParameter(name='mode', value=11, format='int')
169
170 if save_params:
171 '''
172 dataList=['powerdB', 'Oblique_params', 'Oblique_param_errors', 'dplr_2_u', 'data_snr',
173 'utctime']
174 metadataList=['VelRange',
175 'heightList','timeZone']
176
177 op221 = procUnitConfObj1.addOperation(name='HDFWriter', optype='external')
178 op221.addParameter(name='path', value=path_parameters)
179 #op221.addParameter(name='mode', value=1, format='int')
180 op221.addParameter(name='dataList', value=dataList)
181 op221.addParameter(name='metadataList', value=metadataList)
182 #op221.addParameter(name='blocksPerFile', value=500)
183 op221.addParameter(name='blocksPerFile', value=2000)
184 '''
185
186 one = {'gdlatr': 'lat', 'gdlonr': 'lon', 'inttms': 'paramInterval'} #reader gdlatr-->lat only 1D
187
188 two = {
189 'snl': 'snl', #Debería salir como el original pero más limpio
190 'RANGE': 'heightList', #<----- nmonics
191 'DOPP_T1_EEJ': ('Dop_EEJ_T1', (0)),
192 'DDOPP_T1_EEJ': ('Err_Dop_EEJ_T1', (0)),
193 'SPEC_W_T1_EEJ': ('Spec_W_T1', (0)),
194 'DSPEC_W_T1_EEJ': ('Err_Spec_W_T1', (0)),
195 'DOPP_T2_EEJ': ('Dop_EEJ_T2', (0)),
196 'DDOPP_T2_EEJ': ('Err_Dop_EEJ_T2', (0)),
197 'SPEC_W_T2_EEJ': ('Spec_W_T2', (0)),
198 'DSPEC_W_T2_EEJ': ('Err_Spec_W_T2', (0)),
199 } #writer
200
201
202 ind = ['range']
203
204 meta = {
205 'kinst': 840, #instrumnet code, 840 for JULIA, 14 for JULIA MP CSR
206 'kindat': 1962, #type of data #Este es el nuevo e igual para JULIA y JULIA CSR
207 'catalog': {
208 'principleInvestigator': 'Danny Scipión',
209 'expPurpose': 'Equatorial Electrojet Parameters',
210 },
211 'header': {
212 'analyst': 'D. Hysell'
213 }
214 }
215
216
217 op_writer = procUnitConfObj1.addOperation(name='MADWriter', optype='external')
218 #op_writer.addParameter(name='path', value='/home/roberto/DATA/hdf5_outputs/Madrigal/EEJ')
219 #op_writer.addParameter(name='path', value='/home/roberto/DATA/hdf5_outputs/Madrigal/EEJ/Dop_Max_Val')
220 #op_writer.addParameter(name='path', value='/home/roberto/DATA/hdf5_outputs/Madrigal/EEJ/'+Dop+'/'+dpath[-5:-1])
221 #op_writer.addParameter(name='path', value='/home/roberto/DATA/hdf5_outputs/Madrigal/EEJ/CorrectFiles/no_snl_Test/01/'+Dop+'/'+dpath[-5:-1])
222 op_writer.addParameter(name='path', value='/home/soporte/DATA/hdf5_outputs/Madrigal/EEJ/FinalFiles/'+Dop+'/'+dpath[-5:-1])
223 op_writer.addParameter(name='format', value='hdf5', format='str')
224 op_writer.addParameter(name='oneDDict', value=json.dumps(one), format='str')
225 op_writer.addParameter(name='twoDDict', value=json.dumps(two), format='str')
226 op_writer.addParameter(name='ind2DList', value=json.dumps(ind), format='str')
227 op_writer.addParameter(name='metadata', value=json.dumps(meta), format='str')
228
229
230 if plot_params:
231 '''
232 opObj11 = procUnitConfObj1.addOperation(name='DopplerEEJPlot', optype='other')
233 opObj11.addParameter(name='id', value='10', format='int')
234 opObj11.addParameter(name='wintitle', value='Doppler EEJ', format='str')
235 opObj11.addParameter(name='xmin', value=tiempo[0], format='float')
236 opObj11.addParameter(name='xmax', value=tiempo[1], format='float')
237 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
238 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
239 #opObj11.addParameter(name='zmin', value=-250, format='int')
240 #opObj11.addParameter(name='zmax', value=250, format='int')
241 opObj11.addParameter(name='zlimits', value='(-400,400),(-250,250)')
242 #opObj11.addParameter(name='showprofile', value='1', format='int')
243 opObj11.addParameter(name='save', value=figpath, format='str')
244 #opObj11.addParameter(name='EEJtype', value=1, format='int')
245
246 opObj11 = procUnitConfObj1.addOperation(name='SpcWidthEEJPlot', optype='other')
247 opObj11.addParameter(name='id', value='10', format='int')
248 opObj11.addParameter(name='wintitle', value='Spectral Width EEJ', format='str')
249 opObj11.addParameter(name='xmin', value=tiempo[0], format='float')
250 opObj11.addParameter(name='xmax', value=tiempo[1], format='float')
251 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
252 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
253 #opObj11.addParameter(name='zmin', value=0., format='int')
254 #opObj11.addParameter(name='zmax', value=250, format='int')
255 opObj11.addParameter(name='zlimits', value='(0.1,100),(0.1,250)')
256 #opObj11.addParameter(name='showprofile', value='1', format='int')
257 opObj11.addParameter(name='save', value=figpath, format='str')
258 #opObj11.addParameter(name='EEJtype', value=1, format='int')
259 '''
260 opObj11 = procUnitConfObj1.addOperation(name='SpectraObliquePlot', optype='other')
261 opObj11.addParameter(name='id', value='1', format='int')
262 opObj11.addParameter(name='wintitle', value='Oblique', format='str')
263 opObj11.addParameter(name='zmin', value=db_range[0], format='int')
264 opObj11.addParameter(name='zmax', value=db_range[1], format='int')
265 opObj11.addParameter(name='xaxis', value='velocity', format='str')
266 opObj11.addParameter(name='ymin', value=altura1[0], format='int')
267 opObj11.addParameter(name='ymax', value=altura1[1], format='int')
268 # opObj11.addParameter(name='xmin', value=velocity[0], format='int')
269 # opObj11.addParameter(name='xmax', value=velocity[1], format='int')
270 opObj11.addParameter(name='showprofile', value='1', format='int')
271 opObj11.addParameter(name='save', value=figpath+'/400', format='str')
272
273 '''
274 opObj11 = procUnitConfObj1.addOperation(name='DopplerEEJPlot', optype='other')
275 opObj11.addParameter(name='id', value='10', format='int')
276 opObj11.addParameter(name='wintitle', value='Doppler EEJ Type II', format='str')
277 opObj11.addParameter(name='xmin', value=tiempo[0], format='float')
278 opObj11.addParameter(name='xmax', value=tiempo[1], format='float')
279 # opObj11.addParameter(name='ymin', value=altura1[0], format='int')
280 # opObj11.addParameter(name='ymax', value=altura1[1], format='int')
281 opObj11.addParameter(name='zmin', value=-250, format='int')
282 opObj11.addParameter(name='zmax', value=250, format='int')
283 #opObj11.addParameter(name='showprofile', value='1', format='int')
284 opObj11.addParameter(name='save', value=figpath, format='str')
285 opObj11.addParameter(name='EEJtype', value=2, format='int')
286 '''
287
288
289
290
291 controllerObj.start() No newline at end of file
@@ -430,6 +430,36 class SpectraProc(ProcessingUnit):
430
430
431 return 1
431 return 1
432
432
433
434 class GetSNR(Operation):
435 '''
436 Written by R. Flores
437 '''
438 """Operation to get SNR.
439
440 Parameters:
441 -----------
442
443 Example
444 --------
445
446 op = proc_unit.addOperation(name='GetSNR', optype='other')
447
448 """
449
450 def __init__(self, **kwargs):
451
452 Operation.__init__(self, **kwargs)
453
454 def run(self,dataOut):
455
456 noise = dataOut.getNoise(ymin_index=-10) #Región superior donde solo debería de haber ruido
457 dataOut.data_snr = (dataOut.data_spc.sum(axis=1)-noise[:,None]*dataOut.nFFTPoints)/(noise[:,None]*dataOut.nFFTPoints) #It works apparently
458 dataOut.snl = numpy.log10(dataOut.data_snr)
459 dataOut.snl = numpy.where(dataOut.data_snr<.01, numpy.nan, dataOut.snl)
460
461 return dataOut
462
433 class removeDC(Operation):
463 class removeDC(Operation):
434
464
435 def run(self, dataOut, mode=2):
465 def run(self, dataOut, mode=2):
General Comments 0
You need to be logged in to leave comments. Login now