Source code for idmtools_calibra.plotters.base_plotter

import os
import logging
from abc import ABCMeta, abstractmethod

logger = logging.getLogger(__name__)


[docs]class BasePlotter: __metaclass__ = ABCMeta def __init__(self, combine_sites=True): self.combine_sites = combine_sites self.iteration_state = None self.site_analyzer_names = None
[docs] def get_iteration_directory(self): return self.iteration_state.iteration_directory
[docs] def get_plot_directory(self): plot_dir = os.path.join(self.iteration_state.calibration_directory, '_plots') os.makedirs(plot_dir, exist_ok=True) return os.path.join(self.iteration_state.calibration_directory, '_plots')
@property def all_results(self): return self.iteration_state.all_results
[docs] @abstractmethod def visualize(self, iteration_state): pass
[docs] @staticmethod def combine_by_site(site_name, analyzer_names, results): """ Sum the result values over analyzers performed on the specified site and add SITE_total to results :param site_name: The name of the CalibSite :param analyzer_names: A list of CalibAnalyzer names corresponding to the site :param results: A pandas.DataFrame of results into which to add a combined site-analyzer-result column :return: None """ site_analyzers = [site_name + '_' + a for a in analyzer_names] logger.debug('site_analyzers: %s', site_analyzers) site_total = site_name + '_total' results[site_total] = results[site_analyzers].sum(axis=1) logger.debug('results[%s]=%s', site_total, results[site_total])