##// END OF EJS Templates
Time-window option added to GUI
Time-window option added to GUI

File last commit:

r806:e06d705cf5fd
r816:66f9c3c86dfe
Show More
jroplot_heispectra.py
328 lines | 10.5 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
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 os
import datetime
import numpy
from figure import Figure, isRealtime
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789 from plotting_codes import *
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 SpectraHeisScope(Figure):
isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'spc'
def __init__(self):
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 230
self.HEIGHT = 250
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789 self.PLOT_CODE = SPEC_CODE
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 def getSubplots(self):
ncol = int(numpy.sqrt(self.nplots)+0.9)
nrow = int(self.nplots*1./ncol + 0.9)
return nrow, ncol
def setup(self, id, nplots, wintitle, show):
showprofile = False
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 1
colspan = 1
if showprofile:
ncolspan = 3
colspan = 2
self.__nsubplots = 2
self.createFigure(id = id,
wintitle = wintitle,
widthplot = self.WIDTH + self.WIDTHPROF,
heightplot = self.HEIGHT + self.HEIGHTPROF,
show = show)
nrow, ncol = self.getSubplots()
counter = 0
for y in range(nrow):
for x in range(ncol):
if counter >= self.nplots:
break
self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan, colspan, 1)
if showprofile:
self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan+colspan, 1, 1)
counter += 1
def run(self, dataOut, id, wintitle="", channelList=None,
xmin=None, xmax=None, ymin=None, ymax=None, save=False,
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 figpath='./', figfile=None, ftp=False, wr_period=1, show=True,
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=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
"""
Input:
dataOut :
id :
wintitle :
channelList :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
"""
if dataOut.realtime:
if not(isRealtime(utcdatatime = dataOut.utctime)):
print 'Skipping this plot function'
return
if channelList == None:
channelIndexList = dataOut.channelIndexList
else:
channelIndexList = []
for channel in channelList:
if channel not in dataOut.channelList:
raise ValueError, "Channel %d is not in dataOut.channelList"
channelIndexList.append(dataOut.channelList.index(channel))
# x = dataOut.heightList
c = 3E8
deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
#deberia cambiar para el caso de 1Mhz y 100KHz
x = numpy.arange(-1*dataOut.nHeights/2.,dataOut.nHeights/2.)*(c/(2*deltaHeight*dataOut.nHeights*1000))
#para 1Mhz descomentar la siguiente linea
#x= x/(10000.0)
# y = dataOut.data[channelIndexList,:] * numpy.conjugate(dataOut.data[channelIndexList,:])
# y = y.real
Daniel Valdez
The Spectra-1d Plot shows the normalized power.
r496 factor = dataOut.normFactor
data = dataOut.data_spc / factor
datadB = 10.*numpy.log10(data)
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 y = datadB
#thisDatetime = dataOut.datatime
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 title = wintitle + " Scope: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
xlabel = ""
#para 1Mhz descomentar la siguiente linea
#xlabel = "Frequency x 10000"
ylabel = "Intensity (dB)"
if not self.isConfig:
nplots = len(channelIndexList)
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
show=show)
if xmin == None: xmin = numpy.nanmin(x)
if xmax == None: xmax = numpy.nanmax(x)
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
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 = True
self.setWinTitle(title)
for i in range(len(self.axesList)):
ychannel = y[i,:]
str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
Miguel Valdez
SpectraHeisScope: show the right channel on figures
r649 title = "Channel %d: %4.2fdB: %s" %(dataOut.channelList[channelIndexList[i]], numpy.max(ychannel), str_datetime)
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 axes = self.axesList[i]
axes.pline(x, ychannel,
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax,
xlabel=xlabel, ylabel=ylabel, title=title, grid='both')
self.draw()
Daniel Valdez
Fixing PNG File Storage...
r494
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,
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
class RTIfromSpectraHeis(Figure):
isConfig = None
__nsubplots = None
PREFIX = 'rtinoise'
def __init__(self):
self.timerange = 24*60*60
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 820
self.HEIGHT = 200
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
self.xdata = None
self.ydata = None
Daniel Valdez
Fixing PNG File Storage...
r494 self.figfile = None
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
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789 self.PLOT_CODE = RTI_CODE
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 def getSubplots(self):
ncol = 1
nrow = 1
return nrow, ncol
def setup(self, id, nplots, wintitle, showprofile=True, show=True):
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 7
colspan = 6
self.__nsubplots = 2
self.createFigure(id = id,
wintitle = wintitle,
widthplot = self.WIDTH+self.WIDTHPROF,
heightplot = self.HEIGHT+self.HEIGHTPROF,
show = show)
nrow, ncol = self.getSubplots()
self.addAxes(nrow, ncol*ncolspan, 0, 0, colspan, 1)
def run(self, dataOut, id, wintitle="", channelList=None, showprofile='True',
xmin=None, xmax=None, ymin=None, ymax=None,
timerange=None,
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 save=False, figpath='./', figfile=None, ftp=False, wr_period=1, show=True,
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=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
if channelList == None:
channelIndexList = dataOut.channelIndexList
channelList = dataOut.channelList
else:
channelIndexList = []
for channel in channelList:
if channel not in dataOut.channelList:
raise ValueError, "Channel %d is not in dataOut.channelList"
channelIndexList.append(dataOut.channelList.index(channel))
if timerange != None:
self.timerange = timerange
x = dataOut.getTimeRange()
y = dataOut.getHeiRange()
Daniel Valdez
The RTI for Spectra-1d Plot shows the normalized power.
r498 factor = dataOut.normFactor
data = dataOut.data_spc / factor
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 data = numpy.average(data,axis=1)
datadB = 10*numpy.log10(data)
# factor = dataOut.normFactor
# noise = dataOut.getNoise()/factor
# noisedB = 10*numpy.log10(noise)
#thisDatetime = dataOut.datatime
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 title = wintitle + " RTI: %s" %(thisDatetime.strftime("%d-%b-%Y"))
xlabel = "Local Time"
ylabel = "Intensity (dB)"
if not self.isConfig:
nplots = 1
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r792 self.tmin, self.tmax = self.getTimeLim(x, xmin, xmax)
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 ymin == None: ymin = numpy.nanmin(datadB)
if ymax == None: ymax = numpy.nanmax(datadB)
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
self.isConfig = True
Daniel Valdez
Fixing PNG File Storage...
r494 self.figfile = figfile
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.xdata = numpy.array([])
self.ydata = numpy.array([])
Ivan Valdez
Bug fixed: PLOT_CODE was not defined for HeisSpectra
r789
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
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.setWinTitle(title)
# title = "RTI %s" %(thisDatetime.strftime("%d-%b-%Y"))
title = "RTI - %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
legendlabels = ["channel %d"%idchannel for idchannel in channelList]
axes = self.axesList[0]
self.xdata = numpy.hstack((self.xdata, x[0:1]))
if len(self.ydata)==0:
self.ydata = datadB[channelIndexList].reshape(-1,1)
else:
self.ydata = numpy.hstack((self.ydata, datadB[channelIndexList].reshape(-1,1)))
axes.pmultilineyaxis(x=self.xdata, y=self.ydata,
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r792 xmin=self.tmin, xmax=self.tmax, ymin=ymin, ymax=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 xlabel=xlabel, ylabel=ylabel, title=title, legendlabels=legendlabels, marker='.', markersize=8, linestyle="solid", grid='both',
XAxisAsTime=True
)
self.draw()
Ivan Valdez
Bug fixed: RTI Spectra Fits
r806 update_figfile = False
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r792 if dataOut.ltctime >= self.tmax:
Daniel Valdez
Fixing PNG File Storage...
r494 self.counter_imagwr = wr_period
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r792 update_figfile = True
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
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,
thisDatetime=thisDatetime,
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r792 update_figfile=update_figfile)