@@ -0,0 +1,222 | |||
|
1 | import os, sys, json | |
|
2 | import time | |
|
3 | import datetime | |
|
4 | from multiprocessing import Process | |
|
5 | from shutil import rmtree | |
|
6 | from schainpy.controller import Project | |
|
7 | from multiprocessing.connection import wait | |
|
8 | from schainpy.model.io.utilsIO import MergeH5 | |
|
9 | ########################################################################### | |
|
10 | ########################################################################### | |
|
11 | dty = datetime.date.today() | |
|
12 | str1 = dty + datetime.timedelta(days=1) | |
|
13 | str2 = dty - datetime.timedelta(days=1) | |
|
14 | today = dty.strftime("%Y/%m/%d") | |
|
15 | tomorrow = str1.strftime("%Y/%m/%d") | |
|
16 | yesterday = str2.strftime("%Y/%m/%d") | |
|
17 | ########################################################################### | |
|
18 | ########################################################################### | |
|
19 | ||
|
20 | ||
|
21 | path= '/media/soporte/Elements/DATA_AMISR/2022' | |
|
22 | #path= '/media/soporte/Elements/DATA_AMISR/2022/' | |
|
23 | outPath = '/home/soporte/Data/data2Fabiano/POWER_H5_AMISR/2022/' | |
|
24 | ||
|
25 | ########################################################################### | |
|
26 | ########################################################################### | |
|
27 | xmin = 7 | |
|
28 | xmax = 18 | |
|
29 | localtime=1 | |
|
30 | ||
|
31 | startDate=today | |
|
32 | endDate=tomorrow | |
|
33 | ||
|
34 | startDate='2022/09/24' #apunte perp y oblicuo | |
|
35 | endDate='2022/09/25' | |
|
36 | ||
|
37 | startTime = '18:00:00' | |
|
38 | endTime = '07:00:00' | |
|
39 | ############################################################################### | |
|
40 | ############################################################################### | |
|
41 | nChannels = 10 | |
|
42 | IPPms =10 | |
|
43 | code = [1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,-1,1] | |
|
44 | nCode = 1 | |
|
45 | nBaud = 28 | |
|
46 | nOsamp = 2 # oversample | |
|
47 | dataList = ['data_pow','utctime'] | |
|
48 | ############################################################################### | |
|
49 | ############################################################################### | |
|
50 | nipp = (1000/IPPms)/nChannels | |
|
51 | ippP10sec = nipp*10 | |
|
52 | print("{} profiles in 10 seconds".format(ippP10sec)) | |
|
53 | ############################################################################### | |
|
54 | ############################################################################### | |
|
55 | l = startDate.split('/') #adding day of the year to outPath | |
|
56 | datelist = datetime.date(int(l[0]),int(l[1]),int(l[2])) | |
|
57 | DOY = datelist.timetuple().tm_yday | |
|
58 | year = l[0] | |
|
59 | month = l[1].zfill(2) | |
|
60 | day = l[2].zfill(2) | |
|
61 | doy = str(DOY).zfill(3) | |
|
62 | ||
|
63 | ########################################################################### | |
|
64 | ########################################################################### | |
|
65 | fpathOut = outPath+ "ESF"+l[0]+doy | |
|
66 | ||
|
67 | if os.path.exists(fpathOut): | |
|
68 | print("outPath 1: ", fpathOut) | |
|
69 | else : | |
|
70 | os.mkdir(fpathOut) | |
|
71 | ||
|
72 | outPaths = [fpathOut+"/CH{}".format(ch) for ch in range(nChannels)] | |
|
73 | ########################################################################### | |
|
74 | ########################################################################### | |
|
75 | ||
|
76 | ||
|
77 | def schainByChannels(channel, Outdata): | |
|
78 | ''' | |
|
79 | ||
|
80 | ''' | |
|
81 | ||
|
82 | if os.path.exists(Outdata): | |
|
83 | print("Outdata {}: ".format(channel), Outdata) | |
|
84 | else : | |
|
85 | os.mkdir(Outdata) | |
|
86 | ||
|
87 | controllerObj = Project() | |
|
88 | controllerObj.setup(id = channel, name='amisr_test', description='desc') | |
|
89 | readUnitConfObj = controllerObj.addReadUnit(datatype='AMISRReader', | |
|
90 | path=path, | |
|
91 | startDate=startDate,#'2016/07/12', | |
|
92 | endDate=endDate,#'2016/07/13', | |
|
93 | startTime=startTime,#'18:00:00', | |
|
94 | endTime=endTime,#'07:00:00', | |
|
95 | walk='1', | |
|
96 | code = code, | |
|
97 | nCode = nCode, | |
|
98 | nBaud = nBaud, | |
|
99 | nOsamp = nOsamp, | |
|
100 | nFFT = 10, | |
|
101 | timezone='lt', | |
|
102 | margin_days=5, | |
|
103 | online=0) | |
|
104 | ||
|
105 | proc_volts = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId()) | |
|
106 | ||
|
107 | opObj03 = proc_volts.addOperation(name='selectChannels', optype='other') | |
|
108 | opObj03.addParameter(name='channelList', value=[channel], format='list') | |
|
109 | ||
|
110 | opObj01 = proc_volts.addOperation(name='Decoder', optype='other') | |
|
111 | opObj01.addParameter(name='code', value=code, format='floatlist') | |
|
112 | opObj01.addParameter(name='nCode', value=nCode, format='int') | |
|
113 | opObj01.addParameter(name='nBaud', value=nBaud, format='int') | |
|
114 | opObj01.addParameter(name='osamp', value=nOsamp, format='int') | |
|
115 | ||
|
116 | ||
|
117 | proc_spc = controllerObj.addProcUnit(datatype='SpectraProc', inputId=proc_volts.getId()) | |
|
118 | proc_spc.addParameter(name='nFFTPoints', value=10, format='int') | |
|
119 | ||
|
120 | ||
|
121 | opObj13 = proc_spc.addOperation(name='IncohInt', optype='other') | |
|
122 | opObj13.addParameter(name='timeInterval', value='20', format='int') | |
|
123 | ||
|
124 | ||
|
125 | procParam= controllerObj.addProcUnit(datatype='ParametersProc',inputId=proc_spc.getId()) | |
|
126 | moments = procParam.addOperation(name='SpectralMoments',optype='other') | |
|
127 | opObj12 = procParam.addOperation(name='setAttribute') | |
|
128 | opObj12.addParameter(name='type', value='Spectra') | |
|
129 | ||
|
130 | writer = procParam.addOperation(name='HDFWriter',optype='other') | |
|
131 | writer.addParameter(name='path', value=Outdata) | |
|
132 | writer.addParameter(name='timeZone', value="ut") | |
|
133 | writer.addParameter(name='hourLimit', value=14) | |
|
134 | writer.addParameter(name='breakDays', value=False) | |
|
135 | writer.addParameter(name='blocksPerFile', value='2340',format='int') #2340ö | |
|
136 | # writer1.addParameter(name='metadataList', value='type,timeZone,frequency,channelList,heightList,ippSeconds,\ | |
|
137 | # azimuthList,elevationList,nCohInt,nIncohInt,nFFTPoints',format='list') | |
|
138 | writer.addParameter(name='metadataList', value='timeZone,type,unitsDescription,\ | |
|
139 | radarControllerHeaderObj.dtype,radarControllerHeaderObj.ipp,radarControllerHeaderObj.txA,radarControllerHeaderObj.frequency,\ | |
|
140 | radarControllerHeaderObj.sampleRate,radarControllerHeaderObj.heightList,radarControllerHeaderObj.elevationList,\ | |
|
141 | radarControllerHeaderObj.azimuthList,radarControllerHeaderObj.channelList,radarControllerHeaderObj.heightResolution,\ | |
|
142 | radarControllerHeaderObj.code,radarControllerHeaderObj.nCode,radarControllerHeaderObj.nBaud,radarControllerHeaderObj.nOsamp,\ | |
|
143 | processingHeaderObj.dtype,processingHeaderObj.ipp,processingHeaderObj.nCohInt,processingHeaderObj.nSamplesFFT,\ | |
|
144 | processingHeaderObj.nFFTPoints,processingHeaderObj.timeIncohInt,processingHeaderObj.heightList,processingHeaderObj.channelList,processingHeaderObj.elevationList,\ | |
|
145 | processingHeaderObj.azimuthList,processingHeaderObj.heightResolution',format='list') | |
|
146 | writer.addParameter(name='dataList',value='data_pow,utctime',format='list') | |
|
147 | ||
|
148 | controllerObj.start() | |
|
149 | ||
|
150 | ||
|
151 | def plotMerged(mergedPath): | |
|
152 | ||
|
153 | controllerObj = Project() | |
|
154 | controllerObj.setup(id = '22164', name='esf_proc', description="plot merged power") | |
|
155 | ##.......................................................................... | |
|
156 | ##.......................................................................... | |
|
157 | ||
|
158 | readerUnit = controllerObj.addReadUnit(datatype='HDFReader', | |
|
159 | path=mergedPath, | |
|
160 | startDate=startDate,#startDate,#'2016/07/12', | |
|
161 | endDate=endDate,#endDate,#'2016/07/13', | |
|
162 | startTime=startTime,#'07:00:00', | |
|
163 | endTime=endTime,#'15:00:00', | |
|
164 | walk=0, | |
|
165 | timezone='lt', | |
|
166 | online=0) | |
|
167 | ##.......................................................................... | |
|
168 | opObj21 = readerUnit.addOperation(name='PowerPlot', optype='external') | |
|
169 | opObj21.addParameter(name='showprofile', value='1', format='int') | |
|
170 | opObj21.addParameter(name='xmin', value=xmin, format='int') | |
|
171 | opObj21.addParameter(name='xmax', value=xmax, format='int') | |
|
172 | opObj21.addParameter(name='zmin', value=100, format='int') | |
|
173 | opObj21.addParameter(name='zmax', value=120, format='int') | |
|
174 | opObj21.addParameter(name='show', value=0, format='int') | |
|
175 | opObj21.addParameter(name='localtime', value=1,format='int') | |
|
176 | opObj21.addParameter(name='save', value=mergedPath, format='str') | |
|
177 | opObj21.addParameter(name='t_units', value='h', format='str') | |
|
178 | ||
|
179 | controllerObj.start() | |
|
180 | controllerObj.join() | |
|
181 | ||
|
182 | powerPath = mergedPath +"/pow" | |
|
183 | figPaths = [powerPath] | |
|
184 | for pch in figPaths: | |
|
185 | print("Removing ",pch) | |
|
186 | rmtree(pch) | |
|
187 | ||
|
188 | ||
|
189 | if __name__ == '__main__': | |
|
190 | ||
|
191 | ||
|
192 | ||
|
193 | pool = [] | |
|
194 | for ch in range(nChannels): | |
|
195 | p = Process(target=schainByChannels, args=(ch,outPaths[ch])) | |
|
196 | pool.append(p) | |
|
197 | p.start() | |
|
198 | ||
|
199 | wait(p.sentinel for p in pool) | |
|
200 | time.sleep(10) | |
|
201 | ||
|
202 | ############################################################################ | |
|
203 | ############################################################################ | |
|
204 | ||
|
205 | print("Starting merging proc...") | |
|
206 | if os.path.exists(fpathOut): | |
|
207 | print("final path Out: {}: ", fpathOut) | |
|
208 | else : | |
|
209 | os.mkdir(fpathOut) | |
|
210 | ||
|
211 | merger = MergeH5(nChannels,fpathOut,dataList,*outPaths) | |
|
212 | merger.run() | |
|
213 | time.sleep(2) | |
|
214 | ||
|
215 | ############################################################################ | |
|
216 | plotMerged(fpathOut) | |
|
217 | ############################################################################ | |
|
218 | ||
|
219 | print("Removing hdf5 files from channels...") | |
|
220 | for pch in outPaths: | |
|
221 | rmtree(pch) | |
|
222 | print("Proc finished ! :)") |
General Comments 0
You need to be logged in to leave comments.
Login now