##// END OF EJS Templates
Review last commit
Review last commit

File last commit:

r1179:6414333e2ace
r1186:29f68a738921 merge
Show More
jroplot_voltage.py
231 lines | 7.9 KiB | text/x-python | PythonLexer
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 '''
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 Created on Jul 9, 2014
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 @author: roj-idl71
'''
import os
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 import datetime
import numpy
George Yong
Multiprocessing for voltage (all operations) working
r1173 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation, MPDecorator #YONG
from schainpy.utils import log
George Yong
Python 2to3, Spectra (all operations) working
r1167 from .figure import Figure
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
George Yong
Multiprocessing for voltage (all operations) working
r1173
@MPDecorator
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 class Scope(Figure):
isConfig = None
George Yong
Multiprocessing for voltage (all operations) working
r1173 def __init__(self):#, **kwargs): #YONG
Figure.__init__(self)#, **kwargs)
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 self.isConfig = False
self.WIDTH = 300
self.HEIGHT = 200
self.counter_imagwr = 0
def getSubplots(self):
nrow = self.nplots
ncol = 3
return nrow, ncol
def setup(self, id, nplots, wintitle, show):
self.nplots = nplots
self.createFigure(id=id,
wintitle=wintitle,
show=show)
nrow,ncol = self.getSubplots()
colspan = 3
rowspan = 1
for i in range(nplots):
self.addAxes(nrow, ncol, i, 0, colspan, rowspan)
def plot_iq(self, x, y, id, channelIndexList, thisDatetime, wintitle, show, xmin, xmax, ymin, ymax):
yreal = y[channelIndexList,:].real
yimag = y[channelIndexList,:].imag
title = wintitle + " Scope: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
xlabel = "Range (Km)"
ylabel = "Intensity - IQ"
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 = min(numpy.nanmin(yreal),numpy.nanmin(yimag))
if ymax == None: ymax = max(numpy.nanmax(yreal),numpy.nanmax(yimag))
self.isConfig = True
self.setWinTitle(title)
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)
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
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)
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,
Jose Chavez
voltage DigitalRFReader funcionando
r973 ftp=False, server=None, folder=None, username=None, password=None, type='power', **kwargs):
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
"""
Input:
dataOut :
id :
wintitle :
channelList :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
"""
George Yong
Multiprocessing for voltage (all operations) working
r1173 if dataOut.flagNoData:
return dataOut
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
if channelList == None:
channelIndexList = dataOut.channelIndexList
else:
channelIndexList = []
for channel in channelList:
if channel not in dataOut.channelList:
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError("Channel %d is not in dataOut.channelList")
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 channelIndexList.append(dataOut.channelList.index(channel))
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0])
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
Miguel Valdez
jroplot_voltage.py: New feature added. Support for plotting voltages when getByBlock is set.
r742 if dataOut.flagDataAsBlock:
for i in range(dataOut.nProfiles):
wintitle1 = wintitle + " [Profile = %d] " %i
if type == "power":
self.plot_power(dataOut.heightList,
dataOut.data[:,i,:],
id,
channelIndexList,
thisDatetime,
wintitle1,
show,
xmin,
xmax,
ymin,
ymax)
if type == "iq":
self.plot_iq(dataOut.heightList,
dataOut.data[:,i,:],
id,
channelIndexList,
thisDatetime,
wintitle1,
show,
xmin,
xmax,
ymin,
ymax)
self.draw()
Miguel Valdez
jroplot_voltage: saving every profile
r774
str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S")
figfile = self.getFilename(name = str_datetime) + "_" + str(i)
self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
thisDatetime=thisDatetime)
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
Miguel Valdez
jroplot_voltage.py: New feature added. Support for plotting voltages when getByBlock is set.
r742 else:
wintitle += " [Profile = %d] " %dataOut.profileIndex
if type == "power":
self.plot_power(dataOut.heightList,
dataOut.data,
id,
channelIndexList,
thisDatetime,
wintitle,
show,
xmin,
xmax,
ymin,
ymax)
if type == "iq":
self.plot_iq(dataOut.heightList,
dataOut.data,
id,
channelIndexList,
thisDatetime,
wintitle,
show,
xmin,
xmax,
ymin,
ymax)
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487
self.draw()
Miguel Valdez
jroplot_voltage: saving every profile
r774
str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S") + "_" + str(dataOut.profileIndex)
figfile = self.getFilename(name = str_datetime)
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
George Yong
Multiprocessing for voltage (all operations) working
r1173 thisDatetime=thisDatetime)
George Yong
Multiprocessing for writing Units(Spectral, Voltage and Parameters)
r1179 return dataOut