@@ -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. |
|
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. |
|
240 | datatime.append(self.ltctime) | |
226 |
datatime.append(self. |
|
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. |
|
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. |
|
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. |
|
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 |
|
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. |
|
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. |
|
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. |
|
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 |
|
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. |
|
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, |
|
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. |
|
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