Source code for idmtools_calibra.utilities.ll_all_generator

import os
import pandas as pd
from idmtools_calibra.plotters.site_data_plotter import SiteDataPlotter


[docs]def generate_ll_all(calib_manager, num_to_plot=5, iteration=None, ll_all_name=None): from idmtools_calibra.process_state import StatusPoint from idmtools_calibra.cli.utils import read_calib_data calib_data = read_calib_data(calib_manager.calibration_path) # in case environment has been changed and new suite_id & suites are generated # load all_results results = calib_data.get('results') all_results = pd.DataFrame() if isinstance(results, dict): all_results = pd.DataFrame.from_dict(results, orient='columns') all_results.reset_index(inplace=True, drop=True) top_columns = ['iteration', 'sample', 'total'] all_results = all_results.reindex( columns=(top_columns + list([a for a in all_results.columns if a not in top_columns]))) # restore last time location _iteration = calib_data['iteration'] if iteration is None: current_iteration = calib_data['iteration'] else: current_iteration = iteration if current_iteration > _iteration: raise Exception(f"LL_all for iteration = {iteration} is not available!") # validate current iteration status it = calib_manager.state_for_iteration(current_iteration) latest_step = it.status if isinstance(it.status, StatusPoint) else StatusPoint[it.status] if latest_step is None or latest_step.value < StatusPoint.done.value: raise Exception(f"LL_all for iteration = {current_iteration} is not available!") # build ll_all.csv if ll_all_name is None: ll_all_name = "ll_all_final.csv" # clean existing one ll_all_path = os.path.join(calib_manager.directory, '_plots', ll_all_name) if os.path.exists(ll_all_path): os.remove(ll_all_path) for iteration in range(current_iteration + 1): it = calib_manager.state_for_iteration(iteration) all_results = all_results.copy(deep=True) it.all_results = all_results[all_results.iteration <= iteration] it.all_results.set_index('sample', inplace=True) # important to keep the same format as original sp = SiteDataPlotter(num_to_plot=num_to_plot, combine_sites=True) sp.iteration_state = it sp.write_LL_csv(ll_all_name=ll_all_name)