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