1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -1179,6 +1179,8 class Parameters(Spectra): | |||||
1179 | nAvg = None |
|
1179 | nAvg = None | |
1180 |
|
1180 | |||
1181 | noise_estimation = None |
|
1181 | noise_estimation = None | |
|
1182 | ||||
|
1183 | GauSPC = None #Fit gaussian SPC | |||
1182 |
|
1184 | |||
1183 |
|
1185 | |||
1184 | def __init__(self): |
|
1186 | def __init__(self): | |
@@ -1199,7 +1201,7 class Parameters(Spectra): | |||||
1199 | time1 = self.utctimeInit - self.timeZone*60 |
|
1201 | time1 = self.utctimeInit - self.timeZone*60 | |
1200 | else: |
|
1202 | else: | |
1201 | time1 = self.utctimeInit |
|
1203 | time1 = self.utctimeInit | |
1202 |
|
1204 | print 'interval',interval | ||
1203 | datatime.append(time1) |
|
1205 | datatime.append(time1) | |
1204 | datatime.append(time1 + interval) |
|
1206 | datatime.append(time1 + interval) | |
1205 | datatime = numpy.array(datatime) |
|
1207 | datatime = numpy.array(datatime) | |
@@ -1213,8 +1215,15 class Parameters(Spectra): | |||||
1213 | else: |
|
1215 | else: | |
1214 | return self.paramInterval |
|
1216 | return self.paramInterval | |
1215 |
|
1217 | |||
|
1218 | def setValue(self, value): | |||
|
1219 | ||||
|
1220 | print "This property should not be initialized" | |||
|
1221 | ||||
|
1222 | return | |||
|
1223 | ||||
1216 | def getNoise(self): |
|
1224 | def getNoise(self): | |
1217 |
|
1225 | |||
1218 | return self.spc_noise |
|
1226 | return self.spc_noise | |
1219 |
|
1227 | |||
1220 | timeInterval = property(getTimeInterval) |
|
1228 | timeInterval = property(getTimeInterval) | |
|
1229 | noise = property(getNoise, setValue, "I'm the 'Noise' property.") |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -6,6 +6,217 from figure import Figure, isRealtime, isTimeInHourRange | |||||
6 | from plotting_codes import * |
|
6 | from plotting_codes import * | |
7 |
|
7 | |||
8 |
|
8 | |||
|
9 | class FitGauPlot(Figure): | |||
|
10 | ||||
|
11 | isConfig = None | |||
|
12 | __nsubplots = None | |||
|
13 | ||||
|
14 | WIDTHPROF = None | |||
|
15 | HEIGHTPROF = None | |||
|
16 | PREFIX = 'fitgau' | |||
|
17 | ||||
|
18 | def __init__(self, **kwargs): | |||
|
19 | Figure.__init__(self, **kwargs) | |||
|
20 | self.isConfig = False | |||
|
21 | self.__nsubplots = 1 | |||
|
22 | ||||
|
23 | self.WIDTH = 250 | |||
|
24 | self.HEIGHT = 250 | |||
|
25 | self.WIDTHPROF = 120 | |||
|
26 | self.HEIGHTPROF = 0 | |||
|
27 | self.counter_imagwr = 0 | |||
|
28 | ||||
|
29 | self.PLOT_CODE = SPEC_CODE | |||
|
30 | ||||
|
31 | self.FTP_WEI = None | |||
|
32 | self.EXP_CODE = None | |||
|
33 | self.SUB_EXP_CODE = None | |||
|
34 | self.PLOT_POS = None | |||
|
35 | ||||
|
36 | self.__xfilter_ena = False | |||
|
37 | self.__yfilter_ena = False | |||
|
38 | ||||
|
39 | def getSubplots(self): | |||
|
40 | ||||
|
41 | ncol = int(numpy.sqrt(self.nplots)+0.9) | |||
|
42 | nrow = int(self.nplots*1./ncol + 0.9) | |||
|
43 | ||||
|
44 | return nrow, ncol | |||
|
45 | ||||
|
46 | def setup(self, id, nplots, wintitle, showprofile=True, show=True): | |||
|
47 | ||||
|
48 | self.__showprofile = showprofile | |||
|
49 | self.nplots = nplots | |||
|
50 | ||||
|
51 | ncolspan = 1 | |||
|
52 | colspan = 1 | |||
|
53 | if showprofile: | |||
|
54 | ncolspan = 3 | |||
|
55 | colspan = 2 | |||
|
56 | self.__nsubplots = 2 | |||
|
57 | ||||
|
58 | self.createFigure(id = id, | |||
|
59 | wintitle = wintitle, | |||
|
60 | widthplot = self.WIDTH + self.WIDTHPROF, | |||
|
61 | heightplot = self.HEIGHT + self.HEIGHTPROF, | |||
|
62 | show=show) | |||
|
63 | ||||
|
64 | nrow, ncol = self.getSubplots() | |||
|
65 | ||||
|
66 | counter = 0 | |||
|
67 | for y in range(nrow): | |||
|
68 | for x in range(ncol): | |||
|
69 | ||||
|
70 | if counter >= self.nplots: | |||
|
71 | break | |||
|
72 | ||||
|
73 | self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan, colspan, 1) | |||
|
74 | ||||
|
75 | if showprofile: | |||
|
76 | self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan+colspan, 1, 1) | |||
|
77 | ||||
|
78 | counter += 1 | |||
|
79 | ||||
|
80 | def run(self, dataOut, id, wintitle="", channelList=None, showprofile=True, | |||
|
81 | xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, | |||
|
82 | save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1, | |||
|
83 | server=None, folder=None, username=None, password=None, | |||
|
84 | ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False, | |||
|
85 | xaxis="frequency", colormap='jet', normFactor=None , GauSelector = 1): | |||
|
86 | ||||
|
87 | """ | |||
|
88 | ||||
|
89 | Input: | |||
|
90 | dataOut : | |||
|
91 | id : | |||
|
92 | wintitle : | |||
|
93 | channelList : | |||
|
94 | showProfile : | |||
|
95 | xmin : None, | |||
|
96 | xmax : None, | |||
|
97 | ymin : None, | |||
|
98 | ymax : None, | |||
|
99 | zmin : None, | |||
|
100 | zmax : None | |||
|
101 | """ | |||
|
102 | if realtime: | |||
|
103 | if not(isRealtime(utcdatatime = dataOut.utctime)): | |||
|
104 | print 'Skipping this plot function' | |||
|
105 | return | |||
|
106 | ||||
|
107 | if channelList == None: | |||
|
108 | channelIndexList = dataOut.channelIndexList | |||
|
109 | else: | |||
|
110 | channelIndexList = [] | |||
|
111 | for channel in channelList: | |||
|
112 | if channel not in dataOut.channelList: | |||
|
113 | raise ValueError, "Channel %d is not in dataOut.channelList" %channel | |||
|
114 | channelIndexList.append(dataOut.channelList.index(channel)) | |||
|
115 | ||||
|
116 | # if normFactor is None: | |||
|
117 | # factor = dataOut.normFactor | |||
|
118 | # else: | |||
|
119 | # factor = normFactor | |||
|
120 | if xaxis == "frequency": | |||
|
121 | x = dataOut.spc_range[0] | |||
|
122 | xlabel = "Frequency (kHz)" | |||
|
123 | ||||
|
124 | elif xaxis == "time": | |||
|
125 | x = dataOut.spc_range[1] | |||
|
126 | xlabel = "Time (ms)" | |||
|
127 | ||||
|
128 | else: | |||
|
129 | x = dataOut.spc_range[2] | |||
|
130 | xlabel = "Velocity (m/s)" | |||
|
131 | ||||
|
132 | ylabel = "Range (Km)" | |||
|
133 | ||||
|
134 | y = dataOut.getHeiRange() | |||
|
135 | ||||
|
136 | z = dataOut.GauSPC[:,GauSelector,:,:] #GauSelector] #dataOut.data_spc/factor | |||
|
137 | print 'GausSPC', z[0,32,10:40] | |||
|
138 | z = numpy.where(numpy.isfinite(z), z, numpy.NAN) | |||
|
139 | zdB = 10*numpy.log10(z) | |||
|
140 | ||||
|
141 | avg = numpy.average(z, axis=1) | |||
|
142 | avgdB = 10*numpy.log10(avg) | |||
|
143 | ||||
|
144 | noise = dataOut.spc_noise | |||
|
145 | noisedB = 10*numpy.log10(noise) | |||
|
146 | ||||
|
147 | thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0]) | |||
|
148 | title = wintitle + " Spectra" | |||
|
149 | if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)): | |||
|
150 | title = title + '_' + 'azimuth,zenith=%2.2f,%2.2f'%(dataOut.azimuth, dataOut.zenith) | |||
|
151 | ||||
|
152 | if not self.isConfig: | |||
|
153 | ||||
|
154 | nplots = len(channelIndexList) | |||
|
155 | ||||
|
156 | self.setup(id=id, | |||
|
157 | nplots=nplots, | |||
|
158 | wintitle=wintitle, | |||
|
159 | showprofile=showprofile, | |||
|
160 | show=show) | |||
|
161 | ||||
|
162 | if xmin == None: xmin = numpy.nanmin(x) | |||
|
163 | if xmax == None: xmax = numpy.nanmax(x) | |||
|
164 | if ymin == None: ymin = numpy.nanmin(y) | |||
|
165 | if ymax == None: ymax = numpy.nanmax(y) | |||
|
166 | if zmin == None: zmin = numpy.floor(numpy.nanmin(noisedB)) - 3 | |||
|
167 | if zmax == None: zmax = numpy.ceil(numpy.nanmax(avgdB)) + 3 | |||
|
168 | ||||
|
169 | self.FTP_WEI = ftp_wei | |||
|
170 | self.EXP_CODE = exp_code | |||
|
171 | self.SUB_EXP_CODE = sub_exp_code | |||
|
172 | self.PLOT_POS = plot_pos | |||
|
173 | ||||
|
174 | self.isConfig = True | |||
|
175 | ||||
|
176 | self.setWinTitle(title) | |||
|
177 | ||||
|
178 | for i in range(self.nplots): | |||
|
179 | index = channelIndexList[i] | |||
|
180 | str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S")) | |||
|
181 | title = "Channel %d: %4.2fdB: %s" %(dataOut.channelList[index], noisedB[index], str_datetime) | |||
|
182 | if len(dataOut.beam.codeList) != 0: | |||
|
183 | title = "Ch%d:%4.2fdB,%2.2f,%2.2f:%s" %(dataOut.channelList[index], noisedB[index], dataOut.beam.azimuthList[index], dataOut.beam.zenithList[index], str_datetime) | |||
|
184 | ||||
|
185 | axes = self.axesList[i*self.__nsubplots] | |||
|
186 | axes.pcolor(x, y, zdB[index,:,:], | |||
|
187 | xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax, | |||
|
188 | xlabel=xlabel, ylabel=ylabel, title=title, colormap=colormap, | |||
|
189 | ticksize=9, cblabel='') | |||
|
190 | ||||
|
191 | if self.__showprofile: | |||
|
192 | axes = self.axesList[i*self.__nsubplots +1] | |||
|
193 | axes.pline(avgdB[index,:], y, | |||
|
194 | xmin=zmin, xmax=zmax, ymin=ymin, ymax=ymax, | |||
|
195 | xlabel='dB', ylabel='', title='', | |||
|
196 | ytick_visible=False, | |||
|
197 | grid='x') | |||
|
198 | ||||
|
199 | noiseline = numpy.repeat(noisedB[index], len(y)) | |||
|
200 | axes.addpline(noiseline, y, idline=1, color="black", linestyle="dashed", lw=2) | |||
|
201 | ||||
|
202 | self.draw() | |||
|
203 | ||||
|
204 | if figfile == None: | |||
|
205 | str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S") | |||
|
206 | name = str_datetime | |||
|
207 | if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)): | |||
|
208 | name = name + '_az' + '_%2.2f'%(dataOut.azimuth) + '_zn' + '_%2.2f'%(dataOut.zenith) | |||
|
209 | figfile = self.getFilename(name) | |||
|
210 | ||||
|
211 | self.save(figpath=figpath, | |||
|
212 | figfile=figfile, | |||
|
213 | save=save, | |||
|
214 | ftp=ftp, | |||
|
215 | wr_period=wr_period, | |||
|
216 | thisDatetime=thisDatetime) | |||
|
217 | ||||
|
218 | ||||
|
219 | ||||
9 | class MomentsPlot(Figure): |
|
220 | class MomentsPlot(Figure): | |
10 |
|
221 | |||
11 | isConfig = None |
|
222 | isConfig = None | |
@@ -446,10 +657,14 class WindProfilerPlot(Figure): | |||||
446 | # tmin = None |
|
657 | # tmin = None | |
447 | # tmax = None |
|
658 | # tmax = None | |
448 |
|
659 | |||
449 |
|
660 | x = dataOut.getTimeRange1(dataOut.paramInterval) | ||
450 | x = dataOut.getTimeRange1(dataOut.outputInterval) |
|
|||
451 | y = dataOut.heightList |
|
661 | y = dataOut.heightList | |
452 | z = dataOut.data_output.copy() |
|
662 | z = dataOut.data_output.copy() | |
|
663 | print ' ' | |||
|
664 | print 'Xvel',z[0] | |||
|
665 | print ' ' | |||
|
666 | print 'Yvel',z[1] | |||
|
667 | print ' ' | |||
453 | nplots = z.shape[0] #Number of wind dimensions estimated |
|
668 | nplots = z.shape[0] #Number of wind dimensions estimated | |
454 | nplotsw = nplots |
|
669 | nplotsw = nplots | |
455 |
|
670 | |||
@@ -559,7 +774,7 class WindProfilerPlot(Figure): | |||||
559 | thisDatetime=thisDatetime, |
|
774 | thisDatetime=thisDatetime, | |
560 | update_figfile=update_figfile) |
|
775 | update_figfile=update_figfile) | |
561 |
|
776 | |||
562 |
if dataOut.ltctime + dataOut. |
|
777 | if dataOut.ltctime + dataOut.paramInterval >= self.xmax: | |
563 | self.counter_imagwr = wr_period |
|
778 | self.counter_imagwr = wr_period | |
564 | self.isConfig = False |
|
779 | self.isConfig = False | |
565 | update_figfile = True |
|
780 | update_figfile = True | |
@@ -636,12 +851,12 class ParametersPlot(Figure): | |||||
636 |
|
851 | |||
637 | counter += 1 |
|
852 | counter += 1 | |
638 |
|
853 | |||
639 |
def run(self, dataOut, id, wintitle="", channelList=None, paramIndex = 0, colormap= |
|
854 | def run(self, dataOut, id, wintitle="", channelList=None, paramIndex = 0, colormap="jet", | |
640 | xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, timerange=None, |
|
855 | xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, timerange=None, | |
641 | showSNR=False, SNRthresh = -numpy.inf, SNRmin=None, SNRmax=None, |
|
856 | showSNR=False, SNRthresh = -numpy.inf, SNRmin=None, SNRmax=None, | |
642 | save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True, |
|
857 | save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True, | |
643 | server=None, folder=None, username=None, password=None, |
|
858 | server=None, folder=None, username=None, password=None, | |
644 | ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0): |
|
859 | ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, HEIGHT=None): | |
645 | """ |
|
860 | """ | |
646 |
|
861 | |||
647 | Input: |
|
862 | Input: | |
@@ -657,12 +872,11 class ParametersPlot(Figure): | |||||
657 | zmin : None, |
|
872 | zmin : None, | |
658 | zmax : None |
|
873 | zmax : None | |
659 | """ |
|
874 | """ | |
660 |
|
875 | |||
661 | if colormap: |
|
876 | if HEIGHT is not None: | |
662 | colormap="jet" |
|
877 | self.HEIGHT = HEIGHT | |
663 |
|
|
878 | ||
664 | colormap="RdBu_r" |
|
879 | ||
665 |
|
||||
666 | if not isTimeInHourRange(dataOut.datatime, xmin, xmax): |
|
880 | if not isTimeInHourRange(dataOut.datatime, xmin, xmax): | |
667 | return |
|
881 | return | |
668 |
|
882 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -103,9 +103,6 class SpectraPlot(Figure): | |||||
103 | zmin : None, |
|
103 | zmin : None, | |
104 | zmax : None |
|
104 | zmax : None | |
105 | """ |
|
105 | """ | |
106 |
|
||||
107 | colormap = kwargs.get('colormap','jet') |
|
|||
108 |
|
||||
109 | if realtime: |
|
106 | if realtime: | |
110 | if not(isRealtime(utcdatatime = dataOut.utctime)): |
|
107 | if not(isRealtime(utcdatatime = dataOut.utctime)): | |
111 | print 'Skipping this plot function' |
|
108 | print 'Skipping this plot function' | |
@@ -525,7 +522,7 class RTIPlot(Figure): | |||||
525 | timerange=None, colormap='jet', |
|
522 | timerange=None, colormap='jet', | |
526 | save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True, |
|
523 | save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True, | |
527 | server=None, folder=None, username=None, password=None, |
|
524 | server=None, folder=None, username=None, password=None, | |
528 | ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, normFactor=None): |
|
525 | ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, normFactor=None, HEIGHT=None): | |
529 |
|
526 | |||
530 | """ |
|
527 | """ | |
531 |
|
528 | |||
@@ -543,7 +540,10 class RTIPlot(Figure): | |||||
543 | zmax : None |
|
540 | zmax : None | |
544 | """ |
|
541 | """ | |
545 |
|
542 | |||
546 | colormap = kwargs.get('colormap', 'jet') |
|
543 | #colormap = kwargs.get('colormap', 'jet') | |
|
544 | if HEIGHT is not None: | |||
|
545 | self.HEIGHT = HEIGHT | |||
|
546 | ||||
547 | if not isTimeInHourRange(dataOut.datatime, xmin, xmax): |
|
547 | if not isTimeInHourRange(dataOut.datatime, xmin, xmax): | |
548 | return |
|
548 | return | |
549 |
|
549 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -267,7 +267,6 def addpcolor(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap= | |||||
267 | cmap.set_bad('white',1.) |
|
267 | cmap.set_bad('white',1.) | |
268 | ax.pcolormesh(x,y,z.T,vmin=zmin,vmax=zmax, cmap=matplotlib.pyplot.get_cmap(colormap)) |
|
268 | ax.pcolormesh(x,y,z.T,vmin=zmin,vmax=zmax, cmap=matplotlib.pyplot.get_cmap(colormap)) | |
269 | ax.grid(True) |
|
269 | ax.grid(True) | |
270 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
271 |
|
270 | |||
272 | def addpcolorbuffer(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap='jet'): |
|
271 | def addpcolorbuffer(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap='jet'): | |
273 |
|
272 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -1058,10 +1058,10 class JRODataReader(JRODataIO): | |||||
1058 |
|
1058 | |||
1059 | break |
|
1059 | break | |
1060 |
|
1060 | |||
1061 | if self.verbose: |
|
1061 | # if self.verbose: | |
1062 | print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, |
|
1062 | # print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, | |
1063 | self.processingHeaderObj.dataBlocksPerFile, |
|
1063 | # self.processingHeaderObj.dataBlocksPerFile, | |
1064 | self.dataOut.datatime.ctime()) |
|
1064 | # self.dataOut.datatime.ctime()) | |
1065 | return 1 |
|
1065 | return 1 | |
1066 |
|
1066 | |||
1067 | def __readFirstHeader(self): |
|
1067 | def __readFirstHeader(self): | |
@@ -1417,11 +1417,12 class JRODataReader(JRODataIO): | |||||
1417 | print "[Reading] Number of read blocks %04d" %self.nTotalBlocks |
|
1417 | print "[Reading] Number of read blocks %04d" %self.nTotalBlocks | |
1418 |
|
1418 | |||
1419 | def printNumberOfBlock(self): |
|
1419 | def printNumberOfBlock(self): | |
|
1420 | 'SPAM!' | |||
1420 |
|
1421 | |||
1421 | if self.flagIsNewBlock: |
|
1422 | # if self.flagIsNewBlock: | |
1422 | print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, |
|
1423 | # print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, | |
1423 | self.processingHeaderObj.dataBlocksPerFile, |
|
1424 | # self.processingHeaderObj.dataBlocksPerFile, | |
1424 | self.dataOut.datatime.ctime()) |
|
1425 | # self.dataOut.datatime.ctime()) | |
1425 |
|
1426 | |||
1426 | def printInfo(self): |
|
1427 | def printInfo(self): | |
1427 |
|
1428 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -30,6 +30,7 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation | |||||
30 | #from schainpy.model.io.jroIO_bltr import BLTRReader |
|
30 | #from schainpy.model.io.jroIO_bltr import BLTRReader | |
31 | from numpy import imag, shape, NaN |
|
31 | from numpy import imag, shape, NaN | |
32 |
|
32 | |||
|
33 | from jroIO_base import JRODataReader | |||
33 |
|
34 | |||
34 |
|
35 | |||
35 | class Header(object): |
|
36 | class Header(object): | |
@@ -426,7 +427,7 class RecordHeaderBLTR(Header): | |||||
426 | return 1 |
|
427 | return 1 | |
427 |
|
428 | |||
428 |
|
429 | |||
429 | class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): |
|
430 | class BLTRReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReader): | |
430 |
|
431 | |||
431 | path = None |
|
432 | path = None | |
432 | startDate = None |
|
433 | startDate = None | |
@@ -450,10 +451,10 class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): | |||||
450 |
|
451 | |||
451 |
|
452 | |||
452 |
|
453 | |||
453 | def __init__(self): |
|
454 | def __init__(self, **kwargs): | |
454 |
|
455 | |||
455 | #Eliminar de la base la herencia |
|
456 | #Eliminar de la base la herencia | |
456 | ProcessingUnit.__init__(self) |
|
457 | ProcessingUnit.__init__(self, **kwargs) | |
457 |
|
458 | |||
458 | # self.isConfig = False |
|
459 | # self.isConfig = False | |
459 |
|
460 | |||
@@ -541,7 +542,8 class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): | |||||
541 | timezone='utc', |
|
542 | timezone='utc', | |
542 | code = None, |
|
543 | code = None, | |
543 | online=False, |
|
544 | online=False, | |
544 |
ReadMode=None |
|
545 | ReadMode=None, | |
|
546 | **kwargs): | |||
545 |
|
547 | |||
546 | self.isConfig = True |
|
548 | self.isConfig = True | |
547 |
|
549 | |||
@@ -717,8 +719,8 class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): | |||||
717 |
|
719 | |||
718 | self.data_block = numpy.transpose(self.data_block, (1,2,0)) |
|
720 | self.data_block = numpy.transpose(self.data_block, (1,2,0)) | |
719 |
|
721 | |||
720 |
|
722 | copy = self.data_block.copy() | ||
721 |
spc = |
|
723 | spc = copy * numpy.conjugate(copy) | |
722 |
|
724 | |||
723 | self.data_spc = numpy.absolute(spc) # valor absoluto o magnitud |
|
725 | self.data_spc = numpy.absolute(spc) # valor absoluto o magnitud | |
724 |
|
726 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -416,7 +416,7 class RecordHeader(Header): | |||||
416 | self.RadarConst = header['RadarConst'][0] # |
|
416 | self.RadarConst = header['RadarConst'][0] # | |
417 | #84 |
|
417 | #84 | |
418 |
|
418 | |||
419 | print 'Pointer fp RECheader', fp.tell() |
|
419 | #print 'Pointer fp RECheader', fp.tell() | |
420 |
|
420 | |||
421 | #self.ipp= 0.5*(SPEED_OF_LIGHT/self.PRFhz) |
|
421 | #self.ipp= 0.5*(SPEED_OF_LIGHT/self.PRFhz) | |
422 |
|
422 | |||
@@ -456,10 +456,10 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
456 |
|
456 | |||
457 |
|
457 | |||
458 |
|
458 | |||
459 | def __init__(self): |
|
459 | def __init__(self, **kwargs): | |
460 |
|
460 | |||
461 | #Eliminar de la base la herencia |
|
461 | #Eliminar de la base la herencia | |
462 | ProcessingUnit.__init__(self) |
|
462 | ProcessingUnit.__init__(self, **kwargs) | |
463 | self.PointerReader = 0 |
|
463 | self.PointerReader = 0 | |
464 | self.FileHeaderFlag = False |
|
464 | self.FileHeaderFlag = False | |
465 | self.utc = None |
|
465 | self.utc = None | |
@@ -490,13 +490,14 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
490 | self.dataOut.nRdPairs = 0 |
|
490 | self.dataOut.nRdPairs = 0 | |
491 | self.dataOut.pairsList = [] |
|
491 | self.dataOut.pairsList = [] | |
492 | self.dataOut.data_spc=None |
|
492 | self.dataOut.data_spc=None | |
493 | self.dataOut.noise=[] |
|
493 | ||
494 | self.dataOut.normFactor=1 |
|
494 | self.dataOut.normFactor=1 | |
495 | self.nextfileflag = True |
|
495 | self.nextfileflag = True | |
496 | self.dataOut.RadarConst = 0 |
|
496 | self.dataOut.RadarConst = 0 | |
497 | self.dataOut.HSDV = [] |
|
497 | self.dataOut.HSDV = [] | |
498 | self.dataOut.NPW = [] |
|
498 | self.dataOut.NPW = [] | |
499 | self.dataOut.COFA = [] |
|
499 | self.dataOut.COFA = [] | |
|
500 | self.dataOut.noise = 0 | |||
500 |
|
501 | |||
501 |
|
502 | |||
502 | def Files2Read(self, fp): |
|
503 | def Files2Read(self, fp): | |
@@ -543,7 +544,7 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
543 | timezone='utc', |
|
544 | timezone='utc', | |
544 | code = None, |
|
545 | code = None, | |
545 | online=False, |
|
546 | online=False, | |
546 | ReadMode=None): |
|
547 | ReadMode=None, **kwargs): | |
547 |
|
548 | |||
548 | self.isConfig = True |
|
549 | self.isConfig = True | |
549 |
|
550 | |||
@@ -553,7 +554,7 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
553 | self.startTime=startTime |
|
554 | self.startTime=startTime | |
554 | self.endTime=endTime |
|
555 | self.endTime=endTime | |
555 | self.walk=walk |
|
556 | self.walk=walk | |
556 | self.ReadMode=int(ReadMode) |
|
557 | #self.ReadMode=int(ReadMode) | |
557 |
|
558 | |||
558 | pass |
|
559 | pass | |
559 |
|
560 | |||
@@ -576,9 +577,13 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
576 | self.Files2Read(self.fp) |
|
577 | self.Files2Read(self.fp) | |
577 | self.readFile(self.fp) |
|
578 | self.readFile(self.fp) | |
578 |
|
579 | |||
579 | self.dataOut.data_spc = self.data_spc.copy() |
|
580 | self.dataOut.data_spc = self.dataOut_spc#self.data_spc.copy() | |
580 | self.dataOut.RadarConst = self.RadarConst |
|
581 | self.dataOut.RadarConst = self.RadarConst | |
581 | self.dataOut.data_output=self.data_output |
|
582 | self.dataOut.data_output=self.data_output | |
|
583 | self.dataOut.noise = self.dataOut.getNoise() | |||
|
584 | #print 'ACAAAAAA', self.dataOut.noise | |||
|
585 | self.dataOut.data_spc = self.dataOut.data_spc+self.dataOut.noise | |||
|
586 | #print 'self.dataOut.noise',self.dataOut.noise | |||
582 |
|
587 | |||
583 |
|
588 | |||
584 | return self.dataOut.data_spc |
|
589 | return self.dataOut.data_spc | |
@@ -629,7 +634,7 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
629 | pulse_width = self.fheader.PPARpdr * 10**-9 |
|
634 | pulse_width = self.fheader.PPARpdr * 10**-9 | |
630 | self.__deltaHeigth = 0.5 * SPEED_OF_LIGHT * pulse_width |
|
635 | self.__deltaHeigth = 0.5 * SPEED_OF_LIGHT * pulse_width | |
631 |
|
636 | |||
632 | self.data_spc = numpy.zeros((self.Num_Hei, self.Num_Bins,2)) |
|
637 | self.data_spc = numpy.zeros((self.Num_Hei, self.Num_Bins,2))# | |
633 | self.dataOut.HSDV = numpy.zeros((self.Num_Hei, 2)) |
|
638 | self.dataOut.HSDV = numpy.zeros((self.Num_Hei, 2)) | |
634 |
|
639 | |||
635 | self.Ze = numpy.zeros(self.Num_Hei) |
|
640 | self.Ze = numpy.zeros(self.Num_Hei) | |
@@ -693,7 +698,7 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
693 | npw2 = self.recordheader.npw2 |
|
698 | npw2 = self.recordheader.npw2 | |
694 |
|
699 | |||
695 |
|
700 | |||
696 |
self.dataOut.channelList = range( |
|
701 | self.dataOut.channelList = range(1) | |
697 | self.dataOut.nIncohInt = self.Num_inCoh |
|
702 | self.dataOut.nIncohInt = self.Num_inCoh | |
698 | self.dataOut.nProfiles = self.Num_Bins |
|
703 | self.dataOut.nProfiles = self.Num_Bins | |
699 | self.dataOut.nCohInt = 1 |
|
704 | self.dataOut.nCohInt = 1 | |
@@ -756,7 +761,6 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
756 |
|
761 | |||
757 | self.dataOut.COFA = numpy.array([self.COFA_Co , self.COFA_Cx]) |
|
762 | self.dataOut.COFA = numpy.array([self.COFA_Co , self.COFA_Cx]) | |
758 |
|
763 | |||
759 |
|
||||
760 | print ' ' |
|
764 | print ' ' | |
761 | print 'SPC',numpy.shape(self.dataOut.data_spc) |
|
765 | print 'SPC',numpy.shape(self.dataOut.data_spc) | |
762 | #print 'SPC',self.dataOut.data_spc |
|
766 | #print 'SPC',self.dataOut.data_spc | |
@@ -764,20 +768,26 class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): | |||||
764 | noinor1 = 713031680 |
|
768 | noinor1 = 713031680 | |
765 | noinor2 = 30 |
|
769 | noinor2 = 30 | |
766 |
|
770 | |||
767 | #print 'npw1 db' , npw1 |
|
771 | npw1 = 1#0**(npw1/10) * noinor1 * noinor2 | |
768 |
|
772 | npw2 = 1#0**(npw2/10) * noinor1 * noinor2 | ||
769 | npw1 = 10**(npw1/10) * noinor1 * noinor2 |
|
|||
770 | npw2 = 10**(npw2/10) * noinor1 * noinor2 |
|
|||
771 | self.dataOut.NPW = numpy.array([npw1, npw2]) |
|
773 | self.dataOut.NPW = numpy.array([npw1, npw2]) | |
772 |
|
774 | |||
773 |
|
||||
774 | print ' ' |
|
775 | print ' ' | |
775 | #print numpy.__version__ |
|
776 | ||
776 | self.data_spc = numpy.transpose(self.data_spc, (2,1,0)) |
|
777 | self.data_spc = numpy.transpose(self.data_spc, (2,1,0)) | |
777 | self.data_spc = numpy.fft.fftshift(self.data_spc, axes = 1) |
|
778 | self.data_spc = numpy.fft.fftshift(self.data_spc, axes = 1) | |
778 |
|
779 | |||
779 | self.data_spc = numpy.fliplr(self.data_spc) |
|
780 | self.data_spc = numpy.fliplr(self.data_spc) | |
780 |
|
781 | |||
|
782 | self.data_spc = numpy.where(self.data_spc > 0. , self.data_spc, 0) | |||
|
783 | self.dataOut_spc= numpy.ones([1, self.Num_Bins , self.Num_Hei]) | |||
|
784 | self.dataOut_spc[0,:,:] = self.data_spc[0,:,:] | |||
|
785 | #print 'SHAPE', self.dataOut_spc.shape | |||
|
786 | #For nyquist correction: | |||
|
787 | #fix = 20 # ~3m/s | |||
|
788 | #shift = self.Num_Bins/2 + fix | |||
|
789 | #self.data_spc = numpy.array([ self.data_spc[: , self.Num_Bins-shift+1: , :] , self.data_spc[: , 0:self.Num_Bins-shift , :]]) | |||
|
790 | ||||
781 |
|
791 | |||
782 |
|
792 | |||
783 | '''Block Reading, the Block Data is received and Reshape is used to give it |
|
793 | '''Block Reading, the Block Data is received and Reshape is used to give it |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -178,8 +178,8 class ParamReader(ProcessingUnit): | |||||
178 | print "[Reading] %d file(s) was(were) found in time range: %s - %s" %(len(filenameList), startTime, endTime) |
|
178 | print "[Reading] %d file(s) was(were) found in time range: %s - %s" %(len(filenameList), startTime, endTime) | |
179 |
|
179 | |||
180 |
|
180 | |||
181 | for i in range(len(filenameList)): |
|
181 | # for i in range(len(filenameList)): | |
182 | print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime()) |
|
182 | # print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime()) | |
183 |
|
183 | |||
184 | self.filenameList = filenameList |
|
184 | self.filenameList = filenameList | |
185 | self.datetimeList = datetimeList |
|
185 | self.datetimeList = datetimeList |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
This diff has been collapsed as it changes many lines, (568 lines changed) Show them Hide them | |||||
@@ -11,22 +11,17 from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, | |||||
11 | from schainpy.model.data.jrodata import Spectra |
|
11 | from schainpy.model.data.jrodata import Spectra | |
12 |
|
12 | |||
13 | class SpectraReader(JRODataReader, ProcessingUnit): |
|
13 | class SpectraReader(JRODataReader, ProcessingUnit): | |
14 | <<<<<<< HEAD |
|
14 | ||
15 | """ |
|
15 | """ | |
16 | Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura |
|
16 | Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura | |
17 | de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) |
|
17 | de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) | |
18 | ======= |
|
|||
19 | """ |
|
|||
20 | Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura |
|
|||
21 | de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) |
|
|||
22 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
23 | son almacenados en tres buffer's para el Self Spectra, el Cross Spectra y el DC Channel. |
|
18 | son almacenados en tres buffer's para el Self Spectra, el Cross Spectra y el DC Channel. | |
24 |
|
|
19 | ||
25 | paresCanalesIguales * alturas * perfiles (Self Spectra) |
|
20 | paresCanalesIguales * alturas * perfiles (Self Spectra) | |
26 | paresCanalesDiferentes * alturas * perfiles (Cross Spectra) |
|
21 | paresCanalesDiferentes * alturas * perfiles (Cross Spectra) | |
27 | canales * alturas (DC Channels) |
|
22 | canales * alturas (DC Channels) | |
28 |
|
|
23 | ||
29 | <<<<<<< HEAD |
|
24 | ||
30 | Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, |
|
25 | Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, | |
31 | RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la |
|
26 | RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la | |
32 | cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de |
|
27 | cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de | |
@@ -81,168 +76,25 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
81 | Inicializador de la clase SpectraReader para la lectura de datos de espectros. |
|
76 | Inicializador de la clase SpectraReader para la lectura de datos de espectros. | |
82 |
|
|
77 | ||
83 | Inputs: |
|
78 | Inputs: | |
84 | ======= |
|
|||
85 | Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, |
|
|||
86 | RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la |
|
|||
87 | cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de |
|
|||
88 | datos desde el "buffer" cada vez que se ejecute el metodo "getData". |
|
|||
89 |
|
||||
90 | Example: |
|
|||
91 | dpath = "/home/myuser/data" |
|
|||
92 |
|
||||
93 | startTime = datetime.datetime(2010,1,20,0,0,0,0,0,0) |
|
|||
94 |
|
||||
95 | endTime = datetime.datetime(2010,1,21,23,59,59,0,0,0) |
|
|||
96 |
|
||||
97 | readerObj = SpectraReader() |
|
|||
98 |
|
||||
99 | readerObj.setup(dpath, startTime, endTime) |
|
|||
100 |
|
||||
101 | while(True): |
|
|||
102 |
|
||||
103 | readerObj.getData() |
|
|||
104 |
|
||||
105 | print readerObj.data_spc |
|
|||
106 |
|
||||
107 | print readerObj.data_cspc |
|
|||
108 |
|
||||
109 | print readerObj.data_dc |
|
|||
110 |
|
||||
111 | if readerObj.flagNoMoreFiles: |
|
|||
112 | break |
|
|||
113 |
|
||||
114 | """ |
|
|||
115 |
|
||||
116 | pts2read_SelfSpectra = 0 |
|
|||
117 |
|
||||
118 | pts2read_CrossSpectra = 0 |
|
|||
119 |
|
||||
120 | pts2read_DCchannels = 0 |
|
|||
121 |
|
||||
122 | ext = ".pdata" |
|
|||
123 |
|
||||
124 | optchar = "P" |
|
|||
125 |
|
||||
126 | dataOut = None |
|
|||
127 |
|
||||
128 | nRdChannels = None |
|
|||
129 |
|
||||
130 | nRdPairs = None |
|
|||
131 |
|
||||
132 | rdPairList = [] |
|
|||
133 |
|
||||
134 | def __init__(self): |
|
|||
135 | """ |
|
|||
136 | Inicializador de la clase SpectraReader para la lectura de datos de espectros. |
|
|||
137 |
|
|
79 | ||
138 | Inputs: |
|
|||
139 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
140 | dataOut : Objeto de la clase Spectra. Este objeto sera utilizado para |
|
80 | dataOut : Objeto de la clase Spectra. Este objeto sera utilizado para | |
141 | almacenar un perfil de datos cada vez que se haga un requerimiento |
|
81 | almacenar un perfil de datos cada vez que se haga un requerimiento | |
142 | (getData). El perfil sera obtenido a partir del buffer de datos, |
|
82 | (getData). El perfil sera obtenido a partir del buffer de datos, | |
143 | si el buffer esta vacio se hara un nuevo proceso de lectura de un |
|
83 | si el buffer esta vacio se hara un nuevo proceso de lectura de un | |
144 | bloque de datos. |
|
84 | bloque de datos. | |
145 | Si este parametro no es pasado se creara uno internamente. |
|
85 | Si este parametro no es pasado se creara uno internamente. | |
146 | <<<<<<< HEAD |
|
|||
147 |
|
|
86 | ||
148 | Affected: |
|
|||
149 | ======= |
|
|||
150 |
|
|
87 | ||
151 | Affected: |
|
88 | Affected: | |
152 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
89 | ||
153 | self.dataOut |
|
90 | self.dataOut | |
154 |
|
|
91 | ||
155 | Return : None |
|
92 | Return : None | |
156 |
|
|
93 | """ | |
157 | <<<<<<< HEAD |
|
|||
158 |
|
||||
159 | #Eliminar de la base la herencia |
|
|||
160 | ProcessingUnit.__init__(self, **kwargs) |
|
|||
161 |
|
||||
162 | # self.isConfig = False |
|
|||
163 |
|
||||
164 | self.pts2read_SelfSpectra = 0 |
|
|||
165 |
|
||||
166 | self.pts2read_CrossSpectra = 0 |
|
|||
167 |
|
||||
168 | self.pts2read_DCchannels = 0 |
|
|||
169 |
|
||||
170 | self.datablock = None |
|
|||
171 |
|
||||
172 | self.utc = None |
|
|||
173 |
|
||||
174 | self.ext = ".pdata" |
|
|||
175 |
|
||||
176 | self.optchar = "P" |
|
|||
177 |
|
||||
178 | self.basicHeaderObj = BasicHeader(LOCALTIME) |
|
|||
179 |
|
||||
180 | self.systemHeaderObj = SystemHeader() |
|
|||
181 |
|
||||
182 | self.radarControllerHeaderObj = RadarControllerHeader() |
|
|||
183 |
|
||||
184 | self.processingHeaderObj = ProcessingHeader() |
|
|||
185 |
|
||||
186 | self.online = 0 |
|
|||
187 |
|
||||
188 | self.fp = None |
|
|||
189 |
|
||||
190 | self.idFile = None |
|
|||
191 |
|
||||
192 | self.dtype = None |
|
|||
193 |
|
||||
194 | self.fileSizeByHeader = None |
|
|||
195 |
|
||||
196 | self.filenameList = [] |
|
|||
197 |
|
||||
198 | self.filename = None |
|
|||
199 |
|
||||
200 | self.fileSize = None |
|
|||
201 |
|
||||
202 | self.firstHeaderSize = 0 |
|
|||
203 |
|
||||
204 | self.basicHeaderSize = 24 |
|
|||
205 |
|
||||
206 | self.pathList = [] |
|
|||
207 |
|
||||
208 | self.lastUTTime = 0 |
|
|||
209 |
|
||||
210 | self.maxTimeStep = 30 |
|
|||
211 |
|
||||
212 | self.flagNoMoreFiles = 0 |
|
|||
213 |
|
||||
214 | self.set = 0 |
|
|||
215 |
|
||||
216 | self.path = None |
|
|||
217 |
|
||||
218 | self.delay = 60 #seconds |
|
|||
219 |
|
||||
220 | self.nTries = 3 #quantity tries |
|
|||
221 |
|
||||
222 | self.nFiles = 3 #number of files for searching |
|
|||
223 |
|
||||
224 | self.nReadBlocks = 0 |
|
|||
225 |
|
||||
226 | self.flagIsNewFile = 1 |
|
|||
227 |
|
||||
228 | self.__isFirstTimeOnline = 1 |
|
|||
229 |
|
||||
230 | # self.ippSeconds = 0 |
|
|||
231 |
|
||||
232 | self.flagDiscontinuousBlock = 0 |
|
|||
233 |
|
||||
234 | self.flagIsNewBlock = 0 |
|
|||
235 |
|
94 | |||
236 | self.nTotalBlocks = 0 |
|
|||
237 |
|
||||
238 | self.blocksize = 0 |
|
|||
239 |
|
||||
240 | self.dataOut = self.createObjByDefault() |
|
|||
241 |
|
||||
242 | ======= |
|
|||
243 |
|
95 | |||
244 | #Eliminar de la base la herencia |
|
96 | #Eliminar de la base la herencia | |
245 | ProcessingUnit.__init__(self) |
|
97 | ProcessingUnit.__init__(self, **kwargs) | |
246 |
|
98 | |||
247 | # self.isConfig = False |
|
99 | # self.isConfig = False | |
248 |
|
100 | |||
@@ -324,24 +176,15 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
324 |
|
176 | |||
325 | self.dataOut = self.createObjByDefault() |
|
177 | self.dataOut = self.createObjByDefault() | |
326 |
|
178 | |||
327 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
328 | self.profileIndex = 1 #Always |
|
179 | self.profileIndex = 1 #Always | |
329 |
|
180 | |||
330 |
|
181 | |||
331 | def createObjByDefault(self): |
|
182 | def createObjByDefault(self): | |
332 | <<<<<<< HEAD |
|
|||
333 |
|
||||
334 | dataObj = Spectra() |
|
|||
335 |
|
||||
336 | return dataObj |
|
|||
337 |
|
||||
338 | ======= |
|
|||
339 |
|
183 | |||
340 | dataObj = Spectra() |
|
184 | dataObj = Spectra() | |
341 |
|
185 | |||
342 | return dataObj |
|
186 | return dataObj | |
343 |
|
187 | |||
344 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
345 | def __hasNotDataInBuffer(self): |
|
188 | def __hasNotDataInBuffer(self): | |
346 | return 1 |
|
189 | return 1 | |
347 |
|
190 | |||
@@ -349,11 +192,7 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
349 | def getBlockDimension(self): |
|
192 | def getBlockDimension(self): | |
350 |
|
|
193 | """ | |
351 | Obtiene la cantidad de puntos a leer por cada bloque de datos |
|
194 | Obtiene la cantidad de puntos a leer por cada bloque de datos | |
352 | <<<<<<< HEAD |
|
|||
353 |
|
||||
354 | ======= |
|
|||
355 |
|
|
195 | ||
356 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
357 | Affected: |
|
196 | Affected: | |
358 | self.nRdChannels |
|
197 | self.nRdChannels | |
359 | self.nRdPairs |
|
198 | self.nRdPairs | |
@@ -370,40 +209,16 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
370 | self.nRdChannels = 0 |
|
209 | self.nRdChannels = 0 | |
371 | self.nRdPairs = 0 |
|
210 | self.nRdPairs = 0 | |
372 | self.rdPairList = [] |
|
211 | self.rdPairList = [] | |
373 | <<<<<<< HEAD |
|
|||
374 |
|
212 | |||
375 | for i in range(0, self.processingHeaderObj.totalSpectra*2, 2): |
|
213 | for i in range(0, self.processingHeaderObj.totalSpectra*2, 2): | |
376 | if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]: |
|
214 | if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]: | |
377 | self.nRdChannels = self.nRdChannels + 1 #par de canales iguales |
|
|||
378 | ======= |
|
|||
379 |
|
||||
380 |
|
||||
381 | for i in range(0, self.processingHeaderObj.totalSpectra*2, 2): |
|
|||
382 | if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]: |
|
|||
383 | self.nRdChannels = self.nRdChannels + 1 #par de canales iguales |
|
215 | self.nRdChannels = self.nRdChannels + 1 #par de canales iguales | |
384 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
216 | ||
385 | else: |
|
217 | else: | |
386 | self.nRdPairs = self.nRdPairs + 1 #par de canales diferentes |
|
218 | self.nRdPairs = self.nRdPairs + 1 #par de canales diferentes | |
387 | self.rdPairList.append((self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1])) |
|
219 | self.rdPairList.append((self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1])) | |
388 |
|
220 | |||
389 | pts2read = self.processingHeaderObj.nHeights * self.processingHeaderObj.profilesPerBlock |
|
221 | pts2read = self.processingHeaderObj.nHeights * self.processingHeaderObj.profilesPerBlock | |
390 | <<<<<<< HEAD |
|
|||
391 |
|
||||
392 | self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read) |
|
|||
393 | self.blocksize = self.pts2read_SelfSpectra |
|
|||
394 |
|
||||
395 | if self.processingHeaderObj.flag_cspc: |
|
|||
396 | self.pts2read_CrossSpectra = int(self.nRdPairs * pts2read) |
|
|||
397 | self.blocksize += self.pts2read_CrossSpectra |
|
|||
398 |
|
||||
399 | if self.processingHeaderObj.flag_dc: |
|
|||
400 | self.pts2read_DCchannels = int(self.systemHeaderObj.nChannels * self.processingHeaderObj.nHeights) |
|
|||
401 | self.blocksize += self.pts2read_DCchannels |
|
|||
402 |
|
||||
403 | # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels |
|
|||
404 |
|
||||
405 |
|
||||
406 | ======= |
|
|||
407 |
|
222 | |||
408 | self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read) |
|
223 | self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read) | |
409 | self.blocksize = self.pts2read_SelfSpectra |
|
224 | self.blocksize = self.pts2read_SelfSpectra | |
@@ -419,26 +234,18 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
419 | # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels |
|
234 | # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels | |
420 |
|
235 | |||
421 |
|
236 | |||
422 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
423 | def readBlock(self): |
|
237 | def readBlock(self): | |
424 |
|
|
238 | """ | |
425 | Lee el bloque de datos desde la posicion actual del puntero del archivo |
|
239 | Lee el bloque de datos desde la posicion actual del puntero del archivo | |
426 | (self.fp) y actualiza todos los parametros relacionados al bloque de datos |
|
240 | (self.fp) y actualiza todos los parametros relacionados al bloque de datos | |
427 | (metadata + data). La data leida es almacenada en el buffer y el contador del buffer |
|
241 | (metadata + data). La data leida es almacenada en el buffer y el contador del buffer | |
428 | es seteado a 0 |
|
242 | es seteado a 0 | |
429 | <<<<<<< HEAD |
|
|||
430 |
|
||||
431 | Return: None |
|
|||
432 |
|
||||
433 | Variables afectadas: |
|
|||
434 |
|
||||
435 | ======= |
|
|||
436 |
|
|
243 | ||
437 | Return: None |
|
244 | Return: None | |
438 |
|
|
245 | ||
439 | Variables afectadas: |
|
246 | Variables afectadas: | |
440 |
|
|
247 | ||
441 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
248 | ||
442 | self.flagIsNewFile |
|
249 | self.flagIsNewFile | |
443 | self.flagIsNewBlock |
|
250 | self.flagIsNewBlock | |
444 | self.nTotalBlocks |
|
251 | self.nTotalBlocks | |
@@ -446,11 +253,6 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
446 | self.data_cspc |
|
253 | self.data_cspc | |
447 | self.data_dc |
|
254 | self.data_dc | |
448 |
|
|
255 | ||
449 | <<<<<<< HEAD |
|
|||
450 | Exceptions: |
|
|||
451 | Si un bloque leido no es un bloque valido |
|
|||
452 | """ |
|
|||
453 | ======= |
|
|||
454 | Exceptions: |
|
256 | Exceptions: | |
455 | Si un bloque leido no es un bloque valido |
|
257 | Si un bloque leido no es un bloque valido | |
456 | """ |
|
258 | """ | |
@@ -463,25 +265,13 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
463 | print ' ' |
|
265 | print ' ' | |
464 | print ' ======================================================== ' |
|
266 | print ' ======================================================== ' | |
465 |
|
267 | |||
466 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
268 | ||
467 | blockOk_flag = False |
|
269 | blockOk_flag = False | |
468 | fpointer = self.fp.tell() |
|
270 | fpointer = self.fp.tell() | |
469 |
|
271 | |||
470 | spc = numpy.fromfile( self.fp, self.dtype[0], self.pts2read_SelfSpectra ) |
|
272 | spc = numpy.fromfile( self.fp, self.dtype[0], self.pts2read_SelfSpectra ) | |
471 | spc = spc.reshape( (self.nRdChannels, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D |
|
273 | spc = spc.reshape( (self.nRdChannels, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D | |
472 | <<<<<<< HEAD |
|
|||
473 |
|
||||
474 | if self.processingHeaderObj.flag_cspc: |
|
|||
475 | cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra ) |
|
|||
476 | cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D |
|
|||
477 |
|
||||
478 | if self.processingHeaderObj.flag_dc: |
|
|||
479 | dc = numpy.fromfile( self.fp, self.dtype, self.pts2read_DCchannels ) #int(self.processingHeaderObj.nHeights*self.systemHeaderObj.nChannels) ) |
|
|||
480 | dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D |
|
|||
481 |
|
||||
482 |
|
274 | |||
483 | ======= |
|
|||
484 |
|
||||
485 | if self.processingHeaderObj.flag_cspc: |
|
275 | if self.processingHeaderObj.flag_cspc: | |
486 | cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra ) |
|
276 | cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra ) | |
487 | cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D |
|
277 | cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D | |
@@ -491,23 +281,10 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
491 | dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D |
|
281 | dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D | |
492 |
|
282 | |||
493 |
|
283 | |||
494 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
495 | if not(self.processingHeaderObj.shif_fft): |
|
284 | if not(self.processingHeaderObj.shif_fft): | |
496 | #desplaza a la derecha en el eje 2 determinadas posiciones |
|
285 | #desplaza a la derecha en el eje 2 determinadas posiciones | |
497 | shift = int(self.processingHeaderObj.profilesPerBlock/2) |
|
286 | shift = int(self.processingHeaderObj.profilesPerBlock/2) | |
498 | spc = numpy.roll( spc, shift , axis=2 ) |
|
287 | spc = numpy.roll( spc, shift , axis=2 ) | |
499 | <<<<<<< HEAD |
|
|||
500 |
|
||||
501 | if self.processingHeaderObj.flag_cspc: |
|
|||
502 | #desplaza a la derecha en el eje 2 determinadas posiciones |
|
|||
503 | cspc = numpy.roll( cspc, shift, axis=2 ) |
|
|||
504 |
|
||||
505 | #Dimensions : nChannels, nProfiles, nSamples |
|
|||
506 | spc = numpy.transpose( spc, (0,2,1) ) |
|
|||
507 | self.data_spc = spc |
|
|||
508 |
|
||||
509 | if self.processingHeaderObj.flag_cspc: |
|
|||
510 | ======= |
|
|||
511 |
|
288 | |||
512 | if self.processingHeaderObj.flag_cspc: |
|
289 | if self.processingHeaderObj.flag_cspc: | |
513 | #desplaza a la derecha en el eje 2 determinadas posiciones |
|
290 | #desplaza a la derecha en el eje 2 determinadas posiciones | |
@@ -518,16 +295,13 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
518 | self.data_spc = spc |
|
295 | self.data_spc = spc | |
519 |
|
296 | |||
520 | if self.processingHeaderObj.flag_cspc: |
|
297 | if self.processingHeaderObj.flag_cspc: | |
521 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
298 | ||
522 | cspc = numpy.transpose( cspc, (0,2,1) ) |
|
299 | cspc = numpy.transpose( cspc, (0,2,1) ) | |
523 | self.data_cspc = cspc['real'] + cspc['imag']*1j |
|
300 | self.data_cspc = cspc['real'] + cspc['imag']*1j | |
524 | else: |
|
301 | else: | |
525 | self.data_cspc = None |
|
302 | self.data_cspc = None | |
526 | <<<<<<< HEAD |
|
|||
527 |
|
||||
528 | ======= |
|
|||
529 |
|
303 | |||
530 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
304 | ||
531 | if self.processingHeaderObj.flag_dc: |
|
305 | if self.processingHeaderObj.flag_dc: | |
532 | self.data_dc = dc['real'] + dc['imag']*1j |
|
306 | self.data_dc = dc['real'] + dc['imag']*1j | |
533 | else: |
|
307 | else: | |
@@ -540,62 +314,6 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
540 | self.nReadBlocks += 1 |
|
314 | self.nReadBlocks += 1 | |
541 |
|
315 | |||
542 | return 1 |
|
316 | return 1 | |
543 | <<<<<<< HEAD |
|
|||
544 |
|
||||
545 | def getFirstHeader(self): |
|
|||
546 |
|
||||
547 | self.getBasicHeader() |
|
|||
548 |
|
||||
549 | self.dataOut.systemHeaderObj = self.systemHeaderObj.copy() |
|
|||
550 |
|
||||
551 | self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy() |
|
|||
552 |
|
||||
553 | # self.dataOut.ippSeconds = self.ippSeconds |
|
|||
554 |
|
||||
555 | # self.dataOut.timeInterval = self.radarControllerHeaderObj.ippSeconds * self.processingHeaderObj.nCohInt * self.processingHeaderObj.nIncohInt * self.processingHeaderObj.profilesPerBlock |
|
|||
556 |
|
||||
557 | self.dataOut.dtype = self.dtype |
|
|||
558 |
|
||||
559 | # self.dataOut.nPairs = self.nPairs |
|
|||
560 |
|
||||
561 | self.dataOut.pairsList = self.rdPairList |
|
|||
562 |
|
||||
563 | self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock |
|
|||
564 |
|
||||
565 | self.dataOut.nFFTPoints = self.processingHeaderObj.profilesPerBlock |
|
|||
566 |
|
||||
567 | self.dataOut.nCohInt = self.processingHeaderObj.nCohInt |
|
|||
568 |
|
||||
569 | self.dataOut.nIncohInt = self.processingHeaderObj.nIncohInt |
|
|||
570 |
|
||||
571 | xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight |
|
|||
572 |
|
||||
573 | self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight) |
|
|||
574 |
|
||||
575 | self.dataOut.channelList = range(self.systemHeaderObj.nChannels) |
|
|||
576 |
|
||||
577 | self.dataOut.flagShiftFFT = True #Data is always shifted |
|
|||
578 |
|
||||
579 | self.dataOut.flagDecodeData = self.processingHeaderObj.flag_decode #asumo q la data no esta decodificada |
|
|||
580 |
|
||||
581 | self.dataOut.flagDeflipData = self.processingHeaderObj.flag_deflip #asumo q la data esta sin flip |
|
|||
582 |
|
||||
583 | def getData(self): |
|
|||
584 | """ |
|
|||
585 | First method to execute before "RUN" is called. |
|
|||
586 |
|
||||
587 | Copia el buffer de lectura a la clase "Spectra", |
|
|||
588 | con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de |
|
|||
589 | lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock" |
|
|||
590 |
|
||||
591 | Return: |
|
|||
592 | 0 : Si no hay mas archivos disponibles |
|
|||
593 | 1 : Si hizo una buena copia del buffer |
|
|||
594 |
|
||||
595 | Affected: |
|
|||
596 | self.dataOut |
|
|||
597 |
|
||||
598 | ======= |
|
|||
599 |
|
317 | |||
600 | def getFirstHeader(self): |
|
318 | def getFirstHeader(self): | |
601 |
|
319 | |||
@@ -650,7 +368,6 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
650 | Affected: |
|
368 | Affected: | |
651 | self.dataOut |
|
369 | self.dataOut | |
652 |
|
|
370 | ||
653 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
654 | self.flagDiscontinuousBlock |
|
371 | self.flagDiscontinuousBlock | |
655 | self.flagIsNewBlock |
|
372 | self.flagIsNewBlock | |
656 |
|
|
373 | """ | |
@@ -659,82 +376,22 class SpectraReader(JRODataReader, ProcessingUnit): | |||||
659 | self.dataOut.flagNoData = True |
|
376 | self.dataOut.flagNoData = True | |
660 | print 'Process finished' |
|
377 | print 'Process finished' | |
661 | return 0 |
|
378 | return 0 | |
662 | <<<<<<< HEAD |
|
|||
663 |
|
||||
664 | self.flagDiscontinuousBlock = 0 |
|
|||
665 | self.flagIsNewBlock = 0 |
|
|||
666 |
|
||||
667 | if self.__hasNotDataInBuffer(): |
|
|||
668 | ======= |
|
|||
669 |
|
379 | |||
670 | self.flagDiscontinuousBlock = 0 |
|
380 | self.flagDiscontinuousBlock = 0 | |
671 | self.flagIsNewBlock = 0 |
|
381 | self.flagIsNewBlock = 0 | |
672 |
|
382 | |||
673 | if self.__hasNotDataInBuffer(): |
|
383 | if self.__hasNotDataInBuffer(): | |
674 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
675 |
|
384 | |||
676 | if not( self.readNextBlock() ): |
|
385 | if not( self.readNextBlock() ): | |
677 | self.dataOut.flagNoData = True |
|
386 | self.dataOut.flagNoData = True | |
678 | return 0 |
|
387 | return 0 | |
679 | <<<<<<< HEAD |
|
|||
680 |
|
||||
681 | ======= |
|
|||
682 |
|
388 | |||
683 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
389 | ||
684 | #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) |
|
390 | #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) | |
685 |
|
391 | |||
686 | if self.data_spc is None: |
|
392 | if self.data_spc is None: | |
687 | self.dataOut.flagNoData = True |
|
393 | self.dataOut.flagNoData = True | |
688 | return 0 |
|
394 | return 0 | |
689 | <<<<<<< HEAD |
|
|||
690 |
|
||||
691 | self.getBasicHeader() |
|
|||
692 |
|
||||
693 | self.getFirstHeader() |
|
|||
694 |
|
||||
695 | self.dataOut.data_spc = self.data_spc |
|
|||
696 |
|
||||
697 | self.dataOut.data_cspc = self.data_cspc |
|
|||
698 |
|
||||
699 | self.dataOut.data_dc = self.data_dc |
|
|||
700 |
|
||||
701 | self.dataOut.flagNoData = False |
|
|||
702 |
|
||||
703 | self.dataOut.realtime = self.online |
|
|||
704 |
|
||||
705 | return self.dataOut.data_spc |
|
|||
706 |
|
||||
707 | class SpectraWriter(JRODataWriter, Operation): |
|
|||
708 |
|
||||
709 | """ |
|
|||
710 | Esta clase permite escribir datos de espectros a archivos procesados (.pdata). La escritura |
|
|||
711 | de los datos siempre se realiza por bloques. |
|
|||
712 | """ |
|
|||
713 |
|
||||
714 | ext = ".pdata" |
|
|||
715 |
|
||||
716 | optchar = "P" |
|
|||
717 |
|
||||
718 | shape_spc_Buffer = None |
|
|||
719 |
|
||||
720 | shape_cspc_Buffer = None |
|
|||
721 |
|
||||
722 | shape_dc_Buffer = None |
|
|||
723 |
|
||||
724 | data_spc = None |
|
|||
725 |
|
||||
726 | data_cspc = None |
|
|||
727 |
|
||||
728 | data_dc = None |
|
|||
729 |
|
||||
730 | # dataOut = None |
|
|||
731 |
|
||||
732 | def __init__(self, **kwargs): |
|
|||
733 | """ |
|
|||
734 | Inicializador de la clase SpectraWriter para la escritura de datos de espectros. |
|
|||
735 |
|
||||
736 | Affected: |
|
|||
737 | ======= |
|
|||
738 |
|
395 | |||
739 | self.getBasicHeader() |
|
396 | self.getBasicHeader() | |
740 |
|
397 | |||
@@ -782,7 +439,7 class SpectraWriter(JRODataWriter, Operation): | |||||
782 | Inicializador de la clase SpectraWriter para la escritura de datos de espectros. |
|
439 | Inicializador de la clase SpectraWriter para la escritura de datos de espectros. | |
783 |
|
440 | |||
784 | Affected: |
|
441 | Affected: | |
785 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
442 | ||
786 | self.dataOut |
|
443 | self.dataOut | |
787 | self.basicHeaderObj |
|
444 | self.basicHeaderObj | |
788 | self.systemHeaderObj |
|
445 | self.systemHeaderObj | |
@@ -791,19 +448,6 class SpectraWriter(JRODataWriter, Operation): | |||||
791 |
|
448 | |||
792 | Return: None |
|
449 | Return: None | |
793 | """ |
|
450 | """ | |
794 | <<<<<<< HEAD |
|
|||
795 |
|
||||
796 | Operation.__init__(self, **kwargs) |
|
|||
797 |
|
||||
798 | self.isConfig = False |
|
|||
799 |
|
||||
800 | self.nTotalBlocks = 0 |
|
|||
801 |
|
||||
802 | self.data_spc = None |
|
|||
803 |
|
||||
804 | self.data_cspc = None |
|
|||
805 |
|
||||
806 | ======= |
|
|||
807 |
|
451 | |||
808 | Operation.__init__(self) |
|
452 | Operation.__init__(self) | |
809 |
|
453 | |||
@@ -815,42 +459,12 class SpectraWriter(JRODataWriter, Operation): | |||||
815 |
|
459 | |||
816 | self.data_cspc = None |
|
460 | self.data_cspc = None | |
817 |
|
461 | |||
818 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
462 | ||
819 | self.data_dc = None |
|
463 | self.data_dc = None | |
820 |
|
464 | |||
821 | self.fp = None |
|
465 | self.fp = None | |
822 |
|
466 | |||
823 | self.flagIsNewFile = 1 |
|
467 | self.flagIsNewFile = 1 | |
824 | <<<<<<< HEAD |
|
|||
825 |
|
||||
826 | self.nTotalBlocks = 0 |
|
|||
827 |
|
||||
828 | self.flagIsNewBlock = 0 |
|
|||
829 |
|
||||
830 | self.setFile = None |
|
|||
831 |
|
||||
832 | self.dtype = None |
|
|||
833 |
|
||||
834 | self.path = None |
|
|||
835 |
|
||||
836 | self.noMoreFiles = 0 |
|
|||
837 |
|
||||
838 | self.filename = None |
|
|||
839 |
|
||||
840 | self.basicHeaderObj = BasicHeader(LOCALTIME) |
|
|||
841 |
|
||||
842 | self.systemHeaderObj = SystemHeader() |
|
|||
843 |
|
||||
844 | self.radarControllerHeaderObj = RadarControllerHeader() |
|
|||
845 |
|
||||
846 | self.processingHeaderObj = ProcessingHeader() |
|
|||
847 |
|
||||
848 |
|
||||
849 | def hasAllDataInBuffer(self): |
|
|||
850 | return 1 |
|
|||
851 |
|
||||
852 |
|
||||
853 | ======= |
|
|||
854 |
|
468 | |||
855 | self.nTotalBlocks = 0 |
|
469 | self.nTotalBlocks = 0 | |
856 |
|
470 | |||
@@ -879,7 +493,7 class SpectraWriter(JRODataWriter, Operation): | |||||
879 | return 1 |
|
493 | return 1 | |
880 |
|
494 | |||
881 |
|
495 | |||
882 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
496 | ||
883 | def setBlockDimension(self): |
|
497 | def setBlockDimension(self): | |
884 | """ |
|
498 | """ | |
885 | Obtiene las formas dimensionales del los subbloques de datos que componen un bloque |
|
499 | Obtiene las formas dimensionales del los subbloques de datos que componen un bloque | |
@@ -898,17 +512,6 class SpectraWriter(JRODataWriter, Operation): | |||||
898 | self.shape_cspc_Buffer = (self.dataOut.nPairs, |
|
512 | self.shape_cspc_Buffer = (self.dataOut.nPairs, | |
899 | self.processingHeaderObj.nHeights, |
|
513 | self.processingHeaderObj.nHeights, | |
900 | self.processingHeaderObj.profilesPerBlock) |
|
514 | self.processingHeaderObj.profilesPerBlock) | |
901 | <<<<<<< HEAD |
|
|||
902 |
|
||||
903 | self.shape_dc_Buffer = (self.dataOut.nChannels, |
|
|||
904 | self.processingHeaderObj.nHeights) |
|
|||
905 |
|
||||
906 |
|
||||
907 | def writeBlock(self): |
|
|||
908 | """ |
|
|||
909 | Escribe el buffer en el file designado |
|
|||
910 |
|
||||
911 | ======= |
|
|||
912 |
|
515 | |||
913 | self.shape_dc_Buffer = (self.dataOut.nChannels, |
|
516 | self.shape_dc_Buffer = (self.dataOut.nChannels, | |
914 | self.processingHeaderObj.nHeights) |
|
517 | self.processingHeaderObj.nHeights) | |
@@ -918,7 +521,7 class SpectraWriter(JRODataWriter, Operation): | |||||
918 |
|
|
521 | """ | |
919 | Escribe el buffer en el file designado |
|
522 | Escribe el buffer en el file designado | |
920 |
|
|
523 | ||
921 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
524 | ||
922 | Affected: |
|
525 | Affected: | |
923 | self.data_spc |
|
526 | self.data_spc | |
924 | self.data_cspc |
|
527 | self.data_cspc | |
@@ -926,19 +529,11 class SpectraWriter(JRODataWriter, Operation): | |||||
926 | self.flagIsNewFile |
|
529 | self.flagIsNewFile | |
927 | self.flagIsNewBlock |
|
530 | self.flagIsNewBlock | |
928 | self.nTotalBlocks |
|
531 | self.nTotalBlocks | |
929 | <<<<<<< HEAD |
|
|||
930 | self.nWriteBlocks |
|
|||
931 |
|
||||
932 | Return: None |
|
|||
933 | """ |
|
|||
934 |
|
||||
935 | ======= |
|
|||
936 | self.nWriteBlocks |
|
532 | self.nWriteBlocks | |
937 |
|
533 | |||
938 | Return: None |
|
534 | Return: None | |
939 | """ |
|
535 | """ | |
940 |
|
536 | |||
941 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
942 | spc = numpy.transpose( self.data_spc, (0,2,1) ) |
|
537 | spc = numpy.transpose( self.data_spc, (0,2,1) ) | |
943 | if not( self.processingHeaderObj.shif_fft ): |
|
538 | if not( self.processingHeaderObj.shif_fft ): | |
944 | spc = numpy.roll( spc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones |
|
539 | spc = numpy.roll( spc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones | |
@@ -955,11 +550,8 class SpectraWriter(JRODataWriter, Operation): | |||||
955 | data['imag'] = cspc.imag |
|
550 | data['imag'] = cspc.imag | |
956 | data = data.reshape((-1)) |
|
551 | data = data.reshape((-1)) | |
957 | data.tofile(self.fp) |
|
552 | data.tofile(self.fp) | |
958 | <<<<<<< HEAD |
|
|||
959 |
|
||||
960 | ======= |
|
|||
961 |
|
553 | |||
962 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
554 | ||
963 | if self.data_dc is not None: |
|
555 | if self.data_dc is not None: | |
964 | data = numpy.zeros( self.shape_dc_Buffer, self.dtype ) |
|
556 | data = numpy.zeros( self.shape_dc_Buffer, self.dtype ) | |
965 | dc = self.data_dc |
|
557 | dc = self.data_dc | |
@@ -969,15 +561,6 class SpectraWriter(JRODataWriter, Operation): | |||||
969 | data.tofile(self.fp) |
|
561 | data.tofile(self.fp) | |
970 |
|
562 | |||
971 | # self.data_spc.fill(0) |
|
563 | # self.data_spc.fill(0) | |
972 | <<<<<<< HEAD |
|
|||
973 | # |
|
|||
974 | # if self.data_dc is not None: |
|
|||
975 | # self.data_dc.fill(0) |
|
|||
976 | # |
|
|||
977 | # if self.data_cspc is not None: |
|
|||
978 | # self.data_cspc.fill(0) |
|
|||
979 |
|
||||
980 | ======= |
|
|||
981 | # |
|
564 | # | |
982 | # if self.data_dc is not None: |
|
565 | # if self.data_dc is not None: | |
983 | # self.data_dc.fill(0) |
|
566 | # self.data_dc.fill(0) | |
@@ -985,21 +568,12 class SpectraWriter(JRODataWriter, Operation): | |||||
985 | # if self.data_cspc is not None: |
|
568 | # if self.data_cspc is not None: | |
986 | # self.data_cspc.fill(0) |
|
569 | # self.data_cspc.fill(0) | |
987 |
|
570 | |||
988 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
571 | ||
989 | self.flagIsNewFile = 0 |
|
572 | self.flagIsNewFile = 0 | |
990 | self.flagIsNewBlock = 1 |
|
573 | self.flagIsNewBlock = 1 | |
991 | self.nTotalBlocks += 1 |
|
574 | self.nTotalBlocks += 1 | |
992 | self.nWriteBlocks += 1 |
|
575 | self.nWriteBlocks += 1 | |
993 | self.blockIndex += 1 |
|
576 | self.blockIndex += 1 | |
994 | <<<<<<< HEAD |
|
|||
995 |
|
||||
996 | # print "[Writing] Block = %d04" %self.blockIndex |
|
|||
997 |
|
||||
998 | def putData(self): |
|
|||
999 | """ |
|
|||
1000 | Setea un bloque de datos y luego los escribe en un file |
|
|||
1001 |
|
||||
1002 | ======= |
|
|||
1003 |
|
577 | |||
1004 | # print "[Writing] Block = %d04" %self.blockIndex |
|
578 | # print "[Writing] Block = %d04" %self.blockIndex | |
1005 |
|
579 | |||
@@ -1007,43 +581,12 class SpectraWriter(JRODataWriter, Operation): | |||||
1007 |
|
|
581 | """ | |
1008 | Setea un bloque de datos y luego los escribe en un file |
|
582 | Setea un bloque de datos y luego los escribe en un file | |
1009 |
|
|
583 | ||
1010 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
584 | ||
1011 | Affected: |
|
585 | Affected: | |
1012 | self.data_spc |
|
586 | self.data_spc | |
1013 | self.data_cspc |
|
587 | self.data_cspc | |
1014 | self.data_dc |
|
588 | self.data_dc | |
1015 |
|
|
589 | ||
1016 | <<<<<<< HEAD |
|
|||
1017 | Return: |
|
|||
1018 | 0 : Si no hay data o no hay mas files que puedan escribirse |
|
|||
1019 | 1 : Si se escribio la data de un bloque en un file |
|
|||
1020 | """ |
|
|||
1021 |
|
||||
1022 | if self.dataOut.flagNoData: |
|
|||
1023 | return 0 |
|
|||
1024 |
|
||||
1025 | self.flagIsNewBlock = 0 |
|
|||
1026 |
|
||||
1027 | if self.dataOut.flagDiscontinuousBlock: |
|
|||
1028 | self.data_spc.fill(0) |
|
|||
1029 | if self.dataOut.data_cspc is not None: |
|
|||
1030 | self.data_cspc.fill(0) |
|
|||
1031 | if self.dataOut.data_dc is not None: |
|
|||
1032 | self.data_dc.fill(0) |
|
|||
1033 | self.setNextFile() |
|
|||
1034 |
|
||||
1035 | if self.flagIsNewFile == 0: |
|
|||
1036 | self.setBasicHeader() |
|
|||
1037 |
|
||||
1038 | self.data_spc = self.dataOut.data_spc.copy() |
|
|||
1039 |
|
||||
1040 | if self.dataOut.data_cspc is not None: |
|
|||
1041 | self.data_cspc = self.dataOut.data_cspc.copy() |
|
|||
1042 |
|
||||
1043 | if self.dataOut.data_dc is not None: |
|
|||
1044 | self.data_dc = self.dataOut.data_dc.copy() |
|
|||
1045 |
|
||||
1046 | ======= |
|
|||
1047 | Return: |
|
590 | Return: | |
1048 | 0 : Si no hay data o no hay mas files que puedan escribirse |
|
591 | 0 : Si no hay data o no hay mas files que puedan escribirse | |
1049 | 1 : Si se escribio la data de un bloque en un file |
|
592 | 1 : Si se escribio la data de un bloque en un file | |
@@ -1071,51 +614,18 class SpectraWriter(JRODataWriter, Operation): | |||||
1071 | if self.dataOut.data_dc is not None: |
|
614 | if self.dataOut.data_dc is not None: | |
1072 | self.data_dc = self.dataOut.data_dc.copy() |
|
615 | self.data_dc = self.dataOut.data_dc.copy() | |
1073 |
|
616 | |||
1074 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1075 | # #self.processingHeaderObj.dataBlocksPerFile) |
|
617 | # #self.processingHeaderObj.dataBlocksPerFile) | |
1076 | if self.hasAllDataInBuffer(): |
|
618 | if self.hasAllDataInBuffer(): | |
1077 | # self.setFirstHeader() |
|
619 | # self.setFirstHeader() | |
1078 | self.writeNextBlock() |
|
620 | self.writeNextBlock() | |
1079 | <<<<<<< HEAD |
|
|||
1080 |
|
||||
1081 | return 1 |
|
|||
1082 |
|
||||
1083 | ======= |
|
|||
1084 |
|
621 | |||
1085 | return 1 |
|
622 | return 1 | |
1086 |
|
623 | |||
1087 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
624 | ||
1088 | def __getBlockSize(self): |
|
625 | def __getBlockSize(self): | |
1089 | ''' |
|
626 | ''' | |
1090 | Este metodos determina el cantidad de bytes para un bloque de datos de tipo Spectra |
|
627 | Este metodos determina el cantidad de bytes para un bloque de datos de tipo Spectra | |
1091 | ''' |
|
628 | ''' | |
1092 | <<<<<<< HEAD |
|
|||
1093 |
|
||||
1094 | dtype_width = self.getDtypeWidth() |
|
|||
1095 |
|
||||
1096 | pts2write = self.dataOut.nHeights * self.dataOut.nFFTPoints |
|
|||
1097 |
|
||||
1098 | pts2write_SelfSpectra = int(self.dataOut.nChannels * pts2write) |
|
|||
1099 | blocksize = (pts2write_SelfSpectra*dtype_width) |
|
|||
1100 |
|
||||
1101 | if self.dataOut.data_cspc is not None: |
|
|||
1102 | pts2write_CrossSpectra = int(self.dataOut.nPairs * pts2write) |
|
|||
1103 | blocksize += (pts2write_CrossSpectra*dtype_width*2) |
|
|||
1104 |
|
||||
1105 | if self.dataOut.data_dc is not None: |
|
|||
1106 | pts2write_DCchannels = int(self.dataOut.nChannels * self.dataOut.nHeights) |
|
|||
1107 | blocksize += (pts2write_DCchannels*dtype_width*2) |
|
|||
1108 |
|
||||
1109 | # blocksize = blocksize #* datatypeValue * 2 #CORREGIR ESTO |
|
|||
1110 |
|
||||
1111 | return blocksize |
|
|||
1112 |
|
||||
1113 | def setFirstHeader(self): |
|
|||
1114 |
|
||||
1115 | """ |
|
|||
1116 | Obtiene una copia del First Header |
|
|||
1117 |
|
||||
1118 | ======= |
|
|||
1119 |
|
629 | |||
1120 | dtype_width = self.getDtypeWidth() |
|
630 | dtype_width = self.getDtypeWidth() | |
1121 |
|
631 | |||
@@ -1141,22 +651,11 class SpectraWriter(JRODataWriter, Operation): | |||||
1141 | """ |
|
651 | """ | |
1142 | Obtiene una copia del First Header |
|
652 | Obtiene una copia del First Header | |
1143 |
|
|
653 | ||
1144 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1145 | Affected: |
|
654 | Affected: | |
1146 | self.systemHeaderObj |
|
655 | self.systemHeaderObj | |
1147 | self.radarControllerHeaderObj |
|
656 | self.radarControllerHeaderObj | |
1148 | self.dtype |
|
657 | self.dtype | |
1149 |
|
|
658 | ||
1150 | <<<<<<< HEAD |
|
|||
1151 | Return: |
|
|||
1152 | None |
|
|||
1153 | """ |
|
|||
1154 |
|
||||
1155 | self.systemHeaderObj = self.dataOut.systemHeaderObj.copy() |
|
|||
1156 | self.systemHeaderObj.nChannels = self.dataOut.nChannels |
|
|||
1157 | self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() |
|
|||
1158 |
|
||||
1159 | ======= |
|
|||
1160 | Return: |
|
659 | Return: | |
1161 | None |
|
660 | None | |
1162 | """ |
|
661 | """ | |
@@ -1165,73 +664,44 class SpectraWriter(JRODataWriter, Operation): | |||||
1165 | self.systemHeaderObj.nChannels = self.dataOut.nChannels |
|
664 | self.systemHeaderObj.nChannels = self.dataOut.nChannels | |
1166 | self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() |
|
665 | self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() | |
1167 |
|
666 | |||
1168 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1169 | self.processingHeaderObj.dtype = 1 # Spectra |
|
667 | self.processingHeaderObj.dtype = 1 # Spectra | |
1170 | self.processingHeaderObj.blockSize = self.__getBlockSize() |
|
668 | self.processingHeaderObj.blockSize = self.__getBlockSize() | |
1171 | self.processingHeaderObj.profilesPerBlock = self.dataOut.nFFTPoints |
|
669 | self.processingHeaderObj.profilesPerBlock = self.dataOut.nFFTPoints | |
1172 | self.processingHeaderObj.dataBlocksPerFile = self.blocksPerFile |
|
670 | self.processingHeaderObj.dataBlocksPerFile = self.blocksPerFile | |
1173 | self.processingHeaderObj.nWindows = 1 #podria ser 1 o self.dataOut.processingHeaderObj.nWindows |
|
671 | self.processingHeaderObj.nWindows = 1 #podria ser 1 o self.dataOut.processingHeaderObj.nWindows | |
1174 | self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval |
|
672 | self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval | |
1175 | <<<<<<< HEAD |
|
|||
1176 | self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt |
|
|||
1177 | self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels |
|
|||
1178 | self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT |
|
|||
1179 |
|
||||
1180 | ======= |
|
|||
1181 | self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt |
|
673 | self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt | |
1182 | self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels |
|
674 | self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels | |
1183 | self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT |
|
675 | self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT | |
1184 |
|
676 | |||
1185 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
677 | ||
1186 | if self.processingHeaderObj.totalSpectra > 0: |
|
678 | if self.processingHeaderObj.totalSpectra > 0: | |
1187 | channelList = [] |
|
679 | channelList = [] | |
1188 | for channel in range(self.dataOut.nChannels): |
|
680 | for channel in range(self.dataOut.nChannels): | |
1189 | channelList.append(channel) |
|
681 | channelList.append(channel) | |
1190 | channelList.append(channel) |
|
682 | channelList.append(channel) | |
1191 | <<<<<<< HEAD |
|
|||
1192 |
|
||||
1193 | ======= |
|
|||
1194 |
|
683 | |||
1195 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1196 | pairsList = [] |
|
684 | pairsList = [] | |
1197 | if self.dataOut.nPairs > 0: |
|
685 | if self.dataOut.nPairs > 0: | |
1198 | for pair in self.dataOut.pairsList: |
|
686 | for pair in self.dataOut.pairsList: | |
1199 | pairsList.append(pair[0]) |
|
687 | pairsList.append(pair[0]) | |
1200 | pairsList.append(pair[1]) |
|
688 | pairsList.append(pair[1]) | |
1201 | <<<<<<< HEAD |
|
|||
1202 |
|
||||
1203 | spectraComb = channelList + pairsList |
|
|||
1204 | spectraComb = numpy.array(spectraComb, dtype="u1") |
|
|||
1205 | self.processingHeaderObj.spectraComb = spectraComb |
|
|||
1206 |
|
||||
1207 | ======= |
|
|||
1208 |
|
689 | |||
1209 | spectraComb = channelList + pairsList |
|
690 | spectraComb = channelList + pairsList | |
1210 | spectraComb = numpy.array(spectraComb, dtype="u1") |
|
691 | spectraComb = numpy.array(spectraComb, dtype="u1") | |
1211 | self.processingHeaderObj.spectraComb = spectraComb |
|
692 | self.processingHeaderObj.spectraComb = spectraComb | |
1212 |
|
693 | |||
1213 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1214 | if self.dataOut.code is not None: |
|
694 | if self.dataOut.code is not None: | |
1215 | self.processingHeaderObj.code = self.dataOut.code |
|
695 | self.processingHeaderObj.code = self.dataOut.code | |
1216 | self.processingHeaderObj.nCode = self.dataOut.nCode |
|
696 | self.processingHeaderObj.nCode = self.dataOut.nCode | |
1217 | self.processingHeaderObj.nBaud = self.dataOut.nBaud |
|
697 | self.processingHeaderObj.nBaud = self.dataOut.nBaud | |
1218 | <<<<<<< HEAD |
|
|||
1219 |
|
||||
1220 | ======= |
|
|||
1221 |
|
698 | |||
1222 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1223 | if self.processingHeaderObj.nWindows != 0: |
|
699 | if self.processingHeaderObj.nWindows != 0: | |
1224 | self.processingHeaderObj.firstHeight = self.dataOut.heightList[0] |
|
700 | self.processingHeaderObj.firstHeight = self.dataOut.heightList[0] | |
1225 | self.processingHeaderObj.deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0] |
|
701 | self.processingHeaderObj.deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0] | |
1226 | self.processingHeaderObj.nHeights = self.dataOut.nHeights |
|
702 | self.processingHeaderObj.nHeights = self.dataOut.nHeights | |
1227 | self.processingHeaderObj.samplesWin = self.dataOut.nHeights |
|
703 | self.processingHeaderObj.samplesWin = self.dataOut.nHeights | |
1228 | <<<<<<< HEAD |
|
|||
1229 |
|
||||
1230 | self.processingHeaderObj.processFlags = self.getProcessFlags() |
|
|||
1231 |
|
||||
1232 | ======= |
|
|||
1233 |
|
704 | |||
1234 | self.processingHeaderObj.processFlags = self.getProcessFlags() |
|
705 | self.processingHeaderObj.processFlags = self.getProcessFlags() | |
1235 |
|
706 | |||
1236 | >>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 |
|
|||
1237 | self.setBasicHeader() |
|
707 | self.setBasicHeader() |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -427,10 +427,16 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
427 | self.dataOut.flagNoData = False |
|
427 | self.dataOut.flagNoData = False | |
428 |
|
428 | |||
429 | self.getBasicHeader() |
|
429 | self.getBasicHeader() | |
430 |
|
430 | |||
|
431 | #print self.basicHeaderObj.printInfo() | |||
|
432 | #print self.systemHeaderObj.printInfo() | |||
|
433 | #print self.radarControllerHeaderObj.printInfo() | |||
|
434 | #print self.processingHeaderObj.printInfo() | |||
|
435 | ||||
431 | self.dataOut.realtime = self.online |
|
436 | self.dataOut.realtime = self.online | |
432 |
|
437 | |||
433 | return self.dataOut.data |
|
438 | return self.dataOut.data | |
|
439 | ||||
434 |
|
440 | |||
435 | class VoltageWriter(JRODataWriter, Operation): |
|
441 | class VoltageWriter(JRODataWriter, Operation): | |
436 | """ |
|
442 | """ |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
This diff has been collapsed as it changes many lines, (965 lines changed) Show them Hide them | |||||
@@ -1,20 +1,62 | |||||
1 | import numpy |
|
1 | import numpy | |
2 |
|
|
2 | import math | |
3 |
|
|
3 | from scipy import optimize, interpolate, signal, stats, ndimage | |
|
4 | import scipy | |||
4 |
|
|
5 | import re | |
5 |
|
|
6 | import datetime | |
6 |
|
|
7 | import copy | |
7 |
|
|
8 | import sys | |
8 |
|
|
9 | import importlib | |
9 |
|
|
10 | import itertools | |
|
11 | from multiprocessing import Pool, TimeoutError | |||
|
12 | from multiprocessing.pool import ThreadPool | |||
|
13 | import copy_reg | |||
|
14 | import cPickle | |||
|
15 | import types | |||
|
16 | from functools import partial | |||
|
17 | import time | |||
|
18 | #from sklearn.cluster import KMeans | |||
10 |
|
19 | |||
|
20 | import matplotlib.pyplot as plt | |||
|
21 | ||||
|
22 | from scipy.optimize import fmin_l_bfgs_b #optimize with bounds on state papameters | |||
11 |
|
|
23 | from jroproc_base import ProcessingUnit, Operation | |
12 |
|
|
24 | from schainpy.model.data.jrodata import Parameters, hildebrand_sekhon | |
13 |
|
|
25 | from scipy import asarray as ar,exp | |
14 |
|
|
26 | from scipy.optimize import curve_fit | |
15 |
|
27 | |||
|
28 | import warnings | |||
|
29 | from numpy import NaN | |||
|
30 | warnings.filterwarnings('ignore') | |||
|
31 | ||||
16 |
|
|
32 | SPEED_OF_LIGHT = 299792458 | |
17 |
|
33 | |||
|
34 | ||||
|
35 | '''solving pickling issue''' | |||
|
36 | ||||
|
37 | def _pickle_method(method): | |||
|
38 | func_name = method.im_func.__name__ | |||
|
39 | obj = method.im_self | |||
|
40 | cls = method.im_class | |||
|
41 | return _unpickle_method, (func_name, obj, cls) | |||
|
42 | ||||
|
43 | def _unpickle_method(func_name, obj, cls): | |||
|
44 | for cls in cls.mro(): | |||
|
45 | try: | |||
|
46 | func = cls.__dict__[func_name] | |||
|
47 | except KeyError: | |||
|
48 | pass | |||
|
49 | else: | |||
|
50 | break | |||
|
51 | return func.__get__(obj, cls) | |||
|
52 | ||||
|
53 | ||||
|
54 | ||||
|
55 | ||||
|
56 | ||||
|
57 | ||||
|
58 | ||||
|
59 | ||||
18 |
|
|
60 | class ParametersProc(ProcessingUnit): | |
19 |
|
|
61 | ||
20 |
|
|
62 | nSeconds = None | |
@@ -57,11 +99,13 class ParametersProc(ProcessingUnit): | |||||
57 |
|
|
99 | # self.dataOut.nIncohInt = 1 | |
58 |
|
|
100 | self.dataOut.ippSeconds = self.dataIn.ippSeconds | |
59 |
|
|
101 | # self.dataOut.windowOfFilter = self.dataIn.windowOfFilter | |
60 |
|
|
102 | self.dataOut.timeInterval1 = self.dataIn.timeInterval | |
61 |
|
|
103 | self.dataOut.heightList = self.dataIn.getHeiRange() | |
62 |
|
|
104 | self.dataOut.frequency = self.dataIn.frequency | |
63 |
|
|
105 | self.dataOut.noise = self.dataIn.noise | |
64 |
|
|
106 | ||
|
107 | ||||
|
108 | ||||
65 |
|
|
109 | def run(self): | |
66 |
|
|
110 | ||
67 |
|
|
111 | #---------------------- Voltage Data --------------------------- | |
@@ -80,18 +124,25 class ParametersProc(ProcessingUnit): | |||||
80 |
|
|
124 | if self.dataIn.type == "Spectra": | |
81 |
|
125 | |||
82 |
|
|
126 | self.dataOut.data_pre = (self.dataIn.data_spc,self.dataIn.data_cspc) | |
|
127 | print 'self.dataIn.data_spc', self.dataIn.data_spc.shape | |||
83 |
|
|
128 | self.dataOut.abscissaList = self.dataIn.getVelRange(1) | |
84 |
|
|
129 | self.dataOut.spc_noise = self.dataIn.getNoise() | |
|
130 | self.dataOut.spc_range = (self.dataIn.getFreqRange(1)/1000. , self.dataIn.getAcfRange(1) , self.dataIn.getVelRange(1) ) | |||
|
131 | ||||
85 |
|
|
132 | self.dataOut.normFactor = self.dataIn.normFactor | |
86 |
|
|
133 | #self.dataOut.outputInterval = self.dataIn.outputInterval | |
87 |
|
|
134 | self.dataOut.groupList = self.dataIn.pairsList | |
88 |
|
|
135 | self.dataOut.flagNoData = False | |
89 |
|
136 | #print 'datain chandist ',self.dataIn.ChanDist | ||
90 |
|
|
137 | if hasattr(self.dataIn, 'ChanDist'): #Distances of receiver channels | |
91 |
|
|
138 | self.dataOut.ChanDist = self.dataIn.ChanDist | |
|
139 | else: self.dataOut.ChanDist = None | |||
|
140 | ||||
|
141 | print 'datain chandist ',self.dataOut.ChanDist | |||
92 |
|
|
142 | ||
93 |
|
|
143 | if hasattr(self.dataIn, 'VelRange'): #Velocities range | |
94 |
|
|
144 | self.dataOut.VelRange = self.dataIn.VelRange | |
|
145 | else: self.dataOut.VelRange = None | |||
95 |
|
|
146 | ||
96 |
|
|
147 | if hasattr(self.dataIn, 'RadarConst'): #Radar Constant | |
97 |
|
|
148 | self.dataOut.RadarConst = self.dataIn.RadarConst | |
@@ -132,71 +183,843 class ParametersProc(ProcessingUnit): | |||||
132 |
|
|
183 | self.dataOut.paramInterval = self.dataIn.timeInterval | |
133 |
|
|
184 | ||
134 |
|
|
185 | return | |
|
186 | ||||
|
187 | ||||
|
188 | def target(tups): | |||
|
189 | ||||
|
190 | obj, args = tups | |||
|
191 | #print 'TARGETTT', obj, args | |||
|
192 | return obj.FitGau(args) | |||
|
193 | ||||
|
194 | class GaussianFit(Operation): | |||
|
195 | ||||
|
196 | ''' | |||
|
197 | Function that fit of one and two generalized gaussians (gg) based | |||
|
198 | on the PSD shape across an "power band" identified from a cumsum of | |||
|
199 | the measured spectrum - noise. | |||
|
200 | ||||
|
201 | Input: | |||
|
202 | self.dataOut.data_pre : SelfSpectra | |||
|
203 | ||||
|
204 | Output: | |||
|
205 | self.dataOut.GauSPC : SPC_ch1, SPC_ch2 | |||
|
206 | ||||
|
207 | ''' | |||
|
208 | def __init__(self, **kwargs): | |||
|
209 | Operation.__init__(self, **kwargs) | |||
|
210 | self.i=0 | |||
|
211 | ||||
|
212 | ||||
|
213 | def run(self, dataOut, num_intg=7, pnoise=1., vel_arr=None, SNRlimit=-9): #num_intg: Incoherent integrations, pnoise: Noise, vel_arr: range of velocities, similar to the ftt points | |||
|
214 | """This routine will find a couple of generalized Gaussians to a power spectrum | |||
|
215 | input: spc | |||
|
216 | output: | |||
|
217 | Amplitude0,shift0,width0,p0,Amplitude1,shift1,width1,p1,noise | |||
|
218 | """ | |||
|
219 | ||||
|
220 | self.spc = dataOut.data_pre[0].copy() | |||
|
221 | ||||
|
222 | ||||
|
223 | print 'SelfSpectra Shape', numpy.asarray(self.spc).shape | |||
|
224 | ||||
|
225 | ||||
|
226 | #plt.figure(50) | |||
|
227 | #plt.subplot(121) | |||
|
228 | #plt.plot(self.spc,'k',label='spc(66)') | |||
|
229 | #plt.plot(xFrec,ySamples[1],'g',label='Ch1') | |||
|
230 | #plt.plot(xFrec,ySamples[2],'r',label='Ch2') | |||
|
231 | #plt.plot(xFrec,FitGauss,'yo:',label='fit') | |||
|
232 | #plt.legend() | |||
|
233 | #plt.title('DATOS A ALTURA DE 7500 METROS') | |||
|
234 | #plt.show() | |||
|
235 | ||||
|
236 | self.Num_Hei = self.spc.shape[2] | |||
|
237 | #self.Num_Bin = len(self.spc) | |||
|
238 | self.Num_Bin = self.spc.shape[1] | |||
|
239 | self.Num_Chn = self.spc.shape[0] | |||
|
240 | ||||
|
241 | Vrange = dataOut.abscissaList | |||
|
242 | ||||
|
243 | #print 'self.spc2', numpy.asarray(self.spc).shape | |||
|
244 | ||||
|
245 | GauSPC = numpy.empty([2,self.Num_Bin,self.Num_Hei]) | |||
|
246 | SPC_ch1 = numpy.empty([self.Num_Bin,self.Num_Hei]) | |||
|
247 | SPC_ch2 = numpy.empty([self.Num_Bin,self.Num_Hei]) | |||
|
248 | SPC_ch1[:] = numpy.NaN | |||
|
249 | SPC_ch2[:] = numpy.NaN | |||
|
250 | ||||
|
251 | ||||
|
252 | start_time = time.time() | |||
|
253 | ||||
|
254 | noise_ = dataOut.spc_noise[0].copy() | |||
|
255 | ||||
|
256 | ||||
|
257 | ||||
|
258 | pool = Pool(processes=self.Num_Chn) | |||
|
259 | args = [(Vrange, Ch, pnoise, noise_, num_intg, SNRlimit) for Ch in range(self.Num_Chn)] | |||
|
260 | objs = [self for __ in range(self.Num_Chn)] | |||
|
261 | attrs = zip(objs, args) | |||
|
262 | gauSPC = pool.map(target, attrs) | |||
|
263 | dataOut.GauSPC = numpy.asarray(gauSPC) | |||
|
264 | # ret = [] | |||
|
265 | # for n in range(self.Num_Chn): | |||
|
266 | # self.FitGau(args[n]) | |||
|
267 | # dataOut.GauSPC = ret | |||
|
268 | ||||
|
269 | ||||
|
270 | ||||
|
271 | # for ch in range(self.Num_Chn): | |||
|
272 | # | |||
|
273 | # for ht in range(self.Num_Hei): | |||
|
274 | # #print (numpy.asarray(self.spc).shape) | |||
|
275 | # spc = numpy.asarray(self.spc)[ch,:,ht] | |||
|
276 | # | |||
|
277 | # ############################################# | |||
|
278 | # # normalizing spc and noise | |||
|
279 | # # This part differs from gg1 | |||
|
280 | # spc_norm_max = max(spc) | |||
|
281 | # spc = spc / spc_norm_max | |||
|
282 | # pnoise = pnoise / spc_norm_max | |||
|
283 | # ############################################# | |||
|
284 | # | |||
|
285 | # if abs(vel_arr[0])<15.0: # this switch is for spectra collected with different length IPP's | |||
|
286 | # fatspectra=1.0 | |||
|
287 | # else: | |||
|
288 | # fatspectra=0.5 | |||
|
289 | # | |||
|
290 | # wnoise = noise_ / spc_norm_max | |||
|
291 | # #print 'wnoise', noise_, dataOut.spc_noise[0], wnoise | |||
|
292 | # #wnoise,stdv,i_max,index =enoise(spc,num_intg) #noise estimate using Hildebrand Sekhon, only wnoise is used | |||
|
293 | # #if wnoise>1.1*pnoise: # to be tested later | |||
|
294 | # # wnoise=pnoise | |||
|
295 | # noisebl=wnoise*0.9; noisebh=wnoise*1.1 | |||
|
296 | # spc=spc-wnoise | |||
|
297 | # | |||
|
298 | # minx=numpy.argmin(spc) | |||
|
299 | # spcs=numpy.roll(spc,-minx) | |||
|
300 | # cum=numpy.cumsum(spcs) | |||
|
301 | # tot_noise=wnoise * self.Num_Bin #64; | |||
|
302 | # #tot_signal=sum(cum[-5:])/5.; ''' How does this line work? ''' | |||
|
303 | # #snr=tot_signal/tot_noise | |||
|
304 | # #snr=cum[-1]/tot_noise | |||
|
305 | # | |||
|
306 | # #print 'spc' , spcs[5:8] , 'tot_noise', tot_noise | |||
|
307 | # | |||
|
308 | # snr = sum(spcs)/tot_noise | |||
|
309 | # snrdB=10.*numpy.log10(snr) | |||
|
310 | # | |||
|
311 | # #if snrdB < -9 : | |||
|
312 | # # snrdB = numpy.NaN | |||
|
313 | # # continue | |||
|
314 | # | |||
|
315 | # #print 'snr',snrdB # , sum(spcs) , tot_noise | |||
|
316 | # | |||
|
317 | # | |||
|
318 | # #if snrdB<-18 or numpy.isnan(snrdB) or num_intg<4: | |||
|
319 | # # return [None,]*4,[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None | |||
|
320 | # | |||
|
321 | # cummax=max(cum); epsi=0.08*fatspectra # cumsum to narrow down the energy region | |||
|
322 | # cumlo=cummax*epsi; | |||
|
323 | # cumhi=cummax*(1-epsi) | |||
|
324 | # powerindex=numpy.array(numpy.where(numpy.logical_and(cum>cumlo, cum<cumhi))[0]) | |||
|
325 | # | |||
|
326 | # #if len(powerindex)==1: | |||
|
327 | # ##return [numpy.mod(powerindex[0]+minx,64),None,None,None,],[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None | |||
|
328 | # #return [numpy.mod(powerindex[0]+minx, self.Num_Bin ),None,None,None,],[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None | |||
|
329 | # #elif len(powerindex)<4*fatspectra: | |||
|
330 | # #return [None,]*4,[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None | |||
|
331 | # | |||
|
332 | # if len(powerindex) < 1:# case for powerindex 0 | |||
|
333 | # continue | |||
|
334 | # powerlo=powerindex[0] | |||
|
335 | # powerhi=powerindex[-1] | |||
|
336 | # powerwidth=powerhi-powerlo | |||
|
337 | # | |||
|
338 | # firstpeak=powerlo+powerwidth/10.# first gaussian energy location | |||
|
339 | # secondpeak=powerhi-powerwidth/10.#second gaussian energy location | |||
|
340 | # midpeak=(firstpeak+secondpeak)/2. | |||
|
341 | # firstamp=spcs[int(firstpeak)] | |||
|
342 | # secondamp=spcs[int(secondpeak)] | |||
|
343 | # midamp=spcs[int(midpeak)] | |||
|
344 | # #x=numpy.spc.shape[1] | |||
|
345 | # | |||
|
346 | # #x=numpy.arange(64) | |||
|
347 | # x=numpy.arange( self.Num_Bin ) | |||
|
348 | # y_data=spc+wnoise | |||
|
349 | # | |||
|
350 | # # single gaussian | |||
|
351 | # #shift0=numpy.mod(midpeak+minx,64) | |||
|
352 | # shift0=numpy.mod(midpeak+minx, self.Num_Bin ) | |||
|
353 | # width0=powerwidth/4.#Initialization entire power of spectrum divided by 4 | |||
|
354 | # power0=2. | |||
|
355 | # amplitude0=midamp | |||
|
356 | # state0=[shift0,width0,amplitude0,power0,wnoise] | |||
|
357 | # #bnds=((0,63),(1,powerwidth),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
358 | # bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
359 | # #bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth),(0,None),(0.5,3.),(0.1,0.5)) | |||
|
360 | # # bnds = range of fft, power width, amplitude, power, noise | |||
|
361 | # lsq1=fmin_l_bfgs_b(self.misfit1,state0,args=(y_data,x,num_intg),bounds=bnds,approx_grad=True) | |||
|
362 | # | |||
|
363 | # chiSq1=lsq1[1]; | |||
|
364 | # jack1= self.y_jacobian1(x,lsq1[0]) | |||
|
365 | # | |||
|
366 | # | |||
|
367 | # try: | |||
|
368 | # sigmas1=numpy.sqrt(chiSq1*numpy.diag(numpy.linalg.inv(numpy.dot(jack1.T,jack1)))) | |||
|
369 | # except: | |||
|
370 | # std1=32.; sigmas1=numpy.ones(5) | |||
|
371 | # else: | |||
|
372 | # std1=sigmas1[0] | |||
|
373 | # | |||
|
374 | # | |||
|
375 | # if fatspectra<1.0 and powerwidth<4: | |||
|
376 | # choice=0 | |||
|
377 | # Amplitude0=lsq1[0][2] | |||
|
378 | # shift0=lsq1[0][0] | |||
|
379 | # width0=lsq1[0][1] | |||
|
380 | # p0=lsq1[0][3] | |||
|
381 | # Amplitude1=0. | |||
|
382 | # shift1=0. | |||
|
383 | # width1=0. | |||
|
384 | # p1=0. | |||
|
385 | # noise=lsq1[0][4] | |||
|
386 | # #return (numpy.array([shift0,width0,Amplitude0,p0]), | |||
|
387 | # # numpy.array([shift1,width1,Amplitude1,p1]),noise,snrdB,chiSq1,6.,sigmas1,[None,]*9,choice) | |||
|
388 | # | |||
|
389 | # # two gaussians | |||
|
390 | # #shift0=numpy.mod(firstpeak+minx,64); shift1=numpy.mod(secondpeak+minx,64) | |||
|
391 | # shift0=numpy.mod(firstpeak+minx, self.Num_Bin ); | |||
|
392 | # shift1=numpy.mod(secondpeak+minx, self.Num_Bin ) | |||
|
393 | # width0=powerwidth/6.; | |||
|
394 | # width1=width0 | |||
|
395 | # power0=2.; | |||
|
396 | # power1=power0 | |||
|
397 | # amplitude0=firstamp; | |||
|
398 | # amplitude1=secondamp | |||
|
399 | # state0=[shift0,width0,amplitude0,power0,shift1,width1,amplitude1,power1,wnoise] | |||
|
400 | # #bnds=((0,63),(1,powerwidth/2.),(0,None),(0.5,3.),(0,63),(1,powerwidth/2.),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
401 | # bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth/2.),(0,None),(0.5,3.),( 0,(self.Num_Bin-1)),(1,powerwidth/2.),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
402 | # #bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth/2.),(0,None),(0.5,3.),( 0,(self.Num_Bin-1)),(1,powerwidth/2.),(0,None),(0.5,3.),(0.1,0.5)) | |||
|
403 | # | |||
|
404 | # lsq2=fmin_l_bfgs_b(self.misfit2,state0,args=(y_data,x,num_intg),bounds=bnds,approx_grad=True) | |||
|
405 | # | |||
|
406 | # | |||
|
407 | # chiSq2=lsq2[1]; jack2=self.y_jacobian2(x,lsq2[0]) | |||
|
408 | # | |||
|
409 | # | |||
|
410 | # try: | |||
|
411 | # sigmas2=numpy.sqrt(chiSq2*numpy.diag(numpy.linalg.inv(numpy.dot(jack2.T,jack2)))) | |||
|
412 | # except: | |||
|
413 | # std2a=32.; std2b=32.; sigmas2=numpy.ones(9) | |||
|
414 | # else: | |||
|
415 | # std2a=sigmas2[0]; std2b=sigmas2[4] | |||
|
416 | # | |||
|
417 | # | |||
|
418 | # | |||
|
419 | # oneG=(chiSq1<5 and chiSq1/chiSq2<2.0) and (abs(lsq2[0][0]-lsq2[0][4])<(lsq2[0][1]+lsq2[0][5])/3. or abs(lsq2[0][0]-lsq2[0][4])<10) | |||
|
420 | # | |||
|
421 | # if snrdB>-9: # when SNR is strong pick the peak with least shift (LOS velocity) error | |||
|
422 | # if oneG: | |||
|
423 | # choice=0 | |||
|
424 | # else: | |||
|
425 | # w1=lsq2[0][1]; w2=lsq2[0][5] | |||
|
426 | # a1=lsq2[0][2]; a2=lsq2[0][6] | |||
|
427 | # p1=lsq2[0][3]; p2=lsq2[0][7] | |||
|
428 | # s1=(2**(1+1./p1))*scipy.special.gamma(1./p1)/p1; s2=(2**(1+1./p2))*scipy.special.gamma(1./p2)/p2; | |||
|
429 | # gp1=a1*w1*s1; gp2=a2*w2*s2 # power content of each ggaussian with proper p scaling | |||
|
430 | # | |||
|
431 | # if gp1>gp2: | |||
|
432 | # if a1>0.7*a2: | |||
|
433 | # choice=1 | |||
|
434 | # else: | |||
|
435 | # choice=2 | |||
|
436 | # elif gp2>gp1: | |||
|
437 | # if a2>0.7*a1: | |||
|
438 | # choice=2 | |||
|
439 | # else: | |||
|
440 | # choice=1 | |||
|
441 | # else: | |||
|
442 | # choice=numpy.argmax([a1,a2])+1 | |||
|
443 | # #else: | |||
|
444 | # #choice=argmin([std2a,std2b])+1 | |||
|
445 | # | |||
|
446 | # else: # with low SNR go to the most energetic peak | |||
|
447 | # choice=numpy.argmax([lsq1[0][2]*lsq1[0][1],lsq2[0][2]*lsq2[0][1],lsq2[0][6]*lsq2[0][5]]) | |||
|
448 | # | |||
|
449 | # #print 'choice',choice | |||
|
450 | # | |||
|
451 | # if choice==0: # pick the single gaussian fit | |||
|
452 | # Amplitude0=lsq1[0][2] | |||
|
453 | # shift0=lsq1[0][0] | |||
|
454 | # width0=lsq1[0][1] | |||
|
455 | # p0=lsq1[0][3] | |||
|
456 | # Amplitude1=0. | |||
|
457 | # shift1=0. | |||
|
458 | # width1=0. | |||
|
459 | # p1=0. | |||
|
460 | # noise=lsq1[0][4] | |||
|
461 | # elif choice==1: # take the first one of the 2 gaussians fitted | |||
|
462 | # Amplitude0 = lsq2[0][2] | |||
|
463 | # shift0 = lsq2[0][0] | |||
|
464 | # width0 = lsq2[0][1] | |||
|
465 | # p0 = lsq2[0][3] | |||
|
466 | # Amplitude1 = lsq2[0][6] # This is 0 in gg1 | |||
|
467 | # shift1 = lsq2[0][4] # This is 0 in gg1 | |||
|
468 | # width1 = lsq2[0][5] # This is 0 in gg1 | |||
|
469 | # p1 = lsq2[0][7] # This is 0 in gg1 | |||
|
470 | # noise = lsq2[0][8] | |||
|
471 | # else: # the second one | |||
|
472 | # Amplitude0 = lsq2[0][6] | |||
|
473 | # shift0 = lsq2[0][4] | |||
|
474 | # width0 = lsq2[0][5] | |||
|
475 | # p0 = lsq2[0][7] | |||
|
476 | # Amplitude1 = lsq2[0][2] # This is 0 in gg1 | |||
|
477 | # shift1 = lsq2[0][0] # This is 0 in gg1 | |||
|
478 | # width1 = lsq2[0][1] # This is 0 in gg1 | |||
|
479 | # p1 = lsq2[0][3] # This is 0 in gg1 | |||
|
480 | # noise = lsq2[0][8] | |||
|
481 | # | |||
|
482 | # #print len(noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0) | |||
|
483 | # SPC_ch1[:,ht] = noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0 | |||
|
484 | # SPC_ch2[:,ht] = noise + Amplitude1*numpy.exp(-0.5*(abs(x-shift1))/width1)**p1 | |||
|
485 | # #print 'SPC_ch1.shape',SPC_ch1.shape | |||
|
486 | # #print 'SPC_ch2.shape',SPC_ch2.shape | |||
|
487 | # #dataOut.data_param = SPC_ch1 | |||
|
488 | # GauSPC[0] = SPC_ch1 | |||
|
489 | # GauSPC[1] = SPC_ch2 | |||
|
490 | ||||
|
491 | # #plt.gcf().clear() | |||
|
492 | # plt.figure(50+self.i) | |||
|
493 | # self.i=self.i+1 | |||
|
494 | # #plt.subplot(121) | |||
|
495 | # plt.plot(self.spc,'k')#,label='spc(66)') | |||
|
496 | # plt.plot(SPC_ch1[ch,ht],'b')#,label='gg1') | |||
|
497 | # #plt.plot(SPC_ch2,'r')#,label='gg2') | |||
|
498 | # #plt.plot(xFrec,ySamples[1],'g',label='Ch1') | |||
|
499 | # #plt.plot(xFrec,ySamples[2],'r',label='Ch2') | |||
|
500 | # #plt.plot(xFrec,FitGauss,'yo:',label='fit') | |||
|
501 | # plt.legend() | |||
|
502 | # plt.title('DATOS A ALTURA DE 7500 METROS') | |||
|
503 | # plt.show() | |||
|
504 | # print 'shift0', shift0 | |||
|
505 | # print 'Amplitude0', Amplitude0 | |||
|
506 | # print 'width0', width0 | |||
|
507 | # print 'p0', p0 | |||
|
508 | # print '========================' | |||
|
509 | # print 'shift1', shift1 | |||
|
510 | # print 'Amplitude1', Amplitude1 | |||
|
511 | # print 'width1', width1 | |||
|
512 | # print 'p1', p1 | |||
|
513 | # print 'noise', noise | |||
|
514 | # print 's_noise', wnoise | |||
|
515 | ||||
|
516 | print '========================================================' | |||
|
517 | print 'total_time: ', time.time()-start_time | |||
|
518 | ||||
|
519 | # re-normalizing spc and noise | |||
|
520 | # This part differs from gg1 | |||
|
521 | ||||
|
522 | ||||
|
523 | ||||
|
524 | ''' Parameters: | |||
|
525 | 1. Amplitude | |||
|
526 | 2. Shift | |||
|
527 | 3. Width | |||
|
528 | 4. Power | |||
|
529 | ''' | |||
|
530 | ||||
|
531 | ||||
|
532 | ############################################################################### | |||
|
533 | def FitGau(self, X): | |||
|
534 | ||||
|
535 | Vrange, ch, pnoise, noise_, num_intg, SNRlimit = X | |||
|
536 | #print 'VARSSSS', ch, pnoise, noise, num_intg | |||
|
537 | ||||
|
538 | #print 'HEIGHTS', self.Num_Hei | |||
|
539 | ||||
|
540 | GauSPC = [] | |||
|
541 | SPC_ch1 = numpy.empty([self.Num_Bin,self.Num_Hei]) | |||
|
542 | SPC_ch2 = numpy.empty([self.Num_Bin,self.Num_Hei]) | |||
|
543 | SPC_ch1[:] = 0#numpy.NaN | |||
|
544 | SPC_ch2[:] = 0#numpy.NaN | |||
|
545 | ||||
|
546 | ||||
|
547 | ||||
|
548 | for ht in range(self.Num_Hei): | |||
|
549 | #print (numpy.asarray(self.spc).shape) | |||
|
550 | ||||
|
551 | #print 'TTTTT', ch , ht | |||
|
552 | #print self.spc.shape | |||
|
553 | ||||
|
554 | ||||
|
555 | spc = numpy.asarray(self.spc)[ch,:,ht] | |||
|
556 | ||||
|
557 | ############################################# | |||
|
558 | # normalizing spc and noise | |||
|
559 | # This part differs from gg1 | |||
|
560 | spc_norm_max = max(spc) | |||
|
561 | spc = spc / spc_norm_max | |||
|
562 | pnoise = pnoise / spc_norm_max | |||
|
563 | ############################################# | |||
|
564 | ||||
|
565 | fatspectra=1.0 | |||
|
566 | ||||
|
567 | wnoise = noise_ / spc_norm_max | |||
|
568 | #wnoise,stdv,i_max,index =enoise(spc,num_intg) #noise estimate using Hildebrand Sekhon, only wnoise is used | |||
|
569 | #if wnoise>1.1*pnoise: # to be tested later | |||
|
570 | # wnoise=pnoise | |||
|
571 | noisebl=wnoise*0.9; noisebh=wnoise*1.1 | |||
|
572 | spc=spc-wnoise | |||
|
573 | # print 'wnoise', noise_[0], spc_norm_max, wnoise | |||
|
574 | minx=numpy.argmin(spc) | |||
|
575 | spcs=numpy.roll(spc,-minx) | |||
|
576 | cum=numpy.cumsum(spcs) | |||
|
577 | tot_noise=wnoise * self.Num_Bin #64; | |||
|
578 | #print 'spc' , spcs[5:8] , 'tot_noise', tot_noise | |||
|
579 | #tot_signal=sum(cum[-5:])/5.; ''' How does this line work? ''' | |||
|
580 | #snr=tot_signal/tot_noise | |||
|
581 | #snr=cum[-1]/tot_noise | |||
|
582 | snr = sum(spcs)/tot_noise | |||
|
583 | snrdB=10.*numpy.log10(snr) | |||
|
584 | ||||
|
585 | if snrdB < SNRlimit : | |||
|
586 | snr = numpy.NaN | |||
|
587 | SPC_ch1[:,ht] = 0#numpy.NaN | |||
|
588 | SPC_ch1[:,ht] = 0#numpy.NaN | |||
|
589 | GauSPC = (SPC_ch1,SPC_ch2) | |||
|
590 | continue | |||
|
591 | #print 'snr',snrdB #, sum(spcs) , tot_noise | |||
|
592 | ||||
|
593 | ||||
|
594 | ||||
|
595 | #if snrdB<-18 or numpy.isnan(snrdB) or num_intg<4: | |||
|
596 | # return [None,]*4,[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None | |||
|
597 | ||||
|
598 | cummax=max(cum); epsi=0.08*fatspectra # cumsum to narrow down the energy region | |||
|
599 | cumlo=cummax*epsi; | |||
|
600 | cumhi=cummax*(1-epsi) | |||
|
601 | powerindex=numpy.array(numpy.where(numpy.logical_and(cum>cumlo, cum<cumhi))[0]) | |||
|
602 | ||||
|
603 | ||||
|
604 | if len(powerindex) < 1:# case for powerindex 0 | |||
|
605 | continue | |||
|
606 | powerlo=powerindex[0] | |||
|
607 | powerhi=powerindex[-1] | |||
|
608 | powerwidth=powerhi-powerlo | |||
|
609 | ||||
|
610 | firstpeak=powerlo+powerwidth/10.# first gaussian energy location | |||
|
611 | secondpeak=powerhi-powerwidth/10.#second gaussian energy location | |||
|
612 | midpeak=(firstpeak+secondpeak)/2. | |||
|
613 | firstamp=spcs[int(firstpeak)] | |||
|
614 | secondamp=spcs[int(secondpeak)] | |||
|
615 | midamp=spcs[int(midpeak)] | |||
|
616 | ||||
|
617 | x=numpy.arange( self.Num_Bin ) | |||
|
618 | y_data=spc+wnoise | |||
|
619 | ||||
|
620 | # single gaussian | |||
|
621 | shift0=numpy.mod(midpeak+minx, self.Num_Bin ) | |||
|
622 | width0=powerwidth/4.#Initialization entire power of spectrum divided by 4 | |||
|
623 | power0=2. | |||
|
624 | amplitude0=midamp | |||
|
625 | state0=[shift0,width0,amplitude0,power0,wnoise] | |||
|
626 | bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
627 | lsq1=fmin_l_bfgs_b(self.misfit1,state0,args=(y_data,x,num_intg),bounds=bnds,approx_grad=True) | |||
|
628 | ||||
|
629 | chiSq1=lsq1[1]; | |||
|
630 | jack1= self.y_jacobian1(x,lsq1[0]) | |||
|
631 | ||||
|
632 | ||||
|
633 | try: | |||
|
634 | sigmas1=numpy.sqrt(chiSq1*numpy.diag(numpy.linalg.inv(numpy.dot(jack1.T,jack1)))) | |||
|
635 | except: | |||
|
636 | std1=32.; sigmas1=numpy.ones(5) | |||
|
637 | else: | |||
|
638 | std1=sigmas1[0] | |||
|
639 | ||||
|
640 | ||||
|
641 | if fatspectra<1.0 and powerwidth<4: | |||
|
642 | choice=0 | |||
|
643 | Amplitude0=lsq1[0][2] | |||
|
644 | shift0=lsq1[0][0] | |||
|
645 | width0=lsq1[0][1] | |||
|
646 | p0=lsq1[0][3] | |||
|
647 | Amplitude1=0. | |||
|
648 | shift1=0. | |||
|
649 | width1=0. | |||
|
650 | p1=0. | |||
|
651 | noise=lsq1[0][4] | |||
|
652 | #return (numpy.array([shift0,width0,Amplitude0,p0]), | |||
|
653 | # numpy.array([shift1,width1,Amplitude1,p1]),noise,snrdB,chiSq1,6.,sigmas1,[None,]*9,choice) | |||
|
654 | ||||
|
655 | # two gaussians | |||
|
656 | #shift0=numpy.mod(firstpeak+minx,64); shift1=numpy.mod(secondpeak+minx,64) | |||
|
657 | shift0=numpy.mod(firstpeak+minx, self.Num_Bin ); | |||
|
658 | shift1=numpy.mod(secondpeak+minx, self.Num_Bin ) | |||
|
659 | width0=powerwidth/6.; | |||
|
660 | width1=width0 | |||
|
661 | power0=2.; | |||
|
662 | power1=power0 | |||
|
663 | amplitude0=firstamp; | |||
|
664 | amplitude1=secondamp | |||
|
665 | state0=[shift0,width0,amplitude0,power0,shift1,width1,amplitude1,power1,wnoise] | |||
|
666 | #bnds=((0,63),(1,powerwidth/2.),(0,None),(0.5,3.),(0,63),(1,powerwidth/2.),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
667 | bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth/2.),(0,None),(0.5,3.),( 0,(self.Num_Bin-1)),(1,powerwidth/2.),(0,None),(0.5,3.),(noisebl,noisebh)) | |||
|
668 | #bnds=(( 0,(self.Num_Bin-1) ),(1,powerwidth/2.),(0,None),(0.5,3.),( 0,(self.Num_Bin-1)),(1,powerwidth/2.),(0,None),(0.5,3.),(0.1,0.5)) | |||
|
669 | ||||
|
670 | lsq2=fmin_l_bfgs_b(self.misfit2,state0,args=(y_data,x,num_intg),bounds=bnds,approx_grad=True) | |||
|
671 | ||||
|
672 | ||||
|
673 | chiSq2=lsq2[1]; jack2=self.y_jacobian2(x,lsq2[0]) | |||
|
674 | ||||
|
675 | ||||
|
676 | try: | |||
|
677 | sigmas2=numpy.sqrt(chiSq2*numpy.diag(numpy.linalg.inv(numpy.dot(jack2.T,jack2)))) | |||
|
678 | except: | |||
|
679 | std2a=32.; std2b=32.; sigmas2=numpy.ones(9) | |||
|
680 | else: | |||
|
681 | std2a=sigmas2[0]; std2b=sigmas2[4] | |||
|
682 | ||||
|
683 | ||||
|
684 | ||||
|
685 | oneG=(chiSq1<5 and chiSq1/chiSq2<2.0) and (abs(lsq2[0][0]-lsq2[0][4])<(lsq2[0][1]+lsq2[0][5])/3. or abs(lsq2[0][0]-lsq2[0][4])<10) | |||
|
686 | ||||
|
687 | if snrdB>-6: # when SNR is strong pick the peak with least shift (LOS velocity) error | |||
|
688 | if oneG: | |||
|
689 | choice=0 | |||
|
690 | else: | |||
|
691 | w1=lsq2[0][1]; w2=lsq2[0][5] | |||
|
692 | a1=lsq2[0][2]; a2=lsq2[0][6] | |||
|
693 | p1=lsq2[0][3]; p2=lsq2[0][7] | |||
|
694 | s1=(2**(1+1./p1))*scipy.special.gamma(1./p1)/p1; | |||
|
695 | s2=(2**(1+1./p2))*scipy.special.gamma(1./p2)/p2; | |||
|
696 | gp1=a1*w1*s1; gp2=a2*w2*s2 # power content of each ggaussian with proper p scaling | |||
|
697 | ||||
|
698 | if gp1>gp2: | |||
|
699 | if a1>0.7*a2: | |||
|
700 | choice=1 | |||
|
701 | else: | |||
|
702 | choice=2 | |||
|
703 | elif gp2>gp1: | |||
|
704 | if a2>0.7*a1: | |||
|
705 | choice=2 | |||
|
706 | else: | |||
|
707 | choice=1 | |||
|
708 | else: | |||
|
709 | choice=numpy.argmax([a1,a2])+1 | |||
|
710 | #else: | |||
|
711 | #choice=argmin([std2a,std2b])+1 | |||
|
712 | ||||
|
713 | else: # with low SNR go to the most energetic peak | |||
|
714 | choice=numpy.argmax([lsq1[0][2]*lsq1[0][1],lsq2[0][2]*lsq2[0][1],lsq2[0][6]*lsq2[0][5]]) | |||
|
715 | ||||
|
716 | ||||
|
717 | shift0=lsq2[0][0]; vel0=Vrange[0] + shift0*(Vrange[1]-Vrange[0]) | |||
|
718 | shift1=lsq2[0][4]; vel1=Vrange[0] + shift1*(Vrange[1]-Vrange[0]) | |||
|
719 | ||||
|
720 | max_vel = 20 | |||
|
721 | ||||
|
722 | #first peak will be 0, second peak will be 1 | |||
|
723 | if vel0 > 0 and vel0 < max_vel : #first peak is in the correct range | |||
|
724 | shift0=lsq2[0][0] | |||
|
725 | width0=lsq2[0][1] | |||
|
726 | Amplitude0=lsq2[0][2] | |||
|
727 | p0=lsq2[0][3] | |||
|
728 | ||||
|
729 | shift1=lsq2[0][4] | |||
|
730 | width1=lsq2[0][5] | |||
|
731 | Amplitude1=lsq2[0][6] | |||
|
732 | p1=lsq2[0][7] | |||
|
733 | noise=lsq2[0][8] | |||
|
734 | else: | |||
|
735 | shift1=lsq2[0][0] | |||
|
736 | width1=lsq2[0][1] | |||
|
737 | Amplitude1=lsq2[0][2] | |||
|
738 | p1=lsq2[0][3] | |||
|
739 | ||||
|
740 | shift0=lsq2[0][4] | |||
|
741 | width0=lsq2[0][5] | |||
|
742 | Amplitude0=lsq2[0][6] | |||
|
743 | p0=lsq2[0][7] | |||
|
744 | noise=lsq2[0][8] | |||
|
745 | ||||
|
746 | if Amplitude0<0.1: # in case the peak is noise | |||
|
747 | shift0,width0,Amplitude0,p0 = 4*[numpy.NaN] | |||
|
748 | if Amplitude1<0.1: | |||
|
749 | shift1,width1,Amplitude1,p1 = 4*[numpy.NaN] | |||
|
750 | ||||
|
751 | ||||
|
752 | # if choice==0: # pick the single gaussian fit | |||
|
753 | # Amplitude0=lsq1[0][2] | |||
|
754 | # shift0=lsq1[0][0] | |||
|
755 | # width0=lsq1[0][1] | |||
|
756 | # p0=lsq1[0][3] | |||
|
757 | # Amplitude1=0. | |||
|
758 | # shift1=0. | |||
|
759 | # width1=0. | |||
|
760 | # p1=0. | |||
|
761 | # noise=lsq1[0][4] | |||
|
762 | # elif choice==1: # take the first one of the 2 gaussians fitted | |||
|
763 | # Amplitude0 = lsq2[0][2] | |||
|
764 | # shift0 = lsq2[0][0] | |||
|
765 | # width0 = lsq2[0][1] | |||
|
766 | # p0 = lsq2[0][3] | |||
|
767 | # Amplitude1 = lsq2[0][6] # This is 0 in gg1 | |||
|
768 | # shift1 = lsq2[0][4] # This is 0 in gg1 | |||
|
769 | # width1 = lsq2[0][5] # This is 0 in gg1 | |||
|
770 | # p1 = lsq2[0][7] # This is 0 in gg1 | |||
|
771 | # noise = lsq2[0][8] | |||
|
772 | # else: # the second one | |||
|
773 | # Amplitude0 = lsq2[0][6] | |||
|
774 | # shift0 = lsq2[0][4] | |||
|
775 | # width0 = lsq2[0][5] | |||
|
776 | # p0 = lsq2[0][7] | |||
|
777 | # Amplitude1 = lsq2[0][2] # This is 0 in gg1 | |||
|
778 | # shift1 = lsq2[0][0] # This is 0 in gg1 | |||
|
779 | # width1 = lsq2[0][1] # This is 0 in gg1 | |||
|
780 | # p1 = lsq2[0][3] # This is 0 in gg1 | |||
|
781 | # noise = lsq2[0][8] | |||
|
782 | ||||
|
783 | #print len(noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0) | |||
|
784 | SPC_ch1[:,ht] = noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0 | |||
|
785 | SPC_ch2[:,ht] = noise + Amplitude1*numpy.exp(-0.5*(abs(x-shift1))/width1)**p1 | |||
|
786 | #print 'SPC_ch1.shape',SPC_ch1.shape | |||
|
787 | #print 'SPC_ch2.shape',SPC_ch2.shape | |||
|
788 | #dataOut.data_param = SPC_ch1 | |||
|
789 | GauSPC = (SPC_ch1,SPC_ch2) | |||
|
790 | #GauSPC[1] = SPC_ch2 | |||
|
791 | ||||
|
792 | # print 'shift0', shift0 | |||
|
793 | # print 'Amplitude0', Amplitude0 | |||
|
794 | # print 'width0', width0 | |||
|
795 | # print 'p0', p0 | |||
|
796 | # print '========================' | |||
|
797 | # print 'shift1', shift1 | |||
|
798 | # print 'Amplitude1', Amplitude1 | |||
|
799 | # print 'width1', width1 | |||
|
800 | # print 'p1', p1 | |||
|
801 | # print 'noise', noise | |||
|
802 | # print 's_noise', wnoise | |||
|
803 | ||||
|
804 | return GauSPC | |||
|
805 | ||||
|
806 | ||||
|
807 | def y_jacobian1(self,x,state): # This function is for further analysis of generalized Gaussians, it is not too importan for the signal discrimination. | |||
|
808 | y_model=self.y_model1(x,state) | |||
|
809 | s0,w0,a0,p0,n=state | |||
|
810 | e0=((x-s0)/w0)**2; | |||
|
811 | ||||
|
812 | e0u=((x-s0-self.Num_Bin)/w0)**2; | |||
|
813 | ||||
|
814 | e0d=((x-s0+self.Num_Bin)/w0)**2 | |||
|
815 | m0=numpy.exp(-0.5*e0**(p0/2.)); | |||
|
816 | m0u=numpy.exp(-0.5*e0u**(p0/2.)); | |||
|
817 | m0d=numpy.exp(-0.5*e0d**(p0/2.)) | |||
|
818 | JA=m0+m0u+m0d | |||
|
819 | JP=(-1/4.)*a0*m0*e0**(p0/2.)*numpy.log(e0)+(-1/4.)*a0*m0u*e0u**(p0/2.)*numpy.log(e0u)+(-1/4.)*a0*m0d*e0d**(p0/2.)*numpy.log(e0d) | |||
|
820 | ||||
|
821 | JS=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0) | |||
|
822 | ||||
|
823 | JW=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)**2+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)**2+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0)**2 | |||
|
824 | jack1=numpy.sqrt(7)*numpy.array([JS/y_model,JW/y_model,JA/y_model,JP/y_model,1./y_model]) | |||
|
825 | return jack1.T | |||
|
826 | ||||
|
827 | def y_jacobian2(self,x,state): | |||
|
828 | y_model=self.y_model2(x,state) | |||
|
829 | s0,w0,a0,p0,s1,w1,a1,p1,n=state | |||
|
830 | e0=((x-s0)/w0)**2; | |||
|
831 | ||||
|
832 | e0u=((x-s0- self.Num_Bin )/w0)**2; | |||
|
833 | ||||
|
834 | e0d=((x-s0+ self.Num_Bin )/w0)**2 | |||
|
835 | e1=((x-s1)/w1)**2; | |||
|
836 | ||||
|
837 | e1u=((x-s1- self.Num_Bin )/w1)**2; | |||
|
838 | ||||
|
839 | e1d=((x-s1+ self.Num_Bin )/w1)**2 | |||
|
840 | m0=numpy.exp(-0.5*e0**(p0/2.)); | |||
|
841 | m0u=numpy.exp(-0.5*e0u**(p0/2.)); | |||
|
842 | m0d=numpy.exp(-0.5*e0d**(p0/2.)) | |||
|
843 | m1=numpy.exp(-0.5*e1**(p1/2.)); | |||
|
844 | m1u=numpy.exp(-0.5*e1u**(p1/2.)); | |||
|
845 | m1d=numpy.exp(-0.5*e1d**(p1/2.)) | |||
|
846 | JA=m0+m0u+m0d | |||
|
847 | JA1=m1+m1u+m1d | |||
|
848 | JP=(-1/4.)*a0*m0*e0**(p0/2.)*numpy.log(e0)+(-1/4.)*a0*m0u*e0u**(p0/2.)*numpy.log(e0u)+(-1/4.)*a0*m0d*e0d**(p0/2.)*numpy.log(e0d) | |||
|
849 | JP1=(-1/4.)*a1*m1*e1**(p1/2.)*numpy.log(e1)+(-1/4.)*a1*m1u*e1u**(p1/2.)*numpy.log(e1u)+(-1/4.)*a1*m1d*e1d**(p1/2.)*numpy.log(e1d) | |||
|
850 | ||||
|
851 | JS=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0) | |||
|
852 | ||||
|
853 | JS1=(p1/w1/2.)*a1*m1*e1**(p1/2.-1)*((x-s1)/w1)+(p1/w1/2.)*a1*m1u*e1u**(p1/2.-1)*((x-s1- self.Num_Bin )/w1)+(p1/w1/2.)*a1*m1d*e1d**(p1/2.-1)*((x-s1+ self.Num_Bin )/w1) | |||
|
854 | ||||
|
855 | JW=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)**2+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)**2+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0)**2 | |||
|
856 | ||||
|
857 | JW1=(p1/w1/2.)*a1*m1*e1**(p1/2.-1)*((x-s1)/w1)**2+(p1/w1/2.)*a1*m1u*e1u**(p1/2.-1)*((x-s1- self.Num_Bin )/w1)**2+(p1/w1/2.)*a1*m1d*e1d**(p1/2.-1)*((x-s1+ self.Num_Bin )/w1)**2 | |||
|
858 | jack2=numpy.sqrt(7)*numpy.array([JS/y_model,JW/y_model,JA/y_model,JP/y_model,JS1/y_model,JW1/y_model,JA1/y_model,JP1/y_model,1./y_model]) | |||
|
859 | return jack2.T | |||
|
860 | ||||
|
861 | def y_model1(self,x,state): | |||
|
862 | shift0,width0,amplitude0,power0,noise=state | |||
|
863 | model0=amplitude0*numpy.exp(-0.5*abs((x-shift0)/width0)**power0) | |||
|
864 | ||||
|
865 | model0u=amplitude0*numpy.exp(-0.5*abs((x-shift0- self.Num_Bin )/width0)**power0) | |||
|
866 | ||||
|
867 | model0d=amplitude0*numpy.exp(-0.5*abs((x-shift0+ self.Num_Bin )/width0)**power0) | |||
|
868 | return model0+model0u+model0d+noise | |||
|
869 | ||||
|
870 | def y_model2(self,x,state): #Equation for two generalized Gaussians with Nyquist | |||
|
871 | shift0,width0,amplitude0,power0,shift1,width1,amplitude1,power1,noise=state | |||
|
872 | model0=amplitude0*numpy.exp(-0.5*abs((x-shift0)/width0)**power0) | |||
|
873 | ||||
|
874 | model0u=amplitude0*numpy.exp(-0.5*abs((x-shift0- self.Num_Bin )/width0)**power0) | |||
|
875 | ||||
|
876 | model0d=amplitude0*numpy.exp(-0.5*abs((x-shift0+ self.Num_Bin )/width0)**power0) | |||
|
877 | model1=amplitude1*numpy.exp(-0.5*abs((x-shift1)/width1)**power1) | |||
|
878 | ||||
|
879 | model1u=amplitude1*numpy.exp(-0.5*abs((x-shift1- self.Num_Bin )/width1)**power1) | |||
|
880 | ||||
|
881 | model1d=amplitude1*numpy.exp(-0.5*abs((x-shift1+ self.Num_Bin )/width1)**power1) | |||
|
882 | return model0+model0u+model0d+model1+model1u+model1d+noise | |||
|
883 | ||||
|
884 | def misfit1(self,state,y_data,x,num_intg): # This function compares how close real data is with the model data, the close it is, the better it is. | |||
|
885 | ||||
|
886 | return num_intg*sum((numpy.log(y_data)-numpy.log(self.y_model1(x,state)))**2)#/(64-5.) # /(64-5.) can be commented | |||
|
887 | ||||
|
888 | def misfit2(self,state,y_data,x,num_intg): | |||
|
889 | return num_intg*sum((numpy.log(y_data)-numpy.log(self.y_model2(x,state)))**2)#/(64-9.) | |||
135 |
|
|
890 | ||
136 |
|
891 | |||
137 |
|
|
892 | class PrecipitationProc(Operation): | |
138 |
|
|
893 | ||
139 | ''' |
|
894 | ''' | |
140 |
|
|
895 | Operator that estimates Reflectivity factor (Z), and estimates rainfall Rate (R) | |
141 |
|
896 | |||
142 | Input: |
|
897 | Input: | |
143 | self.dataOut.data_pre : SelfSpectra |
|
898 | self.dataOut.data_pre : SelfSpectra | |
144 |
|
899 | |||
145 |
|
900 | Output: | ||
146 |
|
||||
147 | Output: |
|
|||
148 |
|
901 | |||
149 | self.dataOut.data_output : Reflectivity factor, rainfall Rate |
|
902 | self.dataOut.data_output : Reflectivity factor, rainfall Rate | |
150 |
|
903 | |||
151 |
|
904 | |||
152 |
Parameters affected: |
|
905 | Parameters affected: | |
153 | ''' |
|
906 | ''' | |
|
907 | ||||
154 |
|
|
908 | ||
155 | def run(self, dataOut): |
|
909 | def run(self, dataOut, radar=None, Pt=None, Gt=None, Gr=None, Lambda=None, aL=None, | |
|
910 | tauW=None, ThetaT=None, ThetaR=None, Km = 0.93, Altitude=None): | |||
156 |
|
|
911 | ||
157 | #numpy.set_printoptions(threshold=numpy.NaN) |
|
912 | self.spc = dataOut.data_pre[0].copy() | |
|
913 | self.Num_Hei = self.spc.shape[2] | |||
|
914 | self.Num_Bin = self.spc.shape[1] | |||
|
915 | self.Num_Chn = self.spc.shape[0] | |||
158 |
|
|
916 | ||
159 | spc = dataOut.data_pre[0].copy() |
|
917 | Velrange = dataOut.abscissaList | |
160 | NPW = dataOut.NPW |
|
918 | ||
161 | COFA = dataOut.COFA |
|
919 | if radar == "MIRA35C" : | |
162 | #print 'COFA',COFA.shape |
|
920 | ||
163 | #spc = numpy.where(spc<0,spc, numpy.NaN ) |
|
921 | Ze = self.dBZeMODE2(dataOut) | |
|
922 | ||||
|
923 | else: | |||
|
924 | ||||
|
925 | self.Pt = Pt | |||
|
926 | self.Gt = Gt | |||
|
927 | self.Gr = Gr | |||
|
928 | self.Lambda = Lambda | |||
|
929 | self.aL = aL | |||
|
930 | self.tauW = tauW | |||
|
931 | self.ThetaT = ThetaT | |||
|
932 | self.ThetaR = ThetaR | |||
|
933 | ||||
|
934 | RadarConstant = GetRadarConstant() | |||
|
935 | SPCmean = numpy.mean(self.spc,0) | |||
|
936 | ETA = numpy.zeros(self.Num_Hei) | |||
|
937 | Pr = numpy.sum(SPCmean,0) | |||
|
938 | ||||
|
939 | #for R in range(self.Num_Hei): | |||
|
940 | # ETA[R] = RadarConstant * Pr[R] * R**2 #Reflectivity (ETA) | |||
|
941 | ||||
|
942 | D_range = numpy.zeros(self.Num_Hei) | |||
|
943 | EqSec = numpy.zeros(self.Num_Hei) | |||
|
944 | del_V = numpy.zeros(self.Num_Hei) | |||
|
945 | ||||
|
946 | for R in range(self.Num_Hei): | |||
|
947 | ETA[R] = RadarConstant * Pr[R] * R**2 #Reflectivity (ETA) | |||
|
948 | ||||
|
949 | h = R + Altitude #Range from ground to radar pulse altitude | |||
|
950 | del_V[R] = 1 + 3.68 * 10**-5 * h + 1.71 * 10**-9 * h**2 #Density change correction for velocity | |||
|
951 | ||||
|
952 | D_range[R] = numpy.log( (9.65 - (Velrange[R]/del_V[R])) / 10.3 ) / -0.6 #Range of Diameter of drops related to velocity | |||
|
953 | SIGMA[R] = numpy.pi**5 / Lambda**4 * Km * D_range[R]**6 #Equivalent Section of drops (sigma) | |||
|
954 | ||||
|
955 | N_dist[R] = ETA[R] / SIGMA[R] | |||
|
956 | ||||
|
957 | Ze = (ETA * Lambda**4) / (numpy.pi * Km) | |||
|
958 | Z = numpy.sum( N_dist * D_range**6 ) | |||
|
959 | RR = 6*10**-4*numpy.pi * numpy.sum( D_range**3 * N_dist * Velrange ) #Rainfall rate | |||
164 |
|
|
960 | ||
165 | SNR = numpy.array([spc[0,:,:] / NPW[0] , spc[1,:,:] / NPW[1]]) |
|
|||
166 |
|
|
961 | ||
|
962 | RR = (Ze/200)**(1/1.6) | |||
|
963 | dBRR = 10*numpy.log10(RR) | |||
167 |
|
|
964 | ||
168 | #print 'SNR',SNR.shape |
|
965 | dBZe = 10*numpy.log10(Ze) | |
169 | #print ' ' |
|
966 | dataOut.data_output = Ze | |
|
967 | dataOut.data_param = numpy.ones([2,self.Num_Hei]) | |||
|
968 | dataOut.channelList = [0,1] | |||
|
969 | print 'channelList', dataOut.channelList | |||
|
970 | dataOut.data_param[0]=dBZe | |||
|
971 | dataOut.data_param[1]=dBRR | |||
|
972 | print 'RR SHAPE', dBRR.shape | |||
|
973 | print 'Ze SHAPE', dBZe.shape | |||
|
974 | print 'dataOut.data_param SHAPE', dataOut.data_param.shape | |||
|
975 | ||||
|
976 | ||||
|
977 | def dBZeMODE2(self, dataOut): # Processing for MIRA35C | |||
|
978 | ||||
|
979 | NPW = dataOut.NPW | |||
|
980 | COFA = dataOut.COFA | |||
|
981 | ||||
|
982 | SNR = numpy.array([self.spc[0,:,:] / NPW[0]]) #, self.spc[1,:,:] / NPW[1]]) | |||
170 |
|
|
983 | RadarConst = dataOut.RadarConst | |
171 |
|
|
984 | #frequency = 34.85*10**9 | |
172 | #Lambda = SPEED_OF_LIGHT/frequency |
|
|||
173 |
|
||||
174 | Num_Hei = spc.shape[2] |
|
|||
175 | Num_Bin = spc.shape[1] |
|
|||
176 | Num_Chn = spc.shape[0] |
|
|||
177 | ETA = numpy.zeros(([Num_Chn ,Num_Hei])) |
|
|||
178 | data_output = numpy.ones([Num_Chn ,Num_Hei])*numpy.NaN |
|
|||
179 |
|
|
985 | ||
180 | Km = 0.93 |
|
986 | ETA = numpy.zeros(([self.Num_Chn ,self.Num_Hei])) | |
|
987 | data_output = numpy.ones([self.Num_Chn , self.Num_Hei])*numpy.NaN | |||
181 |
|
|
988 | ||
182 |
|
|
989 | ETA = numpy.sum(SNR,1) | |
183 | ETA = numpy.where(ETA > 0. , ETA, numpy.NaN) |
|
990 | print 'ETA' , ETA | |
|
991 | ETA = numpy.where(ETA is not 0. , ETA, numpy.NaN) | |||
184 |
|
|
992 | ||
185 |
|
|
993 | Ze = numpy.ones([self.Num_Chn, self.Num_Hei] ) | |
186 |
|
|
994 | ||
187 |
|
|
995 | for r in range(self.Num_Hei): | |
188 |
|
|
996 | ||
189 |
|
|
997 | Ze[0,r] = ( ETA[0,r] ) * COFA[0,r][0] * RadarConst * ((r/5000.)**2) | |
190 |
|
|
998 | #Ze[1,r] = ( ETA[1,r] ) * COFA[1,r][0] * RadarConst * ((r/5000.)**2) | |
191 |
|
|
999 | ||
|
1000 | return Ze | |||
|
1001 | ||||
|
1002 | def GetRadarConstant(self): | |||
|
1003 | ||||
|
1004 | """ | |||
|
1005 | Constants: | |||
192 |
|
|
1006 | ||
193 | dBZe = 10*numpy.log10(Ze) |
|
1007 | Pt: Transmission Power dB | |
194 | dataOut.data_output = Ze |
|
1008 | Gt: Transmission Gain dB | |
195 | dataOut.data_param = dBZe |
|
1009 | Gr: Reception Gain dB | |
|
1010 | Lambda: Wavelenght m | |||
|
1011 | aL: Attenuation loses dB | |||
|
1012 | tauW: Width of transmission pulse s | |||
|
1013 | ThetaT: Transmission antenna bean angle rad | |||
|
1014 | ThetaR: Reception antenna beam angle rad | |||
196 |
|
|
1015 | ||
197 | print 'dBZe',dBZe[0,:] |
|
1016 | """ | |
|
1017 | Numerator = ( (4*numpy.pi)**3 * aL**2 * 16 * numpy.log(2) ) | |||
|
1018 | Denominator = ( Pt * Gt * Gr * Lambda**2 * SPEED_OF_LIGHT * TauW * numpy.pi * ThetaT * TheraR) | |||
|
1019 | RadarConstant = Numerator / Denominator | |||
|
1020 | ||||
|
1021 | return RadarConstant | |||
198 |
|
|
1022 | ||
199 |
|
||||
200 |
|
|
1023 | ||
201 |
|
|
1024 | ||
202 |
|
|
1025 | class FullSpectralAnalysis(Operation): | |
@@ -218,7 +1041,7 class FullSpectralAnalysis(Operation): | |||||
218 | Parameters affected: Winds, height range, SNR |
|
1041 | Parameters affected: Winds, height range, SNR | |
219 |
|
1042 | |||
220 | """ |
|
1043 | """ | |
221 | def run(self, dataOut): |
|
1044 | def run(self, dataOut, E01=None, E02=None, E12=None, N01=None, N02=None, N12=None): | |
222 |
|
|
1045 | ||
223 |
|
|
1046 | spc = dataOut.data_pre[0].copy() | |
224 |
|
|
1047 | cspc = dataOut.data_pre[1].copy() | |
@@ -227,9 +1050,18 class FullSpectralAnalysis(Operation): | |||||
227 |
|
|
1050 | nProfiles = spc.shape[1] | |
228 |
|
|
1051 | nHeights = spc.shape[2] | |
229 |
|
|
1052 | ||
230 |
|
|
1053 | pairsList = dataOut.groupList | |
231 |
|
|
1054 | if dataOut.ChanDist is not None : | |
232 | VelRange= dataOut.VelRange |
|
1055 | ChanDist = dataOut.ChanDist | |
|
1056 | else: | |||
|
1057 | ChanDist = numpy.array([[E01, N01],[E02,N02],[E12,N12]]) | |||
|
1058 | ||||
|
1059 | #print 'ChanDist', ChanDist | |||
|
1060 | ||||
|
1061 | if dataOut.VelRange is not None: | |||
|
1062 | VelRange= dataOut.VelRange | |||
|
1063 | else: | |||
|
1064 | VelRange= dataOut.abscissaList | |||
233 |
|
|
1065 | ||
234 |
|
|
1066 | ySamples=numpy.ones([nChannel,nProfiles]) | |
235 |
|
|
1067 | phase=numpy.ones([nChannel,nProfiles]) | |
@@ -240,6 +1072,7 class FullSpectralAnalysis(Operation): | |||||
240 |
|
|
1072 | ||
241 |
|
|
1073 | data = dataOut.data_pre | |
242 |
|
|
1074 | noise = dataOut.noise | |
|
1075 | print 'noise',noise | |||
243 |
|
|
1076 | SNRdB = 10*numpy.log10(dataOut.data_SNR) | |
244 |
|
|
1077 | ||
245 |
|
|
1078 | FirstMoment = [] | |
@@ -257,20 +1090,20 class FullSpectralAnalysis(Operation): | |||||
257 |
|
|
1090 | ||
258 |
|
|
1091 | for Height in range(nHeights): | |
259 |
|
|
1092 | ||
260 |
|
||||
261 |
|
||||
262 |
|
|
1093 | [Vzon,Vmer,Vver, GaussCenter]= self.WindEstimation(spc, cspc, pairsList, ChanDist, Height, noise, VelRange) | |
263 |
|
|
1094 | ||
264 |
|
|
1095 | if abs(Vzon)<100. and abs(Vzon)> 0.: | |
265 |
|
|
1096 | velocityX=numpy.append(velocityX, Vzon)#Vmag | |
266 |
|
|
1097 | ||
267 |
|
|
1098 | else: | |
|
1099 | print 'Vzon',Vzon | |||
268 |
|
|
1100 | velocityX=numpy.append(velocityX, numpy.NaN) | |
269 |
|
1101 | |||
270 |
|
|
1102 | if abs(Vmer)<100. and abs(Vmer) > 0.: | |
271 |
|
|
1103 | velocityY=numpy.append(velocityY, Vmer)#Vang | |
272 |
|
|
1104 | ||
273 |
|
|
1105 | else: | |
|
1106 | print 'Vmer',Vmer | |||
274 |
|
|
1107 | velocityY=numpy.append(velocityY, numpy.NaN) | |
275 |
|
|
1108 | ||
276 |
|
|
1109 | if abs(GaussCenter)<10: | |
@@ -278,10 +1111,10 class FullSpectralAnalysis(Operation): | |||||
278 |
|
|
1111 | else: | |
279 |
|
|
1112 | velocityV=numpy.append(velocityV, numpy.NaN) | |
280 |
|
|
1113 | #FirstMoment[Height]= numpy.NaN | |
281 | if SNRdBMean[Height] <12: |
|
1114 | # if SNRdBMean[Height] <12: | |
282 | FirstMoment[Height] = numpy.NaN |
|
1115 | # FirstMoment[Height] = numpy.NaN | |
283 | velocityX[Height] = numpy.NaN |
|
1116 | # velocityX[Height] = numpy.NaN | |
284 | velocityY[Height] = numpy.NaN |
|
1117 | # velocityY[Height] = numpy.NaN | |
285 |
|
|
1118 | ||
286 |
|
|
1119 | ||
287 |
|
|
1120 | data_output[0]=numpy.array(velocityX) | |
@@ -291,8 +1124,9 class FullSpectralAnalysis(Operation): | |||||
291 |
|
|
1124 | print ' ' | |
292 |
|
|
1125 | #print 'FirstMoment' | |
293 |
|
|
1126 | #print FirstMoment | |
|
1127 | print 'velocityX',data_output[0] | |||
294 |
|
|
1128 | print ' ' | |
295 |
|
|
1129 | print 'velocityY',data_output[1] | |
296 |
|
|
1130 | #print numpy.array(velocityY) | |
297 |
|
|
1131 | print ' ' | |
298 |
|
|
1132 | #print 'SNR' | |
@@ -309,7 +1143,7 class FullSpectralAnalysis(Operation): | |||||
309 |
|
|
1143 | return numpy.convolve(x, numpy.ones((N,))/N)[(N-1):] | |
310 |
|
|
1144 | ||
311 |
|
|
1145 | def gaus(self,xSamples,a,x0,sigma): | |
312 |
|
|
1146 | return a*numpy.exp(-(xSamples-x0)**2/(2*sigma**2)) | |
313 |
|
|
1147 | ||
314 |
|
|
1148 | def Find(self,x,value): | |
315 |
|
|
1149 | for index in range(len(x)): | |
@@ -353,9 +1187,17 class FullSpectralAnalysis(Operation): | |||||
353 |
|
|
1187 | ||
354 |
|
|
1188 | xSamples = ar(range(len(SmoothSPC))) | |
355 |
|
|
1189 | ySamples[i] = SmoothSPC-noise[i] | |
356 |
|
|
1190 | ||
|
1191 | print ' ' | |||
|
1192 | print ' ' | |||
|
1193 | print ' ' | |||
|
1194 | print 'SmoothSPC',SmoothSPC | |||
|
1195 | print 'noise',noise | |||
|
1196 | print'zline',zline | |||
|
1197 | print'FactNorm',FactNorm | |||
|
1198 | ||||
357 |
|
|
1199 | for i in range(spc.shape[0]): | |
358 |
|
|
1200 | ||
359 | '''****** Line of Data CSPC ******''' |
|
1201 | '''****** Line of Data CSPC ******''' | |
360 |
|
|
1202 | cspcLine=cspc[i,:,Height].copy() | |
361 |
|
|
1203 | ||
@@ -372,6 +1214,8 class FullSpectralAnalysis(Operation): | |||||
372 |
|
|
1214 | coherence[i]= self.moving_average(coherence[i],N=2) | |
373 |
|
|
1215 | ||
374 |
|
|
1216 | phase[i] = self.moving_average( numpy.arctan2(CSPCSamples[i].imag, CSPCSamples[i].real),N=1)#*180/numpy.pi | |
|
1217 | ||||
|
1218 | print 'CSPCSamples', CSPCSamples | |||
375 |
|
|
1219 | ||
376 | '''****** Getting fij width ******''' |
|
1220 | '''****** Getting fij width ******''' | |
377 |
|
|
1221 | ||
@@ -385,7 +1229,15 class FullSpectralAnalysis(Operation): | |||||
385 |
|
|
1229 | meanGauss=sum(xSamples*yMean) / len(xSamples) | |
386 |
|
|
1230 | sigma=sum(yMean*(xSamples-meanGauss)**2) / len(xSamples) | |
387 |
|
|
1231 | ||
388 | if (abs(meanGauss/sigma**2) > 0.00001) : |
|
1232 | print '****************************' | |
|
1233 | print 'len(xSamples): ',len(xSamples) | |||
|
1234 | print 'yMean: ', yMean | |||
|
1235 | print 'ySamples', ySamples | |||
|
1236 | print 'xSamples: ',xSamples | |||
|
1237 | ||||
|
1238 | print 'meanGauss',meanGauss | |||
|
1239 | print 'sigma',sigma | |||
|
1240 | if (abs(meanGauss/sigma**2) > 0.000000001):#0.00001) : | |||
389 |
|
|
1241 | ||
390 |
|
|
1242 | try: | |
391 |
|
|
1243 | popt,pcov = curve_fit(self.gaus,xSamples,yMean,p0=[1,meanGauss,sigma]) | |
@@ -399,7 +1251,7 class FullSpectralAnalysis(Operation): | |||||
399 |
|
|
1251 | except RuntimeError: | |
400 |
|
|
1252 | FitGauss=numpy.ones(len(xSamples))*numpy.mean(yMean) | |
401 |
|
|
1253 | ||
402 |
|
|
1254 | ||
403 |
|
|
1255 | else: | |
404 |
|
|
1256 | FitGauss=numpy.ones(len(xSamples))*numpy.mean(yMean) | |
405 |
|
|
1257 | ||
@@ -474,12 +1326,13 class FullSpectralAnalysis(Operation): | |||||
474 |
|
|
1326 | ||
475 |
|
|
1327 | VxVyResults=numpy.array([-cF,-cG]) | |
476 |
|
|
1328 | (Vx,Vy) = numpy.linalg.solve(VxVy, VxVyResults) | |
|
1329 | ||||
477 |
|
|
1330 | Vzon = Vy | |
478 |
|
|
1331 | Vmer = Vx | |
479 |
|
|
1332 | Vmag=numpy.sqrt(Vzon**2+Vmer**2) | |
480 |
|
|
1333 | Vang=numpy.arctan2(Vmer,Vzon) | |
481 |
|
|
1334 | Vver=xFrec[Vpos] | |
482 |
|
1335 | print 'vzon y vmer', Vzon, Vmer | ||
483 |
|
|
1336 | return Vzon, Vmer, Vver, GaussCenter | |
484 |
|
|
1337 | ||
485 |
|
|
1338 | class SpectralMoments(Operation): |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -902,3 +902,4 class IncohInt(Operation): | |||||
902 | dataOut.nIncohInt *= self.n |
|
902 | dataOut.nIncohInt *= self.n | |
903 | dataOut.utctime = avgdatatime |
|
903 | dataOut.utctime = avgdatatime | |
904 | dataOut.flagNoData = False |
|
904 | dataOut.flagNoData = False | |
|
905 |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -1,1 +1,1 | |||||
1 |
<Project description="Reader/Writer experiment" id="196" name="test01"><ReadUnit datatype="BLTRReader" id="1961" inputId="0" name="BLTRReader"><Operation id="19611" name="run" priority="1" type="self"><Parameter format="str" id="196111" name="datatype" value="BLTRReader" /><Parameter format="str" id="196112" name="path" value="/home/erick/Documents/Data" /><Parameter format="date" id="196113" name="startDate" value="2016/10/19" /><Parameter format="date" id="196114" name="endDate" value="2016/10/19" /><Parameter format="time" id="196115" name="startTime" value="00:00:00" /><Parameter format="time" id="196116" name="endTime" value="23:59:59" /><Parameter format="int" id="19611 |
|
1 | <Project description="Reader/Writer experiment" id="196" name="test01"><ReadUnit datatype="BLTRReader" id="1961" inputId="0" name="BLTRReader"><Operation id="19611" name="run" priority="1" type="self"><Parameter format="str" id="196111" name="datatype" value="BLTRReader" /><Parameter format="str" id="196112" name="path" value="/home/erick/Documents/Data" /><Parameter format="date" id="196113" name="startDate" value="2016/10/19" /><Parameter format="date" id="196114" name="endDate" value="2016/10/19" /><Parameter format="time" id="196115" name="startTime" value="00:00:00" /><Parameter format="time" id="196116" name="endTime" value="23:59:59" /><Parameter format="int" id="196118" name="walk" value="1" /></Operation></ReadUnit><ProcUnit datatype="BLTRProc" id="1962" inputId="1961" name="BLTRProc"><Operation id="19621" name="run" priority="1" type="self" /><Operation id="19622" name="PrintInfo" priority="2" type="other" /></ProcUnit></Project> No newline at end of file |
@@ -83,7 +83,7 opObj11.addParameter(name='n', value='6', format='float') | |||||
83 |
|
83 | |||
84 | opObj11 = procUnitConfObj1.addOperation(name='SpectraWriter', optype='other') |
|
84 | opObj11 = procUnitConfObj1.addOperation(name='SpectraWriter', optype='other') | |
85 | opObj11.addParameter(name='path', value='/home/alex/Downloads/pdata_hf') |
|
85 | opObj11.addParameter(name='path', value='/home/alex/Downloads/pdata_hf') | |
86 | opObj11.addParameter(name='blocksPerFile', value='1', format='int') |
|
86 | opObj11.addParameter(name='blocksPerFile', value='1000', format='int') | |
87 | # |
|
87 | # | |
88 | # |
|
88 | # | |
89 | # # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') |
|
89 | # # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -14,30 +14,36 if __name__ == '__main__': | |||||
14 | controllerObj = Project() |
|
14 | controllerObj = Project() | |
15 | controllerObj.setup(id='191', name='test01', description=desc) |
|
15 | controllerObj.setup(id='191', name='test01', description=desc) | |
16 |
|
16 | |||
17 |
proc1 = controllerObj.addProcUnit(name='Receiver |
|
17 | proc1 = controllerObj.addProcUnit(name='PlotterReceiver') | |
18 | proc1.addParameter(name='realtime', value='0', format='bool') |
|
18 | proc1.addParameter(name='realtime', value='0', format='bool') | |
19 |
proc1.addParameter(name='plottypes', value='rti |
|
19 | proc1.addParameter(name='plottypes', value='rti', format='str') | |
20 |
proc1.addParameter(name='throttle', value=' |
|
20 | proc1.addParameter(name='throttle', value='2', format='int') | |
21 |
proc1.addParameter(name=' |
|
21 | proc1.addParameter(name='server', value='erick2', format='str') | |
|
22 | # proc1.addParameter(name='interactive', value='0', format='bool') | |||
22 | # proc1.addParameter(name='server', value='tcp://10.10.10.82:7000', format='str') |
|
23 | # proc1.addParameter(name='server', value='tcp://10.10.10.82:7000', format='str') | |
23 | ## TODO Agregar direccion de server de publicacion a graficos como variable |
|
24 | ## TODO Agregar direccion de server de publicacion a graficos como variable | |
24 |
|
25 | |||
25 | op1 = proc1.addOperation(name='PlotRTIData', optype='other') |
|
26 | op1 = proc1.addOperation(name='PlotRTIData', optype='other') | |
26 |
op1.addParameter(name='wintitle', value=' |
|
27 | op1.addParameter(name='wintitle', value='MIRA35c RTI', format='str') | |
27 |
op1.addParameter(name='save', value='/home/ |
|
28 | op1.addParameter(name='save', value='/home/erick/Pictures', format='str') | |
28 | op1.addParameter(name='show', value='0', format='bool') |
|
29 | op1.addParameter(name='show', value='0', format='bool') | |
29 | op1.addParameter(name='colormap', value='jet', format='str') |
|
30 | op1.addParameter(name='colormap', value='jet', format='str') | |
|
31 | op1.addParameter(name='zmin', value='-90', format='int') | |||
|
32 | op1.addParameter(name='zmax', value='-40', format='int') | |||
|
33 | #op1.addParameter(name='xrange', value='1', format='int') | |||
|
34 | #op1.addParameter(name='xmin', value='23', format='int') | |||
|
35 | #op1.addParameter(name='xmax', value='3', format='int') | |||
30 | # |
|
36 | # | |
31 | op2 = proc1.addOperation(name='PlotCOHData', optype='other') |
|
37 | # op2 = proc1.addOperation(name='PlotCOHData', optype='other') | |
32 | op2.addParameter(name='wintitle', value='Julia 150Km', format='str') |
|
38 | # op2.addParameter(name='wintitle', value='Julia 150Km', format='str') | |
33 | op2.addParameter(name='save', value='/home/nanosat/Pictures', format='str') |
|
39 | # op2.addParameter(name='save', value='/home/nanosat/Pictures', format='str') | |
34 | op2.addParameter(name='colormap', value='jet', format='str') |
|
40 | # op2.addParameter(name='colormap', value='jet', format='str') | |
35 | op2.addParameter(name='show', value='0', format='bool') |
|
41 | # op2.addParameter(name='show', value='0', format='bool') | |
36 | # # # |
|
42 | # # # # | |
37 | op6 = proc1.addOperation(name='PlotPHASEData', optype='other') |
|
43 | # op6 = proc1.addOperation(name='PlotPHASEData', optype='other') | |
38 | op6.addParameter(name='wintitle', value='Julia 150Km', format='str') |
|
44 | # op6.addParameter(name='wintitle', value='Julia 150Km', format='str') | |
39 | op6.addParameter(name='save', value='/home/nanosat/Pictures', format='str') |
|
45 | # op6.addParameter(name='save', value='/home/nanosat/Pictures', format='str') | |
40 | op6.addParameter(name='show', value='1', format='bool') |
|
46 | # op6.addParameter(name='show', value='1', format='bool') | |
41 | # # |
|
47 | # # | |
42 | # # proc2 = controllerObj.addProcUnit(name='ReceiverData') |
|
48 | # # proc2 = controllerObj.addProcUnit(name='ReceiverData') | |
43 | # # proc2.addParameter(name='server', value='juanca', format='str') |
|
49 | # # proc2.addParameter(name='server', value='juanca', format='str') |
@@ -1,1 +1,1 | |||||
1 | <Project description="HF_EXAMPLE" id="191" name="test01"><ReadUnit datatype="Spectra" id="1911" inputId="0" name="SpectraReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="SpectraReader" /><Parameter format="str" id="191112" name="path" value="/home/nanosat/data/sp1_f0" /><Parameter format="date" id="191113" name="startDate" value="2017/01/28" /><Parameter format="date" id="191114" name="endDate" value="2017/01/28" /><Parameter format="time" id="191115" name="startTime" value="00:00:00" /><Parameter format="time" id="191116" name="endTime" value="23:59:59" /><Parameter format="int" id="191118" name="cursor" value="5" /><Parameter format="int" id="191119" name="skip" value="177" /><Parameter format="int" id="191120" name="walk" value="1" /><Parameter format="int" id="191121" name="verbose" value="1" /><Parameter format="int" id="191122" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="Parameters" id="1913" inputId="1911" name="ParametersProc"><Operation id="19131" name="run" priority="1" type="self" /><Operation id="19132" name="SpectralMoments" priority="2" type="other" /><Operation id="19133" name="PublishData" priority="3" type="other"><Parameter format="int" id="191331" name="zeromq" value="1" /><Parameter format="bool" id="191332" name="verbose" value="0" /><Parameter format="int" id="191333" name="delay" value="0" /></Operation></ProcUnit><ProcUnit datatype="Spectra" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self" /></ProcUnit></Project> No newline at end of file |
|
1 | <Project description="Segundo Test" id="191" name="test01"><ReadUnit datatype="VoltageReader" id="1911" inputId="0" name="VoltageReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="VoltageReader" /><Parameter format="str" id="191112" name="path" value="/home/erick/Documents/Data/Claire_Data/raw" /><Parameter format="date" id="191113" name="startDate" value="2017/07/26" /><Parameter format="date" id="191114" name="endDate" value="2017/10/28" /><Parameter format="time" id="191115" name="startTime" value="09:40:00" /><Parameter format="time" id="191116" name="endTime" value="23:59:00" /><Parameter format="int" id="191118" name="online" value="0" /><Parameter format="int" id="191119" name="walk" value="1" /></Operation><Operation id="19112" name="printNumberOfBlock" priority="2" type="self" /></ReadUnit><ProcUnit datatype="SpectraProc" id="1913" inputId="1912" name="SpectraProc"><Operation id="19131" name="run" priority="1" type="self"><Parameter format="int" id="191311" name="nFFTPoints" value="256" /><Parameter format="pairslist" id="191312" name="pairsList" value="(0,1),(0,2),(1,2)" /></Operation><Operation id="19132" name="removeDC" priority="2" type="self" /><Operation id="19133" name="IncohInt" priority="3" type="external"><Parameter format="float" id="191331" name="n" value="30" /></Operation><Operation id="19134" name="SpectraPlot" priority="4" type="external"><Parameter format="int" id="191341" name="id" value="11" /><Parameter format="str" id="191342" name="wintitle" value="SpectraPlot" /><Parameter format="str" id="191343" name="xaxis" value="velocity" /><Parameter format="int" id="191344" name="zmin" value="0" /><Parameter format="float" id="191345" name="ymin" value="1.5" /><Parameter format="int" id="191346" name="ymax" value="7" /><Parameter format="int" id="191347" name="zmax" value="40" /><Parameter format="int" id="191348" name="save" value="1" /></Operation><Operation id="19135" name="RTIPlot" priority="5" type="other"><Parameter format="int" id="191351" name="id" value="30" /><Parameter format="str" id="191352" name="wintitle" value="RTI" /><Parameter format="int" id="191353" name="zmin" value="0" /><Parameter format="int" id="191354" name="zmax" value="40" /><Parameter format="float" id="191355" name="ymin" value="1.5" /><Parameter format="int" id="191356" name="ymax" value="8" /><Parameter format="int" id="191357" name="showprofile" value="1" /><Parameter format="float" id="191358" name="xmin" value="0" /><Parameter format="float" id="191359" name="xmax" value="23.9" /><Parameter format="int" id="191360" name="save" value="1" /></Operation><Operation id="19136" name="CrossSpectraPlot" priority="6" type="other"><Parameter format="str" id="191361" name="phase_cmap" value="bwr" /><Parameter format="int" id="191362" name="id" value="2005" /><Parameter format="str" id="191363" name="wintitle" value="CrossSpectraPlot_ShortPulse" /><Parameter format="str" id="191364" name="xaxis" value="Velocity" /><Parameter format="float" id="191365" name="ymin" value="1.5" /><Parameter format="int" id="191366" name="ymax" value="7" /></Operation></ProcUnit><ProcUnit datatype="VoltageProc" id="1912" inputId="1911" name="VoltageProc"><Operation id="19121" name="run" priority="1" type="self" /><Operation id="19122" name="setRadarFrequency" priority="2" type="self"><Parameter format="float" id="191221" name="frequency" value="445.09e6" /></Operation><Operation id="19123" name="selectHeights" priority="3" type="self"><Parameter format="float" id="191231" name="minHei" value="0" /><Parameter format="float" id="191232" name="maxHei" value="64" /></Operation></ProcUnit><ProcUnit datatype="Parameters" id="1914" inputId="1913" name="ParametersProc"><Operation id="19141" name="run" priority="1" type="self" /><Operation id="19142" name="SpectralMoments" priority="2" type="other" /><Operation id="19143" name="FullSpectralAnalysis" priority="3" type="other"><Parameter format="float" id="191431" name="E01" value="1.5" /><Parameter format="float" id="191432" name="E02" value="1.5" /><Parameter format="float" id="191433" name="E12" value="0" /><Parameter format="float" id="191434" name="N01" value="0.875" /><Parameter format="float" id="191435" name="N02" value="-0.875" /><Parameter format="float" id="191436" name="N12" value="-1.75" /></Operation><Operation id="19144" name="WindProfilerPlot" priority="4" type="other"><Parameter format="int" id="191441" name="id" value="4" /><Parameter format="str" id="191442" name="wintitle" value="Wind Profiler" /><Parameter format="bool" id="191443" name="save" value="1" /><Parameter format="float" id="191444" name="ymin" value="1.5" /><Parameter format="int" id="191445" name="ymax" value="7" /><Parameter format="float" id="191446" name="zmin" value="-0.00" /><Parameter format="float" id="191447" name="zmax" value="1.1" /></Operation></ProcUnit></Project> No newline at end of file |
@@ -1,11 +1,11 | |||||
1 | #!/usr/bin/env python |
|
1 | #!/usr/bin/env python | |
2 | import os, sys |
|
2 | import os, sys | |
3 |
|
3 | |||
4 | path = os.path.dirname(os.getcwd()) |
|
4 | # path = os.path.dirname(os.getcwd()) | |
5 | path = os.path.join(path, 'source') |
|
5 | # path = os.path.join(path, 'source') | |
6 | sys.path.insert(0, '../') |
|
6 | # sys.path.insert(0, '../') | |
7 |
|
7 | |||
8 | from controller import Project |
|
8 | from schainpy.controller import Project | |
9 |
|
9 | |||
10 | xmin = '15.5' |
|
10 | xmin = '15.5' | |
11 | xmax = '24' |
|
11 | xmax = '24' | |
@@ -16,42 +16,42 filename = "ProcBLTR.xml" | |||||
16 | controllerObj = Project() |
|
16 | controllerObj = Project() | |
17 |
|
17 | |||
18 |
|
18 | |||
19 |
controllerObj.setup(id |
|
19 | controllerObj.setup(id='191', name='test01', description=desc) | |
20 |
|
20 | |||
21 | readUnitConfObj = controllerObj.addReadUnit(datatype='BLTRReader', |
|
21 | readUnitConfObj = controllerObj.addReadUnit(datatype='BLTRReader', | |
22 |
path='/home/erick/Documents/Data/BLTR_Data/fdt/', |
|
22 | path='/home/erick/Documents/Data/BLTR_Data/fdt/', | |
23 |
|
|
23 | ||
24 | endDate='2017/10/19', |
|
24 | endDate='2017/10/19', | |
25 | startTime='13:00:00', |
|
25 | startTime='13:00:00', | |
26 |
|
26 | startDate='2016/11/8', | ||
27 | endTime='23:59:59', |
|
27 | endTime='23:59:59', | |
28 |
|
28 | |||
29 |
|
29 | |||
30 | online=0, |
|
30 | online=0, | |
31 | walk=0, |
|
31 | walk=0, | |
32 | ReadMode='1') |
|
32 | ReadMode='1') | |
33 | #expLabel='') |
|
33 | # expLabel='') | |
34 |
|
34 | |||
35 | #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock') |
|
35 | # opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock') | |
36 |
|
36 | |||
37 | procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId()) |
|
37 | procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId()) | |
38 |
|
38 | |||
39 |
|
39 | |||
40 |
|
40 | |||
41 | opObj11 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') |
|
41 | opObj11 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') | |
42 |
opObj11.addParameter(name='n', value=' |
|
42 | opObj11.addParameter(name='n', value='2', format='float') | |
43 |
|
43 | |||
44 | opObj10 = procUnitConfObj1.addOperation(name='removeDC') |
|
44 | opObj10 = procUnitConfObj1.addOperation(name='removeDC') | |
45 |
|
45 | |||
46 | #opObj10 = procUnitConfObj1.addOperation(name='calcMag') |
|
46 | # opObj10 = procUnitConfObj1.addOperation(name='calcMag') | |
47 |
|
47 | |||
48 | opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') |
|
48 | # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |
49 | opObj11.addParameter(name='id', value='21', format='int') |
|
49 | # opObj11.addParameter(name='id', value='21', format='int') | |
50 | opObj11.addParameter(name='wintitle', value='SpectraCutPlot', format='str') |
|
50 | # opObj11.addParameter(name='wintitle', value='SpectraCutPlot', format='str') | |
51 | opObj11.addParameter(name='xaxis', value='frequency', format='str') |
|
51 | # opObj11.addParameter(name='xaxis', value='frequency', format='str') | |
52 | opObj11.addParameter(name='colormap', value='winter', format='str') |
|
52 | # opObj11.addParameter(name='colormap', value='winter', format='str') | |
53 | opObj11.addParameter(name='xmin', value='-0.005', format='float') |
|
53 | # opObj11.addParameter(name='xmin', value='-0.005', format='float') | |
54 | opObj11.addParameter(name='xmax', value='0.005', format='float') |
|
54 | # opObj11.addParameter(name='xmax', value='0.005', format='float') | |
55 | # #opObj10 = procUnitConfObj1.addOperation(name='selectChannels') |
|
55 | # #opObj10 = procUnitConfObj1.addOperation(name='selectChannels') | |
56 | # #opObj10.addParameter(name='channelList', value='0,1', format='intlist') |
|
56 | # #opObj10.addParameter(name='channelList', value='0,1', format='intlist') | |
57 | # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') |
|
57 | # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |
@@ -59,53 +59,53 opObj11.addParameter(name='xmax', value='0.005', format='float') | |||||
59 | # opObj11.addParameter(name='wintitle', value='SpectraPlot', format='str') |
|
59 | # opObj11.addParameter(name='wintitle', value='SpectraPlot', format='str') | |
60 | # #opObj11.addParameter(name='xaxis', value='Velocity', format='str') |
|
60 | # #opObj11.addParameter(name='xaxis', value='Velocity', format='str') | |
61 |
|
61 | |||
62 | #opObj11.addParameter(name='xaxis', value='velocity', format='str') |
|
62 | # opObj11.addParameter(name='xaxis', value='velocity', format='str') | |
63 | #opObj11.addParameter(name='xmin', value='-0.005', format='float') |
|
63 | # opObj11.addParameter(name='xmin', value='-0.005', format='float') | |
64 | #opObj11.addParameter(name='xmax', value='0.005', format='float') |
|
64 | # opObj11.addParameter(name='xmax', value='0.005', format='float') | |
65 |
|
65 | |||
66 | #opObj11.addParameter(name='ymin', value='225', format='float') |
|
66 | # opObj11.addParameter(name='ymin', value='225', format='float') | |
67 | #opObj11.addParameter(name='ymax', value='3000', format='float') |
|
67 | # opObj11.addParameter(name='ymax', value='3000', format='float') | |
68 | # opObj11.addParameter(name='zmin', value='-100', format='int') |
|
68 | # opObj11.addParameter(name='zmin', value='-100', format='int') | |
69 | # opObj11.addParameter(name='zmax', value='-65', format='int') |
|
69 | # opObj11.addParameter(name='zmax', value='-65', format='int') | |
70 |
|
70 | |||
71 | #opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') |
|
71 | # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') | |
72 | #opObj11.addParameter(name='id', value='10', format='int') |
|
72 | # opObj11.addParameter(name='id', value='10', format='int') | |
73 | #opObj11.addParameter(name='wintitle', value='RTI', format='str') |
|
73 | # opObj11.addParameter(name='wintitle', value='RTI', format='str') | |
74 | # opObj11.addParameter(name='ymin', value='0', format='float') |
|
74 | # opObj11.addParameter(name='ymin', value='0', format='float') | |
75 | # opObj11.addParameter(name='ymax', value='4000', format='float') |
|
75 | # opObj11.addParameter(name='ymax', value='4000', format='float') | |
76 | ##opObj11.addParameter(name='zmin', value='-100', format='int') |
|
76 | # #opObj11.addParameter(name='zmin', value='-100', format='int') | |
77 | ##opObj11.addParameter(name='zmax', value='-70', format='int') |
|
77 | # #opObj11.addParameter(name='zmax', value='-70', format='int') | |
78 | # opObj11.addParameter(name='zmin', value='-90', format='int') |
|
78 | # opObj11.addParameter(name='zmin', value='-90', format='int') | |
79 | # opObj11.addParameter(name='zmax', value='-40', format='int') |
|
79 | # opObj11.addParameter(name='zmax', value='-40', format='int') | |
80 | #opObj11.addParameter(name='showprofile', value='1', format='int') |
|
80 | # opObj11.addParameter(name='showprofile', value='1', format='int') | |
81 | #opObj11.addParameter(name='timerange', value=str(2*60*60), format='int') |
|
81 | # opObj11.addParameter(name='timerange', value=str(2*60*60), format='int') | |
82 |
|
82 | |||
83 |
|
|
83 | opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='other') | |
84 |
|
|
84 | procUnitConfObj1.addParameter(name='pairsList', value='(0,1),(0,2),(1,2)', format='pairsList') | |
85 |
|
|
85 | opObj11.addParameter(name='id', value='2005', format='int') | |
86 |
|
|
86 | opObj11.addParameter(name='wintitle', value='CrossSpectraPlot_ShortPulse', format='str') | |
87 |
|
|
87 | # opObj11.addParameter(name='exp_code', value='13', format='int') | |
88 |
|
|
88 | opObj11.addParameter(name='xaxis', value='Velocity', format='str') | |
89 |
|
|
89 | #opObj11.addParameter(name='xmin', value='-10', format='float') | |
90 |
|
|
90 | #opObj11.addParameter(name='xmax', value='10', format='float') | |
91 |
|
|
91 | #opObj11.addParameter(name='ymin', value='225', format='float') | |
92 |
|
|
92 | #opObj11.addParameter(name='ymax', value='3000', format='float') | |
93 |
|
|
93 | #opObj11.addParameter(name='phase_min', value='-4', format='int') | |
94 |
|
|
94 | #opObj11.addParameter(name='phase_max', value='4', format='int') | |
95 |
|
95 | |||
96 | #procUnitConfObj2 = controllerObj.addProcUnit(datatype='CorrelationProc', inputId=procUnitConfObj1.getId()) |
|
96 | # procUnitConfObj2 = controllerObj.addProcUnit(datatype='CorrelationProc', inputId=procUnitConfObj1.getId()) | |
97 | #procUnitConfObj2.addParameter(name='pairsList', value='(0,1),(0,2),(1,2)', format='pairsList') |
|
97 | # procUnitConfObj2.addParameter(name='pairsList', value='(0,1),(0,2),(1,2)', format='pairsList') | |
98 |
|
98 | |||
99 |
procUnitConfObj2 = controllerObj.addProcUnit(datatype='Parameters', inputId= |
|
99 | procUnitConfObj2 = controllerObj.addProcUnit(datatype='Parameters', inputId=procUnitConfObj1.getId()) | |
100 | opObj11 = procUnitConfObj2.addOperation(name='SpectralMoments', optype='other') |
|
100 | opObj11 = procUnitConfObj2.addOperation(name='SpectralMoments', optype='other') | |
101 | opObj22 = procUnitConfObj2.addOperation(name='FullSpectralAnalysis', optype='other') |
|
101 | opObj22 = procUnitConfObj2.addOperation(name='FullSpectralAnalysis', optype='other') | |
102 |
|
102 | # | ||
103 | opObj22 = procUnitConfObj2.addOperation(name='WindProfilerPlot', optype='other') |
|
103 | opObj22 = procUnitConfObj2.addOperation(name='WindProfilerPlot', optype='other') | |
104 | opObj22.addParameter(name='id', value='4', format='int') |
|
104 | opObj22.addParameter(name='id', value='4', format='int') | |
105 | opObj22.addParameter(name='wintitle', value='Wind Profiler', format='str') |
|
105 | opObj22.addParameter(name='wintitle', value='Wind Profiler', format='str') | |
106 | opObj22.addParameter(name='save', value='1', format='bool') |
|
106 | opObj22.addParameter(name='save', value='1', format='bool') | |
107 | # opObj22.addParameter(name='figpath', value = '/home/erick/Pictures', format='str') |
|
107 | # opObj22.addParameter(name='figpath', value = '/home/erick/Pictures', format='str') | |
108 |
|
108 | |||
109 | opObj22.addParameter(name='zmin', value='-20', format='int') |
|
109 | opObj22.addParameter(name='zmin', value='-20', format='int') | |
110 | opObj22.addParameter(name='zmax', value='20', format='int') |
|
110 | opObj22.addParameter(name='zmax', value='20', format='int') | |
111 | opObj22.addParameter(name='zmin_ver', value='-250', format='float') |
|
111 | opObj22.addParameter(name='zmin_ver', value='-250', format='float') | |
@@ -115,29 +115,32 opObj22.addParameter(name='SNRmax', value='30', format='int') | |||||
115 | # opObj22.addParameter(name='SNRthresh', value='-3.5', format='float') |
|
115 | # opObj22.addParameter(name='SNRthresh', value='-3.5', format='float') | |
116 | opObj22.addParameter(name='xmin', value=0, format='float') |
|
116 | opObj22.addParameter(name='xmin', value=0, format='float') | |
117 | opObj22.addParameter(name='xmax', value=24, format='float') |
|
117 | opObj22.addParameter(name='xmax', value=24, format='float') | |
118 |
|
|
118 | opObj22.addParameter(name='ymin', value='225', format='float') | |
119 | #opObj22.addParameter(name='ymax', value='2000', format='float') |
|
119 | #opObj22.addParameter(name='ymax', value='2000', format='float') | |
|
120 | ||||
|
121 | ||||
|
122 | # opObj11.addParameter(name='pairlist', value='(1,0),(0,2),(1,2)', format='pairsList') | |||
|
123 | #opObj10 = procUnitConfObj1.addOperation(name='selectHeights') | |||
|
124 | #opObj10.addParameter(name='minHei', value='225', format='float') | |||
|
125 | #opObj10.addParameter(name='maxHei', value='1000', format='float') | |||
|
126 | ||||
|
127 | # opObj11 = procUnitConfObj1.addOperation(name='CoherenceMap', optype='other') | |||
|
128 | # opObj11.addParameter(name='id', value='102', format='int') | |||
|
129 | # opObj11.addParameter(name='wintitle', value='Coherence', format='str') | |||
|
130 | # opObj11.addParameter(name='ymin', value='225', format='float') | |||
|
131 | # opObj11.addParameter(name='ymax', value='4000', format='float') | |||
|
132 | ||||
|
133 | # opObj11.addParameter(name='phase_cmap', value='jet', format='str') | |||
|
134 | # opObj11.addParameter(name='xmin', value='8.5', format='float') | |||
|
135 | # opObj11.addParameter(name='xmax', value='9.5', format='float') | |||
|
136 | # opObj11.addParameter(name='figpath', value=figpath, format='str') | |||
|
137 | # opObj11.addParameter(name='save', value=1, format='bool') | |||
|
138 | # opObj11.addParameter(name='pairsList', value='(1,0),(3,2)', format='pairsList') | |||
|
139 | ||||
|
140 | # opObj12 = procUnitConfObj1.addOperation(name='PublishData', optype='other') | |||
|
141 | # opObj12.addParameter(name='zeromq', value=1, format='int') | |||
|
142 | # opObj12.addParameter(name='verbose', value=0, format='bool') | |||
|
143 | # opObj12.addParameter(name='server', value='erick2', format='str') | |||
|
144 | controllerObj.start() | |||
120 |
|
145 | |||
121 |
|
146 | |||
122 | # # opObj11.addParameter(name='pairlist', value='(1,0),(0,2),(1,2)', format='pairsList') |
|
|||
123 | # #opObj10 = procUnitConfObj1.addOperation(name='selectHeights') |
|
|||
124 | # #opObj10.addParameter(name='minHei', value='225', format='float') |
|
|||
125 | # #opObj10.addParameter(name='maxHei', value='1000', format='float') |
|
|||
126 |
|
||||
127 | #opObj11 = procUnitConfObj1.addOperation(name='CoherenceMap', optype='other') |
|
|||
128 | #opObj11.addParameter(name='id', value='102', format='int') |
|
|||
129 | #opObj11.addParameter(name='wintitle', value='Coherence', format='str') |
|
|||
130 | #opObj11.addParameter(name='ymin', value='225', format='float') |
|
|||
131 | #opObj11.addParameter(name='ymax', value='4000', format='float') |
|
|||
132 |
|
||||
133 | # # opObj11.addParameter(name='phase_cmap', value='jet', format='str') |
|
|||
134 | # # opObj11.addParameter(name='xmin', value='8.5', format='float') |
|
|||
135 | # # opObj11.addParameter(name='xmax', value='9.5', format='float') |
|
|||
136 | # # opObj11.addParameter(name='figpath', value=figpath, format='str') |
|
|||
137 | # # opObj11.addParameter(name='save', value=1, format='bool') |
|
|||
138 | # # opObj11.addParameter(name='pairsList', value='(1,0),(3,2)', format='pairsList') |
|
|||
139 |
|
||||
140 |
|
||||
141 | controllerObj.createObjects() |
|
|||
142 | controllerObj.connectObjects() |
|
|||
143 | controllerObj.run() |
|
@@ -17,9 +17,9 def main(): | |||||
17 | controllerObj.setup(id = '191', name='test01', description=desc) |
|
17 | controllerObj.setup(id = '191', name='test01', description=desc) | |
18 |
|
18 | |||
19 | readUnitConfObj = controllerObj.addReadUnit(datatype='Spectra', |
|
19 | readUnitConfObj = controllerObj.addReadUnit(datatype='Spectra', | |
20 |
path=' |
|
20 | path='/home/erick/Documents/Data/d2015106', | |
21 | startDate='2010/12/18', |
|
21 | startDate='2010/12/18', | |
22 |
endDate='201 |
|
22 | endDate='2017/12/22', | |
23 | startTime='00:00:00', |
|
23 | startTime='00:00:00', | |
24 | endTime='23:59:59', |
|
24 | endTime='23:59:59', | |
25 | online=0, |
|
25 | online=0, | |
@@ -30,32 +30,70 def main(): | |||||
30 |
|
30 | |||
31 | opObj10 = procUnitConfObj1.addOperation(name='selectChannels') |
|
31 | opObj10 = procUnitConfObj1.addOperation(name='selectChannels') | |
32 | opObj10.addParameter(name='channelList', value='0,1', format='intlist') |
|
32 | opObj10.addParameter(name='channelList', value='0,1', format='intlist') | |
33 |
|
33 | |||
34 | opObj10 = procUnitConfObj1.addOperation(name='selectHeights') |
|
34 | #opObj10 = procUnitConfObj1.addOperation(name='selectHeights') | |
35 | opObj10.addParameter(name='minHei', value='90', format='float') |
|
35 | #opObj10.addParameter(name='minHei', value='90', format='float') | |
36 | opObj10.addParameter(name='maxHei', value='180', format='float') |
|
36 | #opObj10.addParameter(name='maxHei', value='180', format='float') | |
37 |
|
37 | |||
38 | opObj10 = procUnitConfObj1.addOperation(name='removeDC') |
|
38 | opObj10 = procUnitConfObj1.addOperation(name='removeDC') | |
39 |
|
39 | |||
40 | opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') |
|
40 | #opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') | |
41 | opObj12.addParameter(name='n', value='1', format='int') |
|
41 | #opObj12.addParameter(name='n', value='1', format='int') | |
42 |
|
42 | |||
43 | opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') |
|
43 | opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |
44 | opObj11.addParameter(name='id', value='1', format='int') |
|
44 | opObj11.addParameter(name='id', value='1', format='int') | |
45 | opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str') |
|
45 | opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str') | |
|
46 | opObj11.addParameter(name='xaxis', value='velocity', format='str') | |||
46 | opObj11.addParameter(name='showprofile', value='1', format='int') |
|
47 | opObj11.addParameter(name='showprofile', value='1', format='int') | |
47 |
opObj11.addParameter(name='save', value=' |
|
48 | opObj11.addParameter(name='save', value='1', format='int') | |
48 |
opObj11.addParameter(name='figpath', value='/ |
|
49 | opObj11.addParameter(name='figpath', value='/home/erick/Documents/Data/d2015106') | |
49 |
|
50 | |||
50 | opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') |
|
51 | #opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') | |
51 | opObj11.addParameter(name='id', value='10', format='int') |
|
52 | #opObj11.addParameter(name='id', value='10', format='int') | |
52 | opObj11.addParameter(name='wintitle', value='RTI', format='str') |
|
53 | #opObj11.addParameter(name='wintitle', value='RTI', format='str') | |
53 | # opObj11.addParameter(name='xmin', value='21', format='float') |
|
54 | # opObj11.addParameter(name='xmin', value='21', format='float') | |
54 | # opObj11.addParameter(name='xmax', value='22', format='float') |
|
55 | # opObj11.addParameter(name='xmax', value='22', format='float') | |
55 | opObj11.addParameter(name='zmin', value='12', format='int') |
|
56 | #opObj11.addParameter(name='zmin', value='12', format='int') | |
56 | opObj11.addParameter(name='zmax', value='32', format='int') |
|
57 | #opObj11.addParameter(name='zmax', value='32', format='int') | |
57 | opObj11.addParameter(name='showprofile', value='1', format='int') |
|
58 | #opObj11.addParameter(name='showprofile', value='1', format='int') | |
58 | opObj11.addParameter(name='timerange', value=str(2*60*60), format='int') |
|
59 | #opObj11.addParameter(name='timerange', value=str(2*60*60), format='int') | |
|
60 | ||||
|
61 | procUnitConfObj2 = controllerObj.addProcUnit(datatype='Parameters', inputId=readUnitConfObj.getId()) | |||
|
62 | opObj11 = procUnitConfObj2.addOperation(name='GaussianFit', optype='other') | |||
|
63 | opObj11.addParameter(name='vel_arr', value='32,0,0,0', format='intList') | |||
|
64 | opObj11.addParameter(name='SNRlimit', value='-3', format='int') | |||
|
65 | ||||
|
66 | #opObj12 = procUnitConfObj2.addOperation(name='ParametersPlot', optype='other') | |||
|
67 | #opObj12.addParameter(name='id',value='4',format='int') | |||
|
68 | #opObj12.addParameter(name='wintitle',value='First_gg',format='str') | |||
|
69 | ||||
|
70 | opObj11 = procUnitConfObj2.addOperation(name='FitGauPlot', optype='other') | |||
|
71 | opObj11.addParameter(name='id', value='21', format='int') | |||
|
72 | opObj11.addParameter(name='wintitle', value='FitGauPlot', format='str') | |||
|
73 | opObj11.addParameter(name='xaxis', value='frequency', format='str') | |||
|
74 | opObj11.addParameter(name='showprofile', value='1', format='int') | |||
|
75 | opObj11.addParameter(name='zmin', value='-20', format='int') | |||
|
76 | opObj11.addParameter(name='zmax', value='20', format='int') | |||
|
77 | opObj11.addParameter(name='GauSelector', value='1', format='int') | |||
|
78 | #opObj11.addParameter(name='save', value='1', format='int') | |||
|
79 | #opObj11.addParameter(name='figpath', value='/home/erick/Documents/Data/d2015106') | |||
|
80 | ||||
|
81 | opObj11 = procUnitConfObj2.addOperation(name='FitGauPlot', optype='other') | |||
|
82 | opObj11.addParameter(name='id', value='22', format='int') | |||
|
83 | opObj11.addParameter(name='wintitle', value='FitGauPlot', format='str') | |||
|
84 | opObj11.addParameter(name='xaxis', value='frequency', format='str') | |||
|
85 | opObj11.addParameter(name='showprofile', value='1', format='int') | |||
|
86 | opObj11.addParameter(name='zmin', value='-20', format='int') | |||
|
87 | opObj11.addParameter(name='zmax', value='20', format='int') | |||
|
88 | opObj11.addParameter(name='GauSelector', value='0', format='int') | |||
|
89 | ||||
|
90 | #opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='other') | |||
|
91 | #opObj11.addParameter(name='id', value='55', format='int') | |||
|
92 | #opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str') | |||
|
93 | #opObj11.addParameter(name='xaxis', value='velocity', format='str') | |||
|
94 | #opObj11.addParameter(name='showprofile', value='1', format='int') | |||
|
95 | #opObj11.addParameter(name='save', value='1', format='int') | |||
|
96 | #opObj11.addParameter(name='figpath', value='/home/erick/Documents/Data/d2015106') | |||
59 |
|
97 | |||
60 | controllerObj.start() |
|
98 | controllerObj.start() | |
61 |
|
99 |
@@ -14,26 +14,25 desc = "ProcBLTR Test" | |||||
14 |
|
14 | |||
15 |
|
15 | |||
16 | filename = "ProcBLTR.xml" |
|
16 | filename = "ProcBLTR.xml" | |
17 |
|
17 | |||
18 | controllerObj = Project() |
|
18 | controllerObj = Project() | |
19 |
|
19 | |||
20 |
|
20 | |||
21 | controllerObj.setup(id = '191', name='test01', description=desc) |
|
21 | controllerObj.setup(id = '191', name='test01', description=desc) | |
22 |
|
22 | |||
23 | readUnitConfObj = controllerObj.addReadUnit(datatype='MIRA35CReader', |
|
23 | readUnitConfObj = controllerObj.addReadUnit(datatype='MIRA35CReader', | |
24 | path='/home/erick/Documents/MIRA35C/20160117', |
|
24 | path='/home/erick/Documents/MIRA35C/20160117', | |
25 | startDate='2016/11/8', |
|
25 | startDate='2016/11/8', | |
26 | endDate='2017/10/19', |
|
26 | endDate='2017/10/19', | |
27 | startTime='13:00:00', |
|
27 | startTime='13:00:00', | |
28 |
|
28 | |||
29 | endTime='23:59:59', |
|
29 | endTime='23:59:59', | |
30 |
|
30 | |||
31 |
|
31 | |||
32 | online=0, |
|
32 | online=0, | |
33 |
walk=0 |
|
33 | walk=0) | |
34 |
|
|
34 | ||
35 | #expLabel='') |
|
35 | ||
36 |
|
||||
37 | #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock') |
|
36 | #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock') | |
38 |
|
37 | |||
39 | procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId()) |
|
38 | procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId()) | |
@@ -55,7 +54,7 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |||||
55 | opObj11.addParameter(name='id', value='21', format='int') |
|
54 | opObj11.addParameter(name='id', value='21', format='int') | |
56 | opObj11.addParameter(name='wintitle', value='SpectraCutPlot', format='str') |
|
55 | opObj11.addParameter(name='wintitle', value='SpectraCutPlot', format='str') | |
57 | opObj11.addParameter(name='xaxis', value='velocity', format='str') |
|
56 | opObj11.addParameter(name='xaxis', value='velocity', format='str') | |
58 |
opObj11.addParameter(name='colormap', value=' |
|
57 | opObj11.addParameter(name='colormap', value='nipy_spectral', format='str') | |
59 | opObj11.addParameter(name='normFactor', value='1', format='float') |
|
58 | opObj11.addParameter(name='normFactor', value='1', format='float') | |
60 | #opObj11.addParameter(name='xaxis', value='velocity', format='str') |
|
59 | #opObj11.addParameter(name='xaxis', value='velocity', format='str') | |
61 | #opObj11.addParameter(name='xmin', value='-1.', format='float') |
|
60 | #opObj11.addParameter(name='xmin', value='-1.', format='float') | |
@@ -67,7 +66,6 opObj11.addParameter(name='normFactor', value='1', format='float') | |||||
67 | opObj11.addParameter(name='zmin', value='-20', format='int') |
|
66 | opObj11.addParameter(name='zmin', value='-20', format='int') | |
68 | opObj11.addParameter(name='zmax', value='20', format='int') |
|
67 | opObj11.addParameter(name='zmax', value='20', format='int') | |
69 |
|
68 | |||
70 |
|
||||
71 | opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') |
|
69 | opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') | |
72 | opObj11.addParameter(name='id', value='10', format='int') |
|
70 | opObj11.addParameter(name='id', value='10', format='int') | |
73 | opObj11.addParameter(name='wintitle', value='RTI', format='str') |
|
71 | opObj11.addParameter(name='wintitle', value='RTI', format='str') | |
@@ -79,6 +77,8 opObj11.addParameter(name='normFactor', value='1', format='float') | |||||
79 | #opObj11.addParameter(name='xmax', value='24', format='float') |
|
77 | #opObj11.addParameter(name='xmax', value='24', format='float') | |
80 | opObj11.addParameter(name='zmin', value='-20', format='int') |
|
78 | opObj11.addParameter(name='zmin', value='-20', format='int') | |
81 | opObj11.addParameter(name='zmax', value='20', format='int') |
|
79 | opObj11.addParameter(name='zmax', value='20', format='int') | |
|
80 | opObj11.addParameter(name='timerange', value='10800', format='int') | |||
|
81 | opObj11.addParameter(name='HEIGHT', value='400', format='int') | |||
82 | # opObj11.addParameter(name='zmin', value='-90', format='int') |
|
82 | # opObj11.addParameter(name='zmin', value='-90', format='int') | |
83 | # opObj11.addParameter(name='zmax', value='-40', format='int') |
|
83 | # opObj11.addParameter(name='zmax', value='-40', format='int') | |
84 | #opObj11.addParameter(name='showprofile', value='1', format='int') |
|
84 | #opObj11.addParameter(name='showprofile', value='1', format='int') | |
@@ -87,27 +87,35 opObj11.addParameter(name='zmax', value='20', format='int') | |||||
87 | procUnitConfObj2 = controllerObj.addProcUnit(datatype='Parameters', inputId=readUnitConfObj.getId()) |
|
87 | procUnitConfObj2 = controllerObj.addProcUnit(datatype='Parameters', inputId=readUnitConfObj.getId()) | |
88 | #opObj11 = procUnitConfObj2.addOperation(name='SpectralMoments', optype='other') |
|
88 | #opObj11 = procUnitConfObj2.addOperation(name='SpectralMoments', optype='other') | |
89 | opObj22 = procUnitConfObj2.addOperation(name='PrecipitationProc', optype='other') |
|
89 | opObj22 = procUnitConfObj2.addOperation(name='PrecipitationProc', optype='other') | |
|
90 | opObj22.addParameter(name='radar', value='MIRA35C', format='str') | |||
90 |
|
91 | |||
91 | opObj22 = procUnitConfObj2.addOperation(name='ParametersPlot', optype='other') |
|
92 | opObj22 = procUnitConfObj2.addOperation(name='ParametersPlot', optype='other') | |
92 | opObj22.addParameter(name='id', value='4', format='int') |
|
93 | opObj22.addParameter(name='id', value='4', format='int') | |
93 | opObj22.addParameter(name='wintitle', value='PrecipitationProc', format='str') |
|
94 | opObj22.addParameter(name='wintitle', value='PrecipitationProc', format='str') | |
94 | opObj22.addParameter(name='save', value='1', format='bool') |
|
95 | opObj22.addParameter(name='save', value='1', format='bool') | |
95 |
opObj22.addParameter(name='colormap', value=' |
|
96 | opObj22.addParameter(name='colormap', value='nipy_spectral', format='str') | |
96 | # opObj22.addParameter(name='figpath', value = '/home/erick/Pictures', format='str') |
|
97 | # opObj22.addParameter(name='figpath', value = '/home/erick/Pictures', format='str') | |
97 |
opObj22.addParameter(name='zmin', value='- |
|
98 | opObj22.addParameter(name='zmin', value='-60', format='int') | |
98 | opObj22.addParameter(name='zmax', value='0', format='int') |
|
99 | opObj22.addParameter(name='zmax', value='-20', format='int') | |
|
100 | opObj22.addParameter(name='timerange', value='10800', format='int') | |||
|
101 | #opObj22.addParameter(name='channelList', value='0', format='intlist') | |||
|
102 | #opObj22.addParameter(name='colormap', value='nipy_spectral', format='str') | |||
|
103 | opObj22.addParameter(name='HEIGHT', value='500', format='int') | |||
99 | #opObj22.addParameter(name='zmin_ver', value='-250', format='float') |
|
104 | #opObj22.addParameter(name='zmin_ver', value='-250', format='float') | |
100 | #opObj22.addParameter(name='zmax_ver', value='250', format='float') |
|
105 | #opObj22.addParameter(name='zmax_ver', value='250', format='float') | |
101 | #opObj22.addParameter(name='SNRmin', value='-5', format='int') |
|
106 | #opObj22.addParameter(name='SNRmin', value='-5', format='int') | |
102 | #opObj22.addParameter(name='SNRmax', value='30', format='int') |
|
107 | #opObj22.addParameter(name='SNRmax', value='30', format='int') | |
103 | # opObj22.addParameter(name='SNRthresh', value='-3.5', format='float') |
|
108 | # opObj22.addParameter(name='SNRthresh', value='-3.5', format='float') | |
104 | opObj22.addParameter(name='xmin', value=0, format='float') |
|
109 | #opObj22.addParameter(name='xmin', value=0, format='float') | |
105 | opObj22.addParameter(name='xmax', value=2, format='float') |
|
110 | #opObj22.addParameter(name='xmax', value=2, format='float') | |
106 | #opObj22.addParameter(name='ymin', value='225', format='float') |
|
111 | #opObj22.addParameter(name='ymin', value='225', format='float') | |
107 | #opObj22.addParameter(name='ymax', value='5000', format='float') |
|
112 | #opObj22.addParameter(name='ymax', value='5000', format='float') | |
108 |
|
113 | |||
|
114 | # opObj12 = procUnitConfObj1.addOperation(name='PublishData', optype='other') | |||
|
115 | # opObj12.addParameter(name='zeromq', value=1, format='int') | |||
|
116 | # opObj12.addParameter(name='verbose', value=0, format='bool') | |||
|
117 | # opObj12.addParameter(name='server', value='Jose', format='str') | |||
109 |
|
118 | |||
110 |
|
119 | #controllerObj.createObjects() | ||
111 |
controllerObj.c |
|
120 | #controllerObj.connectObjects() | |
112 |
controllerObj. |
|
121 | controllerObj.start() | |
113 | controllerObj.run() |
|
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -41,7 +41,7 setup(name="schainpy", | |||||
41 | scripts=['schainpy/gui/schainGUI'], |
|
41 | scripts=['schainpy/gui/schainGUI'], | |
42 | ext_modules=[Extension("cSchain", ["schainpy/model/proc/extensions.c"])], |
|
42 | ext_modules=[Extension("cSchain", ["schainpy/model/proc/extensions.c"])], | |
43 | install_requires=[ |
|
43 | install_requires=[ | |
44 |
"scipy >= 0.1 |
|
44 | "scipy >= 0.13.0", | |
45 | "h5py >= 2.2.1", |
|
45 | "h5py >= 2.2.1", | |
46 | "matplotlib >= 1.4.2", |
|
46 | "matplotlib >= 1.4.2", | |
47 | "pyfits >= 3.4", |
|
47 | "pyfits >= 3.4", |
General Comments 0
You need to be logged in to leave comments.
Login now