|
|
'''
|
|
|
Created on Feb 7, 2012
|
|
|
|
|
|
@author $Author$
|
|
|
@version $Id$
|
|
|
'''
|
|
|
|
|
|
import numpy
|
|
|
import os
|
|
|
import sys
|
|
|
import plplot
|
|
|
import datetime
|
|
|
|
|
|
path = os.path.split(os.getcwd())[0]
|
|
|
sys.path.append(path)
|
|
|
|
|
|
from Graphics.BaseGraph import *
|
|
|
from Model.Spectra import Spectra
|
|
|
|
|
|
class Spectrum:
|
|
|
colorplotObj = None
|
|
|
|
|
|
def __init__(self, spectraObj, index):
|
|
|
self.__isPlotConfig = False
|
|
|
self.__isPlotIni = False
|
|
|
self.__xrange = None
|
|
|
self.__yrange = None
|
|
|
self.nsubplots = 0
|
|
|
self.indexPlot = index
|
|
|
self.spectraObj = spectraObj
|
|
|
|
|
|
def setup(self,indexPlot, nsubplots, winTitle='', colormap="br_green", showColorbar=False, showPowerProfile=False, XAxisAsTime=False):
|
|
|
"""
|
|
|
Crea un objeto colorPlot con las opciones seleccinoadas
|
|
|
"""
|
|
|
|
|
|
self.nsubplots = nsubplots
|
|
|
self.colorplotObj = PcolorPlot(indexPlot,
|
|
|
nsubplots,
|
|
|
winTitle,
|
|
|
colormap,
|
|
|
showColorbar,
|
|
|
showPowerProfile,
|
|
|
XAxisAsTime)
|
|
|
|
|
|
def createObjects(self,xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList):
|
|
|
"""
|
|
|
Configura cada subplot con los valores maximos y minimos incluyendo los subtitulos
|
|
|
"""
|
|
|
|
|
|
for index in range(self.nsubplots):
|
|
|
title = titleList[index]
|
|
|
xlabel = xlabelList[index]
|
|
|
ylabel = ylabelList[index]
|
|
|
subplot = index
|
|
|
self.colorplotObj.createObjects(subplot+1,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel)
|
|
|
|
|
|
def initPlot(self):
|
|
|
"""
|
|
|
Configura cada subplot con los valores maximos y minimos incluyendo los subtitulos
|
|
|
"""
|
|
|
|
|
|
|
|
|
for index in range(self.nsubplots):
|
|
|
subplot = index
|
|
|
self.colorplotObj.iniPlot(subplot+1)
|
|
|
|
|
|
|
|
|
def plotData(self,
|
|
|
xmin=None,
|
|
|
xmax=None,
|
|
|
ymin=None,
|
|
|
ymax=None,
|
|
|
zmin=None,
|
|
|
zmax=None,
|
|
|
titleList=None,
|
|
|
xlabelList=None,
|
|
|
ylabelList=None,
|
|
|
winTitle='',
|
|
|
colormap = "br_green",
|
|
|
showColorbar = True,
|
|
|
showPowerProfile = True,
|
|
|
XAxisAsTime = False,
|
|
|
save = False,
|
|
|
channelList=[]):
|
|
|
|
|
|
if channelList == []:
|
|
|
channelList = numpy.arange(self.spectraObj.nChannels)
|
|
|
|
|
|
|
|
|
nsubplots = len(channelList)
|
|
|
nX = self.spectraObj.nFFTPoints
|
|
|
nY = self.spectraObj.nHeights
|
|
|
|
|
|
if self.spectraObj.noise == None:
|
|
|
noise = numpy.ones(nsubplots)
|
|
|
else:
|
|
|
noise = 10.*numpy.log10(self.spectraObj.noise[channelList])
|
|
|
|
|
|
datadB = 10.*numpy.log10(self.spectraObj.data_spc[channelList,:,:])
|
|
|
noisedB = 10.*numpy.log10(noise)
|
|
|
|
|
|
x = numpy.arange(nX)
|
|
|
y = self.spectraObj.heightList
|
|
|
|
|
|
indexPlot = self.indexPlot
|
|
|
|
|
|
if not(self.__isPlotConfig):
|
|
|
self.setup(indexPlot,
|
|
|
nsubplots,
|
|
|
winTitle,
|
|
|
colormap,
|
|
|
showColorbar,
|
|
|
showPowerProfile,
|
|
|
XAxisAsTime)
|
|
|
|
|
|
|
|
|
self.__isPlotConfig = True
|
|
|
|
|
|
if not(self.__isPlotIni):
|
|
|
if titleList == None:
|
|
|
titleList = []
|
|
|
for i in range(nsubplots):
|
|
|
titleList.append("Channel: %d - Noise: %.2f" %(i, noise[i]))
|
|
|
|
|
|
if xlabelList == None:
|
|
|
xlabelList = []
|
|
|
for i in range(nsubplots):
|
|
|
xlabelList.append("")
|
|
|
|
|
|
if ylabelList == None:
|
|
|
ylabelList = []
|
|
|
for i in range(nsubplots):
|
|
|
ylabelList.append("Range (Km)")
|
|
|
|
|
|
if xmin == None: xmin = x[0]
|
|
|
if xmax == None: xmax = x[-1]
|
|
|
if ymin == None: ymin = y[0]
|
|
|
if ymax == None: ymax = y[-1]
|
|
|
if zmin == None: zmin = datadB.min()
|
|
|
if zmax == None: zmax = datadB.max()
|
|
|
|
|
|
self.createObjects(xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList)
|
|
|
self.__isPlotIni = True
|
|
|
|
|
|
thisDatetime = datetime.datetime.fromtimestamp(self.spectraObj.m_BasicHeader.utc)
|
|
|
pltitle = "Self Spectra - Date: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
|
|
|
|
|
|
self.colorplotObj.setFigure(indexPlot)
|
|
|
self.colorplotObj.setNewPage(pltitle)
|
|
|
self.initPlot()
|
|
|
|
|
|
for channel in range(nsubplots):
|
|
|
data = datadB[channel,:,:]
|
|
|
subtitle = "Channel: %d - Noise: %.2f" %(channel, noise[channel])
|
|
|
self.colorplotObj.plot(channel+1, x, y, data, subtitle)
|
|
|
|
|
|
self.colorplotObj.refresh()
|
|
|
|
|
|
if save:
|
|
|
self.colorplotObj.setFigure(indexPlot)
|
|
|
path = "/home/roj-idl71/tmp/"
|
|
|
now = datetime.datetime.now().timetuple()
|
|
|
file = "spc_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)
|
|
|
|
|
|
self.colorplotObj.closePage()
|
|
|
|
|
|
|
|
|
|