Source code for pipeline.hifv.tasks.syspower.renderer

"""
Created on 24 Oct 2014

@author: brk
"""

import contextlib
import os

import pipeline.infrastructure.filenamer as filenamer
import pipeline.infrastructure.logging as logging
import pipeline.infrastructure.renderer.basetemplates as basetemplates
import pipeline.infrastructure.renderer.weblog as weblog
from . import display as syspowerdisplay

LOG = logging.get_logger(__name__)


[docs]class VLASubPlotRenderer(object): def __init__(self, context, result, plots, json_path, template, filename_prefix): self.context = context self.result = result self.plots = plots self.ms = os.path.basename(self.result.inputs['vis']) self.template = template self.filename_prefix = filename_prefix self.summary_plots = {} self.syspowerspgain_subpages = {} self.pdiffspgain_subpages = {} self.syspowerspgain_subpages[self.ms] = filenamer.sanitize('spgainrq' + '-%s.html' % self.ms) self.pdiffspgain_subpages[self.ms] = filenamer.sanitize('spgainpdiff' + '-%s.html' % self.ms) if os.path.exists(json_path): with open(json_path, 'r') as json_file: self.json = json_file.readlines()[0] else: self.json = '{}' def _get_display_context(self): return {'pcontext': self.context, 'result': self.result, 'plots': self.plots, 'dirname': self.dirname, 'json': self.json, 'syspowerspgain_subpages': self.syspowerspgain_subpages, 'pdiffspgain_subpages': self.pdiffspgain_subpages} @property def dirname(self): stage = 'stage%s' % self.result.stage_number return os.path.join(self.context.report_dir, stage) @property def filename(self): filename = filenamer.sanitize(self.filename_prefix + '-%s.html' % self.ms) return filename @property def path(self): return os.path.join(self.dirname, self.filename)
[docs] def get_file(self): if not os.path.exists(self.dirname): os.makedirs(self.dirname) file_obj = open(self.path, 'w') return contextlib.closing(file_obj)
[docs] def render(self): display_context = self._get_display_context() t = weblog.TEMPLATE_LOOKUP.get_template(self.template) return t.render(**display_context)
[docs]class T2_4MDetailssyspowerRenderer(basetemplates.T2_4MDetailsDefaultRenderer): def __init__(self, uri='syspower.mako', description='Syspower (modified rq gains)', always_rerender=False): super(T2_4MDetailssyspowerRenderer, self).__init__(uri=uri, description=description, always_rerender=always_rerender)
[docs] def get_display_context(self, context, results): super_cls = super(T2_4MDetailssyspowerRenderer, self) ctx = super_cls.get_display_context(context, results) weblog_dir = os.path.join(context.report_dir, 'stage%s' % results.stage_number) opacity_plots = {} spw = {} center_frequencies = {} opacities = {} swpowspgain_subpages = {} pdiffspgain_subpages = {} box_plots = {} bar_plots = {} for result in results: plotter = syspowerdisplay.syspowerBoxChart(context, result) plots = plotter.plot() ms = os.path.basename(result.inputs['vis']) box_plots[ms] = plots plotter = syspowerdisplay.syspowerBarChart(context, result) plots = plotter.plot() ms = os.path.basename(result.inputs['vis']) bar_plots[ms] = plots # generate switched power plots and JSON file plotter = syspowerdisplay.syspowerPerAntennaChart(context, result, 'spgain', result.gaintable, 'syspower', 'rq') plots = plotter.plot() json_path = plotter.json_filename # write the html for each MS to disk renderer = VLASubPlotRenderer(context, result, plots, json_path, 'syspower_plots.mako', 'spgainrq') with renderer.get_file() as fileobj: fileobj.write(renderer.render()) swpowspgain_subpages[ms] = renderer.filename # plot template pdiff table plotter = syspowerdisplay.syspowerPerAntennaChart(context, result, 'spgain', result.template_table, 'syspower', 'pdiff') plots = plotter.plot() json_path = plotter.json_filename # write the html for each MS to disk renderer = VLASubPlotRenderer(context, result, plots, json_path, 'syspower_plots.mako', 'spgainpdiff') with renderer.get_file() as fileobj: fileobj.write(renderer.render()) pdiffspgain_subpages[ms] = renderer.filename ctx.update({'opacity_plots': opacity_plots, 'spw': spw, 'center_frequencies': center_frequencies, 'opacities': opacities, 'dirname': weblog_dir, 'box_plots': box_plots, 'bar_plots': bar_plots, 'syspowerspgain_subpages': swpowspgain_subpages, 'pdiffspgain_subpages': pdiffspgain_subpages, 'tec_plotfile': ''}) return ctx