Source code for immuneML.presentation.html.GenModelHTMLBuilder

import itertools
import os
from pathlib import Path

from immuneML.workflows.instructions.apply_gen_model.ApplyGenModelInstruction import ApplyGenModelState
from immuneML.environment.EnvironmentSettings import EnvironmentSettings
from immuneML.ml_methods.util.Util import Util as MLUtil
from immuneML.presentation.TemplateParser import TemplateParser
from immuneML.presentation.html.Util import Util
from immuneML.util.PathBuilder import PathBuilder
from immuneML.workflows.instructions.train_gen_model.TrainGenModelInstruction import GenModelState


[docs] class GenModelHTMLBuilder: CSS_PATH = EnvironmentSettings.html_templates_path / "css/custom.css"
[docs] @staticmethod def build(state: GenModelState) -> Path: base_path = PathBuilder.build(state.result_path / "../HTML_output/") html_map = GenModelHTMLBuilder.make_html_map(state, base_path) result_file = base_path / f"GenModel_{state.name}.html" TemplateParser.parse(template_path=EnvironmentSettings.html_templates_path / "GenModel.html", template_map=html_map, result_path=result_file) return result_file
[docs] @staticmethod def make_html_map(state, base_path: Path) -> dict: exported_datasets = [{'name': key, 'path': os.path.relpath(path=Util.make_downloadable_zip(state.result_path, path), start=base_path)} for key, path in state.exported_datasets.items()] html_map = { "css_style": Util.get_css_content(GenModelHTMLBuilder.CSS_PATH), "name": state.name, 'immuneML_version': MLUtil.get_immuneML_version(), "full_specs": Util.get_full_specs_path(base_path), "logfile": Util.get_logfile_path(base_path), "function": "Applied" if isinstance(state, ApplyGenModelState) else "Trained", 'exported_datasets': exported_datasets, "show_exported_datasets": len(exported_datasets) > 0, } html_map = {**html_map, **{ 'show_reports': any(len(rep_results) > 0 for rep_results in state.report_results.values()), 'reports': list(itertools.chain.from_iterable( [Util.to_dict_recursive(Util.update_report_paths(report_result, base_path), base_path) for report_result in state.report_results[report_type]] for report_type in state.report_results.keys())), }} if hasattr(state, "generated_dataset") and state.generated_dataset is not None: if "generated_dataset" in state.exported_datasets.keys(): html_map = {**html_map, **Util.make_dataset_html_map(state.generated_dataset, "generated_dataset"), **{"show_generated_dataset": True}} if hasattr(state, "combined_dataset") and state.combined_dataset is not None: if "combined_dataset" in state.exported_datasets.keys(): html_map = {**html_map, **Util.make_dataset_html_map(state.combined_dataset, "combined_dataset"), **{"show_combined_dataset": True}} return html_map