Skip to main content

Nucleide

Nucleide is a modern Rust toolkit for nuclear-engineering data, measurement, and workflow glue: legacy transport-code I/O, nuclide identification, materials, CRAM depletion, enrichment analytics, point kinetics, gamma-ray spectroscopy, tritium transport, fusion neutron sources, spectrum unfolding, variance reduction, UQ sampling, CSG translation, and code-card emission — exposed through a typed Python API.

The project is a fresh Rust implementation of capabilities pioneered by PyNE, focused on memory safety, fast builds, and pip install-able wheels. Scope is intentionally narrow today and will expand as more parsers and workflow pieces land.

Installation

pip install nucleide

Prebuilt wheels cover Linux, macOS, and Windows for Python >= 3.10 (abi3). To build from source instead, see the Development section below.

Why

Nuclear-engineering workflows spend most of their time moving data between codes rather than solving transport itself. The established tooling for that glue layer carries a heavy build chain (CMake + Fortran + Cython) and hand-written parsers that are hard to extend and harder to embed. Nucleide rebuilds the high-value subset in memory-safe Rust with one-command pip install wheels, keeping Python as the user-facing API.

Features

Area Capabilities
Nuclide core (nucleide-nuclei) Canonical nucid representation, particle registry, reaction-name registry (labels, MT mapping, hashes), name-dialect conversions (ZZAAAMM, ZAID/MCNP, Serpent, FLUKA, NIST, CINDER, ALARA, SZA, ARMI/MCC3), AME2020 masses (incl. isomer masses), natural abundances, half-lives, screening cross sections / scattering lengths / prompt decay energies (generated from ENDF/B + NIST), ENDF/B-VIII.0 decay branches, free-form name normalization, dose factors, EPA FGR 15 external-dosimetry coefficients (runtime hash-pinned download), IRDFF-II v1 foil-response pack (runtime hash-pinned download, parsed into unfolding response rows)
Materials (nucleide-material) Compositions, mixing arithmetic, unit conversions, DOE/PNNL Materials Compendium loading, materials XML export, activity/decay-heat/dose-per-gram analytics, label-collision checks and conservation audits, mass-efficiency separator / fixed-ratio blender, Page CUSUM change detector
MCNP I/O (nucleide-mcnp-io) xsdir, meshtal, SSW/SURFSRC, PTRAC, WWINP, MCTAL (headers, kcode, standard tally bodies), ENDL readers; typed legacy SDEF fixed-source reader (round-trips the spectroscopy emitter byte-identically); NumPy result_array() / totals_array() meshtal and tally_vals_array() MCTAL bridges; material extraction from input decks; full-deck parse/edit/write round-trip (cells, surfaces, materials); L3 semantic views (MODE/TRn/universes/lattices/FILL/tallies) with validation; mesh-to-geometry deck generation
CSG translation (nucleide-csg-xlate) Scoped MCNP CSG translation to OpenMC geometry.xml, Serpent, PHITS, and GDML (Geant4) output (surfaces, cells, universes/fills, rectangular LAT=1 lattices, material stub) with a drift report; macrobodies expand, unsupported constructs fail with a clear error
MCPL I/O (nucleide-mcpl-io) Monte Carlo Particle List interchange reader/writer (format versions 2/3, single/double precision, gzip-transparent) plus SSW↔MCPL conversion and the merge/extract/stats/repair particle-list utilities
Serpent I/O (nucleide-serpent-io) _res.m, _dep.m, _det.m readers producing structured records
FLUKA I/O (nucleide-fluka-io) USRBIN tally reader, material/compound card generation
ALARA I/O (nucleide-alara-io) Deck/flux/matlib-elelib-WDR/output/photon/schedule-expansion glue; solver out of scope. Clearance / waste-classification analytics: clearance index CI = Σ Aᵢ/CLᵢ and the sum-of-fractions screening rule over parsed inventories, caller-supplied limit tables plus the EU 2013/59/Euratom Annex VII Table A vendored default and the Spanish CSN conditional NORM landfill tables as opt-in tables (screening arithmetic, never a compliance decision)
Depletion (nucleide-depletion) CRAM (orders 16/48) matrix exponential, analytic Bateman fast path (method= selector with CRAM-48 fallback), depletion-chain XML parsing, Predictor/CECM/CF4 time-series integrators with activity/decay-heat observables, unit-aware decay inventories, cumulative decays and chain-lineage queries
Enrichment (nucleide-enrichment) Multicomponent cascade solver (numeric), SWU closed-form helpers
Point kinetics (nucleide-kinetics) Prescribed-reactivity PKE solver, inhour roots, prompt-jump factor
Tritium transport (nucleide-tritium) 1D Fick + McNabb–Foster diffusion-trapping kernel, Dirichlet/Sieverts/Henry/zero-flux/recombination surfaces (steady state and transient), permeation breakthrough and time lag, multi-layer series stacks with Sieverts or Henry internal interfaces
Fusion sources (nucleide-plasma-source) Tokamak neutron sources — ring/point (D-D 2.45 MeV, D-T 14.1 MeV) and a parametric Miller-geometry plasma with caller-supplied L/H/A-mode profiles (Fausser 2012), reactivity-weighted emission (Bosch–Hale 1992) over equimolar D-T, pure D-D, or D/T fuel mixtures at a shared ion temperature (Eriksson 2016), ion-temperature-broadened Gaussian spectra (Brysk/Ballabio), seeded sampling to particle vectors, MCNP SDEF + Serpent source-card emission with drift report
Damage metrics (nucleide-damage) NRT-dpa and arc-dpa displacement functions (NRT 1975; Nordlund 2018), He/H appm production and He/dpa ratios by spectral folding of caller flux with caller response functions, UQ on the folds over caller MVN blocks (SPECTER is the validation oracle behind an opt-in vendored Table VII fallback)
Spectroscopy (nucleide-spectroscopy) Spectrum smoothing, gross/net counting, energy/efficiency calibration, X-ray lines, SPE parsing, decay-line SDEF source cards (E9) fed from caller lists or the runtime decay-lines TSV interchange
Spectrum unfolding (nucleide-unfold) SAND-II, STAYSL-class least-squares, and GRAVEL chi-square-weighted adjustment of a guess neutron spectrum against measured activation rates (caller-supplied response matrix, or the IRDFF-II runtime pack), with convergence diagnostics; non-convergence is a hard error
Variance reduction (nucleide-vr-tools) MAGIC weight-window generation, OpenMC/Serpent weight-window emission, mesh source sampling with alias tables
UQ sampling (nucleide-linalg) Seeded MVN + log-normal + LHS draws over caller-supplied covariance blocks, SANDY-compatible estimators, decay-data and fission-yield perturbation consumers
CCCC I/O (nucleide-cccc-io) ISOTXS/RTFLUX text-subset parsers + PARTISN deck writer (no solver)
FISPACT I/O (nucleide-fispact-io) FISPACT-II inventory output parser reusing the ALARA response frame, plus the clearance-bearing wide inventory table printed with the HAZARDS + CLEAR keywords (output-only)
ORIGEN I/O (nucleide-origen-io) Scoped ORIGEN 2.2 TAPE5 input-echo, TAPE6 inventory, and TAPE9 decay readers
R2S (nucleide-r2s) Scoped R2S workflow builder: zone-to-flux linking, schedule expansion, photon assembly (uniform-split placeholder plus per-voxel source tags and .photonSrc group spectra), ARMI database-snapshot adapter
Emit (nucleide-emit) Single-material emission to MCNP/Serpent/FLUKA/ALARA/PARTISN cards with mass-drift report, plus an ARMI blueprint-key bridge
Python bindings PyO3 extension module behind a typed pure-Python facade (nucleide._internal, .pyi stubs, py.typed)

Out of scope

Transport solvers, Fortran discrete-ordinates ports, ENSDF evaluators, MOAB-dependent meshing, and GUIs. Nucleide complements transport codes; it does not replace them.

Layout

nucleide/
├── crates/
│   ├── nuclei/        # nuclide ids, naming conventions, physical data
│   ├── material/      # compositions, mixing, libraries, XML export
│   ├── mcnp-io/       # xsdir/meshtal/SSW/MCTAL/PTRAC/WWINP
│   ├── csg-xlate/     # scoped MCNP CSG -> OpenMC/Serpent/PHITS/GDML translation
│   ├── mcpl-io/       # MCPL interchange read/write + SSW conversion + merge/extract/stats/repair
│   ├── serpent-io/    # res/dep/det readers
│   ├── fluka-io/      # usrbin reader, material cards
│   ├── alara-io/      # ALARA deck/flux/libs/output/photon/schedule glue + clearance analytics (no solver)
│   ├── cccc-io/       # ISOTXS/RTFLUX text-subset parsers + PARTISN writer (no solver)
│   ├── fispact-io/    # FISPACT-II inventory output + CLEAR-keyword clearance table (output-only)
│   ├── origen-io/     # scoped ORIGEN TAPE5/6/9 readers
│   ├── r2s/           # scoped R2S workflow builder (photon tags + spectra)
│   ├── vr-tools/      # MAGIC weight windows + OpenMC/Serpent emission, source sampling
│   ├── enrichment/    # cascades, SWU
│   ├── depletion/     # CRAM + chain files
│   ├── kinetics/      # prescribed-reactivity point kinetics + inhour
│   ├── tritium/       # 1D diffusion-trapping kernel + single/multi-layer permeation checks
│   ├── plasma-source/ # tokamak ring/point/parametric-plasma fusion sources + SDEF/Serpent cards
│   ├── damage/        # NRT/arc-dpa + He/H appm + He/dpa spectral folds + UQ
│   ├── unfold/        # SAND-II neutron spectrum unfolding (activation rates)
│   ├── spectroscopy/  # smoothing, counting, calibration, X-ray, SPE
│   ├── emit/          # five-dialect card emission + mass-drift reports
│   └── linalg/        # isolation facade over the linear-algebra backend
├── bindings/python/   # PyO3 crate -> nucleide._internal
├── python/nucleide/   # typed pure-Python facade (maturin mixed layout)
├── fixtures/          # golden-byte test data
├── validation/        # cross-code validation harness vs PyNE/OpenMC
└── tests/             # Python-side tests

Development

git clone https://github.com/nukehub-dev/nucleide.git
cd nucleide

# Rust side
cargo test                       # workspace unit tests
cargo clippy --all-targets -- -D warnings

# Python side (needs: rustup, pip install maturin)
pip install maturin pytest pytest-cov ruff mypy
maturin develop                  # build + install into current venv
pytest tests/

# Lint / type-check / format the Python surface
ruff format python tests
ruff check python tests
mypy                             # strict type-check against .pyi stubs

# Rust coverage (needs llvm-tools-preview component)
cargo llvm-cov --workspace       # or --lcov for CI upload

Tooling

Layer Format Lint Types Coverage
Rust rustfmt (cargo fmt) clippy -D warnings — cargo-llvm-cov (CI)
Python ruff format ruff check mypy --strict via .pyi stubs pytest-cov

Wheels are built with maturin (PyO3 mixed layout). One wheel serves all Python >= 3.10 via abi3 — the same stack used by pydantic-core, polars, and ruff.

Validation strategy

  1. Parsers are validated against golden-byte fixtures in fixtures/; parser output must match recorded snapshots before any release.
  2. Numeric kernels (CRAM, cascade solving) are checked against published analytic vectors and cross-code results on shared inputs; the runnable cross-code harness in validation/ compares Nucleide against PyNE and OpenMC and commits its measured results.
  3. Behavioral compatibility with legacy tool output is asserted wherever a fixture exists, so downstream workflows see identical data.

Criterion benchmarks (cargo bench) cover the numeric kernels and parsers.

Citing

If you use Nucleide in research, see CITATION.cff and the JOSS paper draft in paper.md.

Status

Pre-alpha. APIs may change without notice.

Documentation

Additional tutorials, reference pages, and developer guides live in the docs/ tree.

Acknowledgments

Nucleide is a fresh Rust implementation of workflow-glue capabilities pioneered by PyNE ("Python for Nuclear Engineering", BSD-3-Clause). Some reference data and golden test fixtures — notably the DOE/PNNL Materials Compendium — are vendored directly from PyNE; see fixtures/data/MaterialsCompendium.LICENSE for its terms.

License

BSD-2-Clause.

Metadata

Release files for nucleide 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nucleide 0.13.0
File Size Uploaded
nucleide-0.13.0.tar.gz 2.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for nucleide 0.13.0
File Interpreter ABI Platform
nucleide-0.13.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
nucleide-0.13.0-cp310-abi3-manylinux_2_39_x86_64.whl CPython 3.10 abi3 Linux glibc 2.39+ x86-64 Details
nucleide-0.13.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 16.1 MB

Release files / nucleide-0.13.0.tar.gz

Download URL nucleide-0.13.0.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
b6abd505d89d1161a0680d644719429b2dafde8042d2636c4c34d9e25b6ca34f
BLAKE2b-256 checksum
How to use checksums
6df05e0e01ee11daf34f2c45c7dccf3d3bbf7cb5acd1230b711c9f47a2b41984
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / nucleide-0.13.0-cp310-abi3-win_amd64.whl

Download URL nucleide-0.13.0-cp310-abi3-win_amd64.whl
Size 4.6 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
c3bf93583a8b6c0315343137c08f18df63b7f88adb664f4021e6299323a70e95
BLAKE2b-256 checksum
How to use checksums
0d4e8c661ec412eb57b922a20d2c6c26bcb21a06136fda7c1a547ea69c3118d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / nucleide-0.13.0-cp310-abi3-manylinux_2_39_x86_64.whl

Download URL nucleide-0.13.0-cp310-abi3-manylinux_2_39_x86_64.whl
Size 4.5 MB
Tags CPython 3.10 Linux glibc 2.39+ x86-64 abi3
SHA-256 checksum
How to use checksums
c19b39001408d754ada5aa30319c28ab553a6304bd98ce79679c44af889c2a52
BLAKE2b-256 checksum
How to use checksums
c3f4a554ee9b30acfb696d8492d60c65f58c24046994b774913c7b0a47246600
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / nucleide-0.13.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL nucleide-0.13.0-cp310-abi3-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8ed5adafa11b8d70aee54d620e44980288f189b0a9df49909daaa56d63b948ce
BLAKE2b-256 checksum
How to use checksums
2538b3bb15bd0f2919f996d31e4298418335b6c49f5f3cc96ae988d82916c056
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

0.16.0

4 release files

0.15.0

4 release files

0.14.0

4 release files

This release

0.13.0 This release

4 release files

0.12.0

4 release files

0.11.0

4 release files

0.10.0

4 release files

0.9.0

4 release files

0.8.0

4 release files

0.7.0

4 release files

0.6.0

4 release files

0.5.0

4 release files

0.4.0

4 release files

0.3.0

4 release files

0.2.0

4 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page