##// 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 try:
13 import pyfits
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
@@ -1028,21 +1067,6 class JRODataWriter(JRODataIO, Operation):
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,42 +1465,7 class VoltageReader(JRODataReader):
1441
1465
1442 return 1
1466 return 1
1443
1467
1444
1468 def getFirstHeader(self):
1445 def getData(self):
1446 """
1447 getData obtiene una unidad de datos del buffer de lectura y la copia a la clase "Voltage"
1448 con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de
1449 lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock"
1450
1451 Ademas incrementa el contador del buffer en 1.
1452
1453 Return:
1454 data : retorna un perfil de voltages (alturas * canales) copiados desde el
1455 buffer. Si no hay mas archivos a leer retorna None.
1456
1457 Variables afectadas:
1458 self.dataOut
1459 self.profileIndex
1460
1461 Affected:
1462 self.dataOut
1463 self.profileIndex
1464 self.flagTimeBlock
1465 self.flagIsNewBlock
1466 """
1467
1468 if self.flagNoMoreFiles:
1469 self.dataOut.flagNoData = True
1470 print 'Process finished'
1471 return 0
1472
1473 self.flagTimeBlock = 0
1474 self.flagIsNewBlock = 0
1475
1476 if self.__hasNotDataInBuffer():
1477
1478 if not( self.readNextBlock() ):
1479 return 0
1480
1469
1481 self.dataOut.dtype = self.dtype
1470 self.dataOut.dtype = self.dtype
1482
1471
@@ -1488,8 +1477,6 class VoltageReader(JRODataReader):
1488
1477
1489 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
1478 self.dataOut.channelList = range(self.systemHeaderObj.nChannels)
1490
1479
1491 self.dataOut.flagTimeBlock = self.flagTimeBlock
1492
1493 self.dataOut.ippSeconds = self.ippSeconds
1480 self.dataOut.ippSeconds = self.ippSeconds
1494
1481
1495 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt
1482 self.dataOut.timeInterval = self.ippSeconds * self.processingHeaderObj.nCohInt
@@ -1516,27 +1503,55 class VoltageReader(JRODataReader):
1516
1503
1517 self.dataOut.flagShiftFFT = False
1504 self.dataOut.flagShiftFFT = False
1518
1505
1506 def getData(self):
1507 """
1508 getData obtiene una unidad de datos del buffer de lectura y la copia a la clase "Voltage"
1509 con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de
1510 lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock"
1519
1511
1520 # self.updateDataHeader()
1512 Ademas incrementa el contador del buffer en 1.
1521
1513
1522 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
1514 Return:
1515 data : retorna un perfil de voltages (alturas * canales) copiados desde el
1516 buffer. Si no hay mas archivos a leer retorna None.
1523
1517
1524 if self.datablock == None:
1518 Variables afectadas:
1519 self.dataOut
1520 self.profileIndex
1521
1522 Affected:
1523 self.dataOut
1524 self.profileIndex
1525 self.flagTimeBlock
1526 self.flagIsNewBlock
1527 """
1528
1529 if self.flagNoMoreFiles:
1525 self.dataOut.flagNoData = True
1530 self.dataOut.flagNoData = True
1531 print 'Process finished'
1526 return 0
1532 return 0
1527
1533
1528 self.dataOut.data = self.datablock[:,self.profileIndex,:]
1534 self.flagTimeBlock = 0
1535 self.flagIsNewBlock = 0
1529
1536
1530 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.ippSeconds
1537 if self.__hasNotDataInBuffer():
1531
1538
1532 self.profileIndex += 1
1539 if not( self.readNextBlock() ):
1540 return 0
1541
1542 self.getFirstHeader()
1543
1544 if self.datablock == None:
1545 self.dataOut.flagNoData = True
1546 return 0
1547
1548 self.dataOut.data = self.datablock[:,self.profileIndex,:]
1533
1549
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
@@ -1865,7 +1880,6 class SpectraReader(JRODataReader):
1865
1880
1866 rdPairList = []
1881 rdPairList = []
1867
1882
1868
1869 def __init__(self):
1883 def __init__(self):
1870 """
1884 """
1871 Inicializador de la clase SpectraReader para la lectura de datos de espectros.
1885 Inicializador de la clase SpectraReader para la lectura de datos de espectros.
@@ -1964,6 +1978,8 class SpectraReader(JRODataReader):
1964
1978
1965 self.dataOut = self.createObjByDefault()
1979 self.dataOut = self.createObjByDefault()
1966
1980
1981 self.profileIndex = 1 #Always
1982
1967
1983
1968 def createObjByDefault(self):
1984 def createObjByDefault(self):
1969
1985
@@ -2088,6 +2104,51 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
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
2091
2152
2092 def getData(self):
2153 def getData(self):
2093 """
2154 """
@@ -2120,78 +2181,24 class SpectraReader(JRODataReader):
2120 self.dataOut.flagNoData = True
2181 self.dataOut.flagNoData = True
2121 return 0
2182 return 0
2122
2183
2123 # self.updateDataHeader()
2124
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
2130
2189
2190 self.getBasicHeader()
2191
2192 self.getFirstHeader()
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
2199
2137 self.dataOut.flagTimeBlock = self.flagTimeBlock
2138
2139 self.dataOut.flagNoData = False
2200 self.dataOut.flagNoData = False
2140
2201
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
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