Skip to content
Snippets Groups Projects
dayabay_v0.py 4.26 KiB
Newer Older
Maxim Gonchar's avatar
Maxim Gonchar committed
from dagflow.bundles.load_parameters import load_parameters
from pathlib import Path
Maxim Gonchar's avatar
Maxim Gonchar committed

from dagflow.graph import Graph
from dagflow.graphviz import savegraph
Maxim Gonchar's avatar
Maxim Gonchar committed
from dagflow.lib.arithmetic import Sum
Maxim Gonchar's avatar
Maxim Gonchar committed
from gindex import GNIndex

from model_tools.parameters_storage import ParametersStorage
def model_dayabay_v0():
    storage = ParametersStorage({}, sep='.')
    datasource = Path('data/dayabay-v0')
Maxim Gonchar's avatar
Maxim Gonchar committed
    index = GNIndex.from_dict({
                ('s', 'site'): ('EH1', 'EH2', 'EH3'),
                ('d', 'detector'): ('AD11', 'AD12', 'AD21', 'AD22', 'AD31', 'AD32', 'AD33', 'AD34'),
                ('p', 'period'): ('6AD', '8AD', '7AD'),
                ('r', 'reactor'): ('DB1', 'DB2', 'LA1', 'LA2', 'LA3', 'LA4'),
                ('i', 'isotope'): ('U235', 'U238', 'Pu239', 'Pu241'),
                ('b', 'background'): ('acc', 'lihe', 'fastn', 'amc', 'alphan'),
                })
    idx_r= index.sub('r')
    idx_rd= index.sub(('r', 'd'))
    idx_ri= index.sub(('r', 'i'))
    list_reactors = idx_r.values
    list_dr = idx_rd.values
    list_reactors_isotopes = idx_ri.values
Maxim Gonchar's avatar
Maxim Gonchar committed

    with Graph(close=True) as g:
        storage ^= load_parameters({'path': 'ibd'        , 'load': datasource/'parameters/pdg2012.yaml'})
        storage ^= load_parameters({'path': 'ibd.csc'    , 'load': datasource/'parameters/ibd_constants.yaml'})
Maxim Gonchar's avatar
Maxim Gonchar committed
        storage ^= load_parameters({'path': 'conversion' , 'load': datasource/'parameters/conversion_thermal_power.yaml'})
        storage ^= load_parameters({'path': 'conversion' , 'load': datasource/'parameters/conversion_oscprob_argument.yaml'})
        storage ^= load_parameters({                       'load': datasource/'parameters/baselines.yaml'})
        storage ^= load_parameters({'path': 'detector'   , 'load': datasource/'parameters/detector_nprotons_correction.yaml'})
        storage ^= load_parameters({'path': 'detector'   , 'load': datasource/'parameters/detector_eres.yaml'})
        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_e_per_fission.yaml'})
Maxim Gonchar's avatar
Maxim Gonchar committed
        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_thermal_power_nominal.yaml'     , 'replicate': list_reactors })
        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_snf.yaml'                       , 'replicate': list_reactors })
        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_offequilibrium_correction.yaml' , 'replicate': list_reactors_isotopes })
Maxim Gonchar's avatar
Maxim Gonchar committed
        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_fission_fraction_scale.yaml'    , 'replicate': list_reactors , 'replica_key_offset': 1 })
        nuisanceall = Sum('nuisance total')
        storage['stat.nuisance.all'] = nuisanceall
        (output for output in storage['stat.nuisance_parts'].walkvalues()) >> nuisanceall
Maxim Gonchar's avatar
Maxim Gonchar committed

    storage['parameter.normalized.detector.eres.b_stat'].value = 1
    storage['parameter.normalized.detector.eres.a_nonuniform'].value = 2
Maxim Gonchar's avatar
Maxim Gonchar committed
    # p1 = storage['parameter.normalized.detector.eres.b_stat']
    # p2 = storage['parameter.constrained.detector.eres.b_stat']
Maxim Gonchar's avatar
Maxim Gonchar committed

    constrained = storage['parameter.constrained']
    normalized = storage['parameter.normalized']
    print('Everything')
Maxim Gonchar's avatar
Maxim Gonchar committed
    print(storage.to_table(truncate=True))

    print('Constants')
Maxim Gonchar's avatar
Maxim Gonchar committed
    print(storage['parameter.constant'].to_table(truncate=True))

    print('Constrained')
Maxim Gonchar's avatar
Maxim Gonchar committed
    print(constrained.to_table(truncate=True))

    print('Normalized')
Maxim Gonchar's avatar
Maxim Gonchar committed
    print(normalized.to_table(truncate=True))
    print('Stat')
Maxim Gonchar's avatar
Maxim Gonchar committed
    print(storage['stat'].to_table(truncate=True))
Maxim Gonchar's avatar
Maxim Gonchar committed
    # print('Parameters (latex)')
    # print(storage['parameter'].to_latex())
    #
    # print('Constants (latex)')
    # tex = storage['parameter.constant'].to_latex(columns=['path', 'value', 'label'])
    # print(tex)
Maxim Gonchar's avatar
Maxim Gonchar committed
    storage.to_datax('output/dayabay_v0_data.tex')

Maxim Gonchar's avatar
Maxim Gonchar committed
    from dagflow.graphviz import GraphDot
    GraphDot.from_graph(g, show='all').savegraph("output/dayabay_v0.dot")
    GraphDot.from_node(storage['parameter_node.constrained.reactor.fission_fraction_scale.DB1'].constraint._norm_node, show='all', minsize=2).savegraph("output/dayabay_v0_large.dot")
    GraphDot.from_node(storage['stat.nuisance.all'], show='all', mindepth=-1).savegraph("output/dayabay_v0_top.dot")