- --normalize-to-one renamed to --separate-branches (no alias; the
name now describes the output choice: total spectrum with
intensity-normalized branches vs separate branches, each
normalized to unit area with intensities left to the data user).
SpectrumConfig.normalize_to_one -> separate_branches, CSV header
word to_one -> separate.
- every long option gains a single-letter alias: -N -i -s -m -o -p
-L -d -c -V -S -b (only -v/-q existed before)
- dry-run drops the top-level Transition: line — the per-branch
list below already reports each branch's transition type
- version bumped to 0.4.1 (pyproject, __version__, CSV semantics
docstring, TODO roadmap entry)
- Add proper type annotations to all source files
- Fix return types for numpy operations (np.asarray with dtype=np.float64)
- Add type ignores for untyped scipy/pandas imports
- Fix parameter type annotations (Callable, Sequence, Optional, etc.)
- Add TYPE_CHECKING imports for forward references
- Fix fitter.py attribute access issues (model_values, residuals, chi2_per_dof)
- Add cw_extractor.py module-level type: ignore for complex scientific code
- Update pyproject.toml to exclude notebooks from mypy
- Add mypy disable_error_code configuration for test files
- Run black and ruff for formatting and linting
- Add proper type annotations to all source files
- Fix return types for numpy operations (np.asarray with dtype=np.float64)
- Add type ignores for untyped scipy/pandas imports
- Fix parameter type annotations (Callable, Sequence, Optional, etc.)
- Add TYPE_CHECKING imports for forward references
- Fix fitter.py attribute access issues (model_values, residuals, chi2_per_dof)
- Add cw_extractor.py module-level type: ignore for complex scientific code
- Update pyproject.toml to exclude notebooks from mypy
- Run black and ruff for formatting and linting
- Add nuclear_data.py module for paceENSDF integration and JSON input
- Add DecayInfo and BranchInfo dataclasses for parsed nuclear data
- Implement get_decay_info_from_paceENSDF() to retrieve decay parameters
- Implement load_json_input() and json_to_config() for custom JSON input
- Add create_config_from_source() unified interface for both sources
- Add bs_pnpi CLI with --nuclide, --input, --output, --plot, and detector options
- Add 23 comprehensive tests for nuclear_data module
- Add sample JSON input file
- Update __init__.py and pyproject.toml with new exports and entry point
- Add paceENSDF as optional dependency
Implemented all planned corrections:
- finite-size e/m L0 and U
- atomic screening and exchange
- radiative (electron only so far)
Added plotter and csv_export
Add implementation for the basic set of spectrum components:
Primary
-------
- Phase Space
- Fermi Function
Corrections
-----------
- Atomic:
- Screening
- Atomic exchange
- E/M and finite size:
- Finite nucleus size and charge distribution
- Radiative