From 7e31ac4b4e6f8cb0c313fcee5f36b8e5c2b5cd36 Mon Sep 17 00:00:00 2001 From: Evgeniy Unzhakov Date: Fri, 2 Oct 2026 12:01:45 +0300 Subject: [PATCH] docs: reflect normalization fixes, detector cleanup and CLI overrides - README: remove stale detector_response.py tree entry and the detector-models highlight (module removed); document per-branch measured transition endpoints from paceENSDF and JSON-flow CLI override semantics - TODO: drop the DEFAULT_JSON_SCHEMA detector-keys clause (removed) - data/custom_input_example.json: strip dead detector_* keys --- README.md | 9 ++++----- TODO.md | 9 +++++---- data/custom_input_example.json | 11 +---------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 4321a54..233b2ec 100644 --- a/README.md +++ b/README.md @@ -60,8 +60,7 @@ beta_shape_pnpi/ │ │ ├── finite_size.py ✓ L0 expansion + charge distribution U term │ │ ├── screening.py ✓ Atomic electron screening (ratio method) │ │ ├── exchange.py ✓ Hayen-2018 empirical fit coefficients -│ │ ├── radiative.py ✓ Outer radiative corrections, soft-photon resummation -│ │ └── detector_response.py ✓ Analytical detector response models +│ │ └── radiative.py ✓ Outer radiative corrections, soft-photon resummation ├── beta_spectrum/output/ ← output, plotting, visualization, CSV export │ ├── __init__.py # BetaSpectrumAnalyzer, CSVEmitter, Visualizer │ ├── core.py # BetaSpectrumAnalyzer base class @@ -191,9 +190,9 @@ ______________________________________________________________________ For a complete list of implemented and planned features, see [TODO.md](TODO.md). Key highlights: - **Physics corrections**: phase space, Fermi function, finite size, screening, exchange, radiative (with delta_cut resummation) -- **Detector response**: Gaussian, Gaussian+tail, Tikhonov models with tabulated support +- **Detector response**: not implemented — `SpectrumModel` keeps a duck-typed optional convolution hook; the analytical models were removed (restore-or-delete decision tracked in TODO.md) - **Multi-branch decay**: intensity-weighted sum of branch spectra, per-branch calculators with branch-specific endpoint, transition type (from ENSDF), and `--intensity-cutoff` CLI filter - **Analysis tools**: χ² fitter (SpectrumFitter + CurveFitter), C(W) extraction pipeline, Kurie plot analysis, g_V/g_A extraction - **Experimental data**: ExpSpectrum container, energy calibration, peak fitting, dead-time/pile-up correction -- **CLI**: `bs_pnpi --nuclide Tc99` — full paceENSDF integration (auto-lookup of Z, A, Q-value, transition type, half-life, branches, forbiddenness from ENSDF) -- **paceENSDF integration**: `get_decay_info_from_paceENSDF()`, `create_config_from_source("paceENSDF", nuclide="Tc99")`, `_parse_nuclide_symbol()` for Z=1..98, FORBIDDENNESS_MAP, `--nuclide` CLI flag +- **CLI**: `bs_pnpi --nuclide Tc99` — full paceENSDF integration (auto-lookup of Z, A, Q-value, transition type, half-life, branches, forbiddenness from ENSDF); for JSON input the file's values are used and CLI flags (`--e-step`, `--neutrino-mass`, `--intensity-cutoff`, `--csv-separator`, `--normalize-to-one`) override them only when explicitly given +- **paceENSDF integration**: `get_decay_info_from_paceENSDF()`, `create_config_from_source("paceENSDF", nuclide="Tc99")`, `_parse_nuclide_symbol()` for Z=1..98, FORBIDDENNESS_MAP, `--nuclide` CLI flag; per-branch endpoints are the measured transition endpoint energies from ENSDF (max endpoint across branches defines the spectrum endpoint) diff --git a/TODO.md b/TODO.md index ec2e097..3f02cd4 100644 --- a/TODO.md +++ b/TODO.md @@ -32,7 +32,7 @@ beta_spectrum/ ← theory-only core │ ├── screening.py │ ├── exchange.py │ ├── radiative.py -│ └── detector_response.py ← stays here (part of theory) +│ └── (detector_response.py — removed; restore-or-delete pending below) └── nuclear_data.py ← paceENSDF integration exp_data/ ← experimental data handling @@ -102,9 +102,10 @@ output/ ← output, visualization, CSV export - [x] README updated with new architecture diagram and Quick Start examples - [x] Version bumped to 0.4.0 - [ ] Decide: restore or delete the `detector_response` module — it was removed from - `beta_spectrum/components/` together with its tests, but `fitter/model.py` keeps a - duck-typed optional hook and `DEFAULT_JSON_SCHEMA` keeps the detector keys; - restore from git history (commits up to `5f99566`) if convolution is needed again + `beta_spectrum/components/` together with its tests; `fitter/model.py` keeps a + duck-typed optional hook only (`DEFAULT_JSON_SCHEMA` detector keys and the CLI + dry-run detector line were removed with audit cleanup). + Restore from git history (commits up to `5f99566`) if convolution is needed again ______________________________________________________________________ diff --git a/data/custom_input_example.json b/data/custom_input_example.json index ba25eeb..5afdb6f 100644 --- a/data/custom_input_example.json +++ b/data/custom_input_example.json @@ -5,14 +5,5 @@ "A_number": 99, "endpoint_MeV": 0.294, "transition_type": "A", - "e_step_MeV": 0.001, - "use_detector_response": false, - "detector_model": "gaussian", - "detector_sigma_a_keV": 1.0, - "detector_sigma_b": 0.0, - "detector_tail_fraction": 0.0, - "detector_tau_keV": 5.0, - "detector_fano_factor": 0.12, - "detector_n_channels": 4096, - "detector_channel_energy_range": [0.0, 0.35] + "e_step_MeV": 0.001 }