##// END OF EJS Templates
Miguel Valdez -
r45:5ceb1451c399
parent child
Show More
@@ -1,171 +1,173
1 '''
1 '''
2 Created on Feb 7, 2012
2 Created on Feb 7, 2012
3
3
4 @author $Author$
4 @author $Author$
5 @version $Id$
5 @version $Id$
6 '''
6 '''
7
7
8 import os, sys
8 import os, sys
9 import numpy
9 import numpy
10 import datetime
10 import datetime
11 import plplot
11 import plplot
12
12
13 path = os.path.split(os.getcwd())[0]
13 path = os.path.split(os.getcwd())[0]
14 sys.path.append(path)
14 sys.path.append(path)
15
15
16 from Graphics.BaseGraph import *
16 from Graphics.BaseGraph import *
17 from Model.Spectra import Spectra
17 from Model.Spectra import Spectra
18
18
19 class Spectrum():
19 class Spectrum():
20
20
21 def __init__(self, Spectra, index=0):
21 def __init__(self, Spectra, index=0):
22
22
23 """
23 """
24
24
25 Inputs:
25 Inputs:
26
26
27 type: "power" ->> Potencia
27 type: "power" ->> Potencia
28 "iq" ->> Real + Imaginario
28 "iq" ->> Real + Imaginario
29 """
29 """
30
30
31 self.__isPlotConfig = False
31 self.__isPlotConfig = False
32
32
33 self.__isPlotIni = False
33 self.__isPlotIni = False
34
34
35 self.__xrange = None
35 self.__xrange = None
36
36
37 self.__yrange = None
37 self.__yrange = None
38
38
39 self.nGraphs = 0
39 self.nGraphs = 0
40
40
41 self.indexPlot = index
41 self.indexPlot = index
42
42
43 self.graphObjList = []
43 self.graphObjList = []
44
44
45 self.m_Spectra = Spectra
45 self.m_Spectra = Spectra
46
46
47
47
48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
49
49
50 graphObj = ColorPlot()
50 graphObj = ColorPlot()
51 graphObj.setup(subpage,
51 graphObj.setup(subpage,
52 title,
52 title,
53 xlabel,
53 xlabel,
54 ylabel,
54 ylabel,
55 showColorbar=showColorbar,
55 showColorbar=showColorbar,
56 showPowerProfile=showPowerProfile,
56 showPowerProfile=showPowerProfile,
57 XAxisAsTime=XAxisAsTime)
57 XAxisAsTime=XAxisAsTime)
58
58
59 self.graphObjList.append(graphObj)
59 self.graphObjList.append(graphObj)
60
60
61
61
62 def setup(self, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
62 def setup(self, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
63
63
64 nChan = int(self.m_Spectra.m_SystemHeader.numChannels)
64 nChan = int(self.m_Spectra.m_SystemHeader.numChannels)
65 channels = range(nChan)
65 channels = range(nChan)
66
66
67 myXlabel = "Radial Velocity (m/s)"
67 myXlabel = "Radial Velocity (m/s)"
68 myYlabel = "Range (km)"
68 myYlabel = "Range (km)"
69
69
70 for i in channels:
70 for i in channels:
71 if titleList != None:
71 if titleList != None:
72 myTitle = titleList[i]
72 myTitle = titleList[i]
73 myXlabel = xlabelList[i]
73 myXlabel = xlabelList[i]
74 myYlabel = ylabelList[i]
74 myYlabel = ylabelList[i]
75
75
76 if self.m_Spectra.noise != None:
76 if self.m_Spectra.noise != None:
77 noise = '%4.2fdB' %(self.m_Spectra.noise[i])
77 noise = '%4.2fdB' %(self.m_Spectra.noise[i])
78 else:
78 else:
79 noise = '--'
79 noise = '--'
80
80
81 myTitle = "Channel: %d - Noise: %s" %(i, noise)
81 myTitle = "Channel: %d - Noise: %s" %(i, noise)
82
82
83 self.__addGraph(i+1,
83 self.__addGraph(i+1,
84 title=myTitle,
84 title=myTitle,
85 xlabel=myXlabel,
85 xlabel=myXlabel,
86 ylabel=myYlabel,
86 ylabel=myYlabel,
87 showColorbar=showColorbar,
87 showColorbar=showColorbar,
88 showPowerProfile=showPowerProfile,
88 showPowerProfile=showPowerProfile,
89 XAxisAsTime=XAxisAsTime)
89 XAxisAsTime=XAxisAsTime)
90
90
91 self.nGraphs = nChan
91 self.nGraphs = nChan
92 self.__isPlotConfig = True
92 self.__isPlotConfig = True
93
93
94 def iniPlot(self):
94 def iniPlot(self):
95
95
96 nx = int(numpy.sqrt(self.nGraphs)+1)
96 nx = int(numpy.sqrt(self.nGraphs)+1)
97 #ny = int(self.nGraphs/nx)
97 #ny = int(self.nGraphs/nx)
98
98
99 plplot.plsstrm(self.indexPlot)
99 plplot.plsstrm(self.indexPlot)
100 plplot.plsetopt("geometry", "%dx%d" %(300*nx, 240*nx))
100 plplot.plsetopt("geometry", "%dx%d" %(300*nx, 240*nx))
101 plplot.plsdev("xwin")
101 plplot.plsdev("xwin")
102 plplot.plscolbg(255,255,255)
102 plplot.plscolbg(255,255,255)
103 plplot.plscol0(1,0,0,0)
103 plplot.plscol0(1,0,0,0)
104 plplot.plinit()
104 plplot.plinit()
105 plplot.plspause(False)
105 plplot.plspause(False)
106 plplot.pladv(0)
106 plplot.pladv(0)
107 plplot.plssub(nx, nx)
107 plplot.plssub(nx, nx)
108
108
109 self.__nx = nx
109 self.__nx = nx
110 self.__ny = nx
110 self.__ny = nx
111 self.__isPlotIni = True
111 self.__isPlotIni = True
112
112
113
113
114 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
114 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
115
115
116 if not(self.__isPlotConfig):
116 if not(self.__isPlotConfig):
117 self.setup(titleList,
117 self.setup(titleList,
118 xlabelList,
118 xlabelList,
119 ylabelList,
119 ylabelList,
120 showColorbar,
120 showColorbar,
121 showPowerProfile,
121 showPowerProfile,
122 XAxisAsTime)
122 XAxisAsTime)
123
123
124 if not(self.__isPlotIni):
124 if not(self.__isPlotIni):
125 self.iniPlot()
125 self.iniPlot()
126
126
127 plplot.plsstrm(self.indexPlot)
128
127 data = 10.*numpy.log10(self.m_Spectra.data_spc)
129 data = 10.*numpy.log10(self.m_Spectra.data_spc)
128
130
129 nX, nY, nChan = numpy.shape(data)
131 nX, nY, nChan = numpy.shape(data)
130
132
131 x = numpy.arange(nX)
133 x = numpy.arange(nX)
132 y = self.m_Spectra.heights
134 y = self.m_Spectra.heights
133
135
134 thisDatetime = datetime.datetime.fromtimestamp(self.m_Spectra.m_BasicHeader.utc)
136 thisDatetime = datetime.datetime.fromtimestamp(self.m_Spectra.m_BasicHeader.utc)
135 txtDate = "Self Spectra - Date: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
137 txtDate = "Self Spectra - Date: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
136
138
137 if xmin == None: xmin = x[0]
139 if xmin == None: xmin = x[0]
138 if xmax == None: xmax = x[-1]
140 if xmax == None: xmax = x[-1]
139 if ymin == None: ymin = y[0]
141 if ymin == None: ymin = y[0]
140 if ymax == None: ymax = y[-1]
142 if ymax == None: ymax = y[-1]
141 if zmin == None: zmin = numpy.nanmin(abs(data))
143 if zmin == None: zmin = numpy.nanmin(abs(data))
142 if zmax == None: zmax = numpy.nanmax(abs(data))
144 if zmax == None: zmax = numpy.nanmax(abs(data))
143
145
144 plplot.plbop()
146 plplot.plbop()
145
147
146 plplot.plssub(self.__nx, self.__ny)
148 plplot.plssub(self.__nx, self.__ny)
147 for i in range(self.nGraphs):
149 for i in range(self.nGraphs):
148 self.graphObjList[i].iniSubpage()
150 self.graphObjList[i].iniSubpage()
149 self.graphObjList[i].plotData(data[i,:,:],
151 self.graphObjList[i].plotData(data[i,:,:],
150 x,
152 x,
151 y,
153 y,
152 xmin=xmin,
154 xmin=xmin,
153 xmax=xmax,
155 xmax=xmax,
154 ymin=ymin,
156 ymin=ymin,
155 ymax=ymax,
157 ymax=ymax,
156 zmin=zmin,
158 zmin=zmin,
157 zmax=zmax)
159 zmax=zmax)
158
160
159 plplot.plssub(1,0)
161 plplot.plssub(1,0)
160 plplot.pladv(0)
162 plplot.pladv(0)
161 plplot.plvpor(0., 1., 0., 1.)
163 plplot.plvpor(0., 1., 0., 1.)
162 plplot.plmtex("t",-1., 0.5, 0.5, txtDate)
164 plplot.plmtex("t",-1., 0.5, 0.5, txtDate)
163 plplot.plflush()
165 plplot.plflush()
164 plplot.pleop()
166 plplot.pleop()
165
167
166 def end(self):
168 def end(self):
167 plplot.plend()
169 plplot.plend()
168
170
169
171
170 if __name__ == '__main__':
172 if __name__ == '__main__':
171 pass No newline at end of file
173 pass
@@ -1,179 +1,181
1 '''
1 '''
2 Created on Feb 7, 2012
2 Created on Feb 7, 2012
3
3
4 @author $Author$
4 @author $Author$
5 @version $Id$
5 @version $Id$
6 '''
6 '''
7 import os, sys
7 import os, sys
8 import numpy
8 import numpy
9 import plplot
9 import plplot
10
10
11 path = os.path.split(os.getcwd())[0]
11 path = os.path.split(os.getcwd())[0]
12 sys.path.append(path)
12 sys.path.append(path)
13
13
14 from Graphics.BaseGraph import *
14 from Graphics.BaseGraph import *
15 from Model.Voltage import Voltage
15 from Model.Voltage import Voltage
16
16
17 class Osciloscope():
17 class Osciloscope():
18
18
19 def __init__(self, Voltage, index=0):
19 def __init__(self, Voltage, index=0):
20
20
21 """
21 """
22
22
23 Inputs:
23 Inputs:
24
24
25 type: "power" ->> Potencia
25 type: "power" ->> Potencia
26 "iq" ->> Real + Imaginario
26 "iq" ->> Real + Imaginario
27 """
27 """
28
28
29 self.__isPlotConfig = False
29 self.__isPlotConfig = False
30
30
31 self.__isPlotIni = False
31 self.__isPlotIni = False
32
32
33 self.__xrange = None
33 self.__xrange = None
34
34
35 self.__yrange = None
35 self.__yrange = None
36
36
37 self.m_Voltage = None
37 self.m_Voltage = None
38
38
39 self.nGraphs = 0
39 self.nGraphs = 0
40
40
41 self.indexPlot = index
41 self.indexPlot = index
42
42
43 self.graphObjList = []
43 self.graphObjList = []
44
44
45 self.m_Voltage = Voltage
45 self.m_Voltage = Voltage
46
46
47
47
48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", XAxisAsTime=False):
48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", XAxisAsTime=False):
49
49
50 graphObj = LinearPlot()
50 graphObj = LinearPlot()
51 graphObj.setup(subpage, title="", xlabel="", ylabel="", XAxisAsTime=False)
51 graphObj.setup(subpage, title="", xlabel="", ylabel="", XAxisAsTime=False)
52 #graphObj.setScreenPos()
52 #graphObj.setScreenPos()
53
53
54 self.graphObjList.append(graphObj)
54 self.graphObjList.append(graphObj)
55
55
56 del graphObj
56 del graphObj
57
57
58 # def setXRange(self, xmin, xmax):
58 # def setXRange(self, xmin, xmax):
59 # self.__xrange = (xmin, xmax)
59 # self.__xrange = (xmin, xmax)
60 #
60 #
61 # def setYRange(self, ymin, ymax):
61 # def setYRange(self, ymin, ymax):
62 # self.__yrange = (ymin, ymax)
62 # self.__yrange = (ymin, ymax)
63
63
64
64
65 def setup(self, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False):
65 def setup(self, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False):
66
66
67 nChan = int(self.m_Voltage.m_SystemHeader.numChannels)
67 nChan = int(self.m_Voltage.m_SystemHeader.numChannels)
68
68
69 myTitle = ""
69 myTitle = ""
70 myXlabel = ""
70 myXlabel = ""
71 myYlabel = ""
71 myYlabel = ""
72
72
73 for i in range(nChan):
73 for i in range(nChan):
74 if titleList != None:
74 if titleList != None:
75 myTitle = titleList[i]
75 myTitle = titleList[i]
76 myXlabel = xlabelList[i]
76 myXlabel = xlabelList[i]
77 myYlabel = ylabelList[i]
77 myYlabel = ylabelList[i]
78
78
79 self.__addGraph(i+1, title=myTitle, xlabel=myXlabel, ylabel=myYlabel, XAxisAsTime=XAxisAsTime)
79 self.__addGraph(i+1, title=myTitle, xlabel=myXlabel, ylabel=myYlabel, XAxisAsTime=XAxisAsTime)
80
80
81 self.nGraphs = nChan
81 self.nGraphs = nChan
82 self.__isPlotConfig = True
82 self.__isPlotConfig = True
83
83
84 def iniPlot(self):
84 def iniPlot(self):
85
85
86 plplot.plsstrm(self.indexPlot)
86 plplot.plsstrm(self.indexPlot)
87 plplot.plsetopt("geometry", "%dx%d" %(700, 115*self.nGraphs))
87 plplot.plsetopt("geometry", "%dx%d" %(700, 115*self.nGraphs))
88 plplot.plsdev("xwin")
88 plplot.plsdev("xwin")
89 plplot.plscolbg(255,255,255)
89 plplot.plscolbg(255,255,255)
90 plplot.plscol0(1,0,0,0)
90 plplot.plscol0(1,0,0,0)
91 plplot.plinit()
91 plplot.plinit()
92 plplot.plspause(False)
92 plplot.plspause(False)
93 plplot.plssub(1, self.nGraphs)
93 plplot.plssub(1, self.nGraphs)
94
94
95 self.__isPlotIni = True
95 self.__isPlotIni = True
96
96
97 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, idProfile=None, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False, type='iq'):
97 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, idProfile=None, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False, type='iq'):
98
98
99 if idProfile != None and idProfile != self.m_Voltage.idProfile:
99 if idProfile != None and idProfile != self.m_Voltage.idProfile:
100 return
100 return
101
101
102 if not(self.__isPlotConfig):
102 if not(self.__isPlotConfig):
103 self.setup(titleList, xlabelList, ylabelList, XAxisAsTime)
103 self.setup(titleList, xlabelList, ylabelList, XAxisAsTime)
104
104
105 if not(self.__isPlotIni):
105 if not(self.__isPlotIni):
106 self.iniPlot()
106 self.iniPlot()
107
107
108 plplot.plsstrm(self.indexPlot)
109
108 data = self.m_Voltage.data
110 data = self.m_Voltage.data
109
111
110 x = self.m_Voltage.heights
112 x = self.m_Voltage.heights
111
113
112 if xmin == None: xmin = x[0]
114 if xmin == None: xmin = x[0]
113 if xmax == None: xmax = x[-1]
115 if xmax == None: xmax = x[-1]
114 if ymin == None: ymin = numpy.nanmin(abs(data))
116 if ymin == None: ymin = numpy.nanmin(abs(data))
115 if ymax == None: ymax = numpy.nanmax(abs(data))
117 if ymax == None: ymax = numpy.nanmax(abs(data))
116
118
117 plplot.plbop()
119 plplot.plbop()
118 for i in range(self.nGraphs):
120 for i in range(self.nGraphs):
119 y = data[:,i]
121 y = data[:,i]
120
122
121 self.graphObjList[i].iniSubpage()
123 self.graphObjList[i].iniSubpage()
122 self.graphObjList[i].plotComplexData(x, y, xmin, xmax, ymin, ymax, 8, type)
124 self.graphObjList[i].plotComplexData(x, y, xmin, xmax, ymin, ymax, 8, type)
123
125
124 plplot.plflush()
126 plplot.plflush()
125 plplot.pleop()
127 plplot.pleop()
126
128
127 def end(self):
129 def end(self):
128 plplot.plend()
130 plplot.plend()
129
131
130 class VoltagePlot(object):
132 class VoltagePlot(object):
131 '''
133 '''
132 classdocs
134 classdocs
133 '''
135 '''
134
136
135 __m_Voltage = None
137 __m_Voltage = None
136
138
137 def __init__(self, m_Voltage):
139 def __init__(self, m_Voltage):
138 '''
140 '''
139 Constructor
141 Constructor
140 '''
142 '''
141 self.__m_Voltage = m_Voltage
143 self.__m_Voltage = m_Voltage
142
144
143 def setup(self):
145 def setup(self):
144 pass
146 pass
145
147
146 def addGraph(self, type, xrange=None, yrange=None, zrange=None):
148 def addGraph(self, type, xrange=None, yrange=None, zrange=None):
147 pass
149 pass
148
150
149 def plotData(self):
151 def plotData(self):
150 pass
152 pass
151
153
152 if __name__ == '__main__':
154 if __name__ == '__main__':
153
155
154 import numpy
156 import numpy
155
157
156 plplot.plsetopt("geometry", "%dx%d" %(450*2, 200*2))
158 plplot.plsetopt("geometry", "%dx%d" %(450*2, 200*2))
157 plplot.plsdev("xcairo")
159 plplot.plsdev("xcairo")
158 plplot.plscolbg(255,255,255)
160 plplot.plscolbg(255,255,255)
159 plplot.plscol0(1,0,0,0)
161 plplot.plscol0(1,0,0,0)
160 plplot.plinit()
162 plplot.plinit()
161 plplot.plssub(1, 2)
163 plplot.plssub(1, 2)
162
164
163 nx = 64
165 nx = 64
164 ny = 100
166 ny = 100
165
167
166 data = numpy.random.uniform(-50,50,(nx,ny))
168 data = numpy.random.uniform(-50,50,(nx,ny))
167
169
168 baseObj = RTI()
170 baseObj = RTI()
169 baseObj.setup(1, "Spectrum", "Frequency", "Range", "br_green", False, False)
171 baseObj.setup(1, "Spectrum", "Frequency", "Range", "br_green", False, False)
170 baseObj.plotData(data)
172 baseObj.plotData(data)
171
173
172 data = numpy.random.uniform(-50,50,(nx,ny))
174 data = numpy.random.uniform(-50,50,(nx,ny))
173
175
174 base2Obj = RTI()
176 base2Obj = RTI()
175 base2Obj.setup(2, "Spectrum", "Frequency", "Range", "br_green", True, True)
177 base2Obj.setup(2, "Spectrum", "Frequency", "Range", "br_green", True, True)
176 base2Obj.plotData(data)
178 base2Obj.plotData(data)
177
179
178 plplot.plend()
180 plplot.plend()
179 exit(0) No newline at end of file
181 exit(0)
General Comments 0
You need to be logged in to leave comments. Login now