@@ -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( |
|
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( |
|
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( |
|
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 |
|
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 |
|
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