##// END OF EJS Templates
Modificaciones realizadas en:...
Daniel Valdez -
r106:04f661d03146
parent child
Show More
@@ -177,6 +177,8 class SpectraReader(JRODataReader):
177 #pairList = None
177 #pairList = None
178
178
179 channelList = None
179 channelList = None
180
181 self.flag_cspc = False
180
182
181
183
182 def __hasNotDataInBuffer(self):
184 def __hasNotDataInBuffer(self):
@@ -210,16 +212,26 class SpectraReader(JRODataReader):
210 else:
212 else:
211 self.nPairs = self.nPairs + 1 #par de canales diferentes
213 self.nPairs = self.nPairs + 1 #par de canales diferentes
212 self.pairList.append( (self.m_ProcessingHeader.spectraComb[i], self.m_ProcessingHeader.spectraComb[i+1]) )
214 self.pairList.append( (self.m_ProcessingHeader.spectraComb[i], self.m_ProcessingHeader.spectraComb[i+1]) )
215
216 if self.nPairs > 0:
217 self.flag_cspc = True
213
218
214 pts2read = self.m_ProcessingHeader.numHeights * self.m_ProcessingHeader.profilesPerBlock
219 pts2read = self.m_ProcessingHeader.numHeights * self.m_ProcessingHeader.profilesPerBlock
215
220
216 self.pts2read_SelfSpectra = int( self.nChannels * pts2read )
221 self.pts2read_SelfSpectra = int(self.nChannels * pts2read)
217 self.pts2read_CrossSpectra = int( self.nPairs * pts2read )
222 self.blocksize = self.pts2read_SelfSpectra
218 self.pts2read_DCchannels = int( self.m_SystemHeader.numChannels * self.m_ProcessingHeader.numHeights )
219
223
220 self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
224 if self.flag_cspc:
225 self.pts2read_CrossSpectra = int(self.nPairs * pts2read)
226 self.blocksize += self.pts2read_CrossSpectra
227
228 if self.m_ProcessingHeader.flag_dc:
229 self.pts2read_DCchannels = int(self.m_SystemHeader.numChannels * self.m_ProcessingHeader.numHeights)
230 self.blocksize += self.pts2read_DCchannels
231
232 # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
221
233
222 self.channelList = numpy.arange( self.nChannels )
234 self.channelList = numpy.arange(self.nChannels)
223
235
224
236
225 def readBlock(self):
237 def readBlock(self):
@@ -247,39 +259,37 class SpectraReader(JRODataReader):
247 fpointer = self.fp.tell()
259 fpointer = self.fp.tell()
248
260
249 spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
261 spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
250 cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
262 spc = spc.reshape( (self.nChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
251 dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.m_ProcessingHeader.numHeights*self.m_SystemHeader.numChannels) )
252
263
253 try:
264 if self.flag_cspc:
254 spc = spc.reshape( (self.nChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
265 cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
255 if self.nPairs != 0:
266 cspc = cspc.reshape( (self.nPairs, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
256 cspc = cspc.reshape( (self.nPairs, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
267
257 else:
268 if self.m_ProcessingHeader.flag_dc:
258 cspc = None
269 dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.m_ProcessingHeader.numHeights*self.m_SystemHeader.numChannels) )
259 dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
270 dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
260 except:
271
261 print "Data file %s is invalid" % self.filename
262 return 0
263
272
264 if not( self.m_ProcessingHeader.shif_fft ):
273 if not(self.m_ProcessingHeader.shif_fft):
265 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
274 spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
266
275
267 if cspc != None:
276 if self.flag_cspc:
268 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
277 cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
269
278
279
270 spc = numpy.transpose( spc, (0,2,1) )
280 spc = numpy.transpose( spc, (0,2,1) )
281 self.data_spc = spc
271
282
272 if cspc != None:
283 if self.flag_cspc:
273 cspc = numpy.transpose( cspc, (0,2,1) )
284 cspc = numpy.transpose( cspc, (0,2,1) )
274
275
276 if cspc != None:
277 self.data_cspc = cspc['real'] + cspc['imag']*1j
285 self.data_cspc = cspc['real'] + cspc['imag']*1j
278 else:
286 else:
279 self.data_cspc = None
287 self.data_cspc = None
280
288
281 self.data_spc = spc
289 if self.m_ProcessingHeader.flag_dc:
282 self.data_dc = dc['real'] + dc['imag']*1j
290 self.data_dc = dc['real'] + dc['imag']*1j
291 else:
292 self.data_dc = None
283
293
284 self.datablockIndex = 0
294 self.datablockIndex = 0
285 self.flagIsNewFile = 0
295 self.flagIsNewFile = 0
@@ -342,6 +342,7 class ProcessingHeader(Header):
342 self.code = 0
342 self.code = 0
343 self.numBaud = 0
343 self.numBaud = 0
344 self.shif_fft = False
344 self.shif_fft = False
345 self.flag_dc = False
345
346
346 def read(self, fp):
347 def read(self, fp):
347 try:
348 try:
@@ -363,15 +364,18 class ProcessingHeader(Header):
363 self.samplesWin = self.samplingWindow['nsa']
364 self.samplesWin = self.samplingWindow['nsa']
364 self.spectraComb = numpy.fromfile(fp,'u1',2*self.totalSpectra)
365 self.spectraComb = numpy.fromfile(fp,'u1',2*self.totalSpectra)
365
366
366 if self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE == PROCFLAG.DEFINE_PROCESS_CODE:
367 if ((self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE) == PROCFLAG.DEFINE_PROCESS_CODE):
367 self.numCode = numpy.fromfile(fp,'<u4',1)
368 self.numCode = numpy.fromfile(fp,'<u4',1)
368 self.numBaud = numpy.fromfile(fp,'<u4',1)
369 self.numBaud = numpy.fromfile(fp,'<u4',1)
369 self.code = numpy.fromfile(fp,'<f4',self.numCode*self.numBaud).reshape(self.numBaud,self.numCode)
370 self.code = numpy.fromfile(fp,'<f4',self.numCode*self.numBaud).reshape(self.numBaud,self.numCode)
370
371
371 if self.processFlags & PROCFLAG.SHIFT_FFT_DATA == PROCFLAG.SHIFT_FFT_DATA:
372 if ((self.processFlags & PROCFLAG.SHIFT_FFT_DATA) == PROCFLAG.SHIFT_FFT_DATA):
372 self.shif_fft = True
373 self.shif_fft = True
373 else:
374 else:
374 self.shif_fft = False
375 self.shif_fft = False
376
377 if ((self.processFlags & PROCFLAG.SAVE_CHANNELS_DC) == PROCFLAG.SAVE_CHANNELS_DC):
378 self.flag_dc = True
375 except:
379 except:
376 return 0
380 return 0
377
381
General Comments 0
You need to be logged in to leave comments. Login now