Newer
Older
from multikeydict.nestedmkdict import NestedMKDict
from typing import Union, Tuple, List, Optional
from pandas import DataFrame
class ParametersWrapper(NestedMKDict):
def to_dict(self, **kwargs) -> list:
data = []
for k, v in self.walkitems():
k = '.'.join(k)
dct = v.to_dict(**kwargs)
dct['path'] = k
data.append(dct)
return data
def to_df(self, *, columns: Optional[List[str]]=None, **kwargs) -> DataFrame:
if columns is None:
columns = ['path', 'value', 'central', 'sigma', 'normvalue', 'label']
df = DataFrame(dct, columns=columns)
return df
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
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())
tex = storage['parameter.constant'].to_latex(columns=['path', 'value', 'label'])