##// END OF EJS Templates
-Se ha cambiado la forma de calcular los segundos en tiempo local con el parametro Timezone tomado del archivo leido....
Miguel Valdez -
r344:ff2597a84a69
parent child
Show More
@@ -137,8 +137,16 class JROData:
137
137
138 flagTimeBlock = False
138 flagTimeBlock = False
139
139
140 useLocalTime = False
141
140 utctime = None
142 utctime = None
141
143
144 timeZone = None
145
146 dstFlag = None
147
148 errorCount = None
149
142 blocksize = None
150 blocksize = None
143
151
144 nCode = None
152 nCode = None
@@ -213,17 +221,24 class JROData:
213
221
214 return heis
222 return heis
215
223
224 def getltctime(self):
225
226 if self.useLocalTime:
227 return self.utctime - self.timeZone*60
228
229 return self.utctime
230
216 def getDatatime(self):
231 def getDatatime(self):
217
232
218 datatime = datetime.datetime.utcfromtimestamp(self.utctime)
233 datatime = datetime.datetime.utcfromtimestamp(self.ltctime)
219 return datatime
234 return datatime
220
235
221 def getTimeRange(self):
236 def getTimeRange(self):
222
237
223 datatime = []
238 datatime = []
224
239
225 datatime.append(self.utctime)
240 datatime.append(self.ltctime)
226 datatime.append(self.utctime + self.timeInterval)
241 datatime.append(self.ltctime + self.timeInterval)
227
242
228 datatime = numpy.array(datatime)
243 datatime = numpy.array(datatime)
229
244
@@ -250,6 +265,7 class JROData:
250 nHeights = property(getNHeights, "I'm the 'nHeights' property.")
265 nHeights = property(getNHeights, "I'm the 'nHeights' property.")
251 noise = property(getNoise, "I'm the 'nHeights' property.")
266 noise = property(getNoise, "I'm the 'nHeights' property.")
252 datatime = property(getDatatime, "I'm the 'datatime' property")
267 datatime = property(getDatatime, "I'm the 'datatime' property")
268 ltctime = property(getltctime, "I'm the 'ltctime' property")
253
269
254 class Voltage(JROData):
270 class Voltage(JROData):
255
271
@@ -289,6 +305,12 class Voltage(JROData):
289
305
290 self.utctime = None
306 self.utctime = None
291
307
308 self.timeZone = None
309
310 self.dstFlag = None
311
312 self.errorCount = None
313
292 self.nCohInt = None
314 self.nCohInt = None
293
315
294 self.blocksize = None
316 self.blocksize = None
@@ -10,13 +10,16 import time
10 import numpy
10 import numpy
11 import fnmatch
11 import fnmatch
12 import time, datetime
12 import time, datetime
13 import pyfits
13 try:
14 import pyfits
15 except:
16 print "pyfits module has not been imported, it should be installed to save files in fits format"
14
17
15 from jrodata import *
18 from jrodata import *
16 from jroheaderIO import *
19 from jroheaderIO import *
17 from jroprocessing import *
20 from jroprocessing import *
18
21
19 LOCALTIME = -18000
22 LOCALTIME = True #-18000
20
23
21 def isNumber(str):
24 def isNumber(str):
22 """
25 """
@@ -328,6 +331,8 class JRODataReader(JRODataIO, ProcessingUnit):
328
331
329 __printInfo = True
332 __printInfo = True
330
333
334 profileIndex = None
335
331 def __init__(self):
336 def __init__(self):
332
337
333 """
338 """
@@ -921,6 +926,24 class JRODataReader(JRODataIO, ProcessingUnit):
921
926
922 return self.dataOut
927 return self.dataOut
923
928
929 def getBasicHeader(self):
930
931 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.ippSeconds
932
933 self.dataOut.flagTimeBlock = self.flagTimeBlock
934
935 self.dataOut.timeZone = self.basicHeaderObj.timeZone
936
937 self.dataOut.dstFlag = self.basicHeaderObj.dstFlag
938
939 self.dataOut.errorCount = self.basicHeaderObj.errorCount
940
941 self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
942
943 def getFirstHeader(self):
944
945 raise ValueError, "This method has not been implemented"
946
924 def getData():
947 def getData():
925
948
926 raise ValueError, "This method has not been implemented"
949 raise ValueError, "This method has not been implemented"
@@ -1011,7 +1034,23 class JRODataWriter(JRODataIO, Operation):
1011 def putData(self):
1034 def putData(self):
1012 raise ValueError, "No implemented"
1035 raise ValueError, "No implemented"
1013
1036
1014 def getDataHeader(self):
1037
1038 def setBasicHeader(self):
1039
1040 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1041 self.basicHeaderObj.version = self.versionFile
1042 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1043
1044 utc = numpy.floor(self.dataOut.utctime)
1045 milisecond = (self.dataOut.utctime - utc)* 1000.0
1046
1047 self.basicHeaderObj.utc = utc
1048 self.basicHeaderObj.miliSecond = milisecond
1049 self.basicHeaderObj.timeZone = self.dataOut.timeZone
1050 self.basicHeaderObj.dstFlag = self.dataOut.dstFlag
1051 self.basicHeaderObj.errorCount = self.dataOut.errorCount
1052
1053 def setFirstHeader(self):
1015 """
1054 """
1016 Obtiene una copia del First Header
1055 Obtiene una copia del First Header
1017
1056
@@ -1027,22 +1066,7 class JRODataWriter(JRODataIO, Operation):
1027 """
1066 """
1028
1067
1029 raise ValueError, "No implemented"
1068 raise ValueError, "No implemented"
1030
1069
1031 def getBasicHeader(self):
1032
1033 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1034 self.basicHeaderObj.version = self.versionFile
1035 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1036
1037 utc = numpy.floor(self.dataOut.utctime)
1038 milisecond = (self.dataOut.utctime - utc)* 1000.0
1039
1040 self.basicHeaderObj.utc = utc
1041 self.basicHeaderObj.miliSecond = milisecond
1042 self.basicHeaderObj.timeZone = 0
1043 self.basicHeaderObj.dstFlag = 0
1044 self.basicHeaderObj.errorCount = 0
1045
1046 def __writeFirstHeader(self):
1070 def __writeFirstHeader(self):
1047 """
1071 """
1048 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
1072 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
@@ -1170,7 +1194,7 class JRODataWriter(JRODataIO, Operation):
1170 self.setFile = setFile
1194 self.setFile = setFile
1171 self.flagIsNewFile = 1
1195 self.flagIsNewFile = 1
1172
1196
1173 self.getDataHeader()
1197 self.setFirstHeader()
1174
1198
1175 print 'Writing the file: %s'%self.filename
1199 print 'Writing the file: %s'%self.filename
1176
1200
@@ -1441,6 +1465,43 class VoltageReader(JRODataReader):
1441
1465
1442 return 1
1466 return 1
1443
1467
1468 def getFirstHeader(self):
1469
1470 self.dataOut.dtype = self.dtype
1471
1472 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock
1473
1474 xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight
1475
1476 self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight)
1477
1478 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
1479
1480 self.dataOut.ippSeconds = self.ippSeconds
1481
1482 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt
1483
1484 self.dataOut.nCohInt = self.processingHeaderObj.nCohInt
1485
1486 self.dataOut.flagShiftFFT = False
1487
1488 if self.radarControllerHeaderObj.code != None:
1489
1490 self.dataOut.nCode = self.radarControllerHeaderObj.nCode
1491
1492 self.dataOut.nBaud = self.radarControllerHeaderObj.nBaud
1493
1494 self.dataOut.code = self.radarControllerHeaderObj.code
1495
1496 self.dataOut.systemHeaderObj = self.systemHeaderObj.copy()
1497
1498 self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
1499
1500 self.dataOut.flagDecodeData = False #asumo q la data no esta decodificada
1501
1502 self.dataOut.flagDeflipData = False #asumo q la data no esta sin flip
1503
1504 self.dataOut.flagShiftFFT = False
1444
1505
1445 def getData(self):
1506 def getData(self):
1446 """
1507 """
@@ -1478,48 +1539,7 class VoltageReader(JRODataReader):
1478 if not( self.readNextBlock() ):
1539 if not( self.readNextBlock() ):
1479 return 0
1540 return 0
1480
1541
1481 self.dataOut.dtype = self.dtype
1542 self.getFirstHeader()
1482
1483 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock
1484
1485 xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight
1486
1487 self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight)
1488
1489 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
1490
1491 self.dataOut.flagTimeBlock = self.flagTimeBlock
1492
1493 self.dataOut.ippSeconds = self.ippSeconds
1494
1495 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt
1496
1497 self.dataOut.nCohInt = self.processingHeaderObj.nCohInt
1498
1499 self.dataOut.flagShiftFFT = False
1500
1501 if self.radarControllerHeaderObj.code != None:
1502
1503 self.dataOut.nCode = self.radarControllerHeaderObj.nCode
1504
1505 self.dataOut.nBaud = self.radarControllerHeaderObj.nBaud
1506
1507 self.dataOut.code = self.radarControllerHeaderObj.code
1508
1509 self.dataOut.systemHeaderObj = self.systemHeaderObj.copy()
1510
1511 self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
1512
1513 self.dataOut.flagDecodeData = False #asumo q la data no esta decodificada
1514
1515 self.dataOut.flagDeflipData = False #asumo q la data no esta sin flip
1516
1517 self.dataOut.flagShiftFFT = False
1518
1519
1520 # self.updateDataHeader()
1521
1522 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
1523
1543
1524 if self.datablock == None:
1544 if self.datablock == None:
1525 self.dataOut.flagNoData = True
1545 self.dataOut.flagNoData = True
@@ -1527,16 +1547,11 class VoltageReader(JRODataReader):
1527
1547
1528 self.dataOut.data = self.datablock[:,self.profileIndex,:]
1548 self.dataOut.data = self.datablock[:,self.profileIndex,:]
1529
1549
1530 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.ippSeconds
1531
1532 self.profileIndex += 1
1533
1534 self.dataOut.flagNoData = False
1550 self.dataOut.flagNoData = False
1535
1551
1536 # print self.profileIndex, self.dataOut.utctime
1552 self.getBasicHeader()
1537 # if self.profileIndex == 800:
1538 # a=1
1539
1553
1554 self.profileIndex += 1
1540
1555
1541 return self.dataOut.data
1556 return self.dataOut.data
1542
1557
@@ -1678,7 +1693,7 class VoltageWriter(JRODataWriter):
1678 self.setNextFile()
1693 self.setNextFile()
1679
1694
1680 if self.profileIndex == 0:
1695 if self.profileIndex == 0:
1681 self.getBasicHeader()
1696 self.setBasicHeader()
1682
1697
1683 self.datablock[:,self.profileIndex,:] = self.dataOut.data
1698 self.datablock[:,self.profileIndex,:] = self.dataOut.data
1684
1699
@@ -1687,7 +1702,7 class VoltageWriter(JRODataWriter):
1687 if self.hasAllDataInBuffer():
1702 if self.hasAllDataInBuffer():
1688 #if self.flagIsNewFile:
1703 #if self.flagIsNewFile:
1689 self.writeNextBlock()
1704 self.writeNextBlock()
1690 # self.getDataHeader()
1705 # self.setFirstHeader()
1691
1706
1692 return 1
1707 return 1
1693
1708
@@ -1759,7 +1774,7 class VoltageWriter(JRODataWriter):
1759
1774
1760 return blocksize
1775 return blocksize
1761
1776
1762 def getDataHeader(self):
1777 def setFirstHeader(self):
1763
1778
1764 """
1779 """
1765 Obtiene una copia del First Header
1780 Obtiene una copia del First Header
@@ -1777,7 +1792,7 class VoltageWriter(JRODataWriter):
1777 self.systemHeaderObj.nChannels = self.dataOut.nChannels
1792 self.systemHeaderObj.nChannels = self.dataOut.nChannels
1778 self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy()
1793 self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy()
1779
1794
1780 self.getBasicHeader()
1795 self.setBasicHeader()
1781
1796
1782 processingHeaderSize = 40 # bytes
1797 processingHeaderSize = 40 # bytes
1783 self.processingHeaderObj.dtype = 0 # Voltage
1798 self.processingHeaderObj.dtype = 0 # Voltage
@@ -1864,7 +1879,6 class SpectraReader(JRODataReader):
1864 nRdPairs = None
1879 nRdPairs = None
1865
1880
1866 rdPairList = []
1881 rdPairList = []
1867
1868
1882
1869 def __init__(self):
1883 def __init__(self):
1870 """
1884 """
@@ -1963,6 +1977,8 class SpectraReader(JRODataReader):
1963 self.blocksize = 0
1977 self.blocksize = 0
1964
1978
1965 self.dataOut = self.createObjByDefault()
1979 self.dataOut = self.createObjByDefault()
1980
1981 self.profileIndex = 1 #Always
1966
1982
1967
1983
1968 def createObjByDefault(self):
1984 def createObjByDefault(self):
@@ -2088,7 +2104,52 class SpectraReader(JRODataReader):
2088
2104
2089 return 1
2105 return 1
2090
2106
2107 def getFirstHeader(self):
2108
2109 self.dataOut.dtype = self.dtype
2110
2111 self.dataOut.nPairs = self.nRdPairs
2112
2113 self.dataOut.pairsList = self.rdPairList
2114
2115 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock
2116
2117 self.dataOut.nFFTPoints = self.processingHeaderObj.profilesPerBlock
2118
2119 self.dataOut.nCohInt = self.processingHeaderObj.nCohInt
2120
2121 self.dataOut.nIncohInt = self.processingHeaderObj.nIncohInt
2122
2123 xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight
2091
2124
2125 self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight)
2126
2127 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
2128
2129 self.dataOut.ippSeconds = self.ippSeconds
2130
2131 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt * self.processingHeaderObj.nIncohInt * self.dataOut.nFFTPoints
2132
2133 self.dataOut.systemHeaderObj = self.systemHeaderObj.copy()
2134
2135 self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
2136
2137 self.dataOut.flagShiftFFT = self.processingHeaderObj.shif_fft
2138
2139 self.dataOut.flagDecodeData = False #asumo q la data no esta decodificada
2140
2141 self.dataOut.flagDeflipData = True #asumo q la data no esta sin flip
2142
2143 if self.processingHeaderObj.code != None:
2144
2145 self.dataOut.nCode = self.processingHeaderObj.nCode
2146
2147 self.dataOut.nBaud = self.processingHeaderObj.nBaud
2148
2149 self.dataOut.code = self.processingHeaderObj.code
2150
2151 self.dataOut.flagDecodeData = True
2152
2092 def getData(self):
2153 def getData(self):
2093 """
2154 """
2094 Copia el buffer de lectura a la clase "Spectra",
2155 Copia el buffer de lectura a la clase "Spectra",
@@ -2118,80 +2179,26 class SpectraReader(JRODataReader):
2118
2179
2119 if not( self.readNextBlock() ):
2180 if not( self.readNextBlock() ):
2120 self.dataOut.flagNoData = True
2181 self.dataOut.flagNoData = True
2121 return 0
2182 return 0
2122
2123 # self.updateDataHeader()
2124
2183
2125 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
2184 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
2126
2185
2127 if self.data_dc == None:
2186 if self.data_dc == None:
2128 self.dataOut.flagNoData = True
2187 self.dataOut.flagNoData = True
2129 return 0
2188 return 0
2189
2190 self.getBasicHeader()
2191
2192 self.getFirstHeader()
2130
2193
2131 self.dataOut.data_spc = self.data_spc
2194 self.dataOut.data_spc = self.data_spc
2132
2195
2133 self.dataOut.data_cspc = self.data_cspc
2196 self.dataOut.data_cspc = self.data_cspc
2134
2197
2135 self.dataOut.data_dc = self.data_dc
2198 self.dataOut.data_dc = self.data_dc
2136
2137 self.dataOut.flagTimeBlock = self.flagTimeBlock
2138
2199
2139 self.dataOut.flagNoData = False
2200 self.dataOut.flagNoData = False
2140
2141 self.dataOut.dtype = self.dtype
2142
2143 # self.dataOut.nChannels = self.nRdChannels
2144
2145 self.dataOut.nPairs = self.nRdPairs
2146
2147 self.dataOut.pairsList = self.rdPairList
2148
2149 # self.dataOut.nHeights = self.processingHeaderObj.nHeights
2150
2151 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock
2152
2153 self.dataOut.nFFTPoints = self.processingHeaderObj.profilesPerBlock
2154
2155 self.dataOut.nCohInt = self.processingHeaderObj.nCohInt
2156
2157 self.dataOut.nIncohInt = self.processingHeaderObj.nIncohInt
2158
2159 xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight
2160
2161 self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight)
2162
2163 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
2164
2201
2165 # self.dataOut.channelIndexList = range(self.systemHeaderObj.nChannels)
2166
2167 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000.#+ self.profileIndex * self.ippSeconds
2168
2169 self.dataOut.ippSeconds = self.ippSeconds
2170
2171 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt * self.processingHeaderObj.nIncohInt * self.dataOut.nFFTPoints
2172
2173 # self.profileIndex += 1
2174
2175 self.dataOut.systemHeaderObj = self.systemHeaderObj.copy()
2176
2177 self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy()
2178
2179 self.dataOut.flagShiftFFT = self.processingHeaderObj.shif_fft
2180
2181 self.dataOut.flagDecodeData = False #asumo q la data no esta decodificada
2182
2183 self.dataOut.flagDeflipData = True #asumo q la data no esta sin flip
2184
2185 if self.processingHeaderObj.code != None:
2186
2187 self.dataOut.nCode = self.processingHeaderObj.nCode
2188
2189 self.dataOut.nBaud = self.processingHeaderObj.nBaud
2190
2191 self.dataOut.code = self.processingHeaderObj.code
2192
2193 self.dataOut.flagDecodeData = True
2194
2195 return self.dataOut.data_spc
2202 return self.dataOut.data_spc
2196
2203
2197
2204
@@ -2377,7 +2384,7 class SpectraWriter(JRODataWriter):
2377 self.setNextFile()
2384 self.setNextFile()
2378
2385
2379 if self.flagIsNewFile == 0:
2386 if self.flagIsNewFile == 0:
2380 self.getBasicHeader()
2387 self.setBasicHeader()
2381
2388
2382 self.data_spc = self.dataOut.data_spc.copy()
2389 self.data_spc = self.dataOut.data_spc.copy()
2383 self.data_cspc = self.dataOut.data_cspc.copy()
2390 self.data_cspc = self.dataOut.data_cspc.copy()
@@ -2385,7 +2392,7 class SpectraWriter(JRODataWriter):
2385
2392
2386 # #self.processingHeaderObj.dataBlocksPerFile)
2393 # #self.processingHeaderObj.dataBlocksPerFile)
2387 if self.hasAllDataInBuffer():
2394 if self.hasAllDataInBuffer():
2388 # self.getDataHeader()
2395 # self.setFirstHeader()
2389 self.writeNextBlock()
2396 self.writeNextBlock()
2390
2397
2391 return 1
2398 return 1
@@ -2476,7 +2483,7 class SpectraWriter(JRODataWriter):
2476
2483
2477 return blocksize
2484 return blocksize
2478
2485
2479 def getDataHeader(self):
2486 def setFirstHeader(self):
2480
2487
2481 """
2488 """
2482 Obtiene una copia del First Header
2489 Obtiene una copia del First Header
@@ -2494,7 +2501,7 class SpectraWriter(JRODataWriter):
2494 self.systemHeaderObj.nChannels = self.dataOut.nChannels
2501 self.systemHeaderObj.nChannels = self.dataOut.nChannels
2495 self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy()
2502 self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy()
2496
2503
2497 self.getBasicHeader()
2504 self.setBasicHeader()
2498
2505
2499 processingHeaderSize = 40 # bytes
2506 processingHeaderSize = 40 # bytes
2500 self.processingHeaderObj.dtype = 1 # Spectra
2507 self.processingHeaderObj.dtype = 1 # Spectra
@@ -2506,6 +2513,7 class SpectraWriter(JRODataWriter):
2506 self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval
2513 self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval
2507 self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt
2514 self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt
2508 self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels
2515 self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels
2516 self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT
2509
2517
2510 if self.processingHeaderObj.totalSpectra > 0:
2518 if self.processingHeaderObj.totalSpectra > 0:
2511 channelList = []
2519 channelList = []
@@ -36,6 +36,7 class BasicHeader(Header):
36 version = None
36 version = None
37 dataBlock = None
37 dataBlock = None
38 utc = None
38 utc = None
39 ltc = None
39 miliSecond = None
40 miliSecond = None
40 timeZone = None
41 timeZone = None
41 dstFlag = None
42 dstFlag = None
@@ -45,7 +46,7 class BasicHeader(Header):
45
46
46 __LOCALTIME = None
47 __LOCALTIME = None
47
48
48 def __init__(self, localtime=0):
49 def __init__(self, useLocalTime=True):
49
50
50 self.size = 0
51 self.size = 0
51 self.version = 0
52 self.version = 0
@@ -66,7 +67,7 class BasicHeader(Header):
66 ('nErrorCount','<u4')
67 ('nErrorCount','<u4')
67 ])
68 ])
68
69
69 self.__LOCALTIME = localtime
70 self.useLocalTime = useLocalTime
70
71
71 def read(self, fp):
72 def read(self, fp):
72 try:
73 try:
@@ -80,9 +81,12 class BasicHeader(Header):
80 self.dstFlag = int(header['nDstflag'][0])
81 self.dstFlag = int(header['nDstflag'][0])
81 self.errorCount = int(header['nErrorCount'][0])
82 self.errorCount = int(header['nErrorCount'][0])
82
83
83 self.utc += self.__LOCALTIME
84 self.ltc = self.utc
84
85
85 self.datatime = datetime.datetime.utcfromtimestamp(self.utc)
86 if self.useLocalTime:
87 self.ltc -= self.timeZone*60
88
89 self.datatime = datetime.datetime.utcfromtimestamp(self.ltc)
86
90
87 except Exception, e:
91 except Exception, e:
88 print "BasicHeader: "
92 print "BasicHeader: "
@@ -92,7 +96,7 class BasicHeader(Header):
92 return 1
96 return 1
93
97
94 def write(self, fp):
98 def write(self, fp):
95 self.utc -= self.__LOCALTIME
99
96 headerTuple = (self.size,self.version,self.dataBlock,self.utc,self.miliSecond,self.timeZone,self.dstFlag,self.errorCount)
100 headerTuple = (self.size,self.version,self.dataBlock,self.utc,self.miliSecond,self.timeZone,self.dstFlag,self.errorCount)
97 header = numpy.array(headerTuple,self.struct)
101 header = numpy.array(headerTuple,self.struct)
98 header.tofile(fp)
102 header.tofile(fp)
@@ -695,6 +695,11 class SpectraProc(ProcessingUnit):
695
695
696 def __updateObjFromInput(self):
696 def __updateObjFromInput(self):
697
697
698 self.dataOut.timeZone = self.dataIn.timeZone
699 self.dataOut.dstFlag = self.dataIn.dstFlag
700 self.dataOut.errorCount = self.dataIn.errorCount
701 self.dataOut.useLocalTime = self.dataIn.useLocalTime
702
698 self.dataOut.radarControllerHeaderObj = self.dataIn.radarControllerHeaderObj.copy()
703 self.dataOut.radarControllerHeaderObj = self.dataIn.radarControllerHeaderObj.copy()
699 self.dataOut.systemHeaderObj = self.dataIn.systemHeaderObj.copy()
704 self.dataOut.systemHeaderObj = self.dataIn.systemHeaderObj.copy()
700 self.dataOut.channelList = self.dataIn.channelList
705 self.dataOut.channelList = self.dataIn.channelList
@@ -759,6 +764,7 class SpectraProc(ProcessingUnit):
759 self.dataOut.data_cspc = cspc
764 self.dataOut.data_cspc = cspc
760 self.dataOut.data_dc = dc
765 self.dataOut.data_dc = dc
761 self.dataOut.blockSize = blocksize
766 self.dataOut.blockSize = blocksize
767 self.dataOut.flagShiftFFT = True
762
768
763 def init(self, nFFTPoints=None, pairsList=None):
769 def init(self, nFFTPoints=None, pairsList=None):
764
770
General Comments 0
You need to be logged in to leave comments. Login now