##// 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 8 from IO.JROHeader import SystemHeader, RadarControllerHeader
9 9
10 class JROData():
10 class JROData:
11 11
12 12 # m_BasicHeader = BasicHeader()
13 13 # m_ProcessingHeader = ProcessingHeader()
@@ -16,7 +16,7 class JROData():
16 16
17 17 radarControllerHeaderObj = RadarControllerHeader()
18 18
19 data = None
19 # data = None
20 20
21 21 type = None
22 22
1 NO CONTENT: modified file
@@ -11,6 +11,8 class Voltage(JROData):
11 11
12 12 nCohInt = None
13 13
14 data = None
15
14 16 def __init__(self):
15 17 '''
16 18 Constructor
@@ -131,11 +131,21 class JRODataIO:
131 131
132 132 lastUTTime = None
133 133
134 datablock = None
135
136 dataOutObj = None
137
138 blocksize = None
139
134 140 def __init__(self):
135 141 pass
136 142
137 143 class JRODataReader(JRODataIO):
144
145 nReadBlocks = 0
146
138 147 def __init__(self):
148
139 149 pass
140 150
141 151 def createObjByDefault(self):
@@ -213,7 +223,8 class JRODataReader(JRODataIO):
213 223 return pathList, filenameList
214 224
215 225 def setup(self,dataOutObj=None,
216 path=None,startDate=None,
226 path=None,
227 startDate=None,
217 228 endDate=None,
218 229 startTime=datetime.time(0,0,0),
219 230 endTime=datetime.time(23,59,59),
@@ -451,6 +462,15 class JRODataReader(JRODataIO):
451 462
452 463 return True
453 464
465 def getData():
466 pass
467
468 def hasNotDataInBuffer():
469 pass
470
471 def readBlock():
472 pass
473
454 474 class JRODataWriter(JRODataIO):
455 475
456 476 """
@@ -671,18 +691,9 class JRODataWriter(JRODataIO):
671 691
672 692
673 693 def getDataHeader(self):
674 """
675 Obtiene una copia del First Header
676
677 Affected:
678 self.basicHeaderObj
679 self.systemHeaderObj
680 self.radarControllerHeaderObj
681 self.processingHeaderObj
682 self.dtype
683
684 Return:
685 None
694 """Obtiene una copia del First Header Affected: self.basicHeaderObj self.
695 systemHeaderObj self.radarControllerHeaderObj self.processingHeaderObj self.
696 dtype Return: None
686 697 """
687 698
688 699 raise ValueError, "No implemented"
1 NO CONTENT: modified file
@@ -15,8 +15,8 import time, datetime
15 15 path = os.path.split(os.getcwd())[0]
16 16 sys.path.append(path)
17 17
18 from Model.JROHeader import *
19 from Model.Spectra import Spectra
18 from IO.JROHeader import *
19 from Data.Spectra import Spectra
20 20
21 21 from JRODataIO import JRODataReader
22 22 from JRODataIO import JRODataWriter
@@ -59,9 +59,6 class SpectraReader(JRODataReader):
59 59 break
60 60
61 61 """
62 dataOutObj = None
63
64 datablock = None
65 62
66 63 pts2read_SelfSpectra = 0
67 64
@@ -73,7 +70,14 class SpectraReader(JRODataReader):
73 70
74 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 82 def __init__(self, dataOutObj=None):
79 83 """
@@ -97,7 +101,7 class SpectraReader(JRODataReader):
97 101
98 102 self.pts2read_CrossSpectra = 0
99 103
100 self.pts2read_DCs = 0
104 self.pts2read_DCchannels = 0
101 105
102 106 self.datablock = None
103 107
@@ -183,8 +187,8 class SpectraReader(JRODataReader):
183 187 Obtiene la cantidad de puntos a leer por cada bloque de datos
184 188
185 189 Affected:
186 self.nChannels
187 self.nPairs
190 self.nRdChannels
191 self.nRdPairs
188 192 self.pts2read_SelfSpectra
189 193 self.pts2read_CrossSpectra
190 194 self.pts2read_DCchannels
@@ -195,28 +199,28 class SpectraReader(JRODataReader):
195 199 Return:
196 200 None
197 201 """
198 self.nChannels = 0
199 self.nPairs = 0
200 self.pairList = []
202 self.nRdChannels = 0
203 self.nRdPairs = 0
204 self.rdPairList = []
201 205
202 206 for i in range( 0, self.processingHeaderObj.totalSpectra*2, 2 ):
203 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 209 else:
206 self.nPairs = self.nPairs + 1 #par de canales diferentes
207 self.pairList.append( (self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1]) )
210 self.nRdPairs = self.nRdPairs + 1 #par de canales diferentes
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 216 self.blocksize = self.pts2read_SelfSpectra
213 217
214 218 if self.processingHeaderObj.flag_cspc:
215 self.pts2read_CrossSpectra = int(self.nPairs * pts2read)
219 self.pts2read_CrossSpectra = int(self.nRdPairs * pts2read)
216 220 self.blocksize += self.pts2read_CrossSpectra
217 221
218 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 224 self.blocksize += self.pts2read_DCchannels
221 225
222 226 # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
@@ -232,7 +236,7 class SpectraReader(JRODataReader):
232 236 Return: None
233 237
234 238 Variables afectadas:
235 self.datablockIndex
239
236 240 self.flagIsNewFile
237 241 self.flagIsNewBlock
238 242 self.nTotalBlocks
@@ -246,29 +250,29 class SpectraReader(JRODataReader):
246 250 blockOk_flag = False
247 251 fpointer = self.fp.tell()
248 252
249 spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
250 spc = spc.reshape( (self.nChannels, self.processingHeaderObj.numHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
253 spc = numpy.fromfile( self.fp, self.dtype[0], self.pts2read_SelfSpectra )
254 spc = spc.reshape( (self.nRdChannels, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
251 255
252 if self.flag_cspc:
253 cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
254 cspc = cspc.reshape( (self.nPairs, self.processingHeaderObj.numHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
256 if self.processingHeaderObj.flag_cspc:
257 cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra )
258 cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D
255 259
256 260 if self.processingHeaderObj.flag_dc:
257 dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.processingHeaderObj.numHeights*self.systemHeaderObj.numChannels) )
258 dc = dc.reshape( (self.systemHeaderObj.numChannels, self.processingHeaderObj.numHeights) ) #transforma a un arreglo 2D
261 dc = numpy.fromfile( self.fp, self.dtype, self.pts2read_DCchannels ) #int(self.processingHeaderObj.nHeights*self.systemHeaderObj.nChannels) )
262 dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D
259 263
260 264
261 265 if not(self.processingHeaderObj.shif_fft):
262 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 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 272 spc = numpy.transpose( spc, (0,2,1) )
269 273 self.data_spc = spc
270 274
271 if self.flag_cspc:
275 if self.processingHeaderObj.flag_cspc:
272 276 cspc = numpy.transpose( cspc, (0,2,1) )
273 277 self.data_cspc = cspc['real'] + cspc['imag']*1j
274 278 else:
@@ -279,7 +283,6 class SpectraReader(JRODataReader):
279 283 else:
280 284 self.data_dc = None
281 285
282 self.datablockIndex = 0
283 286 self.flagIsNewFile = 0
284 287 self.flagIsNewBlock = 1
285 288
@@ -301,7 +304,7 class SpectraReader(JRODataReader):
301 304
302 305 Affected:
303 306 self.dataOutObj
304 self.datablockIndex
307
305 308 self.flagTimeBlock
306 309 self.flagIsNewBlock
307 310 """
@@ -316,7 +319,7 class SpectraReader(JRODataReader):
316 319 if not( self.readNextBlock() ):
317 320 return 0
318 321
319 self.updateDataHeader()
322 # self.updateDataHeader()
320 323
321 324 if self.flagNoMoreFiles == 1:
322 325 print 'Process finished'
@@ -328,13 +331,50 class SpectraReader(JRODataReader):
328 331 self.dataOutObj.flagNoData = True
329 332 return 0
330 333
331 self.dataOutObj.flagNoData = False
332 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
333 334
334 335 self.dataOutObj.data_spc = self.data_spc
336
335 337 self.dataOutObj.data_cspc = self.data_cspc
338
336 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 378 return 1
339 379
340 380
@@ -345,16 +385,11 class SpectraWriter(JRODataWriter):
345 385 de los datos siempre se realiza por bloques.
346 386 """
347 387
348 dataOutObj = None
349 388
350 389 shape_spc_Buffer = None
351 390 shape_cspc_Buffer = None
352 391 shape_dc_Buffer = None
353
354 data_spc = None
355 data_cspc = None
356 data_dc = None
357
392 dataOutObj = None
358 393
359 394 def __init__(self, dataOutObj=None):
360 395 """
@@ -405,7 +440,7 class SpectraWriter(JRODataWriter):
405 440
406 441 self.setFile = None
407 442
408 self.dataType = None
443 self.dtype = None
409 444
410 445 self.path = None
411 446
@@ -438,15 +473,15 class SpectraWriter(JRODataWriter):
438 473 Return: None
439 474 """
440 475 self.shape_spc_Buffer = (self.dataOutObj.nChannels,
441 self.processingHeaderObj.numHeights,
476 self.processingHeaderObj.nHeights,
442 477 self.processingHeaderObj.profilesPerBlock)
443 478
444 479 self.shape_cspc_Buffer = (self.dataOutObj.nPairs,
445 self.processingHeaderObj.numHeights,
480 self.processingHeaderObj.nHeights,
446 481 self.processingHeaderObj.profilesPerBlock)
447 482
448 self.shape_dc_Buffer = (self.systemHeaderObj.numChannels,
449 self.processingHeaderObj.numHeights)
483 self.shape_dc_Buffer = (self.systemHeaderObj.nChannels,
484 self.processingHeaderObj.nHeights)
450 485
451 486
452 487 def writeBlock(self):
@@ -472,7 +507,7 class SpectraWriter(JRODataWriter):
472 507 data.tofile(self.fp)
473 508
474 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 511 cspc = numpy.transpose( self.data_cspc, (0,2,1) )
477 512 if not( self.processingHeaderObj.shif_fft ):
478 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 516 data = data.reshape((-1))
482 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 520 dc = self.data_dc
486 521 data['real'] = dc.real
487 522 data['imag'] = dc.imag
@@ -60,13 +60,11 class VoltageReader(JRODataReader):
60 60 break
61 61
62 62 """
63 dataOutObj = None
64
65 datablock = None
66 63
67 64 ext = ".r"
68 65
69 66 optchar = "D"
67 dataOutObj = None
70 68
71 69
72 70 def __init__(self, dataOutObj=None):
@@ -294,8 +292,6 class VoltageReader(JRODataReader):
294 292
295 293 self.dataOutObj.channelIndexList = range(self.systemHeaderObj.nChannels)
296 294
297 self.dataOutObj.flagNoData = True
298
299 295 self.dataOutObj.flagTimeBlock = self.flagTimeBlock
300 296
301 297 self.dataOutObj.dataUtcTime = self.basicHeaderObj.utc + self.profileIndex * self.ippSeconds
@@ -308,6 +304,8 class VoltageReader(JRODataReader):
308 304
309 305 self.dataOutObj.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
310 306
307 self.dataOutObj.flagNoData = False
308
311 309 return 1
312 310
313 311
@@ -316,18 +314,11 class VoltageWriter(JRODataWriter):
316 314 Esta clase permite escribir datos de voltajes a archivos procesados (.r). La escritura
317 315 de los datos siempre se realiza por bloques.
318 316 """
319 __configHeaderFile = 'wrSetHeadet.txt'
320
321 dataOutObj = None
322 317
323 318 ext = ".r"
324 319
325 320 optchar = "D"
326 321
327 datablock = None
328
329 profileIndex = 0
330
331 322 shapeBuffer = None
332 323
333 324
1 NO CONTENT: modified file
General Comments 0
You need to be logged in to leave comments. Login now