##// END OF EJS Templates
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled

File last commit:

r860:5c2852893069
r860:5c2852893069
Show More
jroplot_parameters.py
1951 lines | 64.4 KiB | text/x-python | PythonLexer
Julio Valdez
Processing Modules added:...
r502 import os
import datetime
import numpy
Julio Valdez
-Parameters Plot corrected...
r832 from figure import Figure, isRealtime, isTimeInHourRange
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 from plotting_codes import *
Julio Valdez
Processing Modules added:...
r502
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 import matplotlib.pyplot as plt
Julio Valdez
Processing Modules added:...
r502 class MomentsPlot(Figure):
isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'prm'
def __init__(self):
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 280
self.HEIGHT = 250
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.PLOT_CODE = MOMENTS_CODE
Julio Valdez
Processing Modules added:...
r502 self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
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, showprofile=True, show=True):
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, showprofile=True,
xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None,
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1,
Julio Valdez
Processing Modules added:...
r502 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
if dataOut.flagNoData:
return None
if 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))
factor = dataOut.normFactor
Julio Valdez
-Functional HDF5 file writer unit...
r543 x = dataOut.abscissaList
y = dataOut.heightList
Julio Valdez
Processing Modules added:...
r502
z = dataOut.data_pre[channelIndexList,:,:]/factor
z = numpy.where(numpy.isfinite(z), z, numpy.NAN)
avg = numpy.average(z, axis=1)
noise = dataOut.noise/factor
zdB = 10*numpy.log10(z)
avgdB = 10*numpy.log10(avg)
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])
Julio Valdez
Processing Modules added:...
r502 title = wintitle + " Parameters"
xlabel = "Velocity (m/s)"
ylabel = "Range (Km)"
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = False
Julio Valdez
Processing Modules added:...
r502 if not self.isConfig:
nplots = len(channelIndexList)
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
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)
if zmin == None: zmin = numpy.nanmin(avgdB)*0.9
if zmax == None: zmax = numpy.nanmax(avgdB)*0.9
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.isConfig = True
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
Julio Valdez
Processing Modules added:...
r502
self.setWinTitle(title)
for i in range(self.nplots):
str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
Miguel Valdez
Channel title was fixed in plots
r713 title = "Channel %d: %4.2fdB: %s" %(dataOut.channelList[i], noisedB[i], str_datetime)
Julio Valdez
Processing Modules added:...
r502 axes = self.axesList[i*self.__nsubplots]
axes.pcolor(x, y, zdB[i,:,:],
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax,
xlabel=xlabel, ylabel=ylabel, title=title,
ticksize=9, cblabel='')
#Mean Line
mean = dataOut.data_param[i, 1, :]
axes.addpline(mean, y, idline=0, color="black", linestyle="solid", lw=1)
if self.__showprofile:
axes = self.axesList[i*self.__nsubplots +1]
axes.pline(avgdB[i], y,
xmin=zmin, xmax=zmax, ymin=ymin, ymax=ymax,
xlabel='dB', ylabel='', title='',
ytick_visible=False,
grid='x')
noiseline = numpy.repeat(noisedB[i], len(y))
axes.addpline(noiseline, y, idline=1, color="black", linestyle="dashed", lw=2)
self.draw()
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
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
Julio Valdez
Processing Modules added:...
r502
class SkyMapPlot(Figure):
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
Julio Valdez
data...
r608 PREFIX = 'mmap'
Julio Valdez
Processing Modules added:...
r502
def __init__(self):
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
Processing Modules added:...
r502 self.__nsubplots = 1
# self.WIDTH = 280
# self.HEIGHT = 250
self.WIDTH = 600
self.HEIGHT = 600
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Julio Valdez
data...
r608 self.PLOT_CODE = MSKYMAP_CODE
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
Julio Valdez
Processing Modules added:...
r502 self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
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, showprofile=False, show=True):
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 1
colspan = 1
self.createFigure(id = id,
wintitle = wintitle,
widthplot = self.WIDTH, #+ self.WIDTHPROF,
heightplot = self.HEIGHT,# + self.HEIGHTPROF,
show=show)
nrow, ncol = 1,1
counter = 0
x = 0
y = 0
self.addAxes(1, 1, 0, 0, 1, 1, True)
def run(self, dataOut, id, wintitle="", channelList=None, showprofile=False,
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 tmin=0, tmax=24, timerange=None,
Julio Valdez
Processing Modules added:...
r502 save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1,
server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 arrayParameters = dataOut.data_param
Julio Valdez
Processing Modules added:...
r502 error = arrayParameters[:,-1]
indValid = numpy.where(error == 0)[0]
finalMeteor = arrayParameters[indValid,:]
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 finalAzimuth = finalMeteor[:,3]
finalZenith = finalMeteor[:,4]
Julio Valdez
Processing Modules added:...
r502
x = finalAzimuth*numpy.pi/180
y = finalZenith
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 x1 = [dataOut.ltctime, dataOut.ltctime]
Julio Valdez
Processing Modules added:...
r502
#thisDatetime = dataOut.datatime
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.ltctime)
Julio Valdez
Processing Modules added:...
r502 title = wintitle + " Parameters"
xlabel = "Zonal Zenith Angle (deg) "
ylabel = "Meridional Zenith Angle (deg)"
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = False
Julio Valdez
Processing Modules added:...
r502
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
Processing Modules added:...
r502
nplots = 1
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786
Julio Valdez
SkyMap new feature: tmin and tmax selection
r787 if self.xmin is None and self.xmax is None:
self.xmin, self.xmax = self.getTimeLim(x1, tmin, tmax, timerange)
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786
if timerange != None:
self.timerange = timerange
else:
self.timerange = self.xmax - self.xmin
Julio Valdez
Processing Modules added:...
r502 self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
self.firstdate = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
Julio Valdez
Processing Modules added:...
r502
self.setWinTitle(title)
i = 0
str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
axes = self.axesList[i*self.__nsubplots]
nevents = axes.x_buffer.shape[0] + x.shape[0]
title = "Meteor Detection Sky Map\n %s - %s \n Number of events: %5.0f\n" %(self.firstdate,str_datetime,nevents)
axes.polar(x, y,
title=title, xlabel=xlabel, ylabel=ylabel,
ticksize=9, cblabel='')
self.draw()
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786
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,
Julio Valdez
Fixed plot bugs
r785 thisDatetime=thisDatetime,
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile=update_figfile)
if dataOut.ltctime >= self.xmax:
Ivan Valdez
Bug fixed
r797 self.isConfigmagwr = wr_period
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
axes.__firsttime = True
self.xmin += self.timerange
self.xmax += self.timerange
Julio Valdez
data...
r608
Julio Valdez
Processing Modules added:...
r502
class WindProfilerPlot(Figure):
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'wind'
def __init__(self):
Julio Valdez
data...
r608 self.timerange = None
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
Processing Modules added:...
r502 self.__nsubplots = 1
self.WIDTH = 800
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841 self.HEIGHT = 300
Julio Valdez
Processing Modules added:...
r502 self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.PLOT_CODE = WIND_CODE
Julio Valdez
Processing Modules added:...
r502 self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.tmin = None
self.tmax = None
self.xmin = None
self.xmax = None
self.figfile = None
def getSubplots(self):
ncol = 1
nrow = self.nplots
return nrow, ncol
def setup(self, id, nplots, wintitle, showprofile=True, show=True):
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 1
colspan = 1
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):
if counter >= self.nplots:
break
self.addAxes(nrow, ncol*ncolspan, y, 0, colspan, 1)
counter += 1
Julio Valdez
data...
r608 def run(self, dataOut, id, wintitle="", channelList=None, showprofile='False',
Julio Valdez
Processing Modules added:...
r502 xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None,
zmax_ver = None, zmin_ver = None, SNRmin = None, SNRmax = None,
timerange=None, SNRthresh = None,
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True,
Julio Valdez
Processing Modules added:...
r502 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 # if timerange is not None:
Julio Valdez
data...
r608 # self.timerange = timerange
#
# tmin = None
# tmax = None
Julio Valdez
Processing Modules added:...
r502
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 x = dataOut.getTimeRange1(dataOut.outputInterval)
Julio Valdez
-Functional HDF5 file writer unit...
r543 y = dataOut.heightList
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 z = dataOut.data_output.copy()
Julio Valdez
Processing Modules added:...
r502 nplots = z.shape[0] #Number of wind dimensions estimated
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 nplotsw = nplots
#If there is a SNR function defined
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
Processing Modules added:...
r502 nplots += 1
Julio Valdez
First Draft HDF5 IO module
r514 SNR = dataOut.data_SNR
Julio Valdez
Processing Modules added:...
r502 SNRavg = numpy.average(SNR, axis=0)
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 SNRdB = 10*numpy.log10(SNR)
SNRavgdB = 10*numpy.log10(SNRavg)
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 if SNRthresh == None: SNRthresh = -5.0
ind = numpy.where(SNRavg < 10**(SNRthresh/10))[0]
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 for i in range(nplotsw):
z[i,ind] = numpy.nan
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502
Julio Valdez
data...
r608 # showprofile = False
Julio Valdez
Processing Modules added:...
r502 # thisDatetime = dataOut.datatime
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 #thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.ltctime)
thisDatetime = datetime.datetime.now()
Julio Valdez
Processing Modules added:...
r502 title = wintitle + "Wind"
xlabel = ""
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841 ylabel = "Height (km)"
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = False
Julio Valdez
Processing Modules added:...
r502
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
Bug fixed in RTI and Wind Profiler Plots, when data time exceeded the xmax, the new plot generated was overwriting the first one.
r509
Julio Valdez
Processing Modules added:...
r502 self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if timerange is not None:
Julio Valdez
data...
r608 self.timerange = timerange
Miguel Valdez
Bug plotting RTI fixed for jroplot_heispectra, jroplot_parameters, jroplot_spectra
r567 self.xmin, self.xmax = self.getTimeLim(x, xmin, xmax, timerange)
Julio Valdez
Processing Modules added:...
r502
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 #if ymin == None: ymin = numpy.nanmin(y)
#if ymax == None: ymax = numpy.nanmax(y)
Julio Valdez
Processing Modules added:...
r502
if zmax == None: zmax = numpy.nanmax(abs(z[range(2),:]))
#if numpy.isnan(zmax): zmax = 50
if zmin == None: zmin = -zmax
if nplotsw == 3:
if zmax_ver == None: zmax_ver = numpy.nanmax(abs(z[2,:]))
if zmin_ver == None: zmin_ver = -zmax_ver
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 # if dataOut.data_SNR is not None:
# if SNRmin == None: SNRmin = numpy.nanmin(SNRavgdB)
# if SNRmax == None: SNRmax = numpy.nanmax(SNRavgdB)
Julio Valdez
Processing Modules added:...
r502
Julio Valdez
data...
r608
Julio Valdez
Processing Modules added:...
r502 self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
Julio Valdez
data...
r608
Julio Valdez
Processing Modules added:...
r502 self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
data...
r608 self.figfile = figfile
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
Julio Valdez
data...
r608
Julio Valdez
Processing Modules added:...
r502 self.setWinTitle(title)
Julio Valdez
data...
r608
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 #if ((self.xmax - x[1]) < (x[1]-x[0])):
# x[1] = self.xmax
Julio Valdez
Processing Modules added:...
r502
strWind = ['Zonal', 'Meridional', 'Vertical']
strCb = ['Velocity (m/s)','Velocity (m/s)','Velocity (cm/s)']
zmaxVector = [zmax, zmax, zmax_ver]
zminVector = [zmin, zmin, zmin_ver]
windFactor = [1,1,100]
for i in range(nplotsw):
title = "%s Wind: %s" %(strWind[i], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.__nsubplots]
z1 = z[i,:].reshape((1,-1))*windFactor[i]
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=zminVector[i], zmax=zmaxVector[i],
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel=strCb[i], cbsize="1%", colormap="RdBu_r" )
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
Processing Modules added:...
r502 i += 1
title = "Signal Noise Ratio (SNR): %s" %(thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.__nsubplots]
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 SNRavgdB = SNRavgdB.reshape((1,-1))
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860
Julio Valdez
Processing Modules added:...
r502 axes.pcolorbuffer(x, y, SNRavgdB,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=SNRmin, zmax=SNRmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel='', cbsize="1%", colormap="jet")
self.draw()
Julio Valdez
Bug fixed in RTI and Wind Profiler Plots, when data time exceeded the xmax, the new plot generated was overwriting the first one.
r509
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,
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile=update_figfile)
Julio Valdez
Bug fixed when plot changed from one day to the next
r852
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 if False and dataOut.ltctime + dataOut.outputInterval >= self.xmax:
self.counter_imagwr = wr_period
Julio Valdez
Bug fixed when plot changed from one day to the next
r852 self.isConfig = False
update_figfile = True
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786
Julio Valdez
-Parameters Plot corrected...
r832 class ParametersPlot(Figure):
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'param'
nplots = None
nchan = None
def __init__(self):
self.timerange = None
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 800
self.HEIGHT = 180
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
self.PLOT_CODE = RTI_CODE
self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.tmin = None
self.tmax = None
self.xmin = None
self.xmax = None
self.figfile = None
def getSubplots(self):
ncol = 1
nrow = self.nplots
return nrow, ncol
def setup(self, id, nplots, wintitle, show=True):
self.nplots = nplots
ncolspan = 1
colspan = 1
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)
counter += 1
def run(self, dataOut, id, wintitle="", channelList=None, paramIndex = 0, colormap=True,
xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, timerange=None,
showSNR=False, SNRthresh = -numpy.inf, SNRmin=None, SNRmax=None,
save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True,
server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
if colormap:
colormap="jet"
else:
colormap="RdBu_r"
if not isTimeInHourRange(dataOut.datatime, xmin, xmax):
return
if channelList == None:
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841 channelIndexList = range(dataOut.data_param.shape[0])
Julio Valdez
-Parameters Plot corrected...
r832 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.getTimeRange1(dataOut.paramInterval)
y = dataOut.getHeiRange()
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841 if dataOut.data_param.ndim == 3:
z = dataOut.data_param[channelIndexList,paramIndex,:]
else:
z = dataOut.data_param[channelIndexList,:]
Julio Valdez
-Parameters Plot corrected...
r832 if showSNR:
#SNR data
SNRarray = dataOut.data_SNR[channelIndexList,:]
SNRdB = 10*numpy.log10(SNRarray)
ind = numpy.where(SNRdB < SNRthresh)
z[ind] = numpy.nan
thisDatetime = dataOut.datatime
# thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0])
title = wintitle + " Parameters Plot" #: %s" %(thisDatetime.strftime("%d-%b-%Y"))
xlabel = ""
ylabel = "Range (Km)"
update_figfile = False
if not self.isConfig:
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
Julio Valdez
-Parameters Plot corrected...
r832 nchan = len(channelIndexList)
self.nchan = nchan
self.plotFact = 1
nplots = nchan
Julio Valdez
-Added Radial Velocity graphic ...
r511
Julio Valdez
-Parameters Plot corrected...
r832 if showSNR:
nplots = nchan*2
self.plotFact = 2
if SNRmin == None: SNRmin = numpy.nanmin(SNRdB)
if SNRmax == None: SNRmax = numpy.nanmax(SNRdB)
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
show=show)
if timerange != None:
self.timerange = timerange
self.xmin, self.xmax = self.getTimeLim(x, xmin, xmax, timerange)
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841 if zmin == None: zmin = numpy.nanmin(z)
if zmax == None: zmax = numpy.nanmax(z)
Julio Valdez
-Parameters Plot corrected...
r832
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
self.isConfig = True
self.figfile = figfile
update_figfile = True
self.setWinTitle(title)
for i in range(self.nchan):
index = channelIndexList[i]
title = "Channel %d: %s" %(dataOut.channelList[index], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.plotFact]
z1 = z[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel='', cbsize="1%",colormap=colormap)
if showSNR:
title = "Channel %d SNR: %s" %(dataOut.channelList[index], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.plotFact + 1]
SNRdB1 = SNRdB[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, SNRdB1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=SNRmin, zmax=SNRmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel='', cbsize="1%",colormap='jet')
self.draw()
if dataOut.ltctime >= self.xmax:
self.counter_imagwr = wr_period
self.isConfig = False
update_figfile = True
self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
thisDatetime=thisDatetime,
update_figfile=update_figfile)
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 class ParametersPlot(Figure):
Julio Valdez
-Added Radial Velocity graphic ...
r511
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512 PREFIX = 'prm'
Julio Valdez
-Added Radial Velocity graphic ...
r511
def __init__(self):
self.timerange = 2*60*60
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
-Added Radial Velocity graphic ...
r511 self.__nsubplots = 1
self.WIDTH = 800
self.HEIGHT = 150
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.PLOT_CODE = PARMS_CODE
Julio Valdez
-Added Radial Velocity graphic ...
r511 self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.tmin = None
self.tmax = None
self.xmin = None
self.xmax = None
self.figfile = None
def getSubplots(self):
ncol = 1
nrow = self.nplots
return nrow, ncol
def setup(self, id, nplots, wintitle, showprofile=True, show=True):
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 1
colspan = 1
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, showprofile=False,
xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None,timerange=None,
Julio Valdez
-Functional HDF5 file writer unit...
r543 parameterIndex = None, onlyPositive = False,
Julio Valdez
data...
r608 SNRthresh = -numpy.inf, SNR = True, SNRmin = None, SNRmax = None, onlySNR = False,
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 DOP = True,
Julio Valdez
-Functional HDF5 file writer unit...
r543 zlabel = "", parameterName = "", parameterObject = "data_param",
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True,
Julio Valdez
-Added Radial Velocity graphic ...
r511 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
Julio Valdez
-Functional HDF5 file writer unit...
r543 data_param = getattr(dataOut, parameterObject)
Julio Valdez
-Added Radial Velocity graphic ...
r511 if channelList == None:
Julio Valdez
-Functional HDF5 file writer unit...
r543 channelIndexList = numpy.arange(data_param.shape[0])
Julio Valdez
-Added Radial Velocity graphic ...
r511 else:
Julio Valdez
-jrodata, parameters class bug fixed...
r550 channelIndexList = numpy.array(channelList)
Julio Valdez
-Functional HDF5 file writer unit...
r543
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548 nchan = len(channelIndexList) #Number of channels being plotted
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 if nchan < 1:
return
nGraphsByChannel = 0
if SNR:
nGraphsByChannel += 1
if DOP:
nGraphsByChannel += 1
if nGraphsByChannel < 1:
return
nplots = nGraphsByChannel*nchan
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if timerange is not None:
Julio Valdez
-Added Radial Velocity graphic ...
r511 self.timerange = timerange
#tmin = None
#tmax = None
Julio Valdez
-Functional HDF5 file writer unit...
r543 if parameterIndex == None:
parameterIndex = 1
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 x = dataOut.getTimeRange1(dataOut.paramInterval)
Julio Valdez
-Functional HDF5 file writer unit...
r543 y = dataOut.heightList
z = data_param[channelIndexList,parameterIndex,:].copy()
Julio Valdez
-Added Radial Velocity graphic ...
r511
Julio Valdez
-Functional HDF5 file writer unit...
r543 zRange = dataOut.abscissaList
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 # nChannels = z.shape[0] #Number of wind dimensions estimated
Julio Valdez
-Added Radial Velocity graphic ...
r511 # thisDatetime = dataOut.datatime
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
-jrodata, parameters class bug fixed...
r550 SNRarray = dataOut.data_SNR[channelIndexList,:]
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548 SNRdB = 10*numpy.log10(SNRarray)
# SNRavgdB = 10*numpy.log10(SNRavg)
ind = numpy.where(SNRdB < 10**(SNRthresh/10))
z[ind] = numpy.nan
Julio Valdez
data...
r608
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0])
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512 title = wintitle + " Parameters Plot" #: %s" %(thisDatetime.strftime("%d-%b-%Y"))
Julio Valdez
-Added Radial Velocity graphic ...
r511 xlabel = ""
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512 ylabel = "Range (Km)"
Julio Valdez
data...
r608 if (SNR and not onlySNR): nplots = 2*nplots
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512 if onlyPositive:
colormap = "jet"
zmin = 0
else: colormap = "RdBu_r"
Julio Valdez
-Added Radial Velocity graphic ...
r511
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
-Added Radial Velocity graphic ...
r511
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Miguel Valdez
Bug plotting RTI fixed for jroplot_heispectra, jroplot_parameters, jroplot_spectra
r567 self.xmin, self.xmax = self.getTimeLim(x, xmin, xmax, timerange)
Julio Valdez
-Added Radial Velocity graphic ...
r511
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
if zmin == None: zmin = numpy.nanmin(zRange)
if zmax == None: zmax = numpy.nanmax(zRange)
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 if SNR:
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548 if SNRmin == None: SNRmin = numpy.nanmin(SNRdB)
if SNRmax == None: SNRmax = numpy.nanmax(SNRdB)
Julio Valdez
-Added Radial Velocity graphic ...
r511 self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
-Added Radial Velocity graphic ...
r511 self.figfile = figfile
self.setWinTitle(title)
if ((self.xmax - x[1]) < (x[1]-x[0])):
x[1] = self.xmax
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548
for i in range(nchan):
Julio Valdez
data...
r608
if (SNR and not onlySNR): j = 2*i
else: j = i
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 j = nGraphsByChannel*i
Julio Valdez
data...
r608
if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)):
title = title + '_' + 'azimuth,zenith=%2.2f,%2.2f'%(dataOut.azimuth, dataOut.zenith)
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512
Julio Valdez
data...
r608 if not onlySNR:
axes = self.axesList[j*self.__nsubplots]
z1 = z[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,colormap=colormap,
ticksize=9, cblabel=zlabel, cbsize="1%")
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 if DOP:
Miguel Valdez
Channel title was fixed in plots
r713 title = "%s Channel %d: %s" %(parameterName, channelIndexList[i], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588
if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)):
title = title + '_' + 'azimuth,zenith=%2.2f,%2.2f'%(dataOut.azimuth, dataOut.zenith)
axes = self.axesList[j]
z1 = z[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,colormap=colormap,
ticksize=9, cblabel=zlabel, cbsize="1%")
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548
if SNR:
Miguel Valdez
Channel title was fixed in plots
r713 title = "Channel %d Signal Noise Ratio (SNR): %s" %(channelIndexList[i], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
Julio Valdez
data...
r608 axes = self.axesList[(j)*self.__nsubplots]
if not onlySNR:
axes = self.axesList[(j + 1)*self.__nsubplots]
Miguel Valdez
parametrs plotting: SNR and DOP arguments have been added
r588 axes = self.axesList[(j + nGraphsByChannel-1)]
Julio Valdez
data...
r608
Julio Valdez
ParametersPlot: Corrections and SNR graphic added.
r548 z1 = SNRdB[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=SNRmin, zmax=SNRmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,colormap="jet",
ticksize=9, cblabel=zlabel, cbsize="1%")
Julio Valdez
New Graphic added: ParametersPlot, plot a user selected parameter as RTI.
r512
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.draw()
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
if x[1] >= self.axesList[0].xmax:
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
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 self.figfile = None
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,
update_figfile=False)
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 class SpectralFittingPlot(Figure):
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'prm'
N = None
ippSeconds = None
def __init__(self):
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 self.__nsubplots = 1
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.PLOT_CODE = SPECFIT_CODE
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 self.WIDTH = 450
self.HEIGHT = 250
self.WIDTHPROF = 0
self.HEIGHTPROF = 0
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, showprofile=False, show=True):
showprofile = False
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 5
colspan = 4
if showprofile:
ncolspan = 5
colspan = 4
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, cutHeight=None, fit=False, wintitle="", channelList=None, showprofile=True,
xmin=None, xmax=None, ymin=None, ymax=None,
save=False, figpath='./', figfile=None, show=True):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
zmin : None,
zmax : None
"""
if cutHeight==None:
h=270
heightindex = numpy.abs(cutHeight - dataOut.heightList).argmin()
cutHeight = dataOut.heightList[heightindex]
factor = dataOut.normFactor
Julio Valdez
-Functional HDF5 file writer unit...
r543 x = dataOut.abscissaList[:-1]
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 #y = dataOut.getHeiRange()
z = dataOut.data_pre[:,:,heightindex]/factor
z = numpy.where(numpy.isfinite(z), z, numpy.NAN)
avg = numpy.average(z, axis=1)
listChannels = z.shape[0]
#Reconstruct Function
if fit==True:
groupArray = dataOut.groupList
listChannels = groupArray.reshape((groupArray.size))
listChannels.sort()
spcFitLine = numpy.zeros(z.shape)
constants = dataOut.constants
nGroups = groupArray.shape[0]
nChannels = groupArray.shape[1]
nProfiles = z.shape[1]
for f in range(nGroups):
groupChann = groupArray[f,:]
p = dataOut.data_param[f,:,heightindex]
# p = numpy.array([ 89.343967,0.14036615,0.17086219,18.89835291,1.58388365,1.55099167])
fitLineAux = dataOut.library.modelFunction(p, constants)*nProfiles
fitLineAux = fitLineAux.reshape((nChannels,nProfiles))
spcFitLine[groupChann,:] = fitLineAux
# spcFitLine = spcFitLine/factor
z = z[listChannels,:]
spcFitLine = spcFitLine[listChannels,:]
spcFitLinedB = 10*numpy.log10(spcFitLine)
zdB = 10*numpy.log10(z)
#thisDatetime = dataOut.datatime
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0])
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 title = wintitle + " Doppler Spectra: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
xlabel = "Velocity (m/s)"
ylabel = "Spectrum"
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
nplots = listChannels.size
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
if xmin == None: xmin = numpy.nanmin(x)
if xmax == None: xmax = numpy.nanmax(x)
if ymin == None: ymin = numpy.nanmin(zdB)
if ymax == None: ymax = numpy.nanmax(zdB)+2
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
self.setWinTitle(title)
for i in range(self.nplots):
# title = "Channel %d: %4.2fdB" %(dataOut.channelList[i]+1, noisedB[i])
Miguel Valdez
Channel title was fixed in plots
r713 title = "Height %4.1f km\nChannel %d:" %(cutHeight, listChannels[i])
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 axes = self.axesList[i*self.__nsubplots]
if fit == False:
axes.pline(x, zdB[i,:],
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax,
xlabel=xlabel, ylabel=ylabel, title=title
)
if fit == True:
fitline=spcFitLinedB[i,:]
y=numpy.vstack([zdB[i,:],fitline] )
legendlabels=['Data','Fitting']
axes.pmultilineyaxis(x, y,
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax,
xlabel=xlabel, ylabel=ylabel, title=title,
legendlabels=legendlabels, marker=None,
linestyle='solid', grid='both')
self.draw()
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)
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
class EWDriftsPlot(Figure):
__isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'drift'
def __init__(self):
self.timerange = 2*60*60
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 800
self.HEIGHT = 150
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.PLOT_CODE = EWDRIFT_CODE
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.tmin = None
self.tmax = None
self.xmin = None
self.xmax = None
self.figfile = None
def getSubplots(self):
ncol = 1
nrow = self.nplots
return nrow, ncol
def setup(self, id, nplots, wintitle, showprofile=True, show=True):
self.__showprofile = showprofile
self.nplots = nplots
ncolspan = 1
colspan = 1
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):
if counter >= self.nplots:
break
self.addAxes(nrow, ncol*ncolspan, y, 0, colspan, 1)
counter += 1
def run(self, dataOut, id, wintitle="", channelList=None,
xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None,
zmaxVertical = None, zminVertical = None, zmaxZonal = None, zminZonal = None,
timerange=None, SNRthresh = -numpy.inf, SNRmin = None, SNRmax = None, SNR_1 = False,
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True,
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if timerange is not None:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 self.timerange = timerange
tmin = None
tmax = None
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 x = dataOut.getTimeRange1(dataOut.outputInterval)
Julio Valdez
-Functional HDF5 file writer unit...
r543 # y = dataOut.heightList
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 y = dataOut.heightList
z = dataOut.data_output
nplots = z.shape[0] #Number of wind dimensions estimated
nplotsw = nplots
#If there is a SNR function defined
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 nplots += 1
Julio Valdez
First Draft HDF5 IO module
r514 SNR = dataOut.data_SNR
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
if SNR_1:
SNR += 1
SNRavg = numpy.average(SNR, axis=0)
SNRdB = 10*numpy.log10(SNR)
SNRavgdB = 10*numpy.log10(SNRavg)
ind = numpy.where(SNRavg < 10**(SNRthresh/10))[0]
for i in range(nplotsw):
z[i,ind] = numpy.nan
showprofile = False
# thisDatetime = dataOut.datatime
Julio Valdez
-Functional HDF5 file writer unit...
r543 thisDatetime = datetime.datetime.utcfromtimestamp(x[1])
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 title = wintitle + " EW Drifts"
xlabel = ""
ylabel = "Height (Km)"
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Miguel Valdez
Bug plotting RTI fixed for jroplot_heispectra, jroplot_parameters, jroplot_spectra
r567 self.xmin, self.xmax = self.getTimeLim(x, xmin, xmax, timerange)
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
if zmaxZonal == None: zmaxZonal = numpy.nanmax(abs(z[0,:]))
if zminZonal == None: zminZonal = -zmaxZonal
if zmaxVertical == None: zmaxVertical = numpy.nanmax(abs(z[1,:]))
if zminVertical == None: zminVertical = -zmaxVertical
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 if SNRmin == None: SNRmin = numpy.nanmin(SNRavgdB)
if SNRmax == None: SNRmax = numpy.nanmax(SNRavgdB)
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513
self.setWinTitle(title)
if ((self.xmax - x[1]) < (x[1]-x[0])):
x[1] = self.xmax
strWind = ['Zonal','Vertical']
strCb = 'Velocity (m/s)'
zmaxVector = [zmaxZonal, zmaxVertical]
zminVector = [zminZonal, zminVertical]
for i in range(nplotsw):
title = "%s Drifts: %s" %(strWind[i], thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.__nsubplots]
z1 = z[i,:].reshape((1,-1))
axes.pcolorbuffer(x, y, z1,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=zminVector[i], zmax=zmaxVector[i],
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel=strCb, cbsize="1%", colormap="RdBu_r")
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if dataOut.data_SNR is not None:
Julio Valdez
First Spectral Fitting and EW Drifts operative module inside Signal Chain TRUNK
r513 i += 1
if SNR_1:
title = "Signal Noise Ratio + 1 (SNR+1): %s" %(thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
else:
title = "Signal Noise Ratio (SNR): %s" %(thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
axes = self.axesList[i*self.__nsubplots]
SNRavgdB = SNRavgdB.reshape((1,-1))
axes.pcolorbuffer(x, y, SNRavgdB,
xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax, zmin=SNRmin, zmax=SNRmax,
xlabel=xlabel, ylabel=ylabel, title=title, rti=True, XAxisAsTime=True,
ticksize=9, cblabel='', cbsize="1%", colormap="jet")
self.draw()
Julio Valdez
-Added Radial Velocity graphic ...
r511
Julio Valdez
Bug fixed in RTI and Wind Profiler Plots, when data time exceeded the xmax, the new plot generated was overwriting the first one.
r509 if x[1] >= self.axesList[0].xmax:
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
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.figfile = None
Julio Valdez
data...
r608
class PhasePlot(Figure):
__isConfig = None
__nsubplots = None
PREFIX = 'mphase'
def __init__(self):
self.timerange = 24*60*60
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = False
Julio Valdez
data...
r608 self.__nsubplots = 1
self.counter_imagwr = 0
self.WIDTH = 600
self.HEIGHT = 300
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.xdata = None
self.ydata = None
self.PLOT_CODE = MPHASE_CODE
self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.filename_phase = None
self.figfile = None
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="", pairsList=None, showprofile='True',
xmin=None, xmax=None, ymin=None, ymax=None,
timerange=None,
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1,
Julio Valdez
data...
r608 server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0):
tmin = None
tmax = None
Julio Valdez
-Functional HDF5 Format Writing and Reading Unit...
r804 x = dataOut.getTimeRange1(dataOut.outputInterval)
Julio Valdez
data...
r608 y = dataOut.getHeiRange()
#thisDatetime = dataOut.datatime
Julio Valdez
Bug fixed when plot changed from one day to the next
r852 thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.ltctime)
Julio Valdez
data...
r608 title = wintitle + " Phase of Beacon Signal" # : %s" %(thisDatetime.strftime("%d-%b-%Y"))
xlabel = "Local Time"
ylabel = "Phase"
#phase = numpy.zeros((len(pairsIndexList),len(dataOut.beacon_heiIndexList)))
phase_beacon = dataOut.data_output
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = False
Julio Valdez
data...
r608
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 if not self.isConfig:
Julio Valdez
data...
r608
self.nplots = phase_beacon.size
self.setup(id=id,
nplots=self.nplots,
wintitle=wintitle,
showprofile=showprofile,
show=show)
Julio Valdez
-timerange bug fix at Meteor Phase Plot...
r610
Miguel Valdez
-Bug fixed: selecting channels and cross pairs...
r612 if timerange is not None:
Julio Valdez
-timerange bug fix at Meteor Phase Plot...
r610 self.timerange = timerange
self.xmin, self.xmax = self.getTimeLim(x, xmin, xmax, timerange)
Julio Valdez
data...
r608 if ymin == None: ymin = numpy.nanmin(phase_beacon) - 10.0
if ymax == None: ymax = numpy.nanmax(phase_beacon) + 10.0
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.name = thisDatetime.strftime("%Y%m%d_%H%M%S")
Miguel Valdez
Bug fixed in jroplot_heispectra: Error when RTI creates a new graphic (lctime > Tmax)
r793 self.isConfig = True
Julio Valdez
data...
r608 self.figfile = figfile
self.xdata = numpy.array([])
self.ydata = numpy.array([])
#open file beacon phase
path = '%s%03d' %(self.PREFIX, self.id)
beacon_file = os.path.join(path,'%s.txt'%self.name)
self.filename_phase = os.path.join(figpath,beacon_file)
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
Julio Valdez
data...
r608
#store data beacon phase
#self.save_data(self.filename_phase, phase_beacon, thisDatetime)
self.setWinTitle(title)
title = "Phase Offset %s" %(thisDatetime.strftime("%Y/%m/%d %H:%M:%S"))
legendlabels = ["phase %d"%(chan) for chan in numpy.arange(self.nplots)]
axes = self.axesList[0]
self.xdata = numpy.hstack((self.xdata, x[0:1]))
if len(self.ydata)==0:
self.ydata = phase_beacon.reshape(-1,1)
else:
self.ydata = numpy.hstack((self.ydata, phase_beacon.reshape(-1,1)))
axes.pmultilineyaxis(x=self.xdata, y=self.ydata,
Julio Valdez
-timerange bug fix at Meteor Phase Plot...
r610 xmin=self.xmin, xmax=self.xmax, ymin=ymin, ymax=ymax,
Julio Valdez
data...
r608 xlabel=xlabel, ylabel=ylabel, title=title, legendlabels=legendlabels, marker='x', markersize=8, linestyle="solid",
XAxisAsTime=True, grid='both'
)
self.draw()
Julio Valdez
Bug fixed when plot changed from one day to the next
r852 self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
thisDatetime=thisDatetime,
update_figfile=update_figfile)
if dataOut.ltctime + dataOut.outputInterval >= self.xmax:
Julio Valdez
data...
r608 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
Julio Valdez
Bug fixed in Sky Map and Phase Plots
r786 update_figfile = True
Julio Valdez
data...
r608
Julio Valdez
Bug fixed when plot changed from one day to the next
r852
Julio Valdez
Parameters libraries reorganized, now each operation is a separated class
r841
class NSMeteorDetection1Plot(Figure):
isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'nsm'
zminList = None
zmaxList = None
cmapList = None
titleList = None
nPairs = None
nChannels = None
nParam = None
def __init__(self):
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 750
self.HEIGHT = 250
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
self.PLOT_CODE = SPEC_CODE
self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.__xfilter_ena = False
self.__yfilter_ena = False
def getSubplots(self):
ncol = 3
nrow = int(numpy.ceil(self.nplots/3.0))
return nrow, ncol
def setup(self, id, nplots, wintitle, show=True):
self.nplots = nplots
ncolspan = 1
colspan = 1
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)
counter += 1
def run(self, dataOut, id, wintitle="", channelList=None, showprofile=True,
xmin=None, xmax=None, ymin=None, ymax=None, SNRmin=None, SNRmax=None,
vmin=None, vmax=None, wmin=None, wmax=None, mode = 'SA',
save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1,
server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False,
xaxis="frequency"):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
#SEPARAR EN DOS PLOTS
nParam = dataOut.data_param.shape[1] - 3
utctime = dataOut.data_param[0,0]
tmet = dataOut.data_param[:,1].astype(int)
hmet = dataOut.data_param[:,2].astype(int)
x = dataOut.abscissaList
y = dataOut.heightList
z = numpy.zeros((nParam, y.size, x.size - 1))
z[:,:] = numpy.nan
z[:,hmet,tmet] = dataOut.data_param[:,3:].T
z[0,:,:] = 10*numpy.log10(z[0,:,:])
xlabel = "Time (s)"
ylabel = "Range (km)"
thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.ltctime)
if not self.isConfig:
nplots = nParam
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
show=show)
if xmin is None: xmin = numpy.nanmin(x)
if xmax is None: xmax = numpy.nanmax(x)
if ymin is None: ymin = numpy.nanmin(y)
if ymax is None: ymax = numpy.nanmax(y)
if SNRmin is None: SNRmin = numpy.nanmin(z[0,:])
if SNRmax is None: SNRmax = numpy.nanmax(z[0,:])
if vmax is None: vmax = numpy.nanmax(numpy.abs(z[1,:]))
if vmin is None: vmin = -vmax
if wmin is None: wmin = 0
if wmax is None: wmax = 50
pairsList = dataOut.groupList
self.nPairs = len(dataOut.groupList)
zminList = [SNRmin, vmin, cmin] + [pmin]*self.nPairs
zmaxList = [SNRmax, vmax, cmax] + [pmax]*self.nPairs
titleList = ["SNR","Radial Velocity","Coherence"]
cmapList = ["jet","RdBu_r","jet"]
for i in range(self.nPairs):
strAux1 = "Phase Difference "+ str(pairsList[i][0]) + str(pairsList[i][1])
titleList = titleList + [strAux1]
cmapList = cmapList + ["RdBu_r"]
self.zminList = zminList
self.zmaxList = zmaxList
self.cmapList = cmapList
self.titleList = titleList
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.isConfig = True
str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
for i in range(nParam):
title = self.titleList[i] + ": " +str_datetime
axes = self.axesList[i]
axes.pcolor(x, y, z[i,:].T,
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=self.zminList[i], zmax=self.zmaxList[i],
xlabel=xlabel, ylabel=ylabel, title=title, colormap=self.cmapList[i],ticksize=9, cblabel='')
self.draw()
if figfile == None:
str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S")
name = str_datetime
if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)):
name = name + '_az' + '_%2.2f'%(dataOut.azimuth) + '_zn' + '_%2.2f'%(dataOut.zenith)
figfile = self.getFilename(name)
self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
thisDatetime=thisDatetime)
class NSMeteorDetection2Plot(Figure):
isConfig = None
__nsubplots = None
WIDTHPROF = None
HEIGHTPROF = None
PREFIX = 'nsm'
zminList = None
zmaxList = None
cmapList = None
titleList = None
nPairs = None
nChannels = None
nParam = None
def __init__(self):
self.isConfig = False
self.__nsubplots = 1
self.WIDTH = 750
self.HEIGHT = 250
self.WIDTHPROF = 120
self.HEIGHTPROF = 0
self.counter_imagwr = 0
self.PLOT_CODE = SPEC_CODE
self.FTP_WEI = None
self.EXP_CODE = None
self.SUB_EXP_CODE = None
self.PLOT_POS = None
self.__xfilter_ena = False
self.__yfilter_ena = False
def getSubplots(self):
ncol = 3
nrow = int(numpy.ceil(self.nplots/3.0))
return nrow, ncol
def setup(self, id, nplots, wintitle, show=True):
self.nplots = nplots
ncolspan = 1
colspan = 1
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)
counter += 1
def run(self, dataOut, id, wintitle="", channelList=None, showprofile=True,
xmin=None, xmax=None, ymin=None, ymax=None, SNRmin=None, SNRmax=None,
vmin=None, vmax=None, wmin=None, wmax=None, mode = 'SA',
save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1,
server=None, folder=None, username=None, password=None,
ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False,
xaxis="frequency"):
"""
Input:
dataOut :
id :
wintitle :
channelList :
showProfile :
xmin : None,
xmax : None,
ymin : None,
ymax : None,
zmin : None,
zmax : None
"""
#Rebuild matrix
utctime = dataOut.data_param[0,0]
cmet = dataOut.data_param[:,1].astype(int)
tmet = dataOut.data_param[:,2].astype(int)
hmet = dataOut.data_param[:,3].astype(int)
nParam = 3
nChan = len(dataOut.groupList)
x = dataOut.abscissaList
y = dataOut.heightList
z = numpy.full((nChan, nParam, y.size, x.size - 1),numpy.nan)
z[cmet,:,hmet,tmet] = dataOut.data_param[:,4:]
z[:,0,:,:] = 10*numpy.log10(z[:,0,:,:]) #logarithmic scale
z = numpy.reshape(z, (nChan*nParam, y.size, x.size-1))
xlabel = "Time (s)"
ylabel = "Range (km)"
thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.ltctime)
if not self.isConfig:
nplots = nParam*nChan
self.setup(id=id,
nplots=nplots,
wintitle=wintitle,
show=show)
if xmin is None: xmin = numpy.nanmin(x)
if xmax is None: xmax = numpy.nanmax(x)
if ymin is None: ymin = numpy.nanmin(y)
if ymax is None: ymax = numpy.nanmax(y)
if SNRmin is None: SNRmin = numpy.nanmin(z[0,:])
if SNRmax is None: SNRmax = numpy.nanmax(z[0,:])
if vmax is None: vmax = numpy.nanmax(numpy.abs(z[1,:]))
if vmin is None: vmin = -vmax
if wmin is None: wmin = 0
if wmax is None: wmax = 50
self.nChannels = nChan
zminList = []
zmaxList = []
titleList = []
cmapList = []
for i in range(self.nChannels):
strAux1 = "SNR Channel "+ str(i)
strAux2 = "Radial Velocity Channel "+ str(i)
strAux3 = "Spectral Width Channel "+ str(i)
titleList = titleList + [strAux1,strAux2,strAux3]
cmapList = cmapList + ["jet","RdBu_r","jet"]
zminList = zminList + [SNRmin,vmin,wmin]
zmaxList = zmaxList + [SNRmax,vmax,wmax]
self.zminList = zminList
self.zmaxList = zmaxList
self.cmapList = cmapList
self.titleList = titleList
self.FTP_WEI = ftp_wei
self.EXP_CODE = exp_code
self.SUB_EXP_CODE = sub_exp_code
self.PLOT_POS = plot_pos
self.isConfig = True
str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S"))
for i in range(self.nplots):
title = self.titleList[i] + ": " +str_datetime
axes = self.axesList[i]
axes.pcolor(x, y, z[i,:].T,
xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=self.zminList[i], zmax=self.zmaxList[i],
xlabel=xlabel, ylabel=ylabel, title=title, colormap=self.cmapList[i],ticksize=9, cblabel='')
self.draw()
if figfile == None:
str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S")
name = str_datetime
if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)):
name = name + '_az' + '_%2.2f'%(dataOut.azimuth) + '_zn' + '_%2.2f'%(dataOut.zenith)
figfile = self.getFilename(name)
self.save(figpath=figpath,
figfile=figfile,
save=save,
ftp=ftp,
wr_period=wr_period,
thisDatetime=thisDatetime)