Skip to main content

pyRUMP

PyPI License: MIT

Measured spectrum compared against a pyRUMP simulation, showing a Si / Ru / Mn2.74Pt1 / Ru stack Measured data (black) vs. a pyRUMP simulation (red) of a Si / Ru / Mn2.74Pt1 / Ru stack.

A clean Python reimplementation of RUMP, the Rutherford backscattering spectrometry (RBS) simulation and analysis package originally written by L. R. Doolittle and M. O. Thompson at Cornell.

The original is ~22k lines of unmaintained C from the late 1980s, with no active support. This reimplementation is written using Claude Code and reproduces RUMP's physics as a tested, importable Python library, with both a batch CLI and RUMP's own interactive shell. It runs on Windows, macOS, and Linux.

Rewriting from scratch with AI assistance is also a chance to move past a straight port: a handful of bugs in the original C are fixed rather than just reproduced (validated against the C oracle — see RUMP quirks and defects), new physics has been added (Andersen screening alongside RUMP's own L'Ecuyer correction, via SCREENING), and the workflow is gaining commands RUMP never had, like automatic per-fit REPORT generation. More input formats — SimNRA and NDF — are planned.

Quick start

pip install pyrump

Requires Python 3.9+; numpy, scipy, and matplotlib are installed automatically, along with the physics data tables pyRUMP needs at runtime.

pyrump                         # the interactive shell, from any directory
Your wish? cd examples
Your wish? xeq MnPt.RBS         /* load the measured spectrum, above    */
Your wish? sim get MnPt.lcm     /* load its 5-layer sample description  */
Your wish? compare              /* data vs. simulation, with residuals  */

Buffer 0 is always the simulation and recomputes itself when the sample or the active buffer's parameters change — there is no "simulate" command, exactly as in the original.

Or drive it as one-off batch commands:

pyrump simulate sample.lcm --energy 2.0 --beam 4He -o out.rbs
pyrump fit sample.lcm measured.rbs --vary thickness:0 --window 190 226
pyrump plot measured.rbs --compare out.rbs -o comparison.png
pyrump convert measured.rbs measured.dat

Documentation

The full manual — interactive shell reference, CLI and Python API, worked examples, the physics writeup, and the list of RUMP quirks and defects found while porting — is at https://ikost.github.io/pyRUMP/.

Contributing

pip install -e ".[dev]"
pytest              # unit tests, no external dependencies
ruff check .

Oracle-comparison tests (pytest -m oracle) need the RUMP C source, which isn't redistributed here — see Design and validation. They skip cleanly when it's absent, so it's not needed for everyday development.

Licensing and provenance

pyRUMP is MIT licensed, and an independent reimplementation: it is not affiliated with, endorsed by, or derived from the RUMP source distribution. See Licensing and provenance for the full story, including bundled data-table provenance.

Release files for pyrump 1.4.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 pyrump 1.4.0
File Size Uploaded
pyrump-1.4.0.tar.gz 179.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyrump 1.4.0
File Interpreter ABI Platform
pyrump-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 386.1 kB

Release files / pyrump-1.4.0.tar.gz

Download URL pyrump-1.4.0.tar.gz
Size 179.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b4d29f6420e3c55b0f5aa8b11f71b24c57684284da0043d8fe58e8947bba713f
BLAKE2b-256 checksum
How to use checksums
40340fb7781161dcac219e649300de5171980eeb500899d23c28144d55155030
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / pyrump-1.4.0-py3-none-any.whl

Download URL pyrump-1.4.0-py3-none-any.whl
Size 206.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a80d1aebe8407e35b1a1d3cce444be0b7fdc33420412b3603ba25125be6a9723
BLAKE2b-256 checksum
How to use checksums
bab0ce34bfa31786a06269c56661ed76ddbf53529dc0f533353bcb7bea0f8c5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 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