jroplot_voltage.py
295 lines
| 9.9 KiB
| text/x-python
|
PythonLexer
|
r487 | ''' | ||
|
r568 | Created on Jul 9, 2014 | ||
|
r487 | |||
|
r568 | @author: roj-idl71 | ||
''' | ||||
import os | ||||
|
r487 | import datetime | ||
import numpy | ||||
|
r1173 | from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation, MPDecorator #YONG | ||
from schainpy.utils import log | ||||
|
r1167 | from .figure import Figure | ||
|
r487 | |||
|
r1173 | |||
@MPDecorator | ||||
|
r1187 | class Scope_(Figure): | ||
r1282 | ||||
|
r487 | isConfig = None | ||
r1282 | ||||
|
r1173 | def __init__(self):#, **kwargs): #YONG | ||
Figure.__init__(self)#, **kwargs) | ||||
|
r487 | self.isConfig = False | ||
self.WIDTH = 300 | ||||
self.HEIGHT = 200 | ||||
self.counter_imagwr = 0 | ||||
r1282 | ||||
|
r487 | def getSubplots(self): | ||
r1282 | ||||
|
r487 | nrow = self.nplots | ||
ncol = 3 | ||||
return nrow, ncol | ||||
r1282 | ||||
|
r487 | def setup(self, id, nplots, wintitle, show): | ||
r1282 | ||||
|
r487 | self.nplots = nplots | ||
r1282 | ||||
self.createFigure(id=id, | ||||
wintitle=wintitle, | ||||
|
r487 | show=show) | ||
r1282 | ||||
|
r487 | nrow,ncol = self.getSubplots() | ||
colspan = 3 | ||||
rowspan = 1 | ||||
r1282 | ||||
|
r487 | for i in range(nplots): | ||
self.addAxes(nrow, ncol, i, 0, colspan, rowspan) | ||||
r1282 | ||||
|
r487 | def plot_iq(self, x, y, id, channelIndexList, thisDatetime, wintitle, show, xmin, xmax, ymin, ymax): | ||
yreal = y[channelIndexList,:].real | ||||
yimag = y[channelIndexList,:].imag | ||||
r1282 | ||||
|
r487 | title = wintitle + " Scope: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S")) | ||
xlabel = "Range (Km)" | ||||
ylabel = "Intensity - IQ" | ||||
r1282 | ||||
|
r487 | if not self.isConfig: | ||
nplots = len(channelIndexList) | ||||
r1282 | ||||
|
r487 | self.setup(id=id, | ||
nplots=nplots, | ||||
wintitle='', | ||||
show=show) | ||||
r1282 | ||||
|
r487 | if xmin == None: xmin = numpy.nanmin(x) | ||
if xmax == None: xmax = numpy.nanmax(x) | ||||
if ymin == None: ymin = min(numpy.nanmin(yreal),numpy.nanmin(yimag)) | ||||
if ymax == None: ymax = max(numpy.nanmax(yreal),numpy.nanmax(yimag)) | ||||
r1282 | ||||
|
r487 | self.isConfig = True | ||
r1282 | ||||
|
r487 | self.setWinTitle(title) | ||
r1282 | ||||
|
r487 | for i in range(len(self.axesList)): | ||
title = "Channel %d" %(i) | ||||
axes = self.axesList[i] | ||||
axes.pline(x, yreal[i,:], | ||||
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, | ||||
xlabel=xlabel, ylabel=ylabel, title=title) | ||||
axes.addpline(x, yimag[i,:], idline=1, color="red", linestyle="solid", lw=2) | ||||
r1282 | ||||
|
r487 | def plot_power(self, x, y, id, channelIndexList, thisDatetime, wintitle, show, xmin, xmax, ymin, ymax): | ||
y = y[channelIndexList,:] * numpy.conjugate(y[channelIndexList,:]) | ||||
yreal = y.real | ||||
r1282 | ||||
|
r487 | title = wintitle + " Scope: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S")) | ||
xlabel = "Range (Km)" | ||||
ylabel = "Intensity" | ||||
r1282 | ||||
|
r487 | if not self.isConfig: | ||
nplots = len(channelIndexList) | ||||
r1282 | ||||
|
r487 | self.setup(id=id, | ||
nplots=nplots, | ||||
wintitle='', | ||||
show=show) | ||||
r1282 | ||||
|
r487 | if xmin == None: xmin = numpy.nanmin(x) | ||
if xmax == None: xmax = numpy.nanmax(x) | ||||
if ymin == None: ymin = numpy.nanmin(yreal) | ||||
if ymax == None: ymax = numpy.nanmax(yreal) | ||||
r1282 | ||||
|
r487 | self.isConfig = True | ||
r1282 | ||||
|
r487 | self.setWinTitle(title) | ||
r1282 | ||||
|
r487 | for i in range(len(self.axesList)): | ||
title = "Channel %d" %(i) | ||||
axes = self.axesList[i] | ||||
ychannel = yreal[i,:] | ||||
axes.pline(x, ychannel, | ||||
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, | ||||
xlabel=xlabel, ylabel=ylabel, title=title) | ||||
r1282 | def plot_weatherpower(self, x, y, id, channelIndexList, thisDatetime, wintitle, show, xmin, xmax, ymin, ymax): | |||
y = y[channelIndexList,:] | ||||
yreal = y | ||||
title = wintitle + " Scope: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S")) | ||||
xlabel = "Range (Km)" | ||||
ylabel = "Intensity" | ||||
if not self.isConfig: | ||||
nplots = len(channelIndexList) | ||||
self.setup(id=id, | ||||
nplots=nplots, | ||||
wintitle='', | ||||
show=show) | ||||
if xmin == None: xmin = numpy.nanmin(x) | ||||
if xmax == None: xmax = numpy.nanmax(x) | ||||
if ymin == None: ymin = numpy.nanmin(yreal) | ||||
if ymax == None: ymax = numpy.nanmax(yreal) | ||||
self.isConfig = True | ||||
self.setWinTitle(title) | ||||
for i in range(len(self.axesList)): | ||||
title = "Channel %d" %(i) | ||||
axes = self.axesList[i] | ||||
ychannel = yreal[i,:] | ||||
axes.pline(x, ychannel, | ||||
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, | ||||
xlabel=xlabel, ylabel=ylabel, title=title) | ||||
|
r487 | def run(self, dataOut, id, wintitle="", channelList=None, | ||
xmin=None, xmax=None, ymin=None, ymax=None, save=False, | ||||
figpath='./', figfile=None, show=True, wr_period=1, | ||||
|
r973 | ftp=False, server=None, folder=None, username=None, password=None, type='power', **kwargs): | ||
r1282 | ||||
|
r487 | """ | ||
r1282 | ||||
|
r487 | Input: | ||
dataOut : | ||||
id : | ||||
wintitle : | ||||
channelList : | ||||
xmin : None, | ||||
xmax : None, | ||||
ymin : None, | ||||
ymax : None, | ||||
""" | ||||
r1282 | if dataOut.flagNoData: | |||
|
r1173 | return dataOut | ||
r1282 | ||||
|
r487 | if channelList == None: | ||
channelIndexList = dataOut.channelIndexList | ||||
else: | ||||
channelIndexList = [] | ||||
for channel in channelList: | ||||
if channel not in dataOut.channelList: | ||||
|
r1167 | raise ValueError("Channel %d is not in dataOut.channelList") | ||
|
r487 | channelIndexList.append(dataOut.channelList.index(channel)) | ||
r1282 | ||||
|
r568 | thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0]) | ||
r1290 | #print("***************** PLOTEO **************************") | |||
#print(dataOut.nProfiles) | ||||
#print(dataOut.heightList.shape) | ||||
#print(dataOut.data.shape) | ||||
|
r742 | if dataOut.flagDataAsBlock: | ||
r1282 | ||||
|
r742 | for i in range(dataOut.nProfiles): | ||
r1282 | ||||
|
r742 | wintitle1 = wintitle + " [Profile = %d] " %i | ||
r1282 | ||||
|
r742 | if type == "power": | ||
r1282 | self.plot_power(dataOut.heightList, | |||
|
r742 | dataOut.data[:,i,:], | ||
r1282 | id, | |||
channelIndexList, | ||||
|
r742 | thisDatetime, | ||
wintitle1, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
r1282 | ||||
if type == "weatherpower": | ||||
self.plot_weatherpower(dataOut.heightList, | ||||
dataOut.data[:,i,:], | ||||
id, | ||||
channelIndexList, | ||||
thisDatetime, | ||||
wintitle1, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
if type == "weathervelocity": | ||||
self.plot_weatherpower(dataOut.heightList, | ||||
dataOut.data_velocity[:,i,:], | ||||
id, | ||||
channelIndexList, | ||||
thisDatetime, | ||||
wintitle1, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
|
r742 | if type == "iq": | ||
r1282 | self.plot_iq(dataOut.heightList, | |||
|
r742 | dataOut.data[:,i,:], | ||
r1282 | id, | |||
channelIndexList, | ||||
|
r742 | thisDatetime, | ||
wintitle1, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
r1282 | ||||
|
r742 | self.draw() | ||
r1282 | ||||
|
r774 | str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S") | ||
figfile = self.getFilename(name = str_datetime) + "_" + str(i) | ||||
r1282 | ||||
|
r774 | self.save(figpath=figpath, | ||
figfile=figfile, | ||||
save=save, | ||||
ftp=ftp, | ||||
wr_period=wr_period, | ||||
thisDatetime=thisDatetime) | ||||
r1282 | ||||
|
r742 | else: | ||
wintitle += " [Profile = %d] " %dataOut.profileIndex | ||||
r1282 | ||||
|
r742 | if type == "power": | ||
r1282 | self.plot_power(dataOut.heightList, | |||
|
r742 | dataOut.data, | ||
r1282 | id, | |||
channelIndexList, | ||||
|
r742 | thisDatetime, | ||
wintitle, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
r1282 | ||||
|
r742 | if type == "iq": | ||
r1282 | self.plot_iq(dataOut.heightList, | |||
|
r742 | dataOut.data, | ||
r1282 | id, | |||
channelIndexList, | ||||
|
r742 | thisDatetime, | ||
wintitle, | ||||
show, | ||||
xmin, | ||||
xmax, | ||||
ymin, | ||||
ymax) | ||||
r1282 | ||||
|
r487 | self.draw() | ||
r1282 | ||||
|
r774 | str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S") + "_" + str(dataOut.profileIndex) | ||
r1282 | figfile = self.getFilename(name = str_datetime) | |||
|
r573 | self.save(figpath=figpath, | ||
figfile=figfile, | ||||
save=save, | ||||
ftp=ftp, | ||||
wr_period=wr_period, | ||||
|
r1173 | thisDatetime=thisDatetime) | ||
r1282 | return dataOut | |||