##// END OF EJS Templates
Nueva version para graficos Scope, RTI, Spectra. Se hicieron pruebas con los experimentos EwDRIFTS, MST, IMAGING
Daniel Valdez -
r141:1997872d9e6c
parent child
Show More
@@ -25,33 +25,28 class Figure:
25 25 figuretitle = ""
26 26 xrangestep = None
27 27
28 def __init__(self,idfigure, nframes, wintitle, xw=600, yw=800, overplot=0, driver='plplot', colorbar= True, colormap=None, *args):
28 def __init__(self,idfigure, nframes, wintitle, xw=600, yw=800, overplot=0, driver='plplot', colormap=None, colorbar= True, *args):
29
30 self.drvObj = Driver(driver, idfigure, xw, yw, wintitle, overplot, colormap, colorbar)
31 self.driver = driver
29 32 self.idfigure = idfigure
30 self.nframes = nframes
31 self.wintitle = wintitle
32 33 self.xw = xw
33 34 self.yw = yw
35 self.nframes = nframes
36 self.wintitle = wintitle
37 self.colormap = colormap
34 38 self.overplot = overplot
35 39 self.colorbar = colorbar
36 self.colormap = colormap
37 #esta seccion deberia ser dinamica de acuerdo a len(args)
38 self.showGraph1 = args[0]
39 self.showGraph2 = args[1]
40
41 self.drvObj = Driver(driver, idfigure, xw, yw, wintitle, overplot, colorbar, colormap)
40 # self.showGraph1 = args[0]
41 # self.showGraph2 = args[1]
42 42
43 43 self.drvObj.driver.setFigure()
44 44 self.drvObj.driver.setColormap(colormap)
45 45
46
46 47
47 48 def __openDriver(self):
48 49 self.drvObj.driver.openDriver()
49
50 # def __openFigure(self):
51 # nrows, ncolumns = self.getSubplots()
52 # self.drvObj.driver.openFigure()
53 # self.drvObj.driver.setTitleFig(title)
54 # self.drvObj.driver.setSubPlots(nrows, ncolumns)
55 50
56 51 def __initFigure(self):
57 52 nrows, ncolumns = self.getSubplots()
@@ -60,10 +55,12 class Figure:
60 55 self.drvObj.driver.setSubPlots(nrows, ncolumns)
61 56
62 57 def __isOutOfXRange(self,x):
63
64 if ((x>=self.xmin) and (x<self.xmax)):
58 try:
59 if ((x>=self.xmin) and (x<self.xmax)):
60 return 0
61 except:
65 62 return 0
66
63
67 64 return 1
68 65
69 66 def changeXRange(self,x):
@@ -110,7 +107,7 class Figure:
110 107 self.__isConfig = True
111 108
112 109 if not(self.__isOutOfXRange(x)):
113 self.__changeXRange(x)
110 self.changeXRange(x)
114 111
115 112 if self.__isFigureOpen:
116 113 self.driverObj.closePage()
@@ -163,7 +160,9 class Figure:
163 160 figuretitle=None,
164 161 xrangestep=None,
165 162 save=False,
166 gpath='./'):
163 gpath='./',
164 clearData=False,
165 *args):
167 166
168 167
169 168 if figuretitle == None:
@@ -190,10 +189,6 class Figure:
190 189 return 0
191 190
192 191 self.__isFigureOpen = False
193
194 # if self.__isFigureOpen:
195 # self.driverObj.closePage()
196 # self.__isFigureOpen = False
197 192
198 193 if not(self.__isFigureOpen):
199 194
@@ -202,24 +197,30 class Figure:
202 197 self.__isFigureOpen = True
203 198
204 199 for channel in channelList:
200 if len(args) != 0: value = args[0][channel]
201 else: value = args
202
205 203 frameObj = self.frameObjList[channel]
206 frameObj.init(xmin=self.xmin,
207 xmax=self.xmax,
208 ymin=self.ymin,
209 ymax=self.ymax,
210 minvalue=self.minvalue,
211 maxvalue=self.maxvalue,
212 deltax=self.deltax,
213 deltay=self.deltay)
204 frameObj.init(self.xmin,
205 self.xmax,
206 self.ymin,
207 self.ymax,
208 self.minvalue,
209 self.maxvalue,
210 self.deltax,
211 self.deltay,
212 self.colorbar,
213 value)
214 214
215 215 for channel in channelList:
216 216 dataCh = data[channel,:]
217 217 frameObj = self.frameObjList[channel]
218 # frameObj.clearData()
219 218 frameObj.plot(x, y, dataCh)
220 219
221 # frameObj.refresh()
220
222 221 self.__refresh()
222 if clearData == True:
223 self.__isFigureOpen = False
223 224
224 225
225 226
@@ -253,10 +254,12 class Frame:
253 254 return xi, yi, xw, yw
254 255
255 256
256 def init(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax=None, deltay=None):
257 def init(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax=None, deltay=None, colorbar=False, *args):
257 258
258 259 for plotObj in self.plotObjList:
259 plotObj.plotBox(xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax, deltay)
260 plotObj.setBox(xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax, deltay, colorbar, *args)
261 plotObj.plotBox()
262
260 263
261 264
262 265 class Plot:
@@ -272,6 +275,9 class Plot:
272 275 szchar = None
273 276 idframe = None
274 277 idplot = None
278 colorbar = None
279 cbxpos = None
280 cbypos = None
275 281
276 282 def __init__(self, drvObj, idframe, idplot, xi, yi, xw, yw):
277 283 self.drvObj = drvObj
@@ -282,13 +288,8 class Plot:
282 288 self.xw = xw
283 289 self.yw = yw
284 290
285 def plotBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue):
286 self.xmin = xmin
287 self.xmax = xmax
288 self.ymin = ymin
289 self.ymax = ymax
290 self.minvalue = minvalue
291 self.maxvalue = maxvalue
291
292 def plotBox(self):
292 293
293 294 self.drvObj.driver.plotBox(self.idframe,
294 295 self.xpos,
@@ -306,6 +307,9 class Plot:
306 307 self.timefmt)
307 308
308 309 self.drvObj.driver.setPlotLabels(self.xlabel, self.ylabel, self.title)
310
311 if self.colorbar:
312 self.drvObj.driver.plotColorbar(self.minvalue, self.maxvalue, self.cbxpos,self.cbypos)
309 313
310 314 def plotPcolor(self, x, y, z, deltax, deltay, getGrid):
311 315
@@ -152,6 +152,9 class PlplotDriver:
152 152 if getGrid:
153 153 self.__xg, self.__yg = self.__getGrid(x, y, deltax, deltay)
154 154
155 if deltax == None: deltax = x[-1] - x[0]
156 # if deltay == None: deltay = y[-1] - y[-2]
157
155 158 xmin = x[0]
156 159 xmax = xmin + deltax
157 160
@@ -2,7 +2,171 import numpy
2 2 import datetime
3 3 import time
4 4 from schainPlot import *
5 #from schainPlotLib import Driver
5
6 class SpcFigure(Figure):
7 overplot = 0
8 xw = 800
9 yw = 650
10 showprofile = False
11
12 def __init__(self, idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile):
13 Figure.__init__(self,idfigure, nframes, wintitle, self.xw, self.yw, self.overplot, driver, colormap, colorbar)
14
15 self.showprofile = showprofile
16
17 def getSubplots(self):
18 ncolumns = int(numpy.sqrt(self.nframes)+0.9)
19 nrows = int(self.nframes*1./ncolumns + 0.9)
20
21 return nrows, ncolumns
22
23 def setParms(self, data, x, y, xmin, xmax, ymin, ymax, minvalue, maxvalue, *args):
24
25 if xmin == None: xmin = numpy.min(x)
26 if xmax == None: xmax = numpy.max(x)
27 if ymin == None: ymin = numpy.min(y)
28 if ymax == None: ymax = numpy.max(y)
29 if minvalue == None: minvalue = 20.
30 if maxvalue == None: maxvalue = 90.
31
32 self.xmin = xmin
33 self.xmax = xmax
34 self.minrange = ymin
35 self.maxrange = ymax
36 self.ymin = ymin
37 self.ymax = ymax
38 self.minvalue = minvalue
39 self.maxvalue = maxvalue
40
41
42 def changeXRange(self, *args):
43 pass
44
45 def createFrames(self):
46 for frame in range(self.nframes):
47 frameObj = SpcFrame(self.drvObj,frame + 1, self.colorbar, self.showprofile)
48 self.frameObjList.append(frameObj)
49
50 class SpcFrame(Frame):
51 def __init__(self,drvObj,idframe,colorbar,showprofile):
52 self.drvObj = drvObj
53 self.idframe = idframe
54 self.nplots = 1
55
56 if showprofile:
57 self.nplots += 1
58
59 self.colorbar = colorbar
60 self.showprofile = showprofile
61 self.createPlots()
62
63 def createPlots(self):
64 plotObjList = []
65 idplot = 0
66 xi, yi, xw, yw = self.getScreenPos(idplot)
67 plotObj = SpcPlot(self.drvObj, self.idframe, idplot, xi, yi, xw, yw, self.colorbar)
68 plotObjList.append(plotObj)
69
70 if self.showprofile:
71 idplot = 1
72 xi, yi, xw, yw = self.getScreenPos(idplot)
73 type = "pwbox"
74 title = ""
75 xlabel = "dB"
76 ylabel = ""
77 plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw, type, title, xlabel, ylabel)
78 plotObjList.append(plotObj)
79
80 self.plotObjList = plotObjList
81
82 def getScreenPosMainPlot(self):
83 xi = 0.15
84
85 if self.showprofile:
86 xw = 0.65
87
88 else:
89 xw = 0.75
90
91 if self.colorbar:
92 xw = xw - 0.06
93
94 yi = 0.20; yw = 0.75
95
96 return xi, yi, xw, yw
97
98 def getScreenPosGraph1(self):
99 if self.colorbar:
100 xi = 0.65 + 0.08
101 else:
102 xi = 0.75 + 0.05
103
104 xw = xi + 0.2
105
106 yi = 0.2; yw = 0.75
107
108 return xi, yi, xw, yw
109
110 def plot(self,x, y, data):
111 plotObj = self.plotObjList[0]
112 plotObj.plot(x,y,data)
113
114 if self.showprofile:
115 plotObj = self.plotObjList[1]
116 plotObj.plot(data,y)
117
118 class SpcPlot(Plot):
119
120 getGrid = True
121
122 def __init__(self, drvObj, idframe, idplot, xi, yi, xw, yw, colorbar):
123 self.drvObj = drvObj
124 self.idframe = idframe
125 self.idplot = idplot
126 self.xi = xi
127 self.yi = yi
128 self.xw = xw
129 self.yw = yw
130 self.colorbar = colorbar
131
132 if self.colorbar:
133 cbxi = xw + 0.03
134 cbxw = cbxi + 0.03
135 cbyi = yi
136 cbyw = yw
137 self.cbxpos = [cbxi,cbxw]
138 self.cbypos = [cbyi,cbyw]
139
140 self.xpos = [self.xi,self.xw]
141 self.ypos = [self.yi,self.yw]
142 self.xaxisastime = False
143 self.timefmt = None
144 self.xopt = "bcnst"
145 self.yopt = "bcnstv"
146
147 self.szchar = 0.8
148 self.strforchannel = "Channel %d"%self.idframe
149 self.xlabel = "m/s"
150 self.ylabel = "Range (Km)"
151
152 def setBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, *args):
153 self.xmin = xmin
154 self.xmax = xmax
155 self.ymin = ymin
156 self.ymax = ymax
157 self.minvalue = minvalue
158 self.maxvalue = maxvalue
159 self.colorbar = args[2]
160 self.title = "%s - %s"%(self.strforchannel,args[3])
161
162
163
164 def plot(self, x, y, data):
165 z = data
166 deltax = None
167 deltay = None
168 self.plotPcolor(x, y, z, deltax, deltay, self.getGrid)
169 self.getGrid = False
6 170
7 171
8 172 class RTIFigure(Figure):
@@ -19,18 +183,11 class RTIFigure(Figure):
19 183 xrangestepinsecs = None
20 184
21 185
22 def __init__(self, idfigure, nframes, wintitle, driver, colormap="br_green", colorbar= True, showprofile=False):
23 self.idfigure = idfigure
24 self.nframes = nframes
25 self.wintitle = wintitle
26 self.colormap = colormap
27 self.colorbar = colorbar
186 def __init__(self, idfigure, nframes, wintitle, driver, colormap="br_green", colorbar= True, showprofile=False):
187 Figure.__init__(self,idfigure, nframes, wintitle, self.xw, self.yw, self.overplot, driver, colormap, colorbar)
188
28 189 self.showprofile = showprofile
29 self.driver = driver
30 self.drvObj = Driver(self.driver, self.idfigure, self.xw, self.yw, self.wintitle, self.overplot, self.colormap, self.colorbar)
31 self.drvObj.driver.setFigure()
32 self.drvObj.driver.setColormap(colormap)
33
190
34 191 def getSubplots(self):
35 192 nrows = self.nframes
36 193 ncolumns = 1
@@ -41,7 +198,7 class RTIFigure(Figure):
41 198 self.starttime = xmin
42 199 self.endtime = xmax
43 200
44 cdatetime = datetime.datetime.utcfromtimestamp(x) #siempre en localtime
201 cdatetime = datetime.datetime.utcfromtimestamp(x)
45 202
46 203 mindatetime = datetime.datetime(cdatetime.year,cdatetime.month,cdatetime.day,self.starttime.hour,self.starttime.minute,self.starttime.second)
47 204 if ((xrangestep == 0) or (xrangestep == None)):
@@ -83,11 +240,10 class RTIFigure(Figure):
83 240 self.maxvalue = maxvalue
84 241 self.xrangestep = xrangestep
85 242 self.deltax = deltax
86
87
243
88 244 def changeXRange(self,x):
89 245
90 cdatetime = datetime.datetime.utcfromtimestamp(x) #siempre en localtime
246 cdatetime = datetime.datetime.utcfromtimestamp(x)
91 247
92 248 if ((cdatetime.time()>=self.starttime) and (cdatetime.time()<self.endtime)):
93 249 if self.xrangestep == 1:
@@ -99,19 +255,15 class RTIFigure(Figure):
99 255 if self.xrangestep == 3:
100 256 mindatetime = datetime.datetime(cdatetime.year,cdatetime.month,cdatetime.day,cdatetime.hour,cdatetime.minute,cdatetime.second)
101 257
102 # mindatetime = datetime.datetime(cdatetime.year,cdatetime.month,cdatetime.day,self.starttime.hour,self.starttime.minute,self.starttime.second)
103 258 self.xmin = time.mktime(mindatetime.timetuple()) - time.timezone
104 259 self.xmax = self.xmin + self.xrangestepinsecs
105 260
106 self.figuretitle = "%s: %s - %s"%(self.figuretitle,
261 self.figuretitle = "%s %s : %s"%(self.figuretitle,
107 262 datetime.datetime.utcfromtimestamp(self.xmin).strftime("%d-%b-%Y %H:%M:%S"),
108 263 datetime.datetime.utcfromtimestamp(self.xmax).strftime("%d-%b-%Y %H:%M:%S"))
109
110
111 264 return 1
112 265
113 266 return 0
114
115 267
116 268 def createFrames(self):
117 269 for frame in range(self.nframes):
@@ -136,23 +288,26 class RTIFrame(Frame):
136 288
137 289 idplot = 0
138 290 xi, yi, xw, yw = self.getScreenPos(idplot)
291
139 292 plotObj = RTIPlot(self.drvObj, self.idframe, idplot, xi, yi, xw, yw, self.colorbar)
140 293 plotObjList.append(plotObj)
141 294
142 295 if self.showprofile:
143 296 idplot = 1
144 297 xi, yi, xw, yw = self.getScreenPos(idplot)
145 plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw)
298 type = "pwbox"
299 title = ""
300 xlabel = "dB"
301 ylabel = ""
302 plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw, type, title, xlabel, ylabel)
146 303 plotObjList.append(plotObj)
147 304
148 305 self.plotObjList = plotObjList
149 306
150 def getScreenPosMainPlot(self):#cada Frame determina las coordenadas de los plots
307 def getScreenPosMainPlot(self):
151 308 xi = 0.07
152
153 309 if self.showprofile:
154 310 xw = 0.65
155
156 311 else:
157 312 xw = 0.9
158 313
@@ -165,7 +320,7 class RTIFrame(Frame):
165 320
166 321 def getScreenPosGraph1(self):
167 322 if self.colorbar:
168 xi = 0.65 + 0.05
323 xi = 0.65 + 0.08
169 324 else:
170 325 xi = 0.9 + 0.05
171 326
@@ -176,9 +331,6 class RTIFrame(Frame):
176 331 return xi, yi, xw, yw
177 332
178 333 def plot(self, currenttime, range, data):
179 # for plotObj in self.plotObjList:
180 # plotObj.plot(currenttime, range, data)
181
182 334 plotObj = self.plotObjList[0]
183 335 plotObj.plot(currenttime,range,data)
184 336
@@ -227,7 +379,7 class RTIPlot(Plot):
227 379 self.ylabel = "Range (Km)"
228 380
229 381
230 def plotBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax=None, deltay=None):
382 def setBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax=None, deltay=None, colorbar=True, *args):
231 383 self.xmin = xmin
232 384 self.xmax = xmax
233 385 self.ymin = ymin
@@ -236,28 +388,7 class RTIPlot(Plot):
236 388 self.maxvalue = maxvalue
237 389 self.deltax = deltax
238 390 self.deltay = deltay
239
240 self.drvObj.driver.plotBox(self.idframe,
241 self.xpos,
242 self.ypos,
243 self.xmin,
244 self.xmax,
245 self.ymin,
246 self.ymax,
247 self.minvalue,
248 self.maxvalue,
249 self.xopt,
250 self.yopt,
251 self.szchar,
252 self.xaxisastime,
253 self.timefmt)
254
255 self.drvObj.driver.setPlotLabels(self.xlabel, self.ylabel, self.title)
256
257 if self.colorbar:
258 self.drvObj.driver.plotColorbar(minvalue, maxvalue, self.cbxpos,self.cbypos)
259
260
391 self.colorbar = colorbar
261 392
262 393 def plot(self, currenttime, range, data):
263 394
@@ -330,7 +461,11 class ScopeFrame(Frame):
330 461 plotObjList = []
331 462 for idplot in range(self.nplots):
332 463 xi, yi, xw, yw = self.getScreenPos(idplot)
333 plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw)
464 type = "scopebox"
465 title = "Channel %d"%self.idframe
466 xlabel = "range (Km)"
467 ylabel = "intensity"
468 plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw, type, title, xlabel, ylabel)
334 469 plotObjList.append(plotObj)
335 470 self.plotObjList = plotObjList
336 471 # self.plotObjList.append(plotObj)
@@ -341,8 +476,8 class ScopeFrame(Frame):
341 476
342 477
343 478 class Plot1D(Plot):
344
345 def __init__(self, drvObj, idframe, idplot, xi, yi, xw, yw):
479 # type, title, xlabel, ylabel
480 def __init__(self, drvObj, idframe, idplot, xi, yi, xw, yw, type, title, xlabel, ylabel):
346 481 self.drvObj = drvObj
347 482 self.idframe = idframe
348 483 self.idplot = idplot
@@ -357,10 +492,31 class Plot1D(Plot):
357 492 self.xopt = "bcnst"
358 493 self.yopt = "bcnstv"
359 494 self.szchar = 1.0
360 self.title = "Channel %d"%self.idframe
361 self.xlabel = "x-axis"
362 self.ylabel = "y-axis"
495 self.type = type
496 self.title = title
497 self.xlabel = xlabel
498 self.ylabel = ylabel
499
363 500
501
502 def setBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue, *args):
503 if self.type == "pwbox":
504 self.xmin = minvalue
505 self.xmax = maxvalue
506 self.ymin = ymin
507 self.ymax = ymax
508 self.minvalue = minvalue
509 self.maxvalue = maxvalue
510
511 else:
512 self.xmin = xmin
513 self.xmax = xmax
514 self.ymin = ymin
515 self.ymax = ymax
516 self.minvalue = minvalue
517 self.maxvalue = maxvalue
518
519 self.colorbar = False
364 520
365 521 def plot(self,x,y):
366 522 if y.dtype == "complex128":
@@ -7,13 +7,13 $Id$
7 7 import os, sys
8 8 import numpy
9 9 import time
10
10 import datetime
11 11 path = os.path.split(os.getcwd())[0]
12 12 sys.path.append(path)
13 13
14 14 from Data.JROData import Spectra
15 15 from IO.SpectraIO import SpectraWriter
16 #from Graphics.SpectraPlot import Spectrum
16 from Graphics.schainPlotTypes import SpcFigure
17 17 #from JRONoise import Noise
18 18
19 19 class SpectraProcessor:
@@ -36,36 +36,6 class SpectraProcessor:
36 36 writerObjIndex = None
37 37
38 38 profIndex = 0 # Se emplea cuando el objeto de entrada es un Voltage
39
40 # integratorObjList = []
41 #
42 # decoderObjList = []
43 #
44 # writerObjList = []
45 #
46 # plotterObjList = []
47 #
48 # integratorObjIndex = None
49 #
50 # decoderObjIndex = None
51 #
52 # writerObjIndex = None
53 #
54 # plotterObjIndex = None
55 #
56 # buffer = None
57 #
58 # profIndex = 0
59 #
60 # nFFTPoints = None
61 #
62 # nChannels = None
63 #
64 # nHeights = None
65 #
66 # nPairs = None
67 #
68 # pairList = None
69 39
70 40
71 41 def __init__(self):
@@ -75,8 +45,10 class SpectraProcessor:
75 45
76 46 self.integratorObjIndex = None
77 47 self.writerObjIndex = None
48 self.plotObjIndex = None
78 49 self.integratorObjList = []
79 50 self.writerObjList = []
51 self.plotObjList = []
80 52 self.noiseObj = None
81 53 self.buffer = None
82 54 self.profIndex = 0
@@ -99,71 +71,13 class SpectraProcessor:
99 71
100 72 self.dataOutObj = dataOutObj
101 73
102 # self.noiseObj = Noise() #aun no se incluye el objeto Noise()
103
104 ##########################################
105 # self.nFFTPoints = nFFTPoints
106 # self.nChannels = self.dataInObj.nChannels
107 # self.nHeights = self.dataInObj.nHeights
108 # self.pairList = pairList
109 # if pairList != None:
110 # self.nPairs = len(pairList)
111 # else:
112 # self.nPairs = 0
113 #
114 # self.dataOutObj.heightList = self.dataInObj.heightList
115 # self.dataOutObj.channelIndexList = self.dataInObj.channelIndexList
116 # self.dataOutObj.m_BasicHeader = self.dataInObj.m_BasicHeader.copy()
117 # self.dataOutObj.m_ProcessingHeader = self.dataInObj.m_ProcessingHeader.copy()
118 # self.dataOutObj.m_RadarControllerHeader = self.dataInObj.m_RadarControllerHeader.copy()
119 # self.dataOutObj.m_SystemHeader = self.dataInObj.m_SystemHeader.copy()
120 #
121 # self.dataOutObj.dataType = self.dataInObj.dataType
122 # self.dataOutObj.nPairs = self.nPairs
123 # self.dataOutObj.nChannels = self.nChannels
124 # self.dataOutObj.nProfiles = self.nFFTPoints
125 # self.dataOutObj.nHeights = self.nHeights
126 # self.dataOutObj.nFFTPoints = self.nFFTPoints
127 # #self.dataOutObj.data = None
128 #
129 # self.dataOutObj.m_SystemHeader.numChannels = self.nChannels
130 # self.dataOutObj.m_SystemHeader.nProfiles = self.nFFTPoints
131 #
132 # self.dataOutObj.m_ProcessingHeader.totalSpectra = self.nChannels + self.nPairs
133 # self.dataOutObj.m_ProcessingHeader.profilesPerBlock = self.nFFTPoints
134 # self.dataOutObj.m_ProcessingHeader.numHeights = self.nHeights
135 # self.dataOutObj.m_ProcessingHeader.shif_fft = True
136 #
137 # spectraComb = numpy.zeros( (self.nChannels+self.nPairs)*2,numpy.dtype('u1'))
138 # k = 0
139 # for i in range( 0,self.nChannels*2,2 ):
140 # spectraComb[i] = k
141 # spectraComb[i+1] = k
142 # k += 1
143 #
144 # k *= 2
145 #
146 # if self.pairList != None:
147 #
148 # for pair in self.pairList:
149 # spectraComb[k] = pair[0]
150 # spectraComb[k+1] = pair[1]
151 # k += 2
152 #
153 # self.dataOutObj.m_ProcessingHeader.spectraComb = spectraComb
154
155 74 return self.dataOutObj
156 75
157 76 def init(self):
158 #
159 # self.nHeights = self.dataInObj.nHeights
160 # self.dataOutObj.nHeights = self.nHeights
161 # self.dataOutObj.heightList = self.dataInObj.heightList
162 #
163 77
164 78 self.integratorObjIndex = 0
165 79 self.writerObjIndex = 0
166
80 self.plotObjIndex = 0
167 81 if self.dataInObj.type == "Voltage":
168 82
169 83 if self.buffer == None:
@@ -266,6 +180,76 class SpectraProcessor:
266 180 objIncohInt = IncoherentIntegration(N,timeInterval)
267 181 self.integratorObjList.append(objIncohInt)
268 182
183 def addSpc(self, idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile):
184 spcObj = SpcFigure(idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile)
185 self.plotObjList.append(spcObj)
186
187 def plotSpc(self, idfigure=None,
188 xmin=None,
189 xmax=None,
190 ymin=None,
191 ymax=None,
192 minvalue=None,
193 maxvalue=None,
194 wintitle='',
195 driver='plplot',
196 colormap='br_greeen',
197 colorbar=True,
198 showprofile=False,
199 save=False,
200 gpath=None):
201
202 if self.dataOutObj.flagNoData:
203 return 0
204
205 nframes = len(self.dataOutObj.channelList)
206
207 if len(self.plotObjList) <= self.plotObjIndex:
208 self.addSpc(idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile)
209
210 x = numpy.arange(self.dataOutObj.nFFTPoints)
211
212 y = self.dataOutObj.heightList
213
214 channelList = self.dataOutObj.channelList
215
216 data = 10.*numpy.log10(self.dataOutObj.data_spc[channelList,:,:])
217 # noisedB = 10.*numpy.log10(noise)
218 noisedB = numpy.arange(len(channelList)+1)
219 noisedB = noisedB *1.2
220 titleList = []
221 for i in range(len(noisedB)):
222 title = "%.2f"%noisedB[i]
223 titleList.append(title)
224
225 thisdatetime = datetime.datetime.fromtimestamp(self.dataOutObj.dataUtcTime)
226 dateTime = "%s"%(thisdatetime.strftime("%d-%b-%Y %H:%M:%S"))
227 figuretitle = "Spc Radar Data: %s"%dateTime
228
229 cleardata = True
230
231 plotObj = self.plotObjList[self.plotObjIndex]
232
233 plotObj.plotPcolor(data,
234 x,
235 y,
236 channelList,
237 xmin,
238 xmax,
239 ymin,
240 ymax,
241 minvalue,
242 maxvalue,
243 figuretitle,
244 None,
245 save,
246 gpath,
247 cleardata,
248 titleList)
249
250 self.plotObjIndex += 1
251
252
269 253 def writeData(self, wrpath, blocksPerFile):
270 254 if self.dataOutObj.flagNoData:
271 255 return 0
@@ -292,7 +276,6 class SpectraProcessor:
292 276 self.dataOutObj.data_spc = myIncohIntObj.data
293 277 self.dataOutObj.nAvg = myIncohIntObj.navg
294 278 self.dataOutObj.m_ProcessingHeader.incoherentInt = self.dataInObj.m_ProcessingHeader.incoherentInt*myIncohIntObj.navg
295 #print "myIncohIntObj.navg: ",myIncohIntObj.navg
296 279 self.dataOutObj.flagNoData = False
297 280
298 281 """Calcular el ruido"""
@@ -54,8 +54,8 class VoltageProcessor:
54 54 # No necesita copiar en cada init() los atributos de dataInObj
55 55 # la copia deberia hacerse por cada nuevo bloque de datos
56 56
57 def addRti(self, idfigure, nframes, wintitle, driver, colorbar, colormap, showprofile):
58 rtiObj = RTIFigure(idfigure, nframes, wintitle, driver, colorbar, colormap, showprofile)
57 def addRti(self, idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile):
58 rtiObj = RTIFigure(idfigure, nframes, wintitle, driver, colormap, colorbar, showprofile)
59 59 self.plotObjList.append(rtiObj)
60 60
61 61 def plotRti(self, idfigure=None,
@@ -89,8 +89,6 class VoltageProcessor:
89 89 # if timezone == "lt":
90 90 currenttime = self.dataOutObj.dataUtcTime - time.timezone
91 91
92
93
94 92 range = self.dataOutObj.heightList
95 93
96 94 channelList = self.dataOutObj.channelList
@@ -103,6 +101,8 class VoltageProcessor:
103 101
104 102 plotObj = self.plotObjList[self.plotObjIndex]
105 103
104 cleardata = False
105
106 106 plotObj.plotPcolor(data,
107 107 currenttime,
108 108 range,
@@ -116,7 +116,8 class VoltageProcessor:
116 116 figuretitle,
117 117 xrangestep,
118 118 save,
119 gpath)
119 gpath,
120 cleardata)
120 121
121 122 self.plotObjIndex += 1
122 123
General Comments 0
You need to be logged in to leave comments. Login now