From b29576d829183a47425737d8c2645fb7bb7aa5e2 Mon Sep 17 00:00:00 2001
From: Maxim Gonchar <maxim.mg.gonchar@gmail.com>
Date: Tue, 25 Apr 2023 15:51:13 +0300
Subject: [PATCH] model: improve printing, add conversion factor

---
 models/dayabay_v0.py | 40 ++++++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/models/dayabay_v0.py b/models/dayabay_v0.py
index b11cb77..2448629 100644
--- a/models/dayabay_v0.py
+++ b/models/dayabay_v0.py
@@ -19,12 +19,15 @@ from gindex import GNIndex
 class ParametersVisitor(NestedMKDictVisitor):
     __slots__ = ('_kwargs', '_data', '_localdata', '_path')
     _kwargs: dict
-    _data: list
-    _localdata: list
-    _path: tuple
+    _data: List[dict]
+    _localdata: List[dict]
+    _paths: List[Tuple[str, ...]]
+    _path: Tuple[str, ...]
+    # _npars: List[int]
 
     def __init__(self, kwargs: dict):
         self._kwargs = kwargs
+        # self._npars = []
 
     @property
     def data(self):
@@ -33,13 +36,14 @@ class ParametersVisitor(NestedMKDictVisitor):
     def start(self, dct):
         self._data = []
         self._path = ()
+        self._paths = []
+        self._localdata = []
 
     def enterdict(self, k, v):
-        if not k:
-            return
-        if self._path:
+        if self._localdata:
             self.exitdict(self._path, None)
         self._path = k
+        self._paths.append(self._path)
         self._localdata = []
 
     def visit(self, key, value):
@@ -65,7 +69,10 @@ class ParametersVisitor(NestedMKDictVisitor):
                 })
             self._data.extend(self._localdata)
             self._localdata = []
-        self._path = ()
+        if self._paths:
+            del self._paths[-1]
+
+            self._path = self._paths[-1] if self._paths else ()
 
     def stop(self, dct):
         pass
@@ -129,24 +136,25 @@ def model_dayabay_v0():
     list_reactors_isotopes = idx_ri.values
 
     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'})
+        storage ^= load_parameters({'path': 'ibd'        , 'load': datasource/'parameters/pdg2012.yaml'})
+        storage ^= load_parameters({'path': 'ibd.csc'    , 'load': datasource/'parameters/ibd_constants.yaml'})
+        storage ^= load_parameters({'path': 'conversion' , 'load': datasource/'parameters/conversion_thermal_power.py'})
 
-        storage ^= load_parameters({                     'load': datasource/'parameters/baselines.yaml'})
+        storage ^= load_parameters({                       'load': datasource/'parameters/baselines.yaml'})
 
-        storage ^= load_parameters({'path': 'detector' , 'load': datasource/'parameters/detector_nprotons_correction.yaml'})
-        storage ^= load_parameters({                     'load': datasource/'parameters/detector_eres.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_thermal_power_nominal.yaml', 'replicate': list_reactors })
-        storage ^= load_parameters({'path': 'reactor'  , 'load': datasource/'parameters/offequilibrium_correction.yaml',     'replicate': list_reactors_isotopes })
+        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/reactor_thermal_power_nominal.yaml' , 'replicate': list_reactors })
+        storage ^= load_parameters({'path': 'reactor'    , 'load': datasource/'parameters/offequilibrium_correction.yaml'     , 'replicate': list_reactors_isotopes })
 
         nuisanceall = Sum('nuisance total')
         storage['stat.nuisance.all'] = nuisanceall
 
         (output for output in storage['stat.nuisance_parts'].walkvalues()) >> nuisanceall
 
-    storage['parameter.normalized.eres.b_stat'].value = 1
-    storage['parameter.normalized.eres.a_nonuniform'].value = 2
+    storage['parameter.normalized.detector.eres.b_stat'].value = 1
+    storage['parameter.normalized.detector.eres.a_nonuniform'].value = 2
 
     print('Everything')
     print(storage.to_table())
-- 
GitLab