Files
beta_shape_pnpi/pyproject.toml
T
unzhakov 5c2b12c0e6 feat: experimental data calibration pipeline with ROOT I/O
- Fix chi2 calculation bug in calibration.py (remove incorrect
  coeffs[::-1] reversal in np.polyval)
- Fix broken beta_spectrum/cli.py (remove orphaned detector response
  add_argument calls and unused imports)
- Add ExpSpectrum.apply_calibration() and EnergyCalibrator.from_am241_spectrum()
- Add LivetimeDetermination class for pulser-based livetime
- Add SpectrumPipeline orchestration (read→subtract→calibrate→livetime→validate)
- Add ROOT I/O with PyROOT primary + uproot fallback
- Add bs_exp CLI with process, livetime, export subcommands
- Add exp_calibration notebook with pre-calibration visualization
- Add comprehensive tests (73 passing)
- Add bs_exp console script and [root] extra to pyproject.toml
- Remove obsolete detector_response module and unused notebooks
2026-05-21 16:01:25 +03:00

75 lines
1.7 KiB
TOML

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "beta-spectrum"
version = "0.4.0"
description = "High-precision beta spectrum calculation for nuclear physics"
authors = [
{ name = "Evgeniy Unzhakov" }
]
requires-python = ">=3.10"
dependencies = [
"numpy",
"scipy",
"matplotlib",
"pandas",
"nbformat>=5.10.4",
"nbconvert>=7.17.1",
]
[project.optional-dependencies]
ensdf = ["paceENSDF"]
root = ["root"] # PyROOT (requires system ROOT installation)
dev = [
"pytest",
"nbmake",
"black",
"ruff",
"mypy",
"mdformat",
"mdformat-frontmatter",
"mdformat-footnote",
"mdformat-tables"
]
[project.scripts]
bs_pnpi = "beta_spectrum.cli:main"
bs_exp = "exp_data.exp_cli:main"
[tool.setuptools.packages.find]
where = ["."]
[tool.mypy]
python_version = "3.10"
strict = true
exclude = ["notebooks", "scripts/notebook_plots.py", "tests/"]
disable_error_code = ["no-untyped-def", "arg-type", "return-value", "assignment", "misc", "import-untyped", "type-arg", "no-any-return", "union-attr", "operator"]
[tool.black]
line-length = 88
[tool.pytest.ini_options]
testpaths = ["tests", "notebooks"]
markers = [
"property: Physics property tests (positivity, monotonicity, limits)",
"physics: Physics behavior tests (energy dependence, Z dependence)",
"api: API contract tests (signatures, return types, error handling)",
"quality: Code quality tests (shape, type, NaN, stability)",
"integration: Full pipeline integration tests",
"slow: Tests that take >1s to run",
"requires_ensdf: Tests requiring paceENSDF package",
]
timeout = 30
timeout_method = "thread"
[tool.ruff]
line-length = 88
[tool.mdformat]
line-length = 88
wrap = false
number = true