##// END OF EJS Templates
SpectraIO.py...
Victor Sarmiento -
r79:bbf69d216d45
parent child
Show More
@@ -69,14 +69,12 class SpectraReader( JRODataReader ):
69 69 pts2read_CrossSpectra = 0
70 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 79 def __init__(self, m_Spectra=None):
82 80 """
@@ -103,6 +101,80 class SpectraReader( JRODataReader ):
103 101
104 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 179 def __hasNotDataInBuffer(self):
108 180 return 1
@@ -113,38 +185,40 class SpectraReader( JRODataReader ):
113 185 Obtiene la cantidad de puntos a leer por cada bloque de datos
114 186
115 187 Affected:
116 self.nPairsEqualChannels
117 self.nPairsUnequalChannels
188 self.nChannels
189 self.nPairs
118 190 self.pts2read_SelfSpectra
119 191 self.pts2read_CrossSpectra
120 192 self.pts2read_DCchannels
121 193 self.blocksize
122 self.m_DataObj.nPairsEqualChannels
123 self.m_DataObj.nPairsUnequalChannels
194 self.m_DataObj.nChannels
195 self.m_DataObj.nPairs
124 196
125 197 Return:
126 198 None
127 199 """
128 self.nPairsEqualChannels = 0
129 self.nPairsUnequalChannels = 0
200 self.nChannels = 0
201 self.nPairs = 0
130 202
131 203 for i in range( 0, self.m_ProcessingHeader.totalSpectra*2, 2 ):
132 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 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 209 pts2read = self.m_ProcessingHeader.numHeights * self.m_ProcessingHeader.profilesPerBlock
138 210
139 self.pts2read_SelfSpectra = int( self.nPairsEqualChannels * pts2read )
140 self.pts2read_CrossSpectra = int( self.nPairsUnequalChannels * pts2read )
211 self.pts2read_SelfSpectra = int( self.nChannels * pts2read )
212 self.pts2read_CrossSpectra = int( self.nPairs * pts2read )
141 213 self.pts2read_DCchannels = int( self.m_SystemHeader.numChannels * self.m_ProcessingHeader.numHeights )
142 214
143 215 self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
144 216
145 217 self.m_DataObj.nPoints = self.m_ProcessingHeader.profilesPerBlock
146 self.m_DataObj.nPairsEqualChannels = self.nPairsEqualChannels
147 self.m_DataObj.nPairsUnequalChannels = self.nPairsUnequalChannels
218 self.m_DataObj.nChannels = self.nChannels
219 self.m_DataObj.nPairs = self.nPairs
220
221 self.pairList = numpy.arange(self.nPairs)
148 222
149 223
150 224 def readBlock(self):
@@ -195,8 +269,11 class SpectraReader( JRODataReader ):
195 269 return 0
196 270
197 271 try:
198 spc = spc.reshape( (self.nPairsEqualChannels, 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
272 spc = spc.reshape( (self.nChannels, 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 277 dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
201 278 except:
202 279 print "Data file %s is invalid" % self.filename
@@ -204,14 +281,17 class SpectraReader( JRODataReader ):
204 281
205 282 if not( self.m_ProcessingHeader.shif_fft ):
206 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) )
210 # cspc = numpy.transpose( cspc, (0,2,1) )
211 #dc = numpy.transpose(dc, (0,2,1))
287 spc = numpy.transpose( spc, (0,2,1) )
288 if cspc != None: cspc = numpy.transpose( cspc, (0,2,1) )
212 289
213 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 295 self.data_dc = dc['real'] + dc['imag']*1j
216 296
217 297 self.datablockIndex = 0
@@ -256,7 +336,7 class SpectraReader( JRODataReader ):
256 336 self.m_DataObj.m_ProcessingHeader = self.m_ProcessingHeader.copy()
257 337 self.m_DataObj.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
258 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 340 self.m_DataObj.dataType = self.dataType
261 341
262 342 if self.flagNoMoreFiles == 1:
@@ -288,14 +368,14 class SpectraWriter(JRODataWriter):
288 368
289 369 m_DataObj = None
290 370
291 ext = ".pdata"
292
293 optchar = "P"
294
295 371 shape_spc_Buffer = None
296 372 shape_cspc_Buffer = None
297 373 shape_dc_Buffer = None
298 374
375 data_spc = None
376 data_cspc = None
377 data_dc = None
378
299 379
300 380 def __init__(self, m_Spectra=None):
301 381 """
@@ -318,6 +398,50 class SpectraWriter(JRODataWriter):
318 398
319 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 446 def hasAllDataInBuffer(self):
323 447 return 1
@@ -334,11 +458,11 class SpectraWriter(JRODataWriter):
334 458
335 459 Return: None
336 460 """
337 self.shape_spc_Buffer = (self.m_DataObj.nPairsEqualChannels,
461 self.shape_spc_Buffer = (self.m_DataObj.nChannels,
338 462 self.m_ProcessingHeader.numHeights,
339 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 466 self.m_ProcessingHeader.numHeights,
343 467 self.m_ProcessingHeader.profilesPerBlock)
344 468
@@ -361,21 +485,22 class SpectraWriter(JRODataWriter):
361 485
362 486 Return: None
363 487 """
364 spc = self.data_spc
365 # spc = numpy.transpose( self.data_spc, (0,2,1) )
488
489 spc = numpy.transpose( self.data_spc, (0,2,1) )
366 490 if not( self.m_ProcessingHeader.shif_fft ):
367 491 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
368 492 data = spc.reshape((-1))
369 493 data.tofile(self.fp)
370 494
371 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
372 cspc = self.data_cspc
373 # cspc = numpy.transpose( self.data_cspc, (0,2,1) )
374 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
376 data['imag'] = cspc.imag
377 data = data.reshape((-1))
378 data.tofile(self.fp)
495 if self.data_cspc != None:
496 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
497 cspc = numpy.transpose( self.data_cspc, (0,2,1) )
498 if not( self.m_ProcessingHeader.shif_fft ):
499 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
500 data['real'] = cspc.real
501 data['imag'] = cspc.imag
502 data = data.reshape((-1))
503 data.tofile(self.fp)
379 504
380 505 data = numpy.zeros( self.shape_dc_Buffer, self.dataType )
381 506 dc = self.data_dc
@@ -423,7 +548,7 class SpectraWriter(JRODataWriter):
423 548 self.data_dc = self.m_DataObj.data_dc
424 549
425 550 # #self.m_ProcessingHeader.dataBlocksPerFile)
426 if True:
551 if self.hasAllDataInBuffer():
427 552 self.getHeader()
428 553 self.writeNextBlock()
429 554
General Comments 0
You need to be logged in to leave comments. Login now