data-manipulation-utilities 0.2.8.dev940__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.
Files changed (88) hide show
  1. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/PKG-INFO +11 -1
  2. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/README.md +10 -0
  3. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/pyproject.toml +1 -1
  4. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/logging/log_store.py +11 -7
  5. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/pdataframe/utilities.py +15 -0
  6. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rdataframe/utilities.py +12 -9
  7. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/utilities.py +7 -2
  8. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/__init__.py +0 -0
  9. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/arrays/utilities.py +0 -0
  10. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/hashing.py +0 -0
  11. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/naming.py +0 -0
  12. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/typing_utilities.py +0 -0
  13. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/utilities.py +0 -0
  14. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/generic/version_management.py +0 -0
  15. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/logging/messages.py +0 -0
  16. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_classifier.py +0 -0
  17. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_diagnostics.py +0 -0
  18. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_performance.py +0 -0
  19. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/cv_predict.py +0 -0
  20. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/train_mva.py +0 -0
  21. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/ml/utilities.py +0 -0
  22. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/fwhm.py +0 -0
  23. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/matrix.py +0 -0
  24. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter.py +0 -0
  25. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter_1d.py +0 -0
  26. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/plotter_2d.py +0 -0
  27. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/plotting/utilities.py +0 -0
  28. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rdataframe/atr_mgr.py +0 -0
  29. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/ddfgetter.py +0 -0
  30. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/rfprinter.py +0 -0
  31. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/rfile/utilities.py +0 -0
  32. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/fit_stats.py +0 -0
  33. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/fitter.py +0 -0
  34. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/function.py +0 -0
  35. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/gof_calculator.py +0 -0
  36. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/minimizers.py +0 -0
  37. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/model_factory.py +0 -0
  38. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/parameters.py +0 -0
  39. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/wdata.py +0 -0
  40. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit.py +0 -0
  41. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit_models.py +0 -0
  42. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/stats/zfit_plotter.py +0 -0
  43. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/testing/utilities.py +0 -0
  44. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/text/transformer.py +0 -0
  45. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/workflow/__init__.py +0 -0
  46. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu/workflow/cache.py +0 -0
  47. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/__init__.py +0 -0
  48. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_from_file.yaml +0 -0
  49. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_from_model.yaml +0 -0
  50. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_multiple_methods.yaml +0 -0
  51. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/diagnostics_overlay.yaml +0 -0
  52. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva.yaml +0 -0
  53. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_def.yaml +0 -0
  54. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_with_diagnostics.yaml +0 -0
  55. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/ml/tests/train_mva_with_preffix.yaml +0 -0
  56. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/2d.yaml +0 -0
  57. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/fig_size.yaml +0 -0
  58. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/high_stat.yaml +0 -0
  59. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/legend.yaml +0 -0
  60. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/line.yaml +0 -0
  61. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/name.yaml +0 -0
  62. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/no_bounds.yaml +0 -0
  63. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/normalized.yaml +0 -0
  64. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/plug_fwhm.yaml +0 -0
  65. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/plug_stats.yaml +0 -0
  66. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/simple.yaml +0 -0
  67. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/styling.yaml +0 -0
  68. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/title.yaml +0 -0
  69. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/plotting/tests/weights.yaml +0 -0
  70. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/rfile/friends.yaml +0 -0
  71. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/fitter/test_simple.yaml +0 -0
  72. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/kde_optimizer/control.json +0 -0
  73. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/kde_optimizer/signal.json +0 -0
  74. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/stats/parameters/data.yaml +0 -0
  75. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config.json +0 -0
  76. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config.yaml +0 -0
  77. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config_1.yaml +0 -0
  78. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/config_2.yaml +0 -0
  79. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/fail_validate.yaml +0 -0
  80. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/validate.yaml +0 -0
  81. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/generic/with_references.yaml +0 -0
  82. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/pdf_to_tex.txt +0 -0
  83. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/tests/stats/parameters/parameters_library.yaml +0 -0
  84. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform.toml +0 -0
  85. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform.txt +0 -0
  86. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_set.toml +0 -0
  87. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_set.txt +0 -0
  88. {data_manipulation_utilities-0.2.8.dev940 → data_manipulation_utilities-0.2.8.dev950}/src/dmu_data/text/transform_trf.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: data-manipulation-utilities
3
- Version: 0.2.8.dev940
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.
@@ -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.
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = 'data-manipulation-utilities'
3
3
  description = 'Project storing utilities needed to reduce boilerplate code when analyzing data'
4
- version = "0.2.8.dev940"
4
+ version = "0.2.8.dev950"
5
5
  readme = 'README.md'
6
6
  package-mode = true
7
7
  packages = [
@@ -41,8 +41,7 @@ class LogStore:
41
41
  backend = 'logging'
42
42
  #--------------------------
43
43
  @staticmethod
44
- @contextlib.contextmanager
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 = LogStore.get_logger(name=name)
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
- try:
62
- yield
63
- finally:
64
- LogStore.set_level(name, old_lvl)
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) -> Union[pnd.DataFrame, None]:
100
+ def rdf_report_to_df(rep : RDF.RCutFlowReport) -> pnd.DataFrame:
101
101
  '''
102
- Takes the output of rdf.Report(), i.e. an RDataFrame cutflow report.
102
+ Parameters
103
+ ------------------
104
+ rep: output of rdf.Report(), i.e. an RDataFrame cutflow report.
103
105
 
104
- Produces a pandas dataframe with the total, failed, efficiency, and cummulative efficiency
105
- If no cut was applied, i.e. the cutflow is empty, will return None and show warning
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
- log.warning('Empty cutflow')
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
  '''
@@ -353,7 +353,7 @@ def _parameters_from_result(result : zres) -> dict[str,tuple[float,float]]:
353
353
  #---------------------------------------------
354
354
  def save_fit(
355
355
  data : zdata,
356
- model : zpdf|None,
356
+ model : zpdf|zmod|None,
357
357
  res : zres|None,
358
358
  fit_dir : str,
359
359
  d_const : dict[str,tuple[float,float]]|None = None) -> None:
@@ -672,7 +672,12 @@ def zres_to_cres(res : zres) -> DictConfig:
672
672
  pass
673
673
 
674
674
  par = res.params
675
- d_par = { name : _reformat_values(d_par=d_par) for name, d_par in par.items()}
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
+
676
681
  cfg = OmegaConf.create(d_par)
677
682
 
678
683
  return cfg