##// END OF EJS Templates
DATAIO.py:...
DATAIO.py: Contiene las clases JRODatareader y JRODataWriter, que contienen metodos necesarios para leer y escribir archivos en formato jicamarca o pdata (.r o .pdata). Valentin Sarmiento - martes 10 de abril de 2012

File last commit:

r53:f934921c259c
r58:d07c26af67ec
Show More
SpectraIO.py
501 lines | 15.9 KiB | text/x-python | PythonLexer
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 '''
File: SpectraIO.py
Created on 20/02/2012
@author $Author$
@version $Id$
'''
import os, sys
import numpy
import glob
import fnmatch
import time, datetime
path = os.path.split(os.getcwd())[0]
sys.path.append(path)
Miguel Valdez
r49 from Model.JROHeader import *
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 from Model.Spectra import Spectra
Miguel Valdez
r49 from DataIO import JRODataReader
from DataIO import JRODataWriter
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 from DataIO import isNumber
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
r49 class SpectraReader( JRODataReader ):
Victor Sarmiento
r30 """
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura
Victor Sarmiento
r30 de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones)
son almacenados en tres buffer's para el Self Spectra, el Cross Spectra y el DC Channel.
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader,
RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la
cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de
datos desde el "buffer" cada vez que se ejecute el metodo "getData".
Victor Sarmiento
r30 Example:
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 dpath = "/home/myuser/data"
startTime = datetime.datetime(2010,1,20,0,0,0,0,0,0)
endTime = datetime.datetime(2010,1,21,23,59,59,0,0,0)
readerObj = SpectraReader()
readerObj.setup(dpath, startTime, endTime)
while(True):
readerObj.getData()
print readerObj.m_Spectra.data
if readerObj.noMoreFiles:
break
"""
Victor Sarmiento
r30
Victor Sarmiento
SPECTRAIO.py:...
r47 def __init__(self,m_Spectra=None):
Victor Sarmiento
r30 """
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 Inicializador de la clase SpectraReader para la lectura de datos de espectros.
Victor Sarmiento
r30
Inputs:
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 m_Spectra : Objeto de la clase Spectra. Este objeto sera utilizado para
almacenar un perfil de datos cada vez que se haga un requerimiento
(getData). El perfil sera obtenido a partir del buffer de datos,
si el buffer esta vacio se hara un nuevo proceso de lectura de un
bloque de datos.
Si este parametro no es pasado se creara uno internamente.
Victor Sarmiento
r30
Affected:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.m_BasicHeader
self.m_SystemHeader
self.m_RadarControllerHeader
self.m_ProcessingHeader
Victor Sarmiento
r30
Return : None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 """
if m_Spectra == None:
m_Spectra = Spectra()
if not( isinstance(m_Spectra, Spectra) ):
raise ValueError, "in SpectraReader, m_Spectra must be an Spectra class object"
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj = m_Spectra
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
self.m_BasicHeader = BasicHeader()
self.m_SystemHeader = SystemHeader()
self.m_RadarControllerHeader = RadarControllerHeader()
self.m_ProcessingHeader = ProcessingHeader()
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.fp = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.idFile = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.startDateTime = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.endDateTime = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.dataType = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.fileSizeByHeader = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.pathList = []
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
self.filenameList = []
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.lastUTTime = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.maxTimeStep = 30
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.flagIsNewFile = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
self.flagResetProcessing = 0
self.flagIsNewBlock = 0
self.noMoreFiles = 0
self.nReadBlocks = 0
self.online = 0
self.firstHeaderSize = 0
self.basicHeaderSize = 24
self.filename = None
self.fileSize = None
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc = None
self.data_cspc = None
self.data_dc = None
Victor Sarmiento
r30
self.nChannels = 0
self.nPairs = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.pts2read_SelfSpectra = 0
self.pts2read_CrossSpectra = 0
self.pts2read_DCchannels = 0
self.blocksize = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.datablockIndex = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.ippSeconds = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
self.nSelfChannels = 0
self.nCrossPairs = 0
Victor Sarmiento
SpectraIO.py...
r36 self.datablock_id = 9999
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.delay = 2 #seconds
self.nTries = 3 #quantity tries
self.nFiles = 3 #number of files for searching
self.year = 0
self.doy = 0
self.set = 0
self.ext = ".pdata"
self.path = None
self.optchar = "P"
Victor Sarmiento
SPECTRAIO.py:...
r47 self.nBlocks = 0
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def hasNotDataInBuffer(self):
return 1
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def getBlockDimension(self):
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
r30 self.nChannels = 0
self.nPairs = 0
Victor Sarmiento
SpectraIO.py, modificada por Valentin 27/2/2012 - 12:23
r28
Victor Sarmiento
r30 for i in range( 0, self.m_ProcessingHeader.totalSpectra*2, 2 ):
if self.m_ProcessingHeader.spectraComb[i] == self.m_ProcessingHeader.spectraComb[i+1]:
self.nChannels = self.nChannels + 1
else:
self.nPairs = self.nPairs + 1
pts2read = self.m_ProcessingHeader.profilesPerBlock * self.m_ProcessingHeader.numHeights
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.pts2read_SelfSpectra = int( pts2read * self.nChannels )
self.pts2read_CrossSpectra = int( pts2read * self.nPairs )
self.pts2read_DCchannels = int( self.m_ProcessingHeader.numHeights * self.m_SystemHeader.numChannels )
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj.nChannels = self.nChannels
self.m_DataObj.nPairs = self.nPairs
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def readBlock(self):
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 """
Victor Sarmiento
r30 Lee el bloque de datos desde la posicion actual del puntero del archivo
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 (self.fp) y actualiza todos los parametros relacionados al bloque de datos
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 (metadata + data). La data leida es almacenada en el buffer y el contador del buffer
es seteado a 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
r30 Return: None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Variables afectadas:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.datablockIndex
self.flagIsNewFile
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.flagIsNewBlock
self.nReadBlocks
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc
self.data_cspc
self.data_dc
Victor Sarmiento
SPECTRAIO.py:...
r47
Exceptions:
Si un bloque leido no es un bloque valido
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 """
Victor Sarmiento
SPECTRAIO.py:...
r47 #self.datablock_id = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 #self.flagIsNewFile = 0
Victor Sarmiento
SPECTRAIO.py:...
r47 #self.flagIsNewBlock = 1
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
SPECTRAIO.py:...
r47 blockOk_flag = False
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 fpointer = self.fp.tell()
Victor Sarmiento
SpectraIO. Clase para escribir y leer espectros...
r33
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.m_ProcessingHeader.numHeights*self.m_SystemHeader.numChannels) )
Victor Sarmiento
SpectraIO. Clase para escribir y leer espectros...
r33
Victor Sarmiento
SpectraIO.py:...
r35 if self.online:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if (spc.size + cspc.size + dc.size) != self.blocksize:
for nTries in range( self.nTries ):
Victor Sarmiento
SPECTRAIO.py:...
r47 #nTries = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 #while( nTries < self.nTries ):
Victor Sarmiento
SPECTRAIO.py:...
r47 #nTries += 1
print "\tWaiting for the next block, try %03d ..." % (nTries+1)
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 time.sleep( self.delay )
self.fp.seek( fpointer )
fpointer = self.fp.tell()
spc = numpy.fromfile( self.fp, self.dataType[0], self.pts2read_SelfSpectra )
cspc = numpy.fromfile( self.fp, self.dataType, self.pts2read_CrossSpectra )
dc = numpy.fromfile( self.fp, self.dataType, self.pts2read_DCchannels ) #int(self.m_ProcessingHeader.numHeights*self.m_SystemHeader.numChannels) )
Victor Sarmiento
SPECTRAIO.py:...
r47
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if (spc.size + cspc.size + dc.size) == self.blocksize:
Victor Sarmiento
SPECTRAIO.py:...
r47 blockOk_flag = True
Victor Sarmiento
SpectraIO.py:...
r35 break
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 #if (spc.size + cspc.size + dc.size) == self.blocksize:
Victor Sarmiento
SPECTRAIO.py:...
r47 # nTries = 0
# break
if not( blockOk_flag ):
return 0
#if nTries > 0:
# return 0
try:
spc = spc.reshape( (self.nChannels, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
cspc = cspc.reshape( (self.nPairs, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D
dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D
except:
print "Data file %s is invalid" % self.filename
return 0
Miguel Valdez
Desplazamiento automatico de los puntos de FFT en el modulo de lectura de espectros.
r26
Victor Sarmiento
r30 if not( self.m_ProcessingHeader.shif_fft ):
spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
Miguel Valdez
Desplazamiento automatico de los puntos de FFT en el modulo de lectura de espectros.
r26
Victor Sarmiento
r30 spc = numpy.transpose( spc, (0,2,1) )
cspc = numpy.transpose( cspc, (0,2,1) )
Miguel Valdez
Desplazamiento automatico de los puntos de FFT en el modulo de lectura de espectros.
r26 #dc = numpy.transpose(dc, (0,2,1))
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc = spc
self.data_cspc = cspc['real'] + cspc['imag']*1j
self.data_dc = dc['real'] + dc['imag']*1j
Victor Sarmiento
r30
Victor Sarmiento
SPECTRAIO.py:...
r47 self.datablock_id = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.flagIsNewFile = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.flagIsNewBlock = 1
Victor Sarmiento
SPECTRAIO.py:...
r47
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.nReadBlocks += 1
Victor Sarmiento
SPECTRAIO.py:...
r47 self.nBlocks += 1
Victor Sarmiento
r30
Victor Sarmiento
SPECTRAIO.py:...
r47 return 1
Victor Sarmiento
r30
Victor Sarmiento
SPECTRAIO.py:...
r47 def getData(self):
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 """
Victor Sarmiento
r30 Copia el buffer de lectura a la clase "Spectra",
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de
lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock"
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Return:
Victor Sarmiento
r30 0 : Si no hay mas archivos disponibles
1 : Si hizo una buena copia del buffer
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
SpectraIO.py...
r36 Affected:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj
self.datablockIndex
Victor Sarmiento
r30 self.flagResetProcessing
self.flagIsNewBlock
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 """
self.flagResetProcessing = 0
self.flagIsNewBlock = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if self.hasNotDataInBuffer():
Victor Sarmiento
SpectraIO. Clase para escribir y leer espectros...
r33
Victor Sarmiento
SPECTRAIO.py:...
r47 if not( self.readNextBlock() ):
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.setNextFile()
Victor Sarmiento
SPECTRAIO.py:...
r47 return 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj.m_BasicHeader = self.m_BasicHeader.copy()
self.m_DataObj.m_ProcessingHeader = self.m_ProcessingHeader.copy()
self.m_DataObj.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
self.m_DataObj.m_SystemHeader = self.m_SystemHeader.copy()
self.m_DataObj.heights = self.heights
self.m_DataObj.dataType = self.dataType
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
if self.noMoreFiles == 1:
print 'Process finished'
return 0
#data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if self.data_dc == None:
Victor Sarmiento
SPECTRAIO.py:...
r47 self.m_Voltage.flagNoData = True
return 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj.flagNoData = False
self.m_DataObj.flagResetProcessing = self.flagResetProcessing
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj.data_spc = self.data_spc
self.m_DataObj.data_cspc = self.data_cspc
self.m_DataObj.data_dc = self.data_dc
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
#call setData - to Data Object
Victor Sarmiento
r30 #self.datablock_id += 1
#self.idProfile += 1
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 return 1
Miguel Valdez
r49 class SpectraWriter( JRODataWriter ):
Victor Sarmiento
r30 """
Esta clase permite escribir datos de espectros a archivos procesados (.pdata). La escritura
de los datos siempre se realiza por bloques.
"""
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
SPECTRAIO.py:...
r47 def __init__(self,m_Spectra=None):
Victor Sarmiento
r30 """
Inicializador de la clase SpectraWriter para la escritura de datos de espectros.
Affected:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj
Victor Sarmiento
r30 self.m_BasicHeader
self.m_SystemHeader
self.m_RadarControllerHeader
self.m_ProcessingHeader
Return: None
"""
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 if m_Spectra == None:
m_Spectra = Spectra()
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.m_DataObj = m_Spectra
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.fp = None
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.format = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.blocksCounter = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.setFile = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.flagIsNewFile = 1
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.dataType = None
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.ext = ".pdata"
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.path = None
self.optchar = "P"
self.shape_spc_Buffer = None
self.shape_cspc_Buffer = None
self.shape_dc_Buffer = None
Victor Sarmiento
r30
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.nWriteBlocks = 0
self.flagIsNewBlock = 0
self.noMoreFiles = 0
self.filename = None
self.m_BasicHeader= BasicHeader()
self.m_SystemHeader = SystemHeader()
self.m_RadarControllerHeader = RadarControllerHeader()
self.m_ProcessingHeader = ProcessingHeader()
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc = None
self.data_cspc = None
self.data_dc = None
Victor Sarmiento
SPECTRAIO.py:...
r47
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def hasAllDataInBuffer(self):
return 1
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def setBlockDimension(self):
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.shape_spc_Buffer = (self.m_DataObj.nChannels,
self.m_ProcessingHeader.numHeights,
self.m_ProcessingHeader.profilesPerBlock)
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.shape_cspc_Buffer = (self.m_DataObj.nPairs,
self.m_ProcessingHeader.numHeights,
self.m_ProcessingHeader.profilesPerBlock)
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.shape_dc_Buffer = (self.m_SystemHeader.numChannels,
self.m_ProcessingHeader.numHeights)
Victor Sarmiento
r30
Victor Sarmiento
SPECTRAIO.py:...
r47
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 def writeBlock(self):
Victor Sarmiento
r30 """
Escribe el buffer en el file designado
Affected:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc
self.data_cspc
self.data_dc
self.flagIsNewFile
Victor Sarmiento
r30 self.flagIsNewBlock
self.nWriteBlocks
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.blocksCounter
Victor Sarmiento
r30
Return: None
"""
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 spc = numpy.transpose( self.data_spc, (0,2,1) )
Victor Sarmiento
r30 if not( self.m_ProcessingHeader.shif_fft ):
spc = numpy.roll( spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
data = spc.reshape((-1))
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 data.tofile(self.fp)
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 data = numpy.zeros( self.shape_cspc_Buffer, self.dataType )
cspc = numpy.transpose( self.data_cspc, (0,2,1) )
Victor Sarmiento
r30 if not( self.m_ProcessingHeader.shif_fft ):
cspc = numpy.roll( cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones
data['real'] = cspc.real
data['imag'] = cspc.imag
data = data.reshape((-1))
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 data.tofile(self.fp)
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 data = numpy.zeros( self.shape_dc_Buffer, self.dataType )
dc = self.data_dc
Victor Sarmiento
r30 data['real'] = dc.real
data['imag'] = dc.imag
data = data.reshape((-1))
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 data.tofile(self.fp)
Victor Sarmiento
r30
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc.fill(0)
self.data_cspc.fill(0)
self.data_dc.fill(0)
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.flagIsNewFile = 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.flagIsNewBlock = 1
self.nWriteBlocks += 1
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.blocksCounter += 1
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
SPECTRAIO.py:...
r47 def putData(self):
Victor Sarmiento
r30 """
Setea un bloque de datos y luego los escribe en un file
Affected:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc
self.data_cspc
self.data_dc
Victor Sarmiento
r30
Return:
0 : Si no hay data o no hay mas files que puedan escribirse
1 : Si se escribio la data de un bloque en un file
"""
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 self.flagIsNewBlock = 0
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if self.m_DataObj.flagNoData:
Victor Sarmiento
r30 return 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 if self.m_DataObj.flagResetProcessing:
self.data_spc.fill(0)
self.data_cspc.fill(0)
self.data_dc.fill(0)
self.setNextFile()
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.data_spc = self.m_DataObj.data_spc
self.data_cspc = self.m_DataObj.data_cspc
self.data_dc = self.m_DataObj.data_dc
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
r30 if True:
Miguel Valdez
Se modifico la clase JRODataReader y JRODataWriter para albergar todos los metodos comunes entre Voltaje y Espectra. Solo los metodos particulares se dejaron en la clase VoltageReader, VoltageWriter, SpectraReader y SpectraWriter
r53 self.getHeader()
Miguel Valdez
SpectraIO.py: Salto de archivos online ha sido agregado
r29 self.writeNextBlock()
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24 if self.noMoreFiles:
Victor Sarmiento
r30 #print 'Process finished'
return 0
Victor Sarmiento
Modulo de lectura de Espectros agregado
r24
Victor Sarmiento
r30 return 1