@@ -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