##// END OF EJS Templates
Se añadio la clase SpectraHeis
Alexander Valdez -
r145:0d184bf86479
parent child
Show More
@@ -11,9 +11,9 import datetime
11 path = os.path.split(os.getcwd())[0]
11 path = os.path.split(os.getcwd())[0]
12 sys.path.append(path)
12 sys.path.append(path)
13
13
14 from Data.JROData import Spectra
14 from Data.JROData import SpectraHeis
15 from IO.SpectraIO import SpectraWriter
15 from IO.SpectraIO import SpectraWriter
16 from Graphics.schainPlotTypes import SpcFigure
16 #from Graphics.schainPlotTypes import SpcFigure
17 #from JRONoise import Noise
17 #from JRONoise import Noise
18
18
19 class SpectraProcessor:
19 class SpectraProcessor:
@@ -46,10 +46,10 class SpectraProcessor:
46 self.integratorObjIndex = None
46 self.integratorObjIndex = None
47 self.writerObjIndex = None
47 self.writerObjIndex = None
48 self.plotObjIndex = None
48 self.plotObjIndex = None
49 self.integratorObjList = []
49 self.integratorOst = []
50 self.writerObjList = []
51 self.plotObjList = []
50 self.plotObjList = []
52 self.noiseObj = None
51 self.noiseObj = bjList = []
52 self.writerObjLiNone
53 self.buffer = None
53 self.buffer = None
54 self.profIndex = 0
54 self.profIndex = 0
55
55
@@ -285,7 +285,152 class SpectraProcessor:
285
285
286 self.integratorObjIndex += 1
286 self.integratorObjIndex += 1
287
287
288
289 class SpectraHeisProcessor:
290 def __init__(self):
291 self.integratorObjIndex = None
292 self.writerObjIndex = None
293 self.plotterObjIndex = None
294 self.integratorObjList = []
295 self.writerObjList = []
296 self.plotterObjList = []
297 #self.noiseObj = Noise()
298
299 def setup(self,dataInObj=None, dataOutObj=None, nFFTPoints=None, pairList=None):
300 if dataInObj == None:
301 raise ValueError, ""
302
303 if nFFTPoints == None:
304 raise ValueError, ""
305
306 self.dataInObj = dataInObj
307
308 if dataOutObj == None:
309 dataOutObj = SpectraHeis()
310
311 self.dataOutObj = dataOutObj
312 # self.noiseObj = Noise()
313
314 ##########################################
315 self.nFFTPoints = nFFTPoints
316 self.nChannels = self.dataInObj.nChannels
317 self.nHeights = self.dataInObj.nHeights
318 self.pairList = pairList
319 if pairList != None:
320 self.nPairs = len(pairList)
321 else:
322 self.nPairs = 0
323
324 self.dataOutObj.heightList = self.dataInObj.heightList
325 self.dataOutObj.channelIndexList = self.dataInObj.channelIndexList
326 self.dataOutObj.m_RadarControllerHeader = self.dataInObj.m_RadarControllerHeader.copy()
327 self.dataOutObj.m_SystemHeader = self.dataInObj.m_SystemHeader.copy()
328
329 self.dataOutObj.dataType = self.dataInObj.dataType
330 self.dataOutObj.nPairs = self.nPairs
331 self.dataOutObj.nChannels = self.nChannels
332 self.dataOutObj.nProfiles = self.nFFTPoints
333 self.dataOutObj.nHeights = self.nHeights
334 self.dataOutObj.nFFTPoints = self.nFFTPoints
335 #self.dataOutObj.data = None
336
337 self.dataOutObj.m_SystemHeader.numChannels = self.nChannels
338 self.dataOutObj.m_SystemHeader.nProfiles = self.nFFTPoints
339
340 self.dataOutObj.m_ProcessingHeader.totalSpectra = self.nChannels + self.nPairs
341 self.dataOutObj.m_ProcessingHeader.profilesPerBlock = self.nFFTPoints
342 self.dataOutObj.m_ProcessingHeader.numHeights = self.nHeights
343 self.dataOutObj.m_ProcessingHeader.shif_fft = True
344
345 spectraComb = numpy.zeros( (self.nChannels+self.nPairs)*2,numpy.dtype('u1'))
346 k = 0
347 for i in range( 0,self.nChannels*2,2 ):
348 spectraComb[i] = k
349 spectraComb[i+1] = k
350 k += 1
351
352 k *= 2
353
354 if self.pairList != None:
355
356 for pair in self.pairList:
357 spectraComb[k] = pair[0]
358 spectraComb[k+1] = pair[1]
359 k += 2
360
361 self.dataOutObj.m_ProcessingHeader.spectraComb = spectraComb
362
363 return self.dataOutObj
364
365 def init(self):
366 self.integratorObjIndex = 0
367 self.writerObjIndex = 0
368 self.plotterObjIndex = 0
288
369
370 if self.dataInObj.type == "Voltage":
371 self.__getFft()
372 self.dataOutObj.flagNoData = False
373 return
374
375 #Other kind of data
376 if self.dataInObj.type == "SpectraHeis":
377 self.dataOutObj.copy(self.dataInObj)
378 self.dataOutObj.flagNoData = False
379 return
380
381 raise ValueError, "The datatype is not valid"
382
383 def __getFft(self):
384 if self.dataInObj.flagNoData:
385 return 0
386
387 fft_volt = numpy.fft.fft(self.dataInObj.data, axis=1)
388 #print fft_volt
389 #calculo de self-spectra
390 fft_volt = numpy.fft.fftshift(fft_volt,axes=(1,))
391
392 spc = numpy.abs(fft_volt * numpy.conjugate(fft_volt))
393 self.dataOutObj.data_spc = spc
394 #print spc
395
396 def getSpectra(self):
397
398 return self.dataOutObj.data_spc
399
400 def getFrecuencies(self):
401
402 print self.nFFTPoints
403 return numpy.arange(int(self.nFFTPoints))
404
405 def addIntegrator(self,N,timeInterval):
406 objIncohInt = IncoherentIntegration(N,timeInterval)
407 self.integratorObjList.append(objIncohInt)
408
409 def integrator(self, N=None, timeInterval=None):
410 if self.dataOutObj.flagNoData:
411 return 0
412
413 if len(self.integratorObjList) <= self.integratorObjIndex:
414 self.addIntegrator(N,timeInterval)
415
416 myIncohIntObj = self.integratorObjList[self.integratorObjIndex]
417 myIncohIntObj.exe(data=self.dataOutObj.data_spc,timeOfData=self.dataOutObj.m_BasicHeader.utc)
418
419 if myIncohIntObj.isReady:
420 self.dataOutObj.data_spc = myIncohIntObj.data
421 self.dataOutObj.nAvg = myIncohIntObj.navg
422 self.dataOutObj.m_ProcessingHeader.incoherentInt *= myIncohIntObj.navg
423 #print "myIncohIntObj.navg: ",myIncohIntObj.navg
424 self.dataOutObj.flagNoData = False
425
426 #self.getNoise(type="hildebrand",parm=myIncohIntObj.navg)
427 # self.getNoise(type="sort", parm=16)
428
429 else:
430 self.dataOutObj.flagNoData = True
431
432 self.integratorObjIndex += 1
433
289
434
290
435
291 class IncoherentIntegration:
436 class IncoherentIntegration:
General Comments 0
You need to be logged in to leave comments. Login now