@@ -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 | 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 | 463 | class removeDC(Operation): |
|
434 | 464 | |
|
435 | 465 | def run(self, dataOut, mode=2): |
General Comments 0
You need to be logged in to leave comments.
Login now