|
|
'''
|
|
|
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):
|
|
|
|
|
|
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()
|
|
|
|