pyRUMP
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)
| File | Size | Uploaded | |
|---|---|---|---|
| pyrump-1.4.0.tar.gz | 179.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|