@@ -0,0 +1,388 | |||
|
1 | ''' | |
|
2 | Created on Feb 7, 2012 | |
|
3 | ||
|
4 | @author $Author: murco $ | |
|
5 | @version $Id: SpectraProcessor.py 119 2012-09-05 17:06:09Z murco $ | |
|
6 | ''' | |
|
7 | import os, sys | |
|
8 | import numpy | |
|
9 | import time | |
|
10 | ||
|
11 | path = os.path.split(os.getcwd())[0] | |
|
12 | sys.path.append(path) | |
|
13 | ||
|
14 | from Data.Spectra import Spectra | |
|
15 | from IO.SpectraIO import SpectraWriter | |
|
16 | #from Graphics.SpectraPlot import Spectrum | |
|
17 | #from JRONoise import Noise | |
|
18 | ||
|
19 | class SpectraProcessor: | |
|
20 | ''' | |
|
21 | classdocs | |
|
22 | ''' | |
|
23 | ||
|
24 | dataInObj = None | |
|
25 | ||
|
26 | dataOutObj = None | |
|
27 | ||
|
28 | noiseObj = None | |
|
29 | ||
|
30 | integratorObjList = [] | |
|
31 | ||
|
32 | writerObjList = [] | |
|
33 | ||
|
34 | integratorObjIndex = None | |
|
35 | ||
|
36 | writerObjIndex = None | |
|
37 | ||
|
38 | profIndex = 0 # Se emplea cuando el objeto de entrada es un Voltage | |
|
39 | ||
|
40 | # integratorObjList = [] | |
|
41 | # | |
|
42 | # decoderObjList = [] | |
|
43 | # | |
|
44 | # writerObjList = [] | |
|
45 | # | |
|
46 | # plotterObjList = [] | |
|
47 | # | |
|
48 | # integratorObjIndex = None | |
|
49 | # | |
|
50 | # decoderObjIndex = None | |
|
51 | # | |
|
52 | # writerObjIndex = None | |
|
53 | # | |
|
54 | # plotterObjIndex = None | |
|
55 | # | |
|
56 | # buffer = None | |
|
57 | # | |
|
58 | # profIndex = 0 | |
|
59 | # | |
|
60 | # nFFTPoints = None | |
|
61 | # | |
|
62 | # nChannels = None | |
|
63 | # | |
|
64 | # nHeights = None | |
|
65 | # | |
|
66 | # nPairs = None | |
|
67 | # | |
|
68 | # pairList = None | |
|
69 | ||
|
70 | ||
|
71 | def __init__(self): | |
|
72 | ''' | |
|
73 | Constructor | |
|
74 | ''' | |
|
75 | ||
|
76 | self.integratorObjIndex = None | |
|
77 | self.writerObjIndex = None | |
|
78 | self.integratorObjList = [] | |
|
79 | self.writerObjList = [] | |
|
80 | self.noiseObj = None | |
|
81 | self.buffer = None | |
|
82 | self.profIndex = 0 | |
|
83 | ||
|
84 | def setup(self, dataInObj=None, dataOutObj=None, nFFTPoints=None, pairList=None): | |
|
85 | ||
|
86 | if dataInObj == None: | |
|
87 | raise ValueError, "This SpectraProcessor.setup() function needs dataInObj input variable" | |
|
88 | ||
|
89 | if dataInObj.type == "Voltage": | |
|
90 | if nFFTPoints == None: | |
|
91 | raise ValueError, "This SpectraProcessor.setup() function needs nFFTPoints input variable" | |
|
92 | else: | |
|
93 | nFFTPoints = dataInObj.nFFTPoints | |
|
94 | ||
|
95 | self.dataInObj = dataInObj | |
|
96 | ||
|
97 | if dataOutObj == None: | |
|
98 | dataOutObj = Spectra() | |
|
99 | ||
|
100 | self.dataOutObj = dataOutObj | |
|
101 | ||
|
102 | # self.noiseObj = Noise() #aun no se incluye el objeto Noise() | |
|
103 | ||
|
104 | ########################################## | |
|
105 | # self.nFFTPoints = nFFTPoints | |
|
106 | # self.nChannels = self.dataInObj.nChannels | |
|
107 | # self.nHeights = self.dataInObj.nHeights | |
|
108 | # self.pairList = pairList | |
|
109 | # if pairList != None: | |
|
110 | # self.nPairs = len(pairList) | |
|
111 | # else: | |
|
112 | # self.nPairs = 0 | |
|
113 | # | |
|
114 | # self.dataOutObj.heightList = self.dataInObj.heightList | |
|
115 | # self.dataOutObj.channelIndexList = self.dataInObj.channelIndexList | |
|
116 | # self.dataOutObj.m_BasicHeader = self.dataInObj.m_BasicHeader.copy() | |
|
117 | # self.dataOutObj.m_ProcessingHeader = self.dataInObj.m_ProcessingHeader.copy() | |
|
118 | # self.dataOutObj.m_RadarControllerHeader = self.dataInObj.m_RadarControllerHeader.copy() | |
|
119 | # self.dataOutObj.m_SystemHeader = self.dataInObj.m_SystemHeader.copy() | |
|
120 | # | |
|
121 | # self.dataOutObj.dataType = self.dataInObj.dataType | |
|
122 | # self.dataOutObj.nPairs = self.nPairs | |
|
123 | # self.dataOutObj.nChannels = self.nChannels | |
|
124 | # self.dataOutObj.nProfiles = self.nFFTPoints | |
|
125 | # self.dataOutObj.nHeights = self.nHeights | |
|
126 | # self.dataOutObj.nFFTPoints = self.nFFTPoints | |
|
127 | # #self.dataOutObj.data = None | |
|
128 | # | |
|
129 | # self.dataOutObj.m_SystemHeader.numChannels = self.nChannels | |
|
130 | # self.dataOutObj.m_SystemHeader.nProfiles = self.nFFTPoints | |
|
131 | # | |
|
132 | # self.dataOutObj.m_ProcessingHeader.totalSpectra = self.nChannels + self.nPairs | |
|
133 | # self.dataOutObj.m_ProcessingHeader.profilesPerBlock = self.nFFTPoints | |
|
134 | # self.dataOutObj.m_ProcessingHeader.numHeights = self.nHeights | |
|
135 | # self.dataOutObj.m_ProcessingHeader.shif_fft = True | |
|
136 | # | |
|
137 | # spectraComb = numpy.zeros( (self.nChannels+self.nPairs)*2,numpy.dtype('u1')) | |
|
138 | # k = 0 | |
|
139 | # for i in range( 0,self.nChannels*2,2 ): | |
|
140 | # spectraComb[i] = k | |
|
141 | # spectraComb[i+1] = k | |
|
142 | # k += 1 | |
|
143 | # | |
|
144 | # k *= 2 | |
|
145 | # | |
|
146 | # if self.pairList != None: | |
|
147 | # | |
|
148 | # for pair in self.pairList: | |
|
149 | # spectraComb[k] = pair[0] | |
|
150 | # spectraComb[k+1] = pair[1] | |
|
151 | # k += 2 | |
|
152 | # | |
|
153 | # self.dataOutObj.m_ProcessingHeader.spectraComb = spectraComb | |
|
154 | ||
|
155 | return self.dataOutObj | |
|
156 | ||
|
157 | def init(self): | |
|
158 | # | |
|
159 | # self.nHeights = self.dataInObj.nHeights | |
|
160 | # self.dataOutObj.nHeights = self.nHeights | |
|
161 | # self.dataOutObj.heightList = self.dataInObj.heightList | |
|
162 | # | |
|
163 | ||
|
164 | self.integratorObjIndex = 0 | |
|
165 | self.writerObjIndex = 0 | |
|
166 | ||
|
167 | if self.dataInObj.type == "Voltage": | |
|
168 | ||
|
169 | if self.buffer == None: | |
|
170 | self.buffer = numpy.zeros((self.nChannels, | |
|
171 | self.nFFTPoints, | |
|
172 | self.dataInObj.nHeights), | |
|
173 | dtype='complex') | |
|
174 | ||
|
175 | self.buffer[:,self.profIndex,:] = self.dataInObj.data | |
|
176 | self.profIndex += 1 | |
|
177 | ||
|
178 | if self.profIndex == self.nFFTPoints: | |
|
179 | self.__getFft() | |
|
180 | self.dataOutObj.flagNoData = False | |
|
181 | ||
|
182 | self.buffer = None | |
|
183 | self.profIndex = 0 | |
|
184 | return | |
|
185 | ||
|
186 | self.dataOutObj.flagNoData = True | |
|
187 | ||
|
188 | return | |
|
189 | ||
|
190 | #Other kind of data | |
|
191 | if self.dataInObj.type == "Spectra": | |
|
192 | self.dataOutObj.copy(self.dataInObj) | |
|
193 | self.dataOutObj.flagNoData = False | |
|
194 | return | |
|
195 | ||
|
196 | raise ValueError, "The datatype is not valid" | |
|
197 | ||
|
198 | def __getFft(self): | |
|
199 | """ | |
|
200 | Convierte valores de Voltaje a Spectra | |
|
201 | ||
|
202 | Affected: | |
|
203 | self.dataOutObj.data_spc | |
|
204 | self.dataOutObj.data_cspc | |
|
205 | self.dataOutObj.data_dc | |
|
206 | self.dataOutObj.heightList | |
|
207 | self.dataOutObj.m_BasicHeader | |
|
208 | self.dataOutObj.m_ProcessingHeader | |
|
209 | self.dataOutObj.m_RadarControllerHeader | |
|
210 | self.dataOutObj.m_SystemHeader | |
|
211 | self.profIndex | |
|
212 | self.buffer | |
|
213 | self.dataOutObj.flagNoData | |
|
214 | self.dataOutObj.dataType | |
|
215 | self.dataOutObj.nPairs | |
|
216 | self.dataOutObj.nChannels | |
|
217 | self.dataOutObj.nProfiles | |
|
218 | self.dataOutObj.m_SystemHeader.numChannels | |
|
219 | self.dataOutObj.m_ProcessingHeader.totalSpectra | |
|
220 | self.dataOutObj.m_ProcessingHeader.profilesPerBlock | |
|
221 | self.dataOutObj.m_ProcessingHeader.numHeights | |
|
222 | self.dataOutObj.m_ProcessingHeader.spectraComb | |
|
223 | self.dataOutObj.m_ProcessingHeader.shif_fft | |
|
224 | """ | |
|
225 | ||
|
226 | if self.dataInObj.flagNoData: | |
|
227 | return 0 | |
|
228 | ||
|
229 | fft_volt = numpy.fft.fft(self.buffer,axis=1) | |
|
230 | dc = fft_volt[:,0,:] | |
|
231 | ||
|
232 | #calculo de self-spectra | |
|
233 | fft_volt = numpy.fft.fftshift(fft_volt,axes=(1,)) | |
|
234 | spc = fft_volt * numpy.conjugate(fft_volt) | |
|
235 | spc = spc.real | |
|
236 | ||
|
237 | blocksize = 0 | |
|
238 | blocksize += dc.size | |
|
239 | blocksize += spc.size | |
|
240 | ||
|
241 | cspc = None | |
|
242 | pairIndex = 0 | |
|
243 | if self.pairList != None: | |
|
244 | #calculo de cross-spectra | |
|
245 | cspc = numpy.zeros((self.nPairs, self.nFFTPoints, self.nHeights), dtype='complex') | |
|
246 | for pair in self.pairList: | |
|
247 | cspc[pairIndex,:,:] = numpy.abs(fft_volt[pair[0],:,:] * numpy.conjugate(fft_volt[pair[1],:,:])) | |
|
248 | pairIndex += 1 | |
|
249 | blocksize += cspc.size | |
|
250 | ||
|
251 | self.dataOutObj.data_spc = spc | |
|
252 | self.dataOutObj.data_cspc = cspc | |
|
253 | self.dataOutObj.data_dc = dc | |
|
254 | self.dataOutObj.m_ProcessingHeader.blockSize = blocksize | |
|
255 | self.dataOutObj.m_BasicHeader.utc = self.dataInObj.m_BasicHeader.utc | |
|
256 | ||
|
257 | # self.getNoise() | |
|
258 | ||
|
259 | def addWriter(self, wrpath, profilesPerBlock, blocksPerFile): | |
|
260 | objWriter = SpectraWriter(self.dataOutObj, pairList) | |
|
261 | objWriter.setup(wrpath, profilesPerBlock, blocksPerFile) | |
|
262 | self.writerObjList.append(objWriter) | |
|
263 | ||
|
264 | def addIntegrator(self,N,timeInterval): | |
|
265 | ||
|
266 | objIncohInt = IncoherentIntegration(N,timeInterval) | |
|
267 | self.integratorObjList.append(objIncohInt) | |
|
268 | ||
|
269 | def writeData(self, wrpath, profilesPerBlock, blocksPerFile): | |
|
270 | if self.dataOutObj.flagNoData: | |
|
271 | return 0 | |
|
272 | ||
|
273 | if len(self.writerObjList) <= self.writerObjIndex: | |
|
274 | self.addWriter(wrpath, profilesPerBlock, blocksPerFile) | |
|
275 | ||
|
276 | self.writerObjList[self.writerObjIndex].putData() | |
|
277 | ||
|
278 | self.writerObjIndex += 1 | |
|
279 | ||
|
280 | def integrator(self, N=None, timeInterval=None): | |
|
281 | ||
|
282 | if self.dataOutObj.flagNoData: | |
|
283 | return 0 | |
|
284 | ||
|
285 | if len(self.integratorObjList) <= self.integratorObjIndex: | |
|
286 | self.addIntegrator(N,timeInterval) | |
|
287 | ||
|
288 | myIncohIntObj = self.integratorObjList[self.integratorObjIndex] | |
|
289 | myIncohIntObj.exe(data=self.dataOutObj.data_spc,timeOfData=self.dataOutObj.m_BasicHeader.utc) | |
|
290 | ||
|
291 | if myIncohIntObj.isReady: | |
|
292 | self.dataOutObj.data_spc = myIncohIntObj.data | |
|
293 | self.dataOutObj.nAvg = myIncohIntObj.navg | |
|
294 | self.dataOutObj.m_ProcessingHeader.incoherentInt = self.dataInObj.m_ProcessingHeader.incoherentInt*myIncohIntObj.navg | |
|
295 | #print "myIncohIntObj.navg: ",myIncohIntObj.navg | |
|
296 | self.dataOutObj.flagNoData = False | |
|
297 | ||
|
298 | """Calcular el ruido""" | |
|
299 | self.getNoise() | |
|
300 | else: | |
|
301 | self.dataOutObj.flagNoData = True | |
|
302 | ||
|
303 | self.integratorObjIndex += 1 | |
|
304 | ||
|
305 | ||
|
306 | ||
|
307 | ||
|
308 | class IncoherentIntegration: | |
|
309 | ||
|
310 | integ_counter = None | |
|
311 | data = None | |
|
312 | navg = None | |
|
313 | buffer = None | |
|
314 | nIncohInt = None | |
|
315 | ||
|
316 | def __init__(self, N = None, timeInterval = None): | |
|
317 | """ | |
|
318 | N | |
|
319 | timeInterval - interval time [min], integer value | |
|
320 | """ | |
|
321 | ||
|
322 | self.data = None | |
|
323 | self.navg = None | |
|
324 | self.buffer = None | |
|
325 | self.timeOut = None | |
|
326 | self.exitCondition = False | |
|
327 | self.isReady = False | |
|
328 | self.nIncohInt = N | |
|
329 | self.integ_counter = 0 | |
|
330 | if timeInterval!=None: | |
|
331 | self.timeIntervalInSeconds = timeInterval * 60. #if (type(timeInterval)!=integer) -> change this line | |
|
332 | ||
|
333 | if ((timeInterval==None) and (N==None)): | |
|
334 | print 'N = None ; timeInterval = None' | |
|
335 | sys.exit(0) | |
|
336 | elif timeInterval == None: | |
|
337 | self.timeFlag = False | |
|
338 | else: | |
|
339 | self.timeFlag = True | |
|
340 | ||
|
341 | ||
|
342 | def exe(self,data,timeOfData): | |
|
343 | """ | |
|
344 | data | |
|
345 | ||
|
346 | timeOfData [seconds] | |
|
347 | """ | |
|
348 | ||
|
349 | if self.timeFlag: | |
|
350 | if self.timeOut == None: | |
|
351 | self.timeOut = timeOfData + self.timeIntervalInSeconds | |
|
352 | ||
|
353 | if timeOfData < self.timeOut: | |
|
354 | if self.buffer == None: | |
|
355 | self.buffer = data | |
|
356 | else: | |
|
357 | self.buffer = self.buffer + data | |
|
358 | self.integ_counter += 1 | |
|
359 | else: | |
|
360 | self.exitCondition = True | |
|
361 | ||
|
362 | else: | |
|
363 | if self.integ_counter < self.nIncohInt: | |
|
364 | if self.buffer == None: | |
|
365 | self.buffer = data | |
|
366 | else: | |
|
367 | self.buffer = self.buffer + data | |
|
368 | ||
|
369 | self.integ_counter += 1 | |
|
370 | ||
|
371 | if self.integ_counter == self.nIncohInt: | |
|
372 | self.exitCondition = True | |
|
373 | ||
|
374 | if self.exitCondition: | |
|
375 | self.data = self.buffer | |
|
376 | self.navg = self.integ_counter | |
|
377 | self.isReady = True | |
|
378 | self.buffer = None | |
|
379 | self.timeOut = None | |
|
380 | self.integ_counter = 0 | |
|
381 | self.exitCondition = False | |
|
382 | ||
|
383 | if self.timeFlag: | |
|
384 | self.buffer = data | |
|
385 | self.timeOut = timeOfData + self.timeIntervalInSeconds | |
|
386 | else: | |
|
387 | self.isReady = False | |
|
388 | No newline at end of file |
@@ -46,6 +46,13 class JROData: | |||
|
46 | 46 | |
|
47 | 47 | code = None |
|
48 | 48 | |
|
49 | flagDecodeData = True #asumo q la data esta decodificada | |
|
50 | ||
|
51 | flagDeflipData = True #asumo q la data esta sin flip | |
|
52 | ||
|
53 | flagShiftFFT = False | |
|
54 | ||
|
55 | ||
|
49 | 56 | def __init__(self): |
|
50 | 57 | |
|
51 | 58 | raise ValueError, "This class has not been implemented" |
@@ -488,6 +488,8 class JRODataWriter(JRODataIO): | |||
|
488 | 488 | |
|
489 | 489 | blocksPerFile = None |
|
490 | 490 | |
|
491 | nWriteBlocks = 0 | |
|
492 | ||
|
491 | 493 | def __init__(self, dataOutObj=None): |
|
492 | 494 | raise ValueError, "Not implemented" |
|
493 | 495 | |
@@ -521,8 +523,8 class JRODataWriter(JRODataIO): | |||
|
521 | 523 | |
|
522 | 524 | # CALCULAR PARAMETROS |
|
523 | 525 | |
|
524 | sizeLongHeader = 0#XXXX | |
|
525 |
self.basicHeaderObj.size = |
|
|
526 | sizeLongHeader = self.systemHeaderObj.size + self.radarControllerHeaderObj.size + self.processingHeaderObj.size | |
|
527 | self.basicHeaderObj.size = self.basicHeaderSize + sizeLongHeader | |
|
526 | 528 | |
|
527 | 529 | self.__writeBasicHeader() |
|
528 | 530 | self.__wrSystemHeader() |
@@ -541,7 +543,7 class JRODataWriter(JRODataIO): | |||
|
541 | 543 | if fp == None: |
|
542 | 544 | fp = self.fp |
|
543 | 545 | |
|
544 |
self |
|
|
546 | self.basicHeaderObj.write(fp) | |
|
545 | 547 | |
|
546 | 548 | |
|
547 | 549 | def __wrSystemHeader(self, fp=None): |
@@ -554,7 +556,7 class JRODataWriter(JRODataIO): | |||
|
554 | 556 | if fp == None: |
|
555 | 557 | fp = self.fp |
|
556 | 558 | |
|
557 |
self |
|
|
559 | self.systemHeaderObj.write(fp) | |
|
558 | 560 | |
|
559 | 561 | |
|
560 | 562 | def __wrRadarControllerHeader(self, fp=None): |
@@ -567,7 +569,7 class JRODataWriter(JRODataIO): | |||
|
567 | 569 | if fp == None: |
|
568 | 570 | fp = self.fp |
|
569 | 571 | |
|
570 |
self |
|
|
572 | self.radarControllerHeaderObj.write(fp) | |
|
571 | 573 | |
|
572 | 574 | |
|
573 | 575 | def __wrProcessingHeader(self, fp=None): |
@@ -580,7 +582,7 class JRODataWriter(JRODataIO): | |||
|
580 | 582 | if fp == None: |
|
581 | 583 | fp = self.fp |
|
582 | 584 | |
|
583 |
self |
|
|
585 | self.processingHeaderObj.write(fp) | |
|
584 | 586 | |
|
585 | 587 | |
|
586 | 588 | def setNextFile(self): |
@@ -648,6 +650,8 class JRODataWriter(JRODataIO): | |||
|
648 | 650 | self.setFile = setFile |
|
649 | 651 | self.flagIsNewFile = 1 |
|
650 | 652 | |
|
653 | self.getDataHeader() | |
|
654 | ||
|
651 | 655 | print 'Writing the file: %s'%self.filename |
|
652 | 656 | |
|
653 | 657 | self.__writeFirstHeader() |
@@ -732,18 +736,12 class JRODataWriter(JRODataIO): | |||
|
732 | 736 | |
|
733 | 737 | self.blocksPerFile = blocksPerFile |
|
734 | 738 | |
|
735 | ||
|
736 | ||
|
737 | ||
|
738 | ||
|
739 | self.getDataHeader() | |
|
740 | ||
|
741 | self.setBlockDimension() | |
|
742 | ||
|
743 | 739 |
if not( |
|
744 | 740 | print "There isn't a next file" |
|
745 | 741 | return 0 |
|
746 | 742 | |
|
743 | self.setBlockDimension() | |
|
744 | ||
|
747 | 745 | return 1 |
|
748 | 746 | |
|
749 | 747 |
@@ -341,9 +341,9 class ProcessingHeader(Header): | |||
|
341 | 341 | self.deltaHeight = 0 |
|
342 | 342 | self.samplesWin = 0 |
|
343 | 343 | self.spectraComb = 0 |
|
344 |
self.nCode = |
|
|
345 |
self.code = |
|
|
346 |
self.nBaud = |
|
|
344 | self.nCode = None | |
|
345 | self.code = None | |
|
346 | self.nBaud = None | |
|
347 | 347 | self.shif_fft = False |
|
348 | 348 | self.flag_dc = False |
|
349 | 349 | self.flag_cspc = False |
@@ -369,6 +369,8 class SpectraReader(JRODataReader): | |||
|
369 | 369 | |
|
370 | 370 | self.dataOutObj.dataUtcTime = self.basicHeaderObj.utc #+ self.profileIndex * self.ippSeconds |
|
371 | 371 | |
|
372 | self.dataOutObj.flagShiftFFT = self.processingHeaderObj.shif_fft | |
|
373 | ||
|
372 | 374 | # self.profileIndex += 1 |
|
373 | 375 | |
|
374 | 376 | self.dataOutObj.systemHeaderObj = self.systemHeaderObj.copy() |
@@ -385,11 +387,29 class SpectraWriter(JRODataWriter): | |||
|
385 | 387 | de los datos siempre se realiza por bloques. |
|
386 | 388 | """ |
|
387 | 389 | |
|
390 | ext = ".pdata" | |
|
391 | ||
|
392 | optchar = "P" | |
|
388 | 393 | |
|
389 | 394 | shape_spc_Buffer = None |
|
395 | ||
|
390 | 396 | shape_cspc_Buffer = None |
|
397 | ||
|
391 | 398 | shape_dc_Buffer = None |
|
392 | dataOutObj = None | |
|
399 | ||
|
400 | data_spc = None | |
|
401 | ||
|
402 | data_cspc = None | |
|
403 | ||
|
404 | data_dc = None | |
|
405 | ||
|
406 | wrPairList = [] | |
|
407 | ||
|
408 | nWrPairs = 0 | |
|
409 | ||
|
410 | nWrChannels = 0 | |
|
411 | ||
|
412 | # dataOutObj = None | |
|
393 | 413 | |
|
394 | 414 | def __init__(self, dataOutObj=None): |
|
395 | 415 | """ |
@@ -412,49 +432,54 class SpectraWriter(JRODataWriter): | |||
|
412 | 432 | |
|
413 | 433 | self.dataOutObj = dataOutObj |
|
414 | 434 | |
|
415 | self.ext = ".pdata" | |
|
416 | ||
|
417 | self.optchar = "P" | |
|
418 | ||
|
419 | self.shape_spc_Buffer = None | |
|
420 | self.shape_cspc_Buffer = None | |
|
421 | self.shape_dc_Buffer = None | |
|
422 | ||
|
423 | self.data_spc = None | |
|
424 | self.data_cspc = None | |
|
425 | self.data_dc = None | |
|
426 | ||
|
427 | #################################### | |
|
428 | ||
|
429 | self.fp = None | |
|
430 | ||
|
431 | self.nWriteBlocks = 0 | |
|
432 | ||
|
433 | self.flagIsNewFile = 1 | |
|
434 | ||
|
435 | 435 |
self.nTotalBlocks = 0 |
|
436 | 436 | |
|
437 | self.flagIsNewBlock = 0 | |
|
437 | self.nWrChannels = self.dataOutObj.nChannels | |
|
438 | 438 | |
|
439 | self.flagNoMoreFiles = 0 | |
|
439 | # if len(pairList) > 0: | |
|
440 | # self.wrPairList = pairList | |
|
441 | # | |
|
442 | # self.nWrPairs = len(pairList) | |
|
440 | 443 | |
|
441 | self.setFile = None | |
|
444 | self.wrPairList = self.dataOutObj.pairList | |
|
442 | 445 | |
|
443 | self.dtype = None | |
|
446 | self.nWrPairs = self.dataOutObj.nPairs | |
|
444 | 447 | |
|
445 | self.path = None | |
|
446 | 448 | |
|
447 | self.noMoreFiles = 0 | |
|
448 | 449 | |
|
449 | self.filename = None | |
|
450 | 450 | |
|
451 | self.basicHeaderObj = BasicHeader() | |
|
452 | 451 | |
|
453 | self.systemHeaderObj = SystemHeader() | |
|
452 | # self.data_spc = None | |
|
453 | # self.data_cspc = None | |
|
454 | # self.data_dc = None | |
|
454 | 455 | |
|
455 | self.radarControllerHeaderObj = RadarControllerHeader() | |
|
456 | # self.fp = None | |
|
456 | 457 | |
|
457 | self.processingHeaderObj = ProcessingHeader() | |
|
458 | # self.flagIsNewFile = 1 | |
|
459 | # | |
|
460 | # self.nTotalBlocks = 0 | |
|
461 | # | |
|
462 | # self.flagIsNewBlock = 0 | |
|
463 | # | |
|
464 | # self.flagNoMoreFiles = 0 | |
|
465 | # | |
|
466 | # self.setFile = None | |
|
467 | # | |
|
468 | # self.dtype = None | |
|
469 | # | |
|
470 | # self.path = None | |
|
471 | # | |
|
472 | # self.noMoreFiles = 0 | |
|
473 | # | |
|
474 | # self.filename = None | |
|
475 | # | |
|
476 | # self.basicHeaderObj = BasicHeader() | |
|
477 | # | |
|
478 | # self.systemHeaderObj = SystemHeader() | |
|
479 | # | |
|
480 | # self.radarControllerHeaderObj = RadarControllerHeader() | |
|
481 | # | |
|
482 | # self.processingHeaderObj = ProcessingHeader() | |
|
458 | 483 | |
|
459 | 484 | |
|
460 | 485 | def hasAllDataInBuffer(self): |
@@ -572,3 +597,152 class SpectraWriter(JRODataWriter): | |||
|
572 | 597 | return 0 |
|
573 | 598 | |
|
574 | 599 | return 1 |
|
600 | ||
|
601 | ||
|
602 | def __getProcessFlags(self): | |
|
603 | ||
|
604 | processFlags = 0 | |
|
605 | ||
|
606 | dtype0 = numpy.dtype([('real','<i1'),('imag','<i1')]) | |
|
607 | dtype1 = numpy.dtype([('real','<i2'),('imag','<i2')]) | |
|
608 | dtype2 = numpy.dtype([('real','<i4'),('imag','<i4')]) | |
|
609 | dtype3 = numpy.dtype([('real','<i8'),('imag','<i8')]) | |
|
610 | dtype4 = numpy.dtype([('real','<f4'),('imag','<f4')]) | |
|
611 | dtype5 = numpy.dtype([('real','<f8'),('imag','<f8')]) | |
|
612 | ||
|
613 | dtypeList = [dtype0, dtype1, dtype2, dtype3, dtype4, dtype5] | |
|
614 | ||
|
615 | ||
|
616 | ||
|
617 | datatypeValueList = [PROCFLAG.DATATYPE_CHAR, | |
|
618 | PROCFLAG.DATATYPE_SHORT, | |
|
619 | PROCFLAG.DATATYPE_LONG, | |
|
620 | PROCFLAG.DATATYPE_INT64, | |
|
621 | PROCFLAG.DATATYPE_FLOAT, | |
|
622 | PROCFLAG.DATATYPE_DOUBLE] | |
|
623 | ||
|
624 | ||
|
625 | for index in range(len(dtypeList)): | |
|
626 | if self.dataOutObj.dtype == dtypeList[index]: | |
|
627 | dtypeValue = datatypeValueList[index] | |
|
628 | break | |
|
629 | ||
|
630 | processFlags += dtypeValue | |
|
631 | ||
|
632 | if self.dataOutObj.flagDecodeData: | |
|
633 | processFlags += PROCFLAG.DECODE_DATA | |
|
634 | ||
|
635 | if self.dataOutObj.flagDeflipData: | |
|
636 | processFlags += PROCFLAG.DEFLIP_DATA | |
|
637 | ||
|
638 | if self.dataOutObj.code != None: | |
|
639 | processFlags += PROCFLAG.DEFINE_PROCESS_CODE | |
|
640 | ||
|
641 | if self.dataOutObj.nIncohInt > 1: | |
|
642 | processFlags += PROCFLAG.INCOHERENT_INTEGRATION | |
|
643 | ||
|
644 | if self.dataOutObj.data_dc != None: | |
|
645 | processFlags += PROCFLAG.SAVE_CHANNELS_DC | |
|
646 | ||
|
647 | return processFlags | |
|
648 | ||
|
649 | ||
|
650 | def __getBlockSize(self): | |
|
651 | ''' | |
|
652 | Este metodos determina el cantidad de bytes para un bloque de datos de tipo Spectra | |
|
653 | ''' | |
|
654 | ||
|
655 | dtype0 = numpy.dtype([('real','<i1'),('imag','<i1')]) | |
|
656 | dtype1 = numpy.dtype([('real','<i2'),('imag','<i2')]) | |
|
657 | dtype2 = numpy.dtype([('real','<i4'),('imag','<i4')]) | |
|
658 | dtype3 = numpy.dtype([('real','<i8'),('imag','<i8')]) | |
|
659 | dtype4 = numpy.dtype([('real','<f4'),('imag','<f4')]) | |
|
660 | dtype5 = numpy.dtype([('real','<f8'),('imag','<f8')]) | |
|
661 | ||
|
662 | dtypeList = [dtype0, dtype1, dtype2, dtype3, dtype4, dtype5] | |
|
663 | datatypeValueList = [1,2,4,8,4,8] | |
|
664 | for index in range(len(dtypeList)): | |
|
665 | if self.dataOutObj.dtype == dtypeList[index]: | |
|
666 | datatypeValue = datatypeValueList[index] | |
|
667 | break | |
|
668 | ||
|
669 | ||
|
670 | pts2write = self.dataOutObj.nHeights * self.dataOutObj.nFFTPoints | |
|
671 | ||
|
672 | pts2write_SelfSpectra = int(self.nWrChannels * pts2write) | |
|
673 | blocksize = pts2write_SelfSpectra | |
|
674 | ||
|
675 | if self.dataOutObj.data_cspc != None: | |
|
676 | pts2write_CrossSpectra = int(self.nWrPairs * pts2write) | |
|
677 | blocksize += pts2write_CrossSpectra | |
|
678 | ||
|
679 | if self.dataOutObj.data_dc != None: | |
|
680 | pts2write_DCchannels = int(self.nWrChannels * self.dataOutObj.nHeights) | |
|
681 | blocksize += pts2write_DCchannels | |
|
682 | ||
|
683 | blocksize = blocksize * datatypeValue * 2 | |
|
684 | ||
|
685 | return blocksize | |
|
686 | ||
|
687 | ||
|
688 | def getBasicHeader(self): | |
|
689 | self.basicHeaderObj.size = self.basicHeaderSize #bytes | |
|
690 | self.basicHeaderObj.version = self.versionFile | |
|
691 | self.basicHeaderObj.dataBlock = self.nTotalBlocks | |
|
692 | ||
|
693 | utc = numpy.floor(self.dataOutObj.dataUtcTime) | |
|
694 | milisecond = (self.dataOutObj.dataUtcTime - utc)* 1000.0 | |
|
695 | ||
|
696 | self.basicHeaderObj.utc = utc | |
|
697 | self.basicHeaderObj.miliSecond = milisecond | |
|
698 | self.basicHeaderObj.timeZone = 0 | |
|
699 | self.basicHeaderObj.dstFlag = 0 | |
|
700 | self.basicHeaderObj.errorCount = 0 | |
|
701 | ||
|
702 | def getDataHeader(self): | |
|
703 | ||
|
704 | """ | |
|
705 | Obtiene una copia del First Header | |
|
706 | ||
|
707 | Affected: | |
|
708 | self.systemHeaderObj | |
|
709 | self.radarControllerHeaderObj | |
|
710 | self.dtype | |
|
711 | ||
|
712 | Return: | |
|
713 | None | |
|
714 | """ | |
|
715 | ||
|
716 | self.systemHeaderObj = self.dataOutObj.systemHeaderObj.copy() | |
|
717 | self.radarControllerHeaderObj = self.dataOutObj.radarControllerHeaderObj.copy() | |
|
718 | ||
|
719 | self.getBasicHeader() | |
|
720 | ||
|
721 | processingHeaderSize = 40 # bytes | |
|
722 | self.processingHeaderObj.dtype = 0 # Voltage | |
|
723 | self.processingHeaderObj.blockSize = self.__getBlockSize() | |
|
724 | self.processingHeaderObj.profilesPerBlock = self.profilesPerBlock | |
|
725 | self.processingHeaderObj.dataBlocksPerFile = self.blocksPerFile | |
|
726 | self.processingHeaderObj.nWindows = 1 #podria ser 1 o self.dataOutObj.processingHeaderObj.nWindows | |
|
727 | self.processingHeaderObj.processFlags = self.__getProcessFlags() | |
|
728 | self.processingHeaderObj.nCohInt = self.dataOutObj.nCohInt | |
|
729 | self.processingHeaderObj.nIncohInt = 1 # Cuando la data de origen es de tipo Voltage | |
|
730 | self.processingHeaderObj.totalSpectra = 0 # Cuando la data de origen es de tipo Voltage | |
|
731 | ||
|
732 | if self.dataOutObj.code != None: | |
|
733 | self.processingHeaderObj.code = self.dataOutObj.code | |
|
734 | self.processingHeaderObj.nCode = self.dataOutObj.nCode | |
|
735 | self.processingHeaderObj.nBaud = self.dataOutObj.nBaud | |
|
736 | codesize = int(8 + 4 * self.dataOutObj.nCode * self.dataOutObj.nBaud) | |
|
737 | processingHeaderSize += codesize | |
|
738 | ||
|
739 | if self.processingHeaderObj.nWindows != 0: | |
|
740 | self.processingHeaderObj.firstHeight = self.dataOutObj.heightList[0] | |
|
741 | self.processingHeaderObj.deltaHeight = self.dataOutObj.heightList[1] - self.dataOutObj.heightList[0] | |
|
742 | self.processingHeaderObj.nHeights = self.dataOutObj.nHeights | |
|
743 | self.processingHeaderObj.samplesWin = self.dataOutObj.nHeights | |
|
744 | processingHeaderSize += 12 | |
|
745 | ||
|
746 | self.processingHeaderObj.size = processingHeaderSize | |
|
747 | ||
|
748 | No newline at end of file |
@@ -298,6 +298,15 class VoltageReader(JRODataReader): | |||
|
298 | 298 | |
|
299 | 299 | self.dataOutObj.nCohInt = self.processingHeaderObj.nCohInt |
|
300 | 300 | |
|
301 | self.dataOutObj.flagShiftFFT = False | |
|
302 | ||
|
303 | if self.processingHeaderObj.code != None: | |
|
304 | self.dataOutObj.nCode = self.processingHeaderObj.nCode | |
|
305 | ||
|
306 | self.dataOutObj.nBaud = self.processingHeaderObj.nBaud | |
|
307 | ||
|
308 | self.dataOutObj.code = self.processingHeaderObj.code | |
|
309 | ||
|
301 | 310 | self.profileIndex += 1 |
|
302 | 311 | |
|
303 | 312 | self.dataOutObj.systemHeaderObj = self.systemHeaderObj.copy() |
@@ -339,6 +348,9 class VoltageWriter(JRODataWriter): | |||
|
339 | 348 | |
|
340 | 349 | self.dataOutObj = dataOutObj |
|
341 | 350 | |
|
351 | self.nTotalBlocks = 0 | |
|
352 | ||
|
353 | self.profileIndex = 0 | |
|
342 | 354 | |
|
343 | 355 | def hasAllDataInBuffer(self): |
|
344 | 356 | if self.profileIndex >= self.processingHeaderObj.profilesPerBlock: |
@@ -423,14 +435,17 class VoltageWriter(JRODataWriter): | |||
|
423 | 435 | self.profileIndex = 0 |
|
424 | 436 | self.setNextFile() |
|
425 | 437 | |
|
438 | if self.profileIndex == 0: | |
|
439 | self.getBasicHeader() | |
|
440 | ||
|
426 | 441 | self.datablock[:,self.profileIndex,:] = self.dataOutObj.data |
|
427 | 442 | |
|
428 | 443 | self.profileIndex += 1 |
|
429 | 444 | |
|
430 | 445 | if self.hasAllDataInBuffer(): |
|
431 | 446 | #if self.flagIsNewFile: |
|
432 | self.getDataHeader() | |
|
433 | 447 | self.writeNextBlock() |
|
448 | # self.getDataHeader() | |
|
434 | 449 | |
|
435 | 450 | if self.flagNoMoreFiles: |
|
436 | 451 | #print 'Process finished' |
@@ -438,7 +453,7 class VoltageWriter(JRODataWriter): | |||
|
438 | 453 | |
|
439 | 454 | return 1 |
|
440 | 455 | |
|
441 | def __getProcessFlag(self): | |
|
456 | def __getProcessFlags(self): | |
|
442 | 457 | |
|
443 | 458 | processFlags = 0 |
|
444 | 459 | |
@@ -462,7 +477,7 class VoltageWriter(JRODataWriter): | |||
|
462 | 477 | |
|
463 | 478 | |
|
464 | 479 | for index in range(len(dtypeList)): |
|
465 |
if |
|
|
480 | if self.dataOutObj.dtype == dtypeList[index]: | |
|
466 | 481 | dtypeValue = datatypeValueList[index] |
|
467 | 482 | break |
|
468 | 483 | |
@@ -474,12 +489,19 class VoltageWriter(JRODataWriter): | |||
|
474 | 489 | if self.dataOutObj.flagDeflipData: |
|
475 | 490 | processFlags += PROCFLAG.DEFLIP_DATA |
|
476 | 491 | |
|
492 | if self.dataOutObj.code != None: | |
|
493 | processFlags += PROCFLAG.DEFINE_PROCESS_CODE | |
|
494 | ||
|
477 | 495 | if self.dataOutObj.nCohInt > 1: |
|
478 | 496 | processFlags += PROCFLAG.COHERENT_INTEGRATION |
|
479 | 497 | |
|
498 | return processFlags | |
|
480 | 499 | |
|
481 | def __getBlockSize(self): | |
|
482 | 500 |
|
|
501 | def __getBlockSize(self): | |
|
502 | ''' | |
|
503 | Este metodos determina el cantidad de bytes para un bloque de datos de tipo Voltage | |
|
504 | ''' | |
|
483 | 505 | |
|
484 | 506 | dtype0 = numpy.dtype([('real','<i1'),('imag','<i1')]) |
|
485 | 507 | dtype1 = numpy.dtype([('real','<i2'),('imag','<i2')]) |
@@ -489,16 +511,31 class VoltageWriter(JRODataWriter): | |||
|
489 | 511 | dtype5 = numpy.dtype([('real','<f8'),('imag','<f8')]) |
|
490 | 512 | |
|
491 | 513 | dtypeList = [dtype0, dtype1, dtype2, dtype3, dtype4, dtype5] |
|
492 | datatypeValueList | |
|
514 | datatypeValueList = [1,2,4,8,4,8] | |
|
493 | 515 | for index in range(len(dtypeList)): |
|
494 |
if |
|
|
495 | datatypeValue = index | |
|
516 | if self.dataOutObj.dtype == dtypeList[index]: | |
|
517 | datatypeValue = datatypeValueList[index] | |
|
496 | 518 | break |
|
497 | 519 | |
|
498 | self.dataOutObj.nHeights * self.dataOutObj.nChannels * self.dataOutObj.nProfiles * datatypeValue * 2 | |
|
520 | blocksize = int(self.dataOutObj.nHeights * self.dataOutObj.nChannels * self.dataOutObj.nProfiles * datatypeValue * 2) | |
|
499 | 521 | |
|
522 | return blocksize | |
|
500 | 523 |
|
|
501 | 524 | |
|
525 | def getBasicHeader(self): | |
|
526 | self.basicHeaderObj.size = self.basicHeaderSize #bytes | |
|
527 | self.basicHeaderObj.version = self.versionFile | |
|
528 | self.basicHeaderObj.dataBlock = self.nTotalBlocks | |
|
529 | ||
|
530 | utc = numpy.floor(self.dataOutObj.dataUtcTime) | |
|
531 | milisecond = (self.dataOutObj.dataUtcTime - utc)* 1000.0 | |
|
532 | ||
|
533 | self.basicHeaderObj.utc = utc | |
|
534 | self.basicHeaderObj.miliSecond = milisecond | |
|
535 | self.basicHeaderObj.timeZone = 0 | |
|
536 | self.basicHeaderObj.dstFlag = 0 | |
|
537 | self.basicHeaderObj.errorCount = 0 | |
|
538 | ||
|
502 | 539 | def getDataHeader(self): |
|
503 | 540 | |
|
504 | 541 | """ |
@@ -513,35 +550,35 class VoltageWriter(JRODataWriter): | |||
|
513 | 550 | None |
|
514 | 551 | """ |
|
515 | 552 | |
|
516 | # CALCULAR PARAMETROS | |
|
517 | ||
|
518 | 553 | self.systemHeaderObj = self.dataOutObj.systemHeaderObj.copy() |
|
519 | 554 | self.radarControllerHeaderObj = self.dataOutObj.radarControllerHeaderObj.copy() |
|
520 | 555 | |
|
521 | self.basicHeaderObj.size = self.basicHeaderSize #bytes | |
|
522 | self.basicHeaderObj.version = self.versionFile | |
|
523 | self.basicHeaderObj.dataBlock = self.nTotalBlocks | |
|
524 | self.basicHeaderObj.utc = self.dataOutObj.dataUtcTime | |
|
525 | self.basicHeaderObj.miliSecond = 0 | |
|
526 | self.basicHeaderObj.timeZone = 0 | |
|
527 | self.basicHeaderObj.dstFlag = 0 | |
|
528 | self.basicHeaderObj.errorCount = 0 | |
|
529 | ||
|
530 | staticProcessingHeaderSize = 40 # bytes | |
|
531 | dynProcessingHeaderSize = 0 # bytes | |
|
556 | self.getBasicHeader() | |
|
532 | 557 | |
|
533 | self.processingHeaderObj.size = staticProcessingHeaderSize + dynProcessingHeaderSize | |
|
558 | processingHeaderSize = 40 # bytes | |
|
534 | 559 | self.processingHeaderObj.dtype = 0 # Voltage |
|
535 |
|
|
|
536 | self.processingHeaderObj.blockSize = 0 # debe calcular el size en bytes del bloque de datos: | |
|
537 | # usar funcion getBlockSize | |
|
538 | self.processingHeaderObj.profilesPerBlock = self.dataOutObj.nProfiles | |
|
560 | self.processingHeaderObj.blockSize = self.__getBlockSize() | |
|
561 | self.processingHeaderObj.profilesPerBlock = self.profilesPerBlock | |
|
539 | 562 | self.processingHeaderObj.dataBlocksPerFile = self.blocksPerFile |
|
540 | self.processingHeaderObj.numWindows = 1 | |
|
563 | self.processingHeaderObj.nWindows = 1 #podria ser 1 o self.dataOutObj.processingHeaderObj.nWindows | |
|
541 | 564 | self.processingHeaderObj.processFlags = self.__getProcessFlags() |
|
542 |
self.processingHeaderObj. |
|
|
543 |
self.processingHeaderObj. |
|
|
544 | self.processingHeaderObj.totalSpectra = 0 | |
|
545 | ||
|
546 |
|
|
|
565 | self.processingHeaderObj.nCohInt = self.dataOutObj.nCohInt | |
|
566 | self.processingHeaderObj.nIncohInt = 1 # Cuando la data de origen es de tipo Voltage | |
|
567 | self.processingHeaderObj.totalSpectra = 0 # Cuando la data de origen es de tipo Voltage | |
|
568 | ||
|
569 | if self.dataOutObj.code != None: | |
|
570 | self.processingHeaderObj.code = self.dataOutObj.code | |
|
571 | self.processingHeaderObj.nCode = self.dataOutObj.nCode | |
|
572 | self.processingHeaderObj.nBaud = self.dataOutObj.nBaud | |
|
573 | codesize = int(8 + 4 * self.dataOutObj.nCode * self.dataOutObj.nBaud) | |
|
574 | processingHeaderSize += codesize | |
|
575 | ||
|
576 | if self.processingHeaderObj.nWindows != 0: | |
|
577 | self.processingHeaderObj.firstHeight = self.dataOutObj.heightList[0] | |
|
578 | self.processingHeaderObj.deltaHeight = self.dataOutObj.heightList[1] - self.dataOutObj.heightList[0] | |
|
579 | self.processingHeaderObj.nHeights = self.dataOutObj.nHeights | |
|
580 | self.processingHeaderObj.samplesWin = self.dataOutObj.nHeights | |
|
581 | processingHeaderSize += 12 | |
|
582 | ||
|
583 | self.processingHeaderObj.size = processingHeaderSize | |
|
547 | 584 | No newline at end of file |
@@ -21,14 +21,22 class TestSChain(): | |||
|
21 | 21 | |
|
22 | 22 | def setValues(self): |
|
23 | 23 | self.path = "/Users/danielangelsuarezmunoz/Data/EW_Drifts" |
|
24 | self.startDate = datetime.date(2011,11,28) | |
|
25 | self.endDate = datetime.date(2011,11,30) | |
|
24 | 26 | |
|
27 | # self.path = "/Users/danielangelsuarezmunoz/Data/Imaging_rawdata" | |
|
28 | # self.startDate = datetime.date(2011,10,4) | |
|
29 | # self.endDate = datetime.date(2011,10,4) | |
|
30 | ||
|
31 | # Probando los escritos por Signal Chain | |
|
32 | self.path = "/Users/danielangelsuarezmunoz/Data/testWR" | |
|
25 | 33 | self.startDate = datetime.date(2011,11,28) |
|
26 | 34 | self.endDate = datetime.date(2011,11,30) |
|
27 | 35 | |
|
28 | 36 | self.startTime = datetime.time(0,0,0) |
|
29 | 37 | self.endTime = datetime.time(23,59,59) |
|
30 | 38 | |
|
31 |
self.wrpath = "/Users/ |
|
|
39 | self.wrpath = "/Users/danielangelsuarezmunoz/Data/testWR" | |
|
32 | 40 | self.profilesPerBlock = 40 |
|
33 | 41 |
self.blocksPerFile = 50 |
|
34 | 42 | |
@@ -56,16 +64,17 class TestSChain(): | |||
|
56 | 64 | while(True): |
|
57 | 65 | self.readerObj.getData() |
|
58 | 66 | |
|
59 | self.voltObjProc.init() | |
|
60 | ||
|
61 | self.voltObjProc.writeData(self.wrpath,self.profilesPerBlock,self.blocksPerFile) | |
|
67 | # self.voltObjProc.init() | |
|
68 | # | |
|
69 | # self.voltObjProc.writeData(self.wrpath,self.profilesPerBlock,self.blocksPerFile) | |
|
62 | 70 | |
|
63 | 71 | if self.readerObj.flagNoMoreFiles: |
|
64 | 72 | break |
|
65 | 73 | |
|
66 | 74 | if self.readerObj.flagIsNewBlock: |
|
75 | # print 'Block No %04d, Time: %s' %(self.readerObj.nTotalBlocks, datetime.datetime.fromtimestamp(self.readerObj.basicHeaderObj.utc),) | |
|
67 | 76 | print 'Block No %04d, Time: %s' %(self.readerObj.nTotalBlocks, |
|
68 | datetime.datetime.fromtimestamp(self.readerObj.basicHeaderObj.utc),) | |
|
77 | datetime.datetime.utcfromtimestamp(self.readerObj.basicHeaderObj.utc + self.readerObj.basicHeaderObj.miliSecond/1000.0),) | |
|
69 | 78 | |
|
70 | 79 | |
|
71 | 80 | if __name__ == '__main__': |
@@ -5,11 +5,10 import time, datetime | |||
|
5 | 5 | path = os.path.split(os.getcwd())[0] |
|
6 | 6 | sys.path.append(path) |
|
7 | 7 | |
|
8 | from Data.Voltage import Voltage | |
|
8 | ||
|
9 | 9 | from Data.Spectra import Spectra |
|
10 | from IO.VoltageIO import * | |
|
11 | 10 | from IO.SpectraIO import * |
|
12 |
from Processing. |
|
|
11 | from Processing.SpectraProcessor import * | |
|
13 | 12 | |
|
14 | 13 | |
|
15 | 14 | |
@@ -26,19 +25,24 class TestSChain: | |||
|
26 | 25 | self.path = "/Users/danielangelsuarezmunoz/Data/EW_Drifts" |
|
27 | 26 | self.path = "/Users/danielangelsuarezmunoz/Data/IMAGING" |
|
28 | 27 | |
|
29 | self.wrpath = "/Users/jro/Documents/RadarData/wr_data" | |
|
30 | ||
|
31 | 28 | self.startDate = datetime.date(2012,3,1) |
|
32 | 29 | self.endDate = datetime.date(2012,3,30) |
|
33 | 30 | |
|
34 | 31 | self.startTime = datetime.time(0,0,0) |
|
35 | 32 | self.endTime = datetime.time(14,1,1) |
|
36 | 33 | |
|
34 | # paramatros para Escritura de Pdata | |
|
35 | self.wrpath = "/Users/danielangelsuarezmunoz/Data/testWR_pdata" | |
|
36 | self.profilesPerBlock = 16 | |
|
37 | self.blocksPerFile = 5 | |
|
38 | # self.pairList = [(0,1),(0,2)] | |
|
39 | ||
|
40 | ||
|
37 | 41 | def createObjects(self): |
|
38 | 42 | |
|
39 | 43 | self.readerObj = SpectraReader() |
|
40 | 44 | |
|
41 |
self. |
|
|
45 | self.specObj1 = self.readerObj.setup( | |
|
42 | 46 | path = self.path, |
|
43 | 47 | startDate = self.startDate, |
|
44 | 48 | endDate = self.endDate, |
@@ -46,6 +50,10 class TestSChain: | |||
|
46 | 50 | endTime = self.endTime, |
|
47 | 51 | expLabel = '', |
|
48 | 52 | online = 0) |
|
53 | # new lines | |
|
54 | self.specObjProc = SpectraProcessor() | |
|
55 | ||
|
56 | self.specObj2 = self.specObjProc.setup(dataInObj = self.specObj1) | |
|
49 | 57 | |
|
50 | 58 | |
|
51 | 59 | |
@@ -56,12 +64,16 class TestSChain: | |||
|
56 | 64 | while(True): |
|
57 | 65 | self.readerObj.getData() |
|
58 | 66 |
|
|
67 | self.specObjProc.init() | |
|
68 | ||
|
69 | self.specObjProc.writeData(self.wrpath,self.profilesPerBlock,self.blocksPerFile) | |
|
70 | ||
|
59 | 71 | if self.readerObj.flagNoMoreFiles: |
|
60 | 72 | break |
|
61 | 73 | |
|
62 | 74 | if self.readerObj.flagIsNewBlock: |
|
63 | 75 | print 'Block No %04d, Time: %s' %(self.readerObj.nTotalBlocks, |
|
64 |
datetime.datetime.fromtimestamp(self.readerObj.basicHeaderObj.utc) |
|
|
76 | datetime.datetime.fromtimestamp(self.readerObj.basicHeaderObj.utc)) | |
|
65 | 77 | |
|
66 | 78 | |
|
67 | 79 | if __name__ == '__main__': |
General Comments 0
You need to be logged in to leave comments.
Login now