@@ -137,8 +137,16 class JROData: | |||
|
137 | 137 | |
|
138 | 138 | flagTimeBlock = False |
|
139 | 139 | |
|
140 | useLocalTime = False | |
|
141 | ||
|
140 | 142 | utctime = None |
|
141 | 143 | |
|
144 | timeZone = None | |
|
145 | ||
|
146 | dstFlag = None | |
|
147 | ||
|
148 | errorCount = None | |
|
149 | ||
|
142 | 150 | blocksize = None |
|
143 | 151 | |
|
144 | 152 | nCode = None |
@@ -213,17 +221,24 class JROData: | |||
|
213 | 221 | |
|
214 | 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 | 231 | def getDatatime(self): |
|
217 | 232 | |
|
218 |
datatime = datetime.datetime.utcfromtimestamp(self. |
|
|
233 | datatime = datetime.datetime.utcfromtimestamp(self.ltctime) | |
|
219 | 234 | return datatime |
|
220 | 235 | |
|
221 | 236 | def getTimeRange(self): |
|
222 | 237 | |
|
223 | 238 | datatime = [] |
|
224 | 239 | |
|
225 |
datatime.append(self. |
|
|
226 |
datatime.append(self. |
|
|
240 | datatime.append(self.ltctime) | |
|
241 | datatime.append(self.ltctime + self.timeInterval) | |
|
227 | 242 | |
|
228 | 243 | datatime = numpy.array(datatime) |
|
229 | 244 | |
@@ -250,6 +265,7 class JROData: | |||
|
250 | 265 | nHeights = property(getNHeights, "I'm the 'nHeights' property.") |
|
251 | 266 | noise = property(getNoise, "I'm the 'nHeights' property.") |
|
252 | 267 | datatime = property(getDatatime, "I'm the 'datatime' property") |
|
268 | ltctime = property(getltctime, "I'm the 'ltctime' property") | |
|
253 | 269 | |
|
254 | 270 | class Voltage(JROData): |
|
255 | 271 | |
@@ -289,6 +305,12 class Voltage(JROData): | |||
|
289 | 305 | |
|
290 | 306 | self.utctime = None |
|
291 | 307 | |
|
308 | self.timeZone = None | |
|
309 | ||
|
310 | self.dstFlag = None | |
|
311 | ||
|
312 | self.errorCount = None | |
|
313 | ||
|
292 | 314 | self.nCohInt = None |
|
293 | 315 | |
|
294 | 316 | self.blocksize = None |
@@ -10,13 +10,16 import time | |||
|
10 | 10 | import numpy |
|
11 | 11 | import fnmatch |
|
12 | 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 | 18 | from jrodata import * |
|
16 | 19 | from jroheaderIO import * |
|
17 | 20 | from jroprocessing import * |
|
18 | 21 | |
|
19 | LOCALTIME = -18000 | |
|
22 | LOCALTIME = True #-18000 | |
|
20 | 23 | |
|
21 | 24 | def isNumber(str): |
|
22 | 25 | """ |
@@ -328,6 +331,8 class JRODataReader(JRODataIO, ProcessingUnit): | |||
|
328 | 331 | |
|
329 | 332 | __printInfo = True |
|
330 | 333 | |
|
334 | profileIndex = None | |
|
335 | ||
|
331 | 336 | def __init__(self): |
|
332 | 337 | |
|
333 | 338 | """ |
@@ -921,6 +926,24 class JRODataReader(JRODataIO, ProcessingUnit): | |||
|
921 | 926 | |
|
922 | 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 | 947 | def getData(): |
|
925 | 948 | |
|
926 | 949 | raise ValueError, "This method has not been implemented" |
@@ -1011,7 +1034,23 class JRODataWriter(JRODataIO, Operation): | |||
|
1011 | 1034 | def putData(self): |
|
1012 | 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 | 1055 | Obtiene una copia del First Header |
|
1017 | 1056 | |
@@ -1027,22 +1066,7 class JRODataWriter(JRODataIO, Operation): | |||
|
1027 | 1066 | """ |
|
1028 | 1067 | |
|
1029 | 1068 | raise ValueError, "No implemented" |
|
1030 | ||
|
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 | ||
|
1069 | ||
|
1046 | 1070 | def __writeFirstHeader(self): |
|
1047 | 1071 | """ |
|
1048 | 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 | 1194 | self.setFile = setFile |
|
1171 | 1195 | self.flagIsNewFile = 1 |
|
1172 | 1196 | |
|
1173 |
self. |
|
|
1197 | self.setFirstHeader() | |
|
1174 | 1198 | |
|
1175 | 1199 | print 'Writing the file: %s'%self.filename |
|
1176 | 1200 | |
@@ -1441,6 +1465,43 class VoltageReader(JRODataReader): | |||
|
1441 | 1465 | |
|
1442 | 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 | 1506 | def getData(self): |
|
1446 | 1507 | """ |
@@ -1478,48 +1539,7 class VoltageReader(JRODataReader): | |||
|
1478 | 1539 | if not( self.readNextBlock() ): |
|
1479 | 1540 | return 0 |
|
1480 | 1541 | |
|
1481 | self.dataOut.dtype = self.dtype | |
|
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) | |
|
1542 | self.getFirstHeader() | |
|
1523 | 1543 | |
|
1524 | 1544 | if self.datablock == None: |
|
1525 | 1545 | self.dataOut.flagNoData = True |
@@ -1527,16 +1547,11 class VoltageReader(JRODataReader): | |||
|
1527 | 1547 | |
|
1528 | 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 | 1550 | self.dataOut.flagNoData = False |
|
1535 | 1551 | |
|
1536 | # print self.profileIndex, self.dataOut.utctime | |
|
1537 | # if self.profileIndex == 800: | |
|
1538 | # a=1 | |
|
1552 | self.getBasicHeader() | |
|
1539 | 1553 | |
|
1554 | self.profileIndex += 1 | |
|
1540 | 1555 | |
|
1541 | 1556 | return self.dataOut.data |
|
1542 | 1557 | |
@@ -1678,7 +1693,7 class VoltageWriter(JRODataWriter): | |||
|
1678 | 1693 | self.setNextFile() |
|
1679 | 1694 | |
|
1680 | 1695 | if self.profileIndex == 0: |
|
1681 |
self. |
|
|
1696 | self.setBasicHeader() | |
|
1682 | 1697 | |
|
1683 | 1698 | self.datablock[:,self.profileIndex,:] = self.dataOut.data |
|
1684 | 1699 | |
@@ -1687,7 +1702,7 class VoltageWriter(JRODataWriter): | |||
|
1687 | 1702 | if self.hasAllDataInBuffer(): |
|
1688 | 1703 | #if self.flagIsNewFile: |
|
1689 | 1704 | self.writeNextBlock() |
|
1690 |
# self. |
|
|
1705 | # self.setFirstHeader() | |
|
1691 | 1706 | |
|
1692 | 1707 | return 1 |
|
1693 | 1708 | |
@@ -1759,7 +1774,7 class VoltageWriter(JRODataWriter): | |||
|
1759 | 1774 | |
|
1760 | 1775 | return blocksize |
|
1761 | 1776 | |
|
1762 |
def |
|
|
1777 | def setFirstHeader(self): | |
|
1763 | 1778 | |
|
1764 | 1779 | """ |
|
1765 | 1780 | Obtiene una copia del First Header |
@@ -1777,7 +1792,7 class VoltageWriter(JRODataWriter): | |||
|
1777 | 1792 | self.systemHeaderObj.nChannels = self.dataOut.nChannels |
|
1778 | 1793 | self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() |
|
1779 | 1794 | |
|
1780 |
self. |
|
|
1795 | self.setBasicHeader() | |
|
1781 | 1796 | |
|
1782 | 1797 | processingHeaderSize = 40 # bytes |
|
1783 | 1798 | self.processingHeaderObj.dtype = 0 # Voltage |
@@ -1864,7 +1879,6 class SpectraReader(JRODataReader): | |||
|
1864 | 1879 | nRdPairs = None |
|
1865 | 1880 | |
|
1866 | 1881 | rdPairList = [] |
|
1867 | ||
|
1868 | 1882 | |
|
1869 | 1883 | def __init__(self): |
|
1870 | 1884 | """ |
@@ -1963,6 +1977,8 class SpectraReader(JRODataReader): | |||
|
1963 | 1977 | self.blocksize = 0 |
|
1964 | 1978 | |
|
1965 | 1979 | self.dataOut = self.createObjByDefault() |
|
1980 | ||
|
1981 | self.profileIndex = 1 #Always | |
|
1966 | 1982 | |
|
1967 | 1983 | |
|
1968 | 1984 | def createObjByDefault(self): |
@@ -2088,7 +2104,52 class SpectraReader(JRODataReader): | |||
|
2088 | 2104 | |
|
2089 | 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 | 2153 | def getData(self): |
|
2093 | 2154 | """ |
|
2094 | 2155 | Copia el buffer de lectura a la clase "Spectra", |
@@ -2118,80 +2179,26 class SpectraReader(JRODataReader): | |||
|
2118 | 2179 | |
|
2119 | 2180 | if not( self.readNextBlock() ): |
|
2120 | 2181 | self.dataOut.flagNoData = True |
|
2121 |
return 0 |
|
|
2122 | ||
|
2123 | # self.updateDataHeader() | |
|
2182 | return 0 | |
|
2124 | 2183 | |
|
2125 | 2184 | #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) |
|
2126 | 2185 | |
|
2127 | 2186 | if self.data_dc == None: |
|
2128 | 2187 | self.dataOut.flagNoData = True |
|
2129 | 2188 | return 0 |
|
2189 | ||
|
2190 | self.getBasicHeader() | |
|
2191 | ||
|
2192 | self.getFirstHeader() | |
|
2130 | 2193 | |
|
2131 | 2194 | self.dataOut.data_spc = self.data_spc |
|
2132 | 2195 | |
|
2133 | 2196 | self.dataOut.data_cspc = self.data_cspc |
|
2134 | 2197 | |
|
2135 | 2198 | self.dataOut.data_dc = self.data_dc |
|
2136 | ||
|
2137 | self.dataOut.flagTimeBlock = self.flagTimeBlock | |
|
2138 | 2199 | |
|
2139 | 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 | 2202 | return self.dataOut.data_spc |
|
2196 | 2203 | |
|
2197 | 2204 | |
@@ -2377,7 +2384,7 class SpectraWriter(JRODataWriter): | |||
|
2377 | 2384 | self.setNextFile() |
|
2378 | 2385 | |
|
2379 | 2386 | if self.flagIsNewFile == 0: |
|
2380 |
self. |
|
|
2387 | self.setBasicHeader() | |
|
2381 | 2388 | |
|
2382 | 2389 | self.data_spc = self.dataOut.data_spc.copy() |
|
2383 | 2390 | self.data_cspc = self.dataOut.data_cspc.copy() |
@@ -2385,7 +2392,7 class SpectraWriter(JRODataWriter): | |||
|
2385 | 2392 | |
|
2386 | 2393 | # #self.processingHeaderObj.dataBlocksPerFile) |
|
2387 | 2394 | if self.hasAllDataInBuffer(): |
|
2388 |
# self. |
|
|
2395 | # self.setFirstHeader() | |
|
2389 | 2396 | self.writeNextBlock() |
|
2390 | 2397 | |
|
2391 | 2398 | return 1 |
@@ -2476,7 +2483,7 class SpectraWriter(JRODataWriter): | |||
|
2476 | 2483 | |
|
2477 | 2484 | return blocksize |
|
2478 | 2485 | |
|
2479 |
def |
|
|
2486 | def setFirstHeader(self): | |
|
2480 | 2487 | |
|
2481 | 2488 | """ |
|
2482 | 2489 | Obtiene una copia del First Header |
@@ -2494,7 +2501,7 class SpectraWriter(JRODataWriter): | |||
|
2494 | 2501 | self.systemHeaderObj.nChannels = self.dataOut.nChannels |
|
2495 | 2502 | self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() |
|
2496 | 2503 | |
|
2497 |
self. |
|
|
2504 | self.setBasicHeader() | |
|
2498 | 2505 | |
|
2499 | 2506 | processingHeaderSize = 40 # bytes |
|
2500 | 2507 | self.processingHeaderObj.dtype = 1 # Spectra |
@@ -2506,6 +2513,7 class SpectraWriter(JRODataWriter): | |||
|
2506 | 2513 | self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval |
|
2507 | 2514 | self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt |
|
2508 | 2515 | self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels |
|
2516 | self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT | |
|
2509 | 2517 | |
|
2510 | 2518 | if self.processingHeaderObj.totalSpectra > 0: |
|
2511 | 2519 | channelList = [] |
@@ -36,6 +36,7 class BasicHeader(Header): | |||
|
36 | 36 | version = None |
|
37 | 37 | dataBlock = None |
|
38 | 38 | utc = None |
|
39 | ltc = None | |
|
39 | 40 | miliSecond = None |
|
40 | 41 | timeZone = None |
|
41 | 42 | dstFlag = None |
@@ -45,7 +46,7 class BasicHeader(Header): | |||
|
45 | 46 | |
|
46 | 47 | __LOCALTIME = None |
|
47 | 48 | |
|
48 |
def __init__(self, |
|
|
49 | def __init__(self, useLocalTime=True): | |
|
49 | 50 | |
|
50 | 51 | self.size = 0 |
|
51 | 52 | self.version = 0 |
@@ -66,7 +67,7 class BasicHeader(Header): | |||
|
66 | 67 | ('nErrorCount','<u4') |
|
67 | 68 | ]) |
|
68 | 69 | |
|
69 | self.__LOCALTIME = localtime | |
|
70 | self.useLocalTime = useLocalTime | |
|
70 | 71 | |
|
71 | 72 | def read(self, fp): |
|
72 | 73 | try: |
@@ -80,9 +81,12 class BasicHeader(Header): | |||
|
80 | 81 | self.dstFlag = int(header['nDstflag'][0]) |
|
81 | 82 | self.errorCount = int(header['nErrorCount'][0]) |
|
82 | 83 | |
|
83 |
self. |
|
|
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 | 91 | except Exception, e: |
|
88 | 92 | print "BasicHeader: " |
@@ -92,7 +96,7 class BasicHeader(Header): | |||
|
92 | 96 | return 1 |
|
93 | 97 | |
|
94 | 98 | def write(self, fp): |
|
95 | self.utc -= self.__LOCALTIME | |
|
99 | ||
|
96 | 100 | headerTuple = (self.size,self.version,self.dataBlock,self.utc,self.miliSecond,self.timeZone,self.dstFlag,self.errorCount) |
|
97 | 101 | header = numpy.array(headerTuple,self.struct) |
|
98 | 102 | header.tofile(fp) |
@@ -695,6 +695,11 class SpectraProc(ProcessingUnit): | |||
|
695 | 695 | |
|
696 | 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 | 703 | self.dataOut.radarControllerHeaderObj = self.dataIn.radarControllerHeaderObj.copy() |
|
699 | 704 | self.dataOut.systemHeaderObj = self.dataIn.systemHeaderObj.copy() |
|
700 | 705 | self.dataOut.channelList = self.dataIn.channelList |
@@ -759,6 +764,7 class SpectraProc(ProcessingUnit): | |||
|
759 | 764 | self.dataOut.data_cspc = cspc |
|
760 | 765 | self.dataOut.data_dc = dc |
|
761 | 766 | self.dataOut.blockSize = blocksize |
|
767 | self.dataOut.flagShiftFFT = True | |
|
762 | 768 | |
|
763 | 769 | def init(self, nFFTPoints=None, pairsList=None): |
|
764 | 770 |
General Comments 0
You need to be logged in to leave comments.
Login now