##// END OF EJS Templates
SpectraIO.py...
Victor Sarmiento -
r79:bbf69d216d45
parent child
Show More
@@ -69,14 +69,12 class SpectraReader( JRODataReader ):
69 pts2read_CrossSpectra = 0
69 pts2read_CrossSpectra = 0
70 pts2read_DCchannels = 0
70 pts2read_DCchannels = 0
71
71
72 nPairsEqualChannels = 0
72 nChannels = 0
73
73
74 nPairsUnequalChannels = 0
74 nPairs = 0
75
75
76 ext = ".pdata"
76 pairList = None
77
77
78 optchar = "P"
79
80
78
81 def __init__(self, m_Spectra=None):
79 def __init__(self, m_Spectra=None):
82 """
80 """
@@ -103,6 +101,80 class SpectraReader( JRODataReader ):
103
101
104 self.m_DataObj = m_Spectra
102 self.m_DataObj = m_Spectra
105
103
104 self.data_spc = None
105 self.data_cspc = None
106 self.data_dc = None
107
108 self.pts2read_SelfSpectra = 0
109 self.pts2read_CrossSpectra = 0
110 self.pts2read_DCchannels = 0
111
112 self.nChannels = 0
113
114 self.nPairs = 0
115
116 self.ext = ".pdata"
117
118 self.optchar = "P"
119
120 ######################
121
122 self.m_BasicHeader = BasicHeader()
123
124 self.m_SystemHeader = SystemHeader()
125
126 self.m_RadarControllerHeader = RadarControllerHeader()
127
128 self.m_ProcessingHeader = ProcessingHeader()
129
130 self.online = 0
131
132 self.fp = None
133
134 self.fileSizeByHeader = None
135
136 self.filenameList = []
137
138 self.filename = None
139
140 self.fileSize = None
141
142 self.firstHeaderSize = 0
143
144 self.basicHeaderSize = 24
145
146 self.dataType = None
147
148 self.maxTimeStep = 30
149
150 self.flagNoMoreFiles = 0
151
152 self.set = 0
153
154 self.path = None
155
156 self.delay = 3 #seconds
157
158 self.nTries = 3 #quantity tries
159
160 self.nFiles = 3 #number of files for searching
161
162 self.nBlocks = 0
163
164 self.flagIsNewFile = 1
165
166 self.ippSeconds = 0
167
168 self.flagResetProcessing = 0
169
170 self.flagIsNewBlock = 0
171
172 self.nReadBlocks = 0
173
174 self.blocksize = 0
175
176 pairList = None
177
106
178
107 def __hasNotDataInBuffer(self):
179 def __hasNotDataInBuffer(self):
108 return 1
180 return 1
@@ -113,38 +185,40 class SpectraReader( JRODataReader ):
113 Obtiene la cantidad de puntos a leer por cada bloque de datos
185 Obtiene la cantidad de puntos a leer por cada bloque de datos
114
186
115 Affected:
187 Affected:
116 self.nPairsEqualChannels
188 self.nChannels
117 self.nPairsUnequalChannels
189 self.nPairs
118 self.pts2read_SelfSpectra
190 self.pts2read_SelfSpectra
119 self.pts2read_CrossSpectra
191 self.pts2read_CrossSpectra
120 self.pts2read_DCchannels
192 self.pts2read_DCchannels
121 self.blocksize
193 self.blocksize
122 self.m_DataObj.nPairsEqualChannels
194 self.m_DataObj.nChannels
123 self.m_DataObj.nPairsUnequalChannels
195 self.m_DataObj.nPairs
124
196
125 Return:
197 Return:
126 None
198 None
127 """
199 """
128 self.nPairsEqualChannels = 0
200 self.nChannels = 0
129 self.nPairsUnequalChannels = 0
201 self.nPairs = 0
130
202
131 for i in range( 0, self.m_ProcessingHeader.totalSpectra*2, 2 ):
203 for i in range( 0, self.m_ProcessingHeader.totalSpectra*2, 2 ):
132 if self.m_ProcessingHeader.spectraComb[i] == self.m_ProcessingHeader.spectraComb[i+1]:
204 if self.m_ProcessingHeader.spectraComb[i] == self.m_ProcessingHeader.spectraComb[i+1]:
133 self.nPairsEqualChannels = self.nPairsEqualChannels + 1 #par de canales iguales
205 self.nChannels = self.nChannels + 1 #par de canales iguales
134 else:
206 else:
135 self.nPairsUnequalChannels = self.nPairsUnequalChannels + 1 #par de canales diferentes
207 self.nPairs = self.nPairs + 1 #par de canales diferentes
136
208
137 pts2read = self.m_ProcessingHeader.numHeights * self.m_ProcessingHeader.profilesPerBlock
209 pts2read = self.m_ProcessingHeader.numHeights * self.m_ProcessingHeader.profilesPerBlock
138
210
139 self.pts2read_SelfSpectra = int( self.nPairsEqualChannels * pts2read )
211 self.pts2read_SelfSpectra = int( self.nChannels * pts2read )
140 self.pts2read_CrossSpectra = int( self.nPairsUnequalChannels * pts2read )
212 self.pts2read_CrossSpectra = int( self.nPairs * pts2read )
141 self.pts2read_DCchannels = int( self.m_SystemHeader.numChannels * self.m_ProcessingHeader.numHeights )
213 self.pts2read_DCchannels = int( self.m_SystemHeader.numChannels * self.m_ProcessingHeader.numHeights )
142
214
143 self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
215 self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
144
216
145 self.m_DataObj.nPoints = self.m_ProcessingHeader.profilesPerBlock
217 self.m_DataObj.nPoints = self.m_ProcessingHeader.profilesPerBlock
146 self.m_DataObj.nPairsEqualChannels = self.nPairsEqualChannels
218 self.m_DataObj.nChannels = self.nChannels
147 self.m_DataObj.nPairsUnequalChannels = self.nPairsUnequalChannels
219 self.m_DataObj.nPairs = self.nPairs
220
221 self.pairList = numpy.arange(self.nPairs)
148
222
149
223
150 def readBlock(self):
224 def readBlock(self):
@@ -195,8 +269,11 class SpectraReader( JRODataReader ):
195 return 0
269 return 0
196
270
197 try:
271 try:
198 spc = spc.reshape( (self.nPairsEqualChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
272 spc = spc.reshape( (self.nChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
199 cspc = cspc.reshape( (self.nPairsUnequalChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
273 if self.nPairs != 0:
274 cspc = cspc.reshape( (self.nPairs, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
275 else:
276 cspc = None
200 dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
277 dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
201 except:
278 except:
202 print "Data file %s is invalid" % self.filename
279 print "Data file %s is invalid" % self.filename
@@ -204,14 +281,17 class SpectraReader( JRODataReader ):
204
281
205 if not( self.m_ProcessingHeader.shif_fft ):
282 if not( self.m_ProcessingHeader.shif_fft ):
206 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
283 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
207 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
284 if cspc != None:
285 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
208
286
209 # spc = numpy.transpose( spc, (0,2,1) )
287 spc = numpy.transpose( spc, (0,2,1) )
210 # cspc = numpy.transpose( cspc, (0,2,1) )
288 if cspc != None: cspc = numpy.transpose( cspc, (0,2,1) )
211 #dc = numpy.transpose(dc, (0,2,1))
212
289
213 self.data_spc = spc
290 self.data_spc = spc
214 self.data_cspc = cspc['real'] + cspc['imag']*1j
291 if cspc != None:
292 self.data_cspc = cspc['real'] + cspc['imag']*1j
293 else:
294 self.data_cspc = None
215 self.data_dc = dc['real'] + dc['imag']*1j
295 self.data_dc = dc['real'] + dc['imag']*1j
216
296
217 self.datablockIndex = 0
297 self.datablockIndex = 0
@@ -256,7 +336,7 class SpectraReader( JRODataReader ):
256 self.m_DataObj.m_ProcessingHeader = self.m_ProcessingHeader.copy()
336 self.m_DataObj.m_ProcessingHeader = self.m_ProcessingHeader.copy()
257 self.m_DataObj.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
337 self.m_DataObj.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
258 self.m_DataObj.m_SystemHeader = self.m_SystemHeader.copy()
338 self.m_DataObj.m_SystemHeader = self.m_SystemHeader.copy()
259 self.m_DataObj.heights = self.heights
339 self.m_DataObj.heightList = self.heightList
260 self.m_DataObj.dataType = self.dataType
340 self.m_DataObj.dataType = self.dataType
261
341
262 if self.flagNoMoreFiles == 1:
342 if self.flagNoMoreFiles == 1:
@@ -288,14 +368,14 class SpectraWriter(JRODataWriter):
288
368
289 m_DataObj = None
369 m_DataObj = None
290
370
291 ext = ".pdata"
292
293 optchar = "P"
294
295 shape_spc_Buffer = None
371 shape_spc_Buffer = None
296 shape_cspc_Buffer = None
372 shape_cspc_Buffer = None
297 shape_dc_Buffer = None
373 shape_dc_Buffer = None
298
374
375 data_spc = None
376 data_cspc = None
377 data_dc = None
378
299
379
300 def __init__(self, m_Spectra=None):
380 def __init__(self, m_Spectra=None):
301 """
381 """
@@ -318,6 +398,50 class SpectraWriter(JRODataWriter):
318
398
319 self.m_DataObj = m_Spectra
399 self.m_DataObj = m_Spectra
320
400
401 self.ext = ".pdata"
402
403 self.optchar = "P"
404
405 self.shape_spc_Buffer = None
406 self.shape_cspc_Buffer = None
407 self.shape_dc_Buffer = None
408
409 self.data_spc = None
410 self.data_cspc = None
411 self.data_dc = None
412
413 ####################################
414
415 self.fp = None
416
417 self.blocksCounter = 0
418
419 self.flagIsNewFile = 1
420
421 self.nWriteBlocks = 0
422
423 self.flagIsNewBlock = 0
424
425 self.flagNoMoreFiles = 0
426
427 self.setFile = None
428
429 self.dataType = None
430
431 self.path = None
432
433 self.noMoreFiles = 0
434
435 self.filename = None
436
437 self.m_BasicHeader= BasicHeader()
438
439 self.m_SystemHeader = SystemHeader()
440
441 self.m_RadarControllerHeader = RadarControllerHeader()
442
443 self.m_ProcessingHeader = ProcessingHeader()
444
321
445
322 def hasAllDataInBuffer(self):
446 def hasAllDataInBuffer(self):
323 return 1
447 return 1
@@ -334,11 +458,11 class SpectraWriter(JRODataWriter):
334
458
335 Return: None
459 Return: None
336 """
460 """
337 self.shape_spc_Buffer = (self.m_DataObj.nPairsEqualChannels,
461 self.shape_spc_Buffer = (self.m_DataObj.nChannels,
338 self.m_ProcessingHeader.numHeights,
462 self.m_ProcessingHeader.numHeights,
339 self.m_ProcessingHeader.profilesPerBlock)
463 self.m_ProcessingHeader.profilesPerBlock)
340
464
341 self.shape_cspc_Buffer = (self.m_DataObj.nPairsUnequalChannels,
465 self.shape_cspc_Buffer = (self.m_DataObj.nPairs,
342 self.m_ProcessingHeader.numHeights,
466 self.m_ProcessingHeader.numHeights,
343 self.m_ProcessingHeader.profilesPerBlock)
467 self.m_ProcessingHeader.profilesPerBlock)
344
468
@@ -361,21 +485,22 class SpectraWriter(JRODataWriter):
361
485
362 Return: None
486 Return: None
363 """
487 """
364 spc = self.data_spc
488
365 # spc = numpy.transpose( self.data_spc, (0,2,1) )
489 spc = numpy.transpose( self.data_spc, (0,2,1) )
366 if not( self.m_ProcessingHeader.shif_fft ):
490 if not( self.m_ProcessingHeader.shif_fft ):
367 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
491 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
368 data = spc.reshape((-1))
492 data = spc.reshape((-1))
369 data.tofile(self.fp)
493 data.tofile(self.fp)
370
494
371 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
495 if self.data_cspc != None:
372 cspc = self.data_cspc
496 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
373 # cspc = numpy.transpose( self.data_cspc, (0,2,1) )
497 cspc = numpy.transpose( self.data_cspc, (0,2,1) )
374 if not( self.m_ProcessingHeader.shif_fft ):
498 if not( self.m_ProcessingHeader.shif_fft ):
375 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
499 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
376 data['imag'] = cspc.imag
500 data['real'] = cspc.real
377 data = data.reshape((-1))
501 data['imag'] = cspc.imag
378 data.tofile(self.fp)
502 data = data.reshape((-1))
503 data.tofile(self.fp)
379
504
380 data = numpy.zeros( self.shape_dc_Buffer, self.dataType )
505 data = numpy.zeros( self.shape_dc_Buffer, self.dataType )
381 dc = self.data_dc
506 dc = self.data_dc
@@ -423,7 +548,7 class SpectraWriter(JRODataWriter):
423 self.data_dc = self.m_DataObj.data_dc
548 self.data_dc = self.m_DataObj.data_dc
424
549
425 # #self.m_ProcessingHeader.dataBlocksPerFile)
550 # #self.m_ProcessingHeader.dataBlocksPerFile)
426 if True:
551 if self.hasAllDataInBuffer():
427 self.getHeader()
552 self.getHeader()
428 self.writeNextBlock()
553 self.writeNextBlock()
429
554
General Comments 0
You need to be logged in to leave comments. Login now