diff --git a/schainpy/IO/Data.py b/schainpy/IO/Data.py index bc2ffab..3e3d522 100644 --- a/schainpy/IO/Data.py +++ b/schainpy/IO/Data.py @@ -7,13 +7,13 @@ Created on 23/01/2012 class DataReader: - __buffer = 0 - __buffer_count = 0 + def __init__(self): - pass + __buffer = 0 + __buffer_count = 0 class DataWriter: - __buffer = 0 - __buffer_count = 0 + def __init__(self): - pass \ No newline at end of file + __buffer = 0 + __buffer_count = 0 \ No newline at end of file diff --git a/schainpy/IO/Header.py b/schainpy/IO/Header.py index 23a23a6..664f9f8 100644 --- a/schainpy/IO/Header.py +++ b/schainpy/IO/Header.py @@ -46,26 +46,25 @@ class PROCFLAG: class BasicHeader: - size = 0 - version = 0 - dataBlock = 0 - utc = 0 - miliSecond = 0 - timeZone = 0 - dstFlag = 0 - errorCount = 0 - struct = numpy.dtype([ - ('nSize','= self.m_ProcessingHeader.dataBlocksPerFile): + self.__fp.close() + return 0 + + timeTuple = time.localtime(self.m_Voltage.m_BasicHeader.utc) # utc from m_Voltage + file = 'D%4.4d%3.3d%3.3d%s' % (timeTuple.tm_year,timeTuple.tm_doy,setFile,ext) + subfolder = 'D%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_doy) + tmp = os.path.join(path,subfolder) + if not(os.path.exists(tmp)): + os.mkdir(tmp) + + filename = os.path.join(path,subfolder,file) + fp = open(filename,'wb') + + + + #guardando atributos + self.filename = filename + self.__subfolder = subfolder + self.__fp = fp + self.__setFile = setFile + self.__flagIsNewFile = 1 + + print 'Writing the file: %s'%self.filename + + return 1 + + + def __setNewBlock(self): + if self.__fp == None: + return 0 + + if self.__flagIsNewFile: + return 1 + + #Bloques completados? + if self.__blocksCounter < self.m_ProcessingHeader.profilesPerBlock: + self.__writeBasicHeader() + return 1 + + if not(self.__setNextFile()): + return 0 + + self.__writeFirstHeader() + + return 1 + + def __writeBlock(self): + + numpy.save(self.__fp,self.__buffer) + + self.__buffer = numpy.array([],self.__dataType) + + self.__buffer_id = 0 + + self.__flagIsNewFile = 0 + + self.flagIsNewBlock = 1 + + self.nWriteBlocks += 1 + + self.__blocksCounter += 1 + + def writeNextBlock(self): + if not(self.__setNewBlock()): + return 0 + + self.__writeBlock() + + return 1 + + def __hasAllDataInBuffer(self): + if self.__buffer_id >= self.m_ProcessingHeader.profilesPerBlock: + return 1 + + return 0 + + def putData(self): + self.flagIsNewBlock = 0 + + if self.m_Voltage.noData: + return None + + shape = self.m_Voltage.data.shape + data = numpy.zeros(shape,self.__dataType) + data['real'] = self.m_Voltage.data.real + data['imag'] = self.m_Voltage.data.imag + data = data.reshape((-1)) + + self.__buffer = numpy.hstack((self.__buffer,data)) + + self.__buffer_id += 1 + + if __hasAllDataInBuffer(): + self.writeNextBlock() + + + if self.noMoreFiles: + print 'Process finished' + return None + + return 1 + - \ No newline at end of file + def setup(self,path,set=None,format=None): + + if set == None: + set = -1 + else: + set -= 1 + + if format == 'hdf5': + ext = '.hdf5' + print 'call hdf5 library' + return 0 + + if format == 'rawdata': + ext = '.r' + + #call to config_headers + + self.__setFile = set + + if not(self.__setNextFile()): + print "zzzzzzzzzzzz" + return 0 + + self.__writeFirstHeader() # dentro de esta funcion se debe setear e __dataType + + self.__buffer = numpy.array([],self.__dataType) + + + + def __writeBasicHeader(self): + pass + + def __writeFirstHeader(self): + pass \ No newline at end of file diff --git a/schainpy/Model/Voltage.py b/schainpy/Model/Voltage.py index 06cad9a..768e356 100644 --- a/schainpy/Model/Voltage.py +++ b/schainpy/Model/Voltage.py @@ -18,25 +18,30 @@ class Voltage(Data): ''' - m_RadarControllerHeader= RadarControllerHeader() - - m_ProcessingHeader= ProcessingHeader() - - m_SystemHeader= SystemHeader() - - m_BasicHeader= BasicHeader() - - #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) - data = None - noData = True def __init__(self): ''' Constructor ''' - pass + + self.m_RadarControllerHeader= RadarControllerHeader() + + self.m_ProcessingHeader= ProcessingHeader() + + self.m_SystemHeader= SystemHeader() + + self.m_BasicHeader= BasicHeader() + + #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) + self.data = None + + self.dataType = None + + self.noData = True + + def copy(self): obj = Voltage()