##// END OF EJS Templates
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
Daniel Valdez -
r122:1ab50a21fdd6
parent child
Show More
@@ -0,0 +1,1
1
@@ -0,0 +1,68
1
2 import os, sys
3 import time, datetime
4
5 path = os.path.split(os.getcwd())[0]
6 sys.path.append(path)
7
8 from Data.Voltage import Voltage
9 from Data.Spectra import Spectra
10 from IO.VoltageIO import *
11 from IO.SpectraIO import *
12 from Processing.VoltageProcessor import *
13
14
15
16 class TestSChain:
17
18 def __init__(self):
19 self.setValues()
20 self.createObjects()
21 self.testSChain()
22
23 def setValues(self):
24 self.path = "/Users/jro/Documents/RadarData/MST_ISR/MST"
25 # self.path = "/home/roj-idl71/Data/RAWDATA/IMAGING"
26 self.path = "/Users/danielangelsuarezmunoz/Data/EW_Drifts"
27 self.path = "/Users/danielangelsuarezmunoz/Data/IMAGING"
28
29 self.wrpath = "/Users/jro/Documents/RadarData/wr_data"
30
31 self.startDate = datetime.date(2012,3,1)
32 self.endDate = datetime.date(2012,3,30)
33
34 self.startTime = datetime.time(0,0,0)
35 self.endTime = datetime.time(14,1,1)
36
37 def createObjects(self):
38
39 self.readerObj = SpectraReader()
40
41 self.voltObj1 = self.readerObj.setup(
42 path = self.path,
43 startDate = self.startDate,
44 endDate = self.endDate,
45 startTime = self.startTime,
46 endTime = self.endTime,
47 expLabel = '',
48 online = 0)
49
50
51
52 def testSChain(self):
53
54 ini = time.time()
55
56 while(True):
57 self.readerObj.getData()
58
59 if self.readerObj.flagNoMoreFiles:
60 break
61
62 if self.readerObj.flagIsNewBlock:
63 print 'Block No %04d, Time: %s' %(self.readerObj.nTotalBlocks,
64 datetime.datetime.fromtimestamp(self.readerObj.basicHeaderObj.utc),)
65
66
67 if __name__ == '__main__':
68 TestSChain() No newline at end of file
@@ -7,7 +7,7 sys.path.append(path)
7
7
8 from IO.JROHeader import SystemHeader, RadarControllerHeader
8 from IO.JROHeader import SystemHeader, RadarControllerHeader
9
9
10 class JROData():
10 class JROData:
11
11
12 # m_BasicHeader = BasicHeader()
12 # m_BasicHeader = BasicHeader()
13 # m_ProcessingHeader = ProcessingHeader()
13 # m_ProcessingHeader = ProcessingHeader()
@@ -16,7 +16,7 class JROData():
16
16
17 radarControllerHeaderObj = RadarControllerHeader()
17 radarControllerHeaderObj = RadarControllerHeader()
18
18
19 data = None
19 # data = None
20
20
21 type = None
21 type = None
22
22
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -11,6 +11,8 class Voltage(JROData):
11
11
12 nCohInt = None
12 nCohInt = None
13
13
14 data = None
15
14 def __init__(self):
16 def __init__(self):
15 '''
17 '''
16 Constructor
18 Constructor
@@ -131,11 +131,21 class JRODataIO:
131
131
132 lastUTTime = None
132 lastUTTime = None
133
133
134 datablock = None
135
136 dataOutObj = None
137
138 blocksize = None
139
134 def __init__(self):
140 def __init__(self):
135 pass
141 pass
136
142
137 class JRODataReader(JRODataIO):
143 class JRODataReader(JRODataIO):
144
145 nReadBlocks = 0
146
138 def __init__(self):
147 def __init__(self):
148
139 pass
149 pass
140
150
141 def createObjByDefault(self):
151 def createObjByDefault(self):
@@ -213,7 +223,8 class JRODataReader(JRODataIO):
213 return pathList, filenameList
223 return pathList, filenameList
214
224
215 def setup(self,dataOutObj=None,
225 def setup(self,dataOutObj=None,
216 path=None,startDate=None,
226 path=None,
227 startDate=None,
217 endDate=None,
228 endDate=None,
218 startTime=datetime.time(0,0,0),
229 startTime=datetime.time(0,0,0),
219 endTime=datetime.time(23,59,59),
230 endTime=datetime.time(23,59,59),
@@ -451,6 +462,15 class JRODataReader(JRODataIO):
451
462
452 return True
463 return True
453
464
465 def getData():
466 pass
467
468 def hasNotDataInBuffer():
469 pass
470
471 def readBlock():
472 pass
473
454 class JRODataWriter(JRODataIO):
474 class JRODataWriter(JRODataIO):
455
475
456 """
476 """
@@ -671,18 +691,9 class JRODataWriter(JRODataIO):
671
691
672
692
673 def getDataHeader(self):
693 def getDataHeader(self):
674 """
694 """Obtiene una copia del First Header Affected: self.basicHeaderObj self.
675 Obtiene una copia del First Header
695 systemHeaderObj self.radarControllerHeaderObj self.processingHeaderObj self.
676
696 dtype Return: None
677 Affected:
678 self.basicHeaderObj
679 self.systemHeaderObj
680 self.radarControllerHeaderObj
681 self.processingHeaderObj
682 self.dtype
683
684 Return:
685 None
686 """
697 """
687
698
688 raise ValueError, "No implemented"
699 raise ValueError, "No implemented"
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -15,8 +15,8 import time, datetime
15 path = os.path.split(os.getcwd())[0]
15 path = os.path.split(os.getcwd())[0]
16 sys.path.append(path)
16 sys.path.append(path)
17
17
18 from Model.JROHeader import *
18 from IO.JROHeader import *
19 from Model.Spectra import Spectra
19 from Data.Spectra import Spectra
20
20
21 from JRODataIO import JRODataReader
21 from JRODataIO import JRODataReader
22 from JRODataIO import JRODataWriter
22 from JRODataIO import JRODataWriter
@@ -59,9 +59,6 class SpectraReader(JRODataReader):
59 break
59 break
60
60
61 """
61 """
62 dataOutObj = None
63
64 datablock = None
65
62
66 pts2read_SelfSpectra = 0
63 pts2read_SelfSpectra = 0
67
64
@@ -73,7 +70,14 class SpectraReader(JRODataReader):
73
70
74 optchar = "P"
71 optchar = "P"
75
72
76 flag_cspc = False
73 dataOutObj = None
74
75 nRdChannels = None
76
77 nRdPairs = None
78
79 rdPairList = []
80
77
81
78 def __init__(self, dataOutObj=None):
82 def __init__(self, dataOutObj=None):
79 """
83 """
@@ -97,7 +101,7 class SpectraReader(JRODataReader):
97
101
98 self.pts2read_CrossSpectra = 0
102 self.pts2read_CrossSpectra = 0
99
103
100 self.pts2read_DCs = 0
104 self.pts2read_DCchannels = 0
101
105
102 self.datablock = None
106 self.datablock = None
103
107
@@ -183,8 +187,8 class SpectraReader(JRODataReader):
183 Obtiene la cantidad de puntos a leer por cada bloque de datos
187 Obtiene la cantidad de puntos a leer por cada bloque de datos
184
188
185 Affected:
189 Affected:
186 self.nChannels
190 self.nRdChannels
187 self.nPairs
191 self.nRdPairs
188 self.pts2read_SelfSpectra
192 self.pts2read_SelfSpectra
189 self.pts2read_CrossSpectra
193 self.pts2read_CrossSpectra
190 self.pts2read_DCchannels
194 self.pts2read_DCchannels
@@ -195,28 +199,28 class SpectraReader(JRODataReader):
195 Return:
199 Return:
196 None
200 None
197 """
201 """
198 self.nChannels = 0
202 self.nRdChannels = 0
199 self.nPairs = 0
203 self.nRdPairs = 0
200 self.pairList = []
204 self.rdPairList = []
201
205
202 for i in range( 0, self.processingHeaderObj.totalSpectra*2, 2 ):
206 for i in range( 0, self.processingHeaderObj.totalSpectra*2, 2 ):
203 if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]:
207 if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]:
204 self.nChannels = self.nChannels + 1 #par de canales iguales
208 self.nRdChannels = self.nRdChannels + 1 #par de canales iguales
205 else:
209 else:
206 self.nPairs = self.nPairs + 1 #par de canales diferentes
210 self.nRdPairs = self.nRdPairs + 1 #par de canales diferentes
207 self.pairList.append( (self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1]) )
211 self.rdPairList.append( (self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1]) )
208
212
209 pts2read = self.processingHeaderObj.numHeights * self.processingHeaderObj.profilesPerBlock
213 pts2read = self.processingHeaderObj.nHeights * self.processingHeaderObj.profilesPerBlock
210
214
211 self.pts2read_SelfSpectra = int(self.nChannels * pts2read)
215 self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read)
212 self.blocksize = self.pts2read_SelfSpectra
216 self.blocksize = self.pts2read_SelfSpectra
213
217
214 if self.processingHeaderObj.flag_cspc:
218 if self.processingHeaderObj.flag_cspc:
215 self.pts2read_CrossSpectra = int(self.nPairs * pts2read)
219 self.pts2read_CrossSpectra = int(self.nRdPairs * pts2read)
216 self.blocksize += self.pts2read_CrossSpectra
220 self.blocksize += self.pts2read_CrossSpectra
217
221
218 if self.processingHeaderObj.flag_dc:
222 if self.processingHeaderObj.flag_dc:
219 self.pts2read_DCchannels = int(self.systemHeaderObj.numChannels * self.processingHeaderObj.numHeights)
223 self.pts2read_DCchannels = int(self.systemHeaderObj.nChannels * self.processingHeaderObj.nHeights)
220 self.blocksize += self.pts2read_DCchannels
224 self.blocksize += self.pts2read_DCchannels
221
225
222 # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
226 # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
@@ -232,7 +236,7 class SpectraReader(JRODataReader):
232 Return: None
236 Return: None
233
237
234 Variables afectadas:
238 Variables afectadas:
235 self.datablockIndex
239
236 self.flagIsNewFile
240 self.flagIsNewFile
237 self.flagIsNewBlock
241 self.flagIsNewBlock
238 self.nTotalBlocks
242 self.nTotalBlocks
@@ -246,29 +250,29 class SpectraReader(JRODataReader):
246 blockOk_flag = False
250 blockOk_flag = False
247 fpointer = self.fp.tell()
251 fpointer = self.fp.tell()
248
252
249 spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
253 spc = numpy.fromfile( self.fp, self.dtype[0], self.pts2read_SelfSpectra )
250 spc = spc.reshape( (self.nChannels, self.processingHeaderObj.numHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
254 spc = spc.reshape( (self.nRdChannels, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
251
255
252 if self.flag_cspc:
256 if self.processingHeaderObj.flag_cspc:
253 cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
257 cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra )
254 cspc = cspc.reshape( (self.nPairs, self.processingHeaderObj.numHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
258 cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
255
259
256 if self.processingHeaderObj.flag_dc:
260 if self.processingHeaderObj.flag_dc:
257 dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.processingHeaderObj.numHeights*self.systemHeaderObj.numChannels) )
261 dc = numpy.fromfile( self.fp, self.dtype, self.pts2read_DCchannels ) #int(self.processingHeaderObj.nHeights*self.systemHeaderObj.nChannels) )
258 dc = dc.reshape( (self.systemHeaderObj.numChannels, self.processingHeaderObj.numHeights) ) #transforma a un arreglo 2D
262 dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D
259
263
260
264
261 if not(self.processingHeaderObj.shif_fft):
265 if not(self.processingHeaderObj.shif_fft):
262 spc = numpy.roll( spc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
266 spc = numpy.roll( spc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
263
267
264 if self.flag_cspc:
268 if self.processingHeaderObj.flag_cspc:
265 cspc = numpy.roll( cspc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
269 cspc = numpy.roll( cspc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
266
270
267
271
268 spc = numpy.transpose( spc, (0,2,1) )
272 spc = numpy.transpose( spc, (0,2,1) )
269 self.data_spc = spc
273 self.data_spc = spc
270
274
271 if self.flag_cspc:
275 if self.processingHeaderObj.flag_cspc:
272 cspc = numpy.transpose( cspc, (0,2,1) )
276 cspc = numpy.transpose( cspc, (0,2,1) )
273 self.data_cspc = cspc['real'] + cspc['imag']*1j
277 self.data_cspc = cspc['real'] + cspc['imag']*1j
274 else:
278 else:
@@ -279,7 +283,6 class SpectraReader(JRODataReader):
279 else:
283 else:
280 self.data_dc = None
284 self.data_dc = None
281
285
282 self.datablockIndex = 0
283 self.flagIsNewFile = 0
286 self.flagIsNewFile = 0
284 self.flagIsNewBlock = 1
287 self.flagIsNewBlock = 1
285
288
@@ -301,7 +304,7 class SpectraReader(JRODataReader):
301
304
302 Affected:
305 Affected:
303 self.dataOutObj
306 self.dataOutObj
304 self.datablockIndex
307
305 self.flagTimeBlock
308 self.flagTimeBlock
306 self.flagIsNewBlock
309 self.flagIsNewBlock
307 """
310 """
@@ -316,7 +319,7 class SpectraReader(JRODataReader):
316 if not( self.readNextBlock() ):
319 if not( self.readNextBlock() ):
317 return 0
320 return 0
318
321
319 self.updateDataHeader()
322 # self.updateDataHeader()
320
323
321 if self.flagNoMoreFiles == 1:
324 if self.flagNoMoreFiles == 1:
322 print 'Process finished'
325 print 'Process finished'
@@ -328,13 +331,50 class SpectraReader(JRODataReader):
328 self.dataOutObj.flagNoData = True
331 self.dataOutObj.flagNoData = True
329 return 0
332 return 0
330
333
331 self.dataOutObj.flagNoData = False
332 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
333
334
334 self.dataOutObj.data_spc = self.data_spc
335 self.dataOutObj.data_spc = self.data_spc
336
335 self.dataOutObj.data_cspc = self.data_cspc
337 self.dataOutObj.data_cspc = self.data_cspc
338
336 self.dataOutObj.data_dc = self.data_dc
339 self.dataOutObj.data_dc = self.data_dc
337
340
341 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
342
343 self.dataOutObj.flagNoData = False
344
345 self.dataOutObj.dtype = self.dtype
346
347 self.dataOutObj.nChannels = self.nRdChannels
348
349 self.dataOutObj.nPairs = self.nRdPairs
350
351 self.dataOutObj.pairsList = self.rdPairList
352
353 self.dataOutObj.nHeights = self.processingHeaderObj.nHeights
354
355 self.dataOutObj.nProfiles = self.processingHeaderObj.profilesPerBlock
356
357 self.dataOutObj.nFFTPoints = self.processingHeaderObj.profilesPerBlock
358
359 self.dataOutObj.nIncohInt = self.processingHeaderObj.nIncohInt
360
361
362 xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight
363
364 self.dataOutObj.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight)
365
366 self.dataOutObj.channelList = range(self.systemHeaderObj.nChannels)
367
368 self.dataOutObj.channelIndexList = range(self.systemHeaderObj.nChannels)
369
370 self.dataOutObj.dataUtcTime = self.basicHeaderObj.utc #+ self.profileIndex * self.ippSeconds
371
372 # self.profileIndex += 1
373
374 self.dataOutObj.systemHeaderObj = self.systemHeaderObj.copy()
375
376 self.dataOutObj.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
377
338 return 1
378 return 1
339
379
340
380
@@ -345,16 +385,11 class SpectraWriter(JRODataWriter):
345 de los datos siempre se realiza por bloques.
385 de los datos siempre se realiza por bloques.
346 """
386 """
347
387
348 dataOutObj = None
349
388
350 shape_spc_Buffer = None
389 shape_spc_Buffer = None
351 shape_cspc_Buffer = None
390 shape_cspc_Buffer = None
352 shape_dc_Buffer = None
391 shape_dc_Buffer = None
353
392 dataOutObj = None
354 data_spc = None
355 data_cspc = None
356 data_dc = None
357
358
393
359 def __init__(self, dataOutObj=None):
394 def __init__(self, dataOutObj=None):
360 """
395 """
@@ -405,7 +440,7 class SpectraWriter(JRODataWriter):
405
440
406 self.setFile = None
441 self.setFile = None
407
442
408 self.dataType = None
443 self.dtype = None
409
444
410 self.path = None
445 self.path = None
411
446
@@ -438,15 +473,15 class SpectraWriter(JRODataWriter):
438 Return: None
473 Return: None
439 """
474 """
440 self.shape_spc_Buffer = (self.dataOutObj.nChannels,
475 self.shape_spc_Buffer = (self.dataOutObj.nChannels,
441 self.processingHeaderObj.numHeights,
476 self.processingHeaderObj.nHeights,
442 self.processingHeaderObj.profilesPerBlock)
477 self.processingHeaderObj.profilesPerBlock)
443
478
444 self.shape_cspc_Buffer = (self.dataOutObj.nPairs,
479 self.shape_cspc_Buffer = (self.dataOutObj.nPairs,
445 self.processingHeaderObj.numHeights,
480 self.processingHeaderObj.nHeights,
446 self.processingHeaderObj.profilesPerBlock)
481 self.processingHeaderObj.profilesPerBlock)
447
482
448 self.shape_dc_Buffer = (self.systemHeaderObj.numChannels,
483 self.shape_dc_Buffer = (self.systemHeaderObj.nChannels,
449 self.processingHeaderObj.numHeights)
484 self.processingHeaderObj.nHeights)
450
485
451
486
452 def writeBlock(self):
487 def writeBlock(self):
@@ -472,7 +507,7 class SpectraWriter(JRODataWriter):
472 data.tofile(self.fp)
507 data.tofile(self.fp)
473
508
474 if self.data_cspc != None:
509 if self.data_cspc != None:
475 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
510 data = numpy.zeros( self.shape_cspc_Buffer, self.dtype )
476 cspc = numpy.transpose( self.data_cspc, (0,2,1) )
511 cspc = numpy.transpose( self.data_cspc, (0,2,1) )
477 if not( self.processingHeaderObj.shif_fft ):
512 if not( self.processingHeaderObj.shif_fft ):
478 cspc = numpy.roll( cspc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
513 cspc = numpy.roll( cspc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
@@ -481,7 +516,7 class SpectraWriter(JRODataWriter):
481 data = data.reshape((-1))
516 data = data.reshape((-1))
482 data.tofile(self.fp)
517 data.tofile(self.fp)
483
518
484 data = numpy.zeros( self.shape_dc_Buffer, self.dataType )
519 data = numpy.zeros( self.shape_dc_Buffer, self.dtype )
485 dc = self.data_dc
520 dc = self.data_dc
486 data['real'] = dc.real
521 data['real'] = dc.real
487 data['imag'] = dc.imag
522 data['imag'] = dc.imag
@@ -60,13 +60,11 class VoltageReader(JRODataReader):
60 break
60 break
61
61
62 """
62 """
63 dataOutObj = None
64
65 datablock = None
66
63
67 ext = ".r"
64 ext = ".r"
68
65
69 optchar = "D"
66 optchar = "D"
67 dataOutObj = None
70
68
71
69
72 def __init__(self, dataOutObj=None):
70 def __init__(self, dataOutObj=None):
@@ -294,8 +292,6 class VoltageReader(JRODataReader):
294
292
295 self.dataOutObj.channelIndexList = range(self.systemHeaderObj.nChannels)
293 self.dataOutObj.channelIndexList = range(self.systemHeaderObj.nChannels)
296
294
297 self.dataOutObj.flagNoData = True
298
299 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
295 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
300
296
301 self.dataOutObj.dataUtcTime = self.basicHeaderObj.utc + self.profileIndex * self.ippSeconds
297 self.dataOutObj.dataUtcTime = self.basicHeaderObj.utc + self.profileIndex * self.ippSeconds
@@ -308,6 +304,8 class VoltageReader(JRODataReader):
308
304
309 self.dataOutObj.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
305 self.dataOutObj.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
310
306
307 self.dataOutObj.flagNoData = False
308
311 return 1
309 return 1
312
310
313
311
@@ -316,18 +314,11 class VoltageWriter(JRODataWriter):
316 Esta clase permite escribir datos de voltajes a archivos procesados (.r). La escritura
314 Esta clase permite escribir datos de voltajes a archivos procesados (.r). La escritura
317 de los datos siempre se realiza por bloques.
315 de los datos siempre se realiza por bloques.
318 """
316 """
319 __configHeaderFile = 'wrSetHeadet.txt'
320
321 dataOutObj = None
322
317
323 ext = ".r"
318 ext = ".r"
324
319
325 optchar = "D"
320 optchar = "D"
326
321
327 datablock = None
328
329 profileIndex = 0
330
331 shapeBuffer = None
322 shapeBuffer = None
332
323
333
324
1 NO CONTENT: modified file
NO CONTENT: modified file
General Comments 0
You need to be logged in to leave comments. Login now