data-manipulation-utilities 0.2.8.dev927__tar.gz → 0.2.8.dev950__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/PKG-INFO +11 -1
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/README.md +10 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/pyproject.toml +1 -1
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/logging/log_store.py +11 -7
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/pdataframe/utilities.py +15 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rdataframe/utilities.py +12 -9
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/utilities.py +40 -10
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/__init__.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/arrays/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/hashing.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/naming.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/typing_utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/version_management.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/logging/messages.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_classifier.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_diagnostics.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_performance.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_predict.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/train_mva.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/fwhm.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/matrix.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter_1d.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter_2d.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rdataframe/atr_mgr.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/ddfgetter.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/rfprinter.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/fit_stats.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/fitter.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/function.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/gof_calculator.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/minimizers.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/model_factory.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/parameters.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/wdata.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit_models.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit_plotter.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/testing/utilities.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/text/transformer.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/workflow/__init__.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/workflow/cache.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/__init__.py +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_from_file.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_from_model.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_multiple_methods.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_overlay.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_def.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_with_diagnostics.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_with_preffix.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/2d.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/fig_size.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/high_stat.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/legend.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/line.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/name.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/no_bounds.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/normalized.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/plug_fwhm.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/plug_stats.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/simple.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/styling.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/title.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/weights.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/rfile/friends.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/fitter/test_simple.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/kde_optimizer/control.json +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/kde_optimizer/signal.json +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/parameters/data.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config.json +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config_1.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config_2.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/fail_validate.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/validate.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/with_references.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/pdf_to_tex.txt +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/stats/parameters/parameters_library.yaml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform.toml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform.txt +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_set.toml +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_set.txt +0 -0
- {data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_trf.txt +0 -0
{data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: data-manipulation-utilities
|
|
3
|
-
Version: 0.2.8.
|
|
3
|
+
Version: 0.2.8.dev950
|
|
4
4
|
Summary: Project storing utilities needed to reduce boilerplate code when analyzing data
|
|
5
5
|
Requires-Python: >=3.10,<3.13
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -1514,6 +1514,16 @@ df_2 = put.from_yaml(yml_path)
|
|
|
1514
1514
|
```
|
|
1515
1515
|
|
|
1516
1516
|
and is meant to be less verbose than doing it through the YAML module.
|
|
1517
|
+
|
|
1518
|
+
### Dataframe to markdown
|
|
1519
|
+
|
|
1520
|
+
```python
|
|
1521
|
+
import dmu.pdataframe.utilities as put
|
|
1522
|
+
|
|
1523
|
+
df = _get_df()
|
|
1524
|
+
put.to_markdown(df, '/path/to/simple.md')
|
|
1525
|
+
```
|
|
1526
|
+
|
|
1517
1527
|
# Rdataframes
|
|
1518
1528
|
|
|
1519
1529
|
These are utility functions meant to be used with ROOT dataframes.
|
{data_manipulation_utilities-0.2.8.dev927 → data_manipulation_utilities-0.2.8.dev950}/README.md
RENAMED
|
@@ -1479,6 +1479,16 @@ df_2 = put.from_yaml(yml_path)
|
|
|
1479
1479
|
```
|
|
1480
1480
|
|
|
1481
1481
|
and is meant to be less verbose than doing it through the YAML module.
|
|
1482
|
+
|
|
1483
|
+
### Dataframe to markdown
|
|
1484
|
+
|
|
1485
|
+
```python
|
|
1486
|
+
import dmu.pdataframe.utilities as put
|
|
1487
|
+
|
|
1488
|
+
df = _get_df()
|
|
1489
|
+
put.to_markdown(df, '/path/to/simple.md')
|
|
1490
|
+
```
|
|
1491
|
+
|
|
1482
1492
|
# Rdataframes
|
|
1483
1493
|
|
|
1484
1494
|
These are utility functions meant to be used with ROOT dataframes.
|
|
@@ -41,8 +41,7 @@ class LogStore:
|
|
|
41
41
|
backend = 'logging'
|
|
42
42
|
#--------------------------
|
|
43
43
|
@staticmethod
|
|
44
|
-
|
|
45
|
-
def level(name : str, lvl : int) -> None:
|
|
44
|
+
def level(name : str, lvl : int):
|
|
46
45
|
'''
|
|
47
46
|
Context manager used to set the logging level of a given logger
|
|
48
47
|
|
|
@@ -51,17 +50,22 @@ class LogStore:
|
|
|
51
50
|
name : Name of logger
|
|
52
51
|
lvl : Integer representing logging level
|
|
53
52
|
'''
|
|
54
|
-
log
|
|
53
|
+
log = LogStore.get_logger(name=name)
|
|
55
54
|
if log is None:
|
|
56
55
|
raise ValueError(f'Cannot find logger {name}')
|
|
57
56
|
|
|
58
57
|
old_lvl = log.getEffectiveLevel()
|
|
59
58
|
|
|
60
59
|
LogStore.set_level(name, lvl)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
|
|
61
|
+
@contextlib.contextmanager
|
|
62
|
+
def _context():
|
|
63
|
+
try:
|
|
64
|
+
yield
|
|
65
|
+
finally:
|
|
66
|
+
LogStore.set_level(name, old_lvl)
|
|
67
|
+
|
|
68
|
+
return _context()
|
|
65
69
|
#--------------------------
|
|
66
70
|
@staticmethod
|
|
67
71
|
def get_logger(name : str) -> Union[Logger,None]:
|
|
@@ -55,6 +55,21 @@ def to_yaml(df : pnd.DataFrame, path : str):
|
|
|
55
55
|
|
|
56
56
|
with open(path, 'w', encoding='utf-8') as ofile:
|
|
57
57
|
yaml.dump(data, ofile, Dumper=yaml.CDumper)
|
|
58
|
+
# ----------------------
|
|
59
|
+
def to_markdown(df : pnd.DataFrame, path : str) -> None:
|
|
60
|
+
'''
|
|
61
|
+
Parameters
|
|
62
|
+
-------------
|
|
63
|
+
df : Pandas dataframe
|
|
64
|
+
path: Path to markdown file
|
|
65
|
+
'''
|
|
66
|
+
dir_path = os.path.dirname(path)
|
|
67
|
+
if dir_path != '':
|
|
68
|
+
os.makedirs(dir_path, exist_ok=True)
|
|
69
|
+
|
|
70
|
+
text = df.to_markdown()
|
|
71
|
+
with open(path, 'w', encoding='utf-8') as ofile:
|
|
72
|
+
ofile.write(text)
|
|
58
73
|
# -------------------------------------
|
|
59
74
|
def from_yaml(path : str) -> pnd.DataFrame:
|
|
60
75
|
'''
|
|
@@ -11,7 +11,7 @@ import pandas as pnd
|
|
|
11
11
|
import awkward as ak
|
|
12
12
|
import numpy
|
|
13
13
|
|
|
14
|
-
from ROOT import RDataFrame, RDF, Numba
|
|
14
|
+
from ROOT import RDataFrame, RDF, Numba # type: ignore
|
|
15
15
|
|
|
16
16
|
from dmu.logging.log_store import LogStore
|
|
17
17
|
|
|
@@ -97,16 +97,19 @@ def add_column_with_numba(
|
|
|
97
97
|
|
|
98
98
|
return rdf
|
|
99
99
|
# ---------------------------------------------------------------------
|
|
100
|
-
def rdf_report_to_df(rep : RDF.RCutFlowReport) ->
|
|
100
|
+
def rdf_report_to_df(rep : RDF.RCutFlowReport) -> pnd.DataFrame:
|
|
101
101
|
'''
|
|
102
|
-
|
|
102
|
+
Parameters
|
|
103
|
+
------------------
|
|
104
|
+
rep: output of rdf.Report(), i.e. an RDataFrame cutflow report.
|
|
103
105
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
Returns
|
|
107
|
+
------------------
|
|
108
|
+
A pandas dataframe with the total, failed, efficiency, and cumulative efficiency
|
|
109
|
+
If no cut was applied, raises ValueError
|
|
106
110
|
'''
|
|
107
111
|
if rep.begin() == rep.end():
|
|
108
|
-
|
|
109
|
-
return None
|
|
112
|
+
raise ValueError('Empty cutflow report')
|
|
110
113
|
|
|
111
114
|
d_data = {'cut' : [], 'All' : [], 'Passed' : []}
|
|
112
115
|
for cut in rep:
|
|
@@ -119,10 +122,10 @@ def rdf_report_to_df(rep : RDF.RCutFlowReport) -> Union[pnd.DataFrame, None]:
|
|
|
119
122
|
d_data['Passed'].append(pas)
|
|
120
123
|
|
|
121
124
|
df = pnd.DataFrame(d_data)
|
|
122
|
-
df['Efficiency' ] = df['Passed'] / df['All']
|
|
125
|
+
df['Efficiency' ] = df['Passed'] / df['All'].replace(0, pnd.NA)
|
|
123
126
|
df['Cummulative'] = df['Efficiency'].cumprod()
|
|
124
127
|
|
|
125
|
-
return df
|
|
128
|
+
return df
|
|
126
129
|
# ---------------------------------------------------------------------
|
|
127
130
|
def random_filter(rdf : RDataFrame, entries : int) -> RDataFrame:
|
|
128
131
|
'''
|
|
@@ -9,6 +9,7 @@ import re
|
|
|
9
9
|
import pickle
|
|
10
10
|
from typing import Union
|
|
11
11
|
|
|
12
|
+
import yaml
|
|
12
13
|
import numpy
|
|
13
14
|
import pandas as pnd
|
|
14
15
|
import matplotlib.pyplot as plt
|
|
@@ -83,6 +84,12 @@ def range_from_obs(obs : zobs) -> tuple[float,float]:
|
|
|
83
84
|
|
|
84
85
|
minx, maxx = obs.limits
|
|
85
86
|
|
|
87
|
+
if not isinstance(minx, numpy.ndarray):
|
|
88
|
+
raise ValueError(f'Minx is not an array but: {minx}')
|
|
89
|
+
|
|
90
|
+
if not isinstance(maxx, numpy.ndarray):
|
|
91
|
+
raise ValueError(f'Minx is not an array but: {maxx}')
|
|
92
|
+
|
|
86
93
|
return float(minx[0][0]), float(maxx[0][0])
|
|
87
94
|
#-------------------------------------------------------
|
|
88
95
|
def yield_from_zdata(data : zdata) -> float:
|
|
@@ -109,16 +116,23 @@ def yield_from_zdata(data : zdata) -> float:
|
|
|
109
116
|
#-------------------------------------------------------
|
|
110
117
|
# Check PDF
|
|
111
118
|
#-------------------------------------------------------
|
|
112
|
-
def is_pdf_usable(pdf : zpdf) ->
|
|
119
|
+
def is_pdf_usable(pdf : zpdf) -> bool:
|
|
113
120
|
'''
|
|
114
|
-
|
|
121
|
+
Parameters
|
|
122
|
+
---------------
|
|
123
|
+
pdf: PDF to check
|
|
124
|
+
|
|
125
|
+
Returns
|
|
126
|
+
---------------
|
|
127
|
+
True if PDF is usable
|
|
115
128
|
'''
|
|
116
|
-
|
|
129
|
+
minx, maxx = range_from_obs(obs=pdf.space)
|
|
117
130
|
|
|
118
131
|
arr_x = numpy.linspace(minx, maxx, 100)
|
|
132
|
+
tf_x = tf.convert_to_tensor(arr_x)
|
|
119
133
|
|
|
120
134
|
try:
|
|
121
|
-
pdf.pdf(
|
|
135
|
+
pdf.pdf(tf_x)
|
|
122
136
|
except tf.errors.InvalidArgumentError:
|
|
123
137
|
log.warning('PDF cannot be evaluated')
|
|
124
138
|
return False
|
|
@@ -194,7 +208,7 @@ def _is_par_blinded(name : str, l_blind : list[str]) -> bool:
|
|
|
194
208
|
return False
|
|
195
209
|
#-------------------------------------------------------
|
|
196
210
|
def _get_pars(
|
|
197
|
-
pdf : zpdf,
|
|
211
|
+
pdf : zpdf|zmod,
|
|
198
212
|
blind : None|list[str]) -> tuple[list, list]:
|
|
199
213
|
'''
|
|
200
214
|
Parameters
|
|
@@ -224,7 +238,7 @@ def _get_pars(
|
|
|
224
238
|
return l_par_flt, l_par_fix
|
|
225
239
|
#-------------------------------------------------------
|
|
226
240
|
def _get_messages(
|
|
227
|
-
pdf : zpdf,
|
|
241
|
+
pdf : zpdf|zmod,
|
|
228
242
|
l_par_flt : list,
|
|
229
243
|
l_par_fix : list,
|
|
230
244
|
d_const : None|dict[str,tuple[float,float]] = None) -> list[str]:
|
|
@@ -327,13 +341,19 @@ def _parameters_from_result(result : zres) -> dict[str,tuple[float,float]]:
|
|
|
327
341
|
|
|
328
342
|
log.debug(f'{name:<20}{value:<20.3f}{error}')
|
|
329
343
|
|
|
344
|
+
if value is None:
|
|
345
|
+
raise ValueError(f'No value found for parameter {name}')
|
|
346
|
+
|
|
347
|
+
if error is None:
|
|
348
|
+
raise ValueError(f'No value found for parameter {name}')
|
|
349
|
+
|
|
330
350
|
d_par[name] = float(value), float(error)
|
|
331
351
|
|
|
332
352
|
return d_par
|
|
333
353
|
#---------------------------------------------
|
|
334
354
|
def save_fit(
|
|
335
355
|
data : zdata,
|
|
336
|
-
model : zpdf|None,
|
|
356
|
+
model : zpdf|zmod|None,
|
|
337
357
|
res : zres|None,
|
|
338
358
|
fit_dir : str,
|
|
339
359
|
d_const : dict[str,tuple[float,float]]|None = None) -> None:
|
|
@@ -591,7 +611,7 @@ def placeholder_fit(
|
|
|
591
611
|
else:
|
|
592
612
|
data = zfit.Data.from_pandas(df, obs=pdf.space, weights=Data.weight_name)
|
|
593
613
|
|
|
594
|
-
d_const = {'sg' :
|
|
614
|
+
d_const = {'sg' : (50., 3.)}
|
|
595
615
|
|
|
596
616
|
obj = Fitter(pdf, data)
|
|
597
617
|
res = obj.fit(cfg={'constraints' : d_const})
|
|
@@ -623,7 +643,12 @@ def _reformat_values(d_par : dict) -> dict:
|
|
|
623
643
|
}
|
|
624
644
|
'''
|
|
625
645
|
|
|
626
|
-
|
|
646
|
+
try:
|
|
647
|
+
error = d_par['minuit_hesse']['error']
|
|
648
|
+
except KeyError as exc:
|
|
649
|
+
log.error(yaml.dump(d_par))
|
|
650
|
+
raise KeyError('Cannot extract error from parameters') from exc
|
|
651
|
+
|
|
627
652
|
error = float(error)
|
|
628
653
|
|
|
629
654
|
value = d_par['value']
|
|
@@ -647,7 +672,12 @@ def zres_to_cres(res : zres) -> DictConfig:
|
|
|
647
672
|
pass
|
|
648
673
|
|
|
649
674
|
par = res.params
|
|
650
|
-
|
|
675
|
+
try:
|
|
676
|
+
d_par = { name : _reformat_values(d_par=d_par) for name, d_par in par.items()}
|
|
677
|
+
except KeyError as exc:
|
|
678
|
+
print(res)
|
|
679
|
+
raise KeyError('Fit parameters cannot be used') from exc
|
|
680
|
+
|
|
651
681
|
cfg = OmegaConf.create(d_par)
|
|
652
682
|
|
|
653
683
|
return cfg
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|