''' Created on 23/01/2012 @author $Author: vsarmiento $ @version $Id: HeaderIO.py 37 2012-03-26 22:55:13Z vsarmiento $ ''' import numpy import copy class Header: def __init__(self): raise def copy(self): return copy.deepcopy(self) def read(): pass def write(): pass class BasicHeader(Header): size = None version = None dataBlock = None utc = None miliSecond = None timeZone = None dstFlag = None errorCount = None struct = None def __init__(self): self.size = 0 self.version = 0 self.dataBlock = 0 self.utc = 0 self.miliSecond = 0 self.timeZone = 0 self.dstFlag = 0 self.errorCount = 0 self.struct = numpy.dtype([ ('nSize',' 0: fp.seek(jumpFp) except: return 0 return 1 def write(self, fp): headerTuple = (self.size, self.expType, self.nTx, self.ipp, self.txA, self.txB, self.numWindows, self.numTaus, self.codeType, self.line6Function, self.line5Function, self.fClock, self.prePulseBefore, self.prePulserAfter, self.rangeIpp, self.rangeTxA, self.rangeTxB) header = numpy.array(headerTuple,self.struct) header.tofile(fp) dynamic = self.dynamic dynamic.tofile(fp) return 1 class ProcessingHeader(Header): size = None dataType = None blockSize = None profilesPerBlock = None dataBlocksPerFile = None numWindows = None processFlags = None coherentInt = None incoherentInt = None totalSpectra = None struct = None flag_dc = None flag_cspc = None def __init__(self): self.size = 0 self.dataType = 0 self.blockSize = 0 self.profilesPerBlock = 0 self.dataBlocksPerFile = 0 self.numWindows = 0 self.processFlags = 0 self.coherentInt = 0 self.incoherentInt = 0 self.totalSpectra = 0 self.struct = numpy.dtype([ ('nSize',' 0: self.flag_cspc = True except: return 0 return 1 def write(self, fp): headerTuple = (self.size, self.dataType, self.blockSize, self.profilesPerBlock, self.dataBlocksPerFile, self.numWindows, self.processFlags, self.coherentInt, self.incoherentInt, self.totalSpectra) header = numpy.array(headerTuple,self.struct) header.tofile(fp) if self.numWindows != 0: sampleWindowTuple = (self.firstHeight,self.deltaHeight,self.samplesWin) samplingWindow = numpy.array(sampleWindowTuple,self.structSamplingWindow) samplingWindow.tofile(fp) if self.totalSpectra != 0: spectraComb = numpy.array([],numpy.dtype('u1')) spectraComb = self.spectraComb spectraComb.tofile(fp) if self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE == PROCFLAG.DEFINE_PROCESS_CODE: numCode = self.numCode numCode.tofile(fp) numBaud = self.numBaud numBaud.tofile(fp) code = self.code.reshape(numCode*numBaud) code.tofile(fp) return 1 class RCfunction: NONE=0 FLIP=1 CODE=2 SAMPLING=3 LIN6DIV256=4 SYNCHRO=5 class nCodeType: NONE=0 USERDEFINE=1 BARKER2=2 BARKER3=3 BARKER4=4 BARKER5=5 BARKER7=6 BARKER11=7 BARKER13=8 AC128=9 COMPLEMENTARYCODE2=10 COMPLEMENTARYCODE4=11 COMPLEMENTARYCODE8=12 COMPLEMENTARYCODE16=13 COMPLEMENTARYCODE32=14 COMPLEMENTARYCODE64=15 COMPLEMENTARYCODE128=16 CODE_BINARY28=17 class PROCFLAG: COHERENT_INTEGRATION = numpy.uint32(0x00000001) DECODE_DATA = numpy.uint32(0x00000002) SPECTRA_CALC = numpy.uint32(0x00000004) INCOHERENT_INTEGRATION = numpy.uint32(0x00000008) POST_COHERENT_INTEGRATION = numpy.uint32(0x00000010) SHIFT_FFT_DATA = numpy.uint32(0x00000020) DATATYPE_CHAR = numpy.uint32(0x00000040) DATATYPE_SHORT = numpy.uint32(0x00000080) DATATYPE_LONG = numpy.uint32(0x00000100) DATATYPE_INT64 = numpy.uint32(0x00000200) DATATYPE_FLOAT = numpy.uint32(0x00000400) DATATYPE_DOUBLE = numpy.uint32(0x00000800) DATAARRANGE_CONTIGUOUS_CH = numpy.uint32(0x00001000) DATAARRANGE_CONTIGUOUS_H = numpy.uint32(0x00002000) DATAARRANGE_CONTIGUOUS_P = numpy.uint32(0x00004000) SAVE_CHANNELS_DC = numpy.uint32(0x00008000) DEFLIP_DATA = numpy.uint32(0x00010000) DEFINE_PROCESS_CODE = numpy.uint32(0x00020000) ACQ_SYS_NATALIA = numpy.uint32(0x00040000) ACQ_SYS_ECHOTEK = numpy.uint32(0x00080000) ACQ_SYS_ADRXD = numpy.uint32(0x000C0000) ACQ_SYS_JULIA = numpy.uint32(0x00100000) ACQ_SYS_XXXXXX = numpy.uint32(0x00140000) EXP_NAME_ESP = numpy.uint32(0x00200000) CHANNEL_NAMES_ESP = numpy.uint32(0x00400000) OPERATION_MASK = numpy.uint32(0x0000003F) DATATYPE_MASK = numpy.uint32(0x00000FC0) DATAARRANGE_MASK = numpy.uint32(0x00007000) ACQ_SYS_MASK = numpy.uint32(0x001C0000)