diff --git a/models/dayabay_v0.py b/models/dayabay_v0.py index 958247f59c59c4058986445cfc36466c7dfb726d..6175c214d6fee92a465f7061fd97da54afcdb99d 100644 --- a/models/dayabay_v0.py +++ b/models/dayabay_v0.py @@ -2,6 +2,7 @@ from dagflow.bundles.load_parameters import load_parameters from multikeydict.nestedmkdict import NestedMKDict from pathlib import Path +from typing import Union, Tuple, List, Optional from pandas import DataFrame class ParametersWrapper(NestedMKDict): def to_dict(self, **kwargs) -> list: @@ -14,29 +15,38 @@ class ParametersWrapper(NestedMKDict): return data - def to_df(self, **kwargs) -> DataFrame: + def to_df(self, *, columns: Optional[List[str]]=None, **kwargs) -> DataFrame: dct = self.to_dict(**kwargs) - columns = ('path', 'value', 'label') + if columns is None: + columns = ['path', 'value', 'central', 'sigma', 'normvalue', 'label'] df = DataFrame(dct, columns=columns) return df - def to_latex(self) -> str: - df = self.to_df(label_from='latex') - return df.to_latex(escape=False) + def to_latex(self, *, return_df: bool=False, **kwargs) -> Union[str, Tuple[str, DataFrame]]: + df = self.to_df(label_from='latex', **kwargs) + tex = df.to_latex(escape=False) + + if return_df: + return tex, df + + return tex def model_dayabay_v0(): storage = ParametersWrapper({}, sep='.') datasource = Path('data/dayabay-v0') - storage |= load_parameters({'path': 'ibd', 'load': datasource/'parameters/pdg2012.yaml'}) - storage |= load_parameters({'path': 'detector', 'load': datasource/'parameters/detector_nprotons_correction.yaml'}) - storage |= load_parameters({'path': 'reactor', 'load': datasource/'parameters/reactor_thermal_power_nominal.yaml'}) - storage |= load_parameters({'path': 'reactor', 'load': datasource/'parameters/detector_eres.yaml'}) + storage |= load_parameters({'path': 'ibd' , 'load': datasource/'parameters/pdg2012.yaml'}) + storage |= load_parameters({'path': 'detector' , 'load': datasource/'parameters/detector_nprotons_correction.yaml'}) + storage |= load_parameters({'path': 'reactor' , 'load': datasource/'parameters/reactor_thermal_power_nominal.yaml'}) + storage |= load_parameters({'path': 'reactor' , 'load': datasource/'parameters/detector_eres.yaml'}) + + # from pprint import pprint + # pprint(storage.object, sort_dicts=False) + + print(storage['parameter_node'].to_df()) - from pprint import pprint - pprint(storage.object, sort_dicts=False) + print(storage['parameter'].to_df()) - df = storage['constants'].to_df() - print(df) + print(storage['parameter'].to_latex()) - tex = storage['constants'].to_latex() + tex = storage['parameter.constant'].to_latex(columns=['path', 'value', 'label']) print(tex)