##// END OF EJS Templates
Avance de libreria para ploteo de graficos RTI
Avance de libreria para ploteo de graficos RTI

File last commit:

r137:6bce11d32050
r139:744f0a502d20
Show More
VoltageProcessor.py
220 lines | 6.7 KiB | text/x-python | PythonLexer
Daniel Valdez
Lectura/Escritura de Rawdata y Pdata operando correctamente, se hicieron pruebas con datos de Drifts,Faraday e Imagenes.
r126 '''
$Author$
$Id$
'''
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122 import os
import sys
import numpy
Daniel Valdez
Se agrega el metodo plotScope
r136 import datetime
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122
path = os.path.split(os.getcwd())[0]
sys.path.append(path)
Miguel Valdez
-Agrupamiento de las clases Voltage y Spectra dentro del módulo JROData...
r137 from Data.JROData import Voltage
Daniel Valdez
Realizando cambios para escritura de rawdata
r123 from IO.VoltageIO import VoltageWriter
Daniel Valdez
Se agrega el metodo plotScope
r136 from Graphics2.schainPlotTypes import ScopeFigure
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122
class VoltageProcessor:
Miguel Valdez
-Agrupamiento de las clases Voltage y Spectra dentro del módulo JROData...
r137
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122 dataInObj = None
dataOutObj = None
integratorObjIndex = None
writerObjIndex = None
integratorObjList = None
writerObjList = None
def __init__(self):
self.integratorObjIndex = None
self.writerObjIndex = None
Daniel Valdez
r134 self.plotObjIndex = None
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122 self.integratorObjList = []
self.writerObjList = []
Daniel Valdez
r134 self.plotObjList = []
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122
def setup(self,dataInObj=None,dataOutObj=None):
self.dataInObj = dataInObj
if self.dataOutObj == None:
dataOutObj = Voltage()
self.dataOutObj = dataOutObj
return self.dataOutObj
def init(self):
self.integratorObjIndex = 0
self.writerObjIndex = 0
Daniel Valdez
r134 self.plotObjIndex = 0
Daniel Valdez
Realizando cambios para escritura de rawdata
r123
if not(self.dataInObj.flagNoData):
self.dataOutObj.copy(self.dataInObj)
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122 # No necesita copiar en cada init() los atributos de dataInObj
# la copia deberia hacerse por cada nuevo bloque de datos
Daniel Valdez
r134
def addScope(self, idfigure, nframes, wintitle, driver):
if idfigure==None:
idfigure = self.plotObjIndex
scopeObj = ScopeFigure(idfigure, nframes, wintitle, driver)
self.plotObjList.append(scopeObj)
def plotScope(self,
idfigure=None,
minvalue=None,
maxvalue=None,
xmin=None,
xmax=None,
wintitle='',
driver='plplot',
save=False,
gpath=None,
titleList=None,
xlabelList=None,
ylabelList=None,
type="power"):
if self.dataOutObj.flagNoData:
return 0
nframes = len(self.dataOutObj.channelList)
if len(self.plotObjList) <= self.plotObjIndex:
self.addScope(idfigure, nframes, wintitle, driver)
Daniel Valdez
Se agrega el metodo plotScope
r136
if type=="power":
data1D = self.dataOutObj.data * numpy.conjugate(self.dataOutObj.data)
data1D = data1D.real
if type =="iq":
data1D = self.dataOutObj.data
thisDatetime = datetime.datetime.fromtimestamp(self.dataOutObj.dataUtcTime)
dateTime = "%s"%(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
date = "%s"%(thisDatetime.strftime("%d-%b-%Y"))
figureTitle = "Scope Plot Radar Data: " + date
Daniel Valdez
r134
Daniel Valdez
Se agrega el metodo plotScope
r136 plotObj = self.plotObjList[self.plotObjIndex]
Daniel Valdez
r134
Daniel Valdez
Se agrega el metodo plotScope
r136 plotObj.plot1DArray(data1D,
self.dataOutObj.heightList,
self.dataOutObj.channelList,
xmin,
xmax,
minvalue,
maxvalue,
figureTitle,
save,
gpath)
Daniel Valdez
r134 self.plotObjIndex += 1
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122
def addIntegrator(self,N,timeInterval):
objCohInt = CoherentIntegrator(N,timeInterval)
self.integratorObjList.append(objCohInt)
Daniel Valdez
Lectura/Escritura de Rawdata y Pdata operando correctamente, se hicieron pruebas con datos de Drifts,Faraday e Imagenes.
r126 def addWriter(self, wrpath, blocksPerFile, profilesPerBlock):
Daniel Valdez
r134 writerObj = VoltageWriter(self.dataOutObj)
writerObj.setup(wrpath,blocksPerFile,profilesPerBlock)
self.writerObjList.append(writerObj)
Daniel Valdez
Realizando cambios para escritura de rawdata
r123
Daniel Valdez
Lectura/Escritura de Rawdata y Pdata operando correctamente, se hicieron pruebas con datos de Drifts,Faraday e Imagenes.
r126 def writeData(self, wrpath, blocksPerFile, profilesPerBlock):
Daniel Valdez
Realizando cambios para escritura de rawdata
r123
if self.dataOutObj.flagNoData:
return 0
if len(self.writerObjList) <= self.writerObjIndex:
Daniel Valdez
Lectura/Escritura de Rawdata y Pdata operando correctamente, se hicieron pruebas con datos de Drifts,Faraday e Imagenes.
r126 self.addWriter(wrpath, blocksPerFile, profilesPerBlock)
Daniel Valdez
Realizando cambios para escritura de rawdata
r123
self.writerObjList[self.writerObjIndex].putData()
self.writerObjIndex += 1
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122 def integrator(self, N=None, timeInterval=None):
if self.dataOutObj.flagNoData:
return 0
if len(self.integratorObjList) <= self.integratorObjIndex:
self.addIntegrator(N,timeInterval)
myCohIntObj = self.integratorObjList[self.integratorObjIndex]
myCohIntObj.exe(data=self.dataOutObj.data,timeOfData=None)
Daniel Valdez
r134
Daniel Valdez
En esta version se las funciones de LECTURA de rawdata y pdata operan satisfactoriamente.
r122
class CoherentIntegrator:
integ_counter = None
data = None
navg = None
buffer = None
nCohInt = None
def __init__(self, N=None,timeInterval=None):
self.data = None
self.navg = None
self.buffer = None
self.timeOut = None
self.exitCondition = False
self.isReady = False
self.nCohInt = N
self.integ_counter = 0
if timeInterval!=None:
self.timeIntervalInSeconds = timeInterval * 60. #if (type(timeInterval)!=integer) -> change this line
if ((timeInterval==None) and (N==None)):
raise ValueError, "N = None ; timeInterval = None"
if timeInterval == None:
self.timeFlag = False
else:
self.timeFlag = True
def exe(self, data, timeOfData):
if self.timeFlag:
if self.timeOut == None:
self.timeOut = timeOfData + self.timeIntervalInSeconds
if timeOfData < self.timeOut:
if self.buffer == None:
self.buffer = data
else:
self.buffer = self.buffer + data
self.integ_counter += 1
else:
self.exitCondition = True
else:
if self.integ_counter < self.nCohInt:
if self.buffer == None:
self.buffer = data
else:
self.buffer = self.buffer + data
self.integ_counter += 1
if self.integ_counter == self.nCohInt:
self.exitCondition = True
if self.exitCondition:
self.data = self.buffer
self.navg = self.integ_counter
self.isReady = True
self.buffer = None
self.timeOut = None
self.integ_counter = 0
self.exitCondition = False
if self.timeFlag:
self.buffer = data
self.timeOut = timeOfData + self.timeIntervalInSeconds
else:
self.isReady = False