##// END OF EJS Templates
AMISR Reader integration with Signal Chain Blocks, this time just only for Voltages to Profile Selection and Plotting Scope(Power,IQ) and Power Profile(dB). There is thwo python scripts as experiment's test.
AMISR Reader integration with Signal Chain Blocks, this time just only for Voltages to Profile Selection and Plotting Scope(Power,IQ) and Power Profile(dB). There is thwo python scripts as experiment's test.

File last commit:

r169:661bb8af254a
r474:e3c42f4268a9
Show More
VoltagePlot.py
199 lines | 6.9 KiB | text/x-python | PythonLexer
'''
Created on Feb 7, 2012
@author $Author$
@version $Id$
'''
import numpy
import os
import sys
path = os.path.split(os.getcwd())[0]
sys.path.append(path)
from Graphics.BaseGraph import *
from Model.Voltage import Voltage
class Osciloscope:
linearplotObj = None
def __init__(self, Voltage, index):
self.__isPlotConfig = False
self.__isPlotIni = False
self.__xrange = None
self.__yrange = None
self.indexPlot = index
self.voltageObj = Voltage
def setup(self,indexPlot,nsubplot,winTitle=''):
self.linearplotObj = LinearPlot(indexPlot,nsubplot,winTitle)
def initPlot(self,xmin,xmax,ymin,ymax,titleList,xlabelList,ylabelList):
nsubplot = self.voltageObj.nChannels
for index in range(nsubplot):
title = titleList[index]
xlabel = xlabelList[index]
ylabel = ylabelList[index]
subplot = index
self.linearplotObj.setup(subplot+1,xmin,xmax,ymin,ymax,title,xlabel,ylabel)
def plotData(self,
xmin=None,
xmax=None,
ymin=None,
ymax=None,
titleList=None,
xlabelList=None,
ylabelList=None,
winTitle='',
type="power"):
databuffer = self.voltageObj.data
height = self.voltageObj.heightList
nsubplot = self.voltageObj.nChannels
indexPlot = self.indexPlot
if not(self.__isPlotConfig):
self.setup(indexPlot,nsubplot,winTitle)
self.__isPlotConfig = True
if not(self.__isPlotIni):
if titleList == None:
titleList = []
thisDatetime = datetime.datetime.fromtimestamp(self.voltageObj.m_BasicHeader.utc)
txtdate = "Date: %s" %(thisDatetime.strftime("%d-%b-%Y"))
for i in range(nsubplot):
titleList.append("Channel: %d %s" %(i, txtdate))
if xlabelList == None:
xlabelList = []
for i in range(nsubplot):
xlabelList.append("")
if ylabelList == None:
ylabelList = []
for i in range(nsubplot):
ylabelList.append("")
if xmin == None: xmin = height[0]
if xmax == None: xmax = height[-1]
if ymin == None: ymin = numpy.nanmin(abs(databuffer))
if ymax == None: ymax = numpy.nanmax(abs(databuffer))
self.initPlot(xmin,xmax,ymin,ymax,titleList,xlabelList,ylabelList)
self.__isPlotIni = True
self.linearplotObj.setFigure(indexPlot)
for index in range(nsubplot):
data = databuffer[index,:]
self.linearplotObj.plot(subplot=index+1,x=height,y=data,type=type)
self.linearplotObj.refresh()
class RTI:
colorplotObj = None
def __init__(self, Voltage, index):
self.__isPlotConfig = False
self.__isPlotIni = False
self.__xrange = None
self.__yrange = None
self.indexPlot = index
self.voltageObj = Voltage
def setup(self,indexPlot,nsubplot,winTitle='',colormap="br_green",showColorbar=False,showPowerProfile=False,XAxisAsTime=False):
self.colorplotObj = RtiPlot(indexPlot,nsubplot,winTitle,colormap,showColorbar,showPowerProfile,XAxisAsTime)
def initPlot(self,xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList,timezone,npoints):
nsubplot = self.voltageObj.nChannels
timedata = self.voltageObj.m_BasicHeader.utc
for index in range(nsubplot):
title = titleList[index]
xlabel = xlabelList[index]
ylabel = ylabelList[index]
subplot = index
self.colorplotObj.setup(subplot+1,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel,timedata,timezone,npoints)
def plotData(self,
xmin=None,
xmax=None,
ymin=None,
ymax=None,
zmin=None,
zmax=None,
titleList=None,
xlabelList=None,
ylabelList=None,
winTitle='',
timezone='lt',
npoints=1000.0,
colormap="br_green",
showColorbar=True,
showPowerProfile=True,
XAxisAsTime=True,
save = False):
databuffer = self.voltageObj.data
timedata = self.voltageObj.m_BasicHeader.utc
height = self.voltageObj.heightList
nsubplot = self.voltageObj.nChannels
indexPlot = self.indexPlot
if not(self.__isPlotConfig):
self.setup(indexPlot,nsubplot,winTitle,colormap,showColorbar,showPowerProfile,XAxisAsTime)
self.__isPlotConfig = True
if not(self.__isPlotIni):
if titleList == None:
titleList = []
thisDatetime = datetime.datetime.fromtimestamp(timedata)
txtdate = "Date: %s" %(thisDatetime.strftime("%d-%b-%Y"))
for i in range(nsubplot):
titleList.append("Channel: %d %s" %(i, txtdate))
if xlabelList == None:
xlabelList = []
for i in range(nsubplot):
xlabelList.append("")
if ylabelList == None:
ylabelList = []
for i in range(nsubplot):
ylabelList.append("")
if xmin == None: xmin = 0
if xmax == None: xmax = 23
if ymin == None: ymin = min(self.voltageObj.heightList)
if ymax == None: ymax = max(self.voltageObj.heightList)
if zmin == None: zmin = 0
if zmax == None: zmax = 50
self.initPlot(xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList,timezone,npoints)
self.__isPlotIni = True
self.colorplotObj.setFigure(indexPlot)
if timezone == 'lt':
timedata = timedata - time.timezone
for index in range(nsubplot):
data = databuffer[index,:]
self.colorplotObj.plot(subplot=index+1,x=timedata,y=height,z=data)
self.colorplotObj.refresh()
if save:
self.colorplotObj.setFigure(indexPlot)
path = "/Users/jro/Pictures"
now = datetime.datetime.now().timetuple()
file = "rti_img%02d_%03d_%02d%02d%02d.png"%(indexPlot,now[7],now[3],now[4],now[5])
filename = os.path.join(path,file)
self.colorplotObj.savePlot(indexPlot, filename)