##// END OF EJS Templates
Se agrego manejo de excepciones para la lectura del header de los archivos en formato Jicamarca....
Miguel Valdez -
r52:1dd31bd293df
parent child
Show More
@@ -11,7 +11,7 class Data:
11 11 '''
12 12 classdocs
13 13 '''
14 __type = None
14 type = None
15 15
16 16 def __init__(self):
17 17 '''
@@ -50,7 +50,7 class JROData(Data):
50 50 m_ProcessingHeader = ProcessingHeader()
51 51 m_SystemHeader = SystemHeader()
52 52 m_BasicHeader = BasicHeader()
53 m_Noise = Noise()
53 m_NoiseObj = Noise()
54 54
55 55 data = None
56 56 dataType = None
@@ -56,16 +56,18 class BasicHeader(Header):
56 56 pass
57 57
58 58 def read(self, fp):
59
60 header = numpy.fromfile(fp, self.struct,1)
61 self.size = header['nSize'][0]
62 self.version = header['nVersion'][0]
63 self.dataBlock = header['nDataBlockId'][0]
64 self.utc = header['nUtime'][0]
65 self.miliSecond = header['nMilsec'][0]
66 self.timeZone = header['nTimezone'][0]
67 self.dstFlag = header['nDstflag'][0]
68 self.errorCount = header['nErrorCount'][0]
59 try:
60 header = numpy.fromfile(fp, self.struct,1)
61 self.size = header['nSize'][0]
62 self.version = header['nVersion'][0]
63 self.dataBlock = header['nDataBlockId'][0]
64 self.utc = header['nUtime'][0]
65 self.miliSecond = header['nMilsec'][0]
66 self.timeZone = header['nTimezone'][0]
67 self.dstFlag = header['nDstflag'][0]
68 self.errorCount = header['nErrorCount'][0]
69 except:
70 return 0
69 71
70 72 return 1
71 73
@@ -104,14 +106,16 class SystemHeader(Header):
104 106
105 107
106 108 def read(self, fp):
107 header = numpy.fromfile(fp,self.struct,1)
108 self.size = header['nSize'][0]
109 self.numSamples = header['nNumSamples'][0]
110 self.numProfiles = header['nNumProfiles'][0]
111 self.numChannels = header['nNumChannels'][0]
112 self.adcResolution = header['nADCResolution'][0]
113 self.pciDioBusWidth = header['nPCDIOBusWidth'][0]
114
109 try:
110 header = numpy.fromfile(fp,self.struct,1)
111 self.size = header['nSize'][0]
112 self.numSamples = header['nNumSamples'][0]
113 self.numProfiles = header['nNumProfiles'][0]
114 self.numChannels = header['nNumChannels'][0]
115 self.adcResolution = header['nADCResolution'][0]
116 self.pciDioBusWidth = header['nPCDIOBusWidth'][0]
117 except:
118 return 0
115 119
116 120 return 1
117 121
@@ -184,27 +188,30 class RadarControllerHeader(Header):
184 188
185 189
186 190 def read(self, fp):
187 header = numpy.fromfile(fp,self.struct,1)
188 self.size = header['nSize'][0]
189 self.expType = header['nExpType'][0]
190 self.nTx = header['nNTx'][0]
191 self.ipp = header['fIpp'][0]
192 self.txA = header['fTxA'][0]
193 self.txB = header['fTxB'][0]
194 self.numWindows = header['nNumWindows'][0]
195 self.numTaus = header['nNumTaus'][0]
196 self.codeType = header['nCodeType'][0]
197 self.line6Function = header['nLine6Function'][0]
198 self.line5Function = header['nLine5Function'][0]
199 self.fClock = header['fClock'][0]
200 self.prePulseBefore = header['nPrePulseBefore'][0]
201 self.prePulserAfter = header['nPrePulseAfter'][0]
202 self.rangeIpp = header['sRangeIPP'][0]
203 self.rangeTxA = header['sRangeTxA'][0]
204 self.rangeTxB = header['sRangeTxB'][0]
205 # jump Dynamic Radar Controller Header
206 jumpHeader = self.size - 116
207 self.dynamic = numpy.fromfile(fp,numpy.dtype('byte'),jumpHeader)
191 try:
192 header = numpy.fromfile(fp,self.struct,1)
193 self.size = header['nSize'][0]
194 self.expType = header['nExpType'][0]
195 self.nTx = header['nNTx'][0]
196 self.ipp = header['fIpp'][0]
197 self.txA = header['fTxA'][0]
198 self.txB = header['fTxB'][0]
199 self.numWindows = header['nNumWindows'][0]
200 self.numTaus = header['nNumTaus'][0]
201 self.codeType = header['nCodeType'][0]
202 self.line6Function = header['nLine6Function'][0]
203 self.line5Function = header['nLine5Function'][0]
204 self.fClock = header['fClock'][0]
205 self.prePulseBefore = header['nPrePulseBefore'][0]
206 self.prePulserAfter = header['nPrePulseAfter'][0]
207 self.rangeIpp = header['sRangeIPP'][0]
208 self.rangeTxA = header['sRangeTxA'][0]
209 self.rangeTxB = header['sRangeTxB'][0]
210 # jump Dynamic Radar Controller Header
211 jumpHeader = self.size - 116
212 self.dynamic = numpy.fromfile(fp,numpy.dtype('byte'),jumpHeader)
213 except:
214 return 0
208 215
209 216 return 1
210 217
@@ -287,34 +294,36 class ProcessingHeader(Header):
287 294 self.shif_fft = False
288 295
289 296 def read(self, fp):
290 header = numpy.fromfile(fp,self.struct,1)
291 self.size = header['nSize'][0]
292 self.dataType = header['nDataType'][0]
293 self.blockSize = header['nSizeOfDataBlock'][0]
294 self.profilesPerBlock = header['nProfilesperBlock'][0]
295 self.dataBlocksPerFile = header['nDataBlocksperFile'][0]
296 self.numWindows = header['nNumWindows'][0]
297 self.processFlags = header['nProcessFlags']
298 self.coherentInt = header['nCoherentIntegrations'][0]
299 self.incoherentInt = header['nIncoherentIntegrations'][0]
300 self.totalSpectra = header['nTotalSpectra'][0]
301 self.samplingWindow = numpy.fromfile(fp,self.structSamplingWindow,self.numWindows)
302 self.numHeights = numpy.sum(self.samplingWindow['nsa'])
303 self.firstHeight = self.samplingWindow['h0']
304 self.deltaHeight = self.samplingWindow['dh']
305 self.samplesWin = self.samplingWindow['nsa']
306 self.spectraComb = numpy.fromfile(fp,'u1',2*self.totalSpectra)
307
308 if self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE == PROCFLAG.DEFINE_PROCESS_CODE:
309 self.numCode = numpy.fromfile(fp,'<u4',1)
310 self.numBaud = numpy.fromfile(fp,'<u4',1)
311 self.codes = numpy.fromfile(fp,'<f4',self.numCode*self.numBaud).reshape(self.numBaud,self.numCode)
312
313 if self.processFlags & PROCFLAG.SHIFT_FFT_DATA == PROCFLAG.SHIFT_FFT_DATA:
314 self.shif_fft = True
315 else:
316 self.shif_fft = False
297 try:
298 header = numpy.fromfile(fp,self.struct,1)
299 self.size = header['nSize'][0]
300 self.dataType = header['nDataType'][0]
301 self.blockSize = header['nSizeOfDataBlock'][0]
302 self.profilesPerBlock = header['nProfilesperBlock'][0]
303 self.dataBlocksPerFile = header['nDataBlocksperFile'][0]
304 self.numWindows = header['nNumWindows'][0]
305 self.processFlags = header['nProcessFlags']
306 self.coherentInt = header['nCoherentIntegrations'][0]
307 self.incoherentInt = header['nIncoherentIntegrations'][0]
308 self.totalSpectra = header['nTotalSpectra'][0]
309 self.samplingWindow = numpy.fromfile(fp,self.structSamplingWindow,self.numWindows)
310 self.numHeights = numpy.sum(self.samplingWindow['nsa'])
311 self.firstHeight = self.samplingWindow['h0']
312 self.deltaHeight = self.samplingWindow['dh']
313 self.samplesWin = self.samplingWindow['nsa']
314 self.spectraComb = numpy.fromfile(fp,'u1',2*self.totalSpectra)
315
316 if self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE == PROCFLAG.DEFINE_PROCESS_CODE:
317 self.numCode = numpy.fromfile(fp,'<u4',1)
318 self.numBaud = numpy.fromfile(fp,'<u4',1)
319 self.codes = numpy.fromfile(fp,'<f4',self.numCode*self.numBaud).reshape(self.numBaud,self.numCode)
317 320
321 if self.processFlags & PROCFLAG.SHIFT_FFT_DATA == PROCFLAG.SHIFT_FFT_DATA:
322 self.shif_fft = True
323 else:
324 self.shif_fft = False
325 except:
326 return 0
318 327
319 328 return 1
320 329
@@ -13,6 +13,7 class Spectra(JROData):
13 13 classdocs
14 14 '''
15 15
16 type = "Spectra"
16 17 data_spc = None
17 18 data_cspc = None
18 19 data_dc = None
@@ -32,11 +33,13 class Spectra(JROData):
32 33
33 34 self.m_BasicHeader = BasicHeader()
34 35
35 self.noise = Noise()
36 m_NoiseObj = Noise()
36 37
37 38 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
38 39 self.data_spc = None
40
39 41 self.data_cspc = None
42
40 43 self.data_dc = None
41 44
42 45 self.heights = None
@@ -13,6 +13,7 class Voltage(JROData):
13 13 classdocs
14 14 '''
15 15
16 type = "Voltage"
16 17 data = None
17 18 profileIndex = None
18 19
@@ -29,7 +30,7 class Voltage(JROData):
29 30
30 31 self.m_BasicHeader= BasicHeader()
31 32
32 self.noise = Noise()
33 m_NoiseObj = Noise()
33 34
34 35 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
35 36 self.data = None
General Comments 0
You need to be logged in to leave comments. Login now