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.
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.3.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.3.0.tar.gz | 176.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyrump-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 379.9 kB
Release files / pyrump-1.3.0.tar.gz
| Download URL | pyrump-1.3.0.tar.gz |
|---|---|
| Size | 176.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2621f6ae6473e202ca3809eeeead51de7f3cabd2a09d377c3dc4aa090483ec4
|
|
BLAKE2b-256 checksum How to use checksums |
4a74ecf0aa4e333458e26a2efa5298967d929e9082e1ae91cc5293c8811a1e81
|
| 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.3.0-py3-none-any.whl
| Download URL | pyrump-1.3.0-py3-none-any.whl |
|---|---|
| Size | 203.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bfa204be7b8eb255ffd109623217ea1f730175e39a7de3e400889f8752a76688
|
|
BLAKE2b-256 checksum How to use checksums |
64d80acfa1910029ef4ecb9b277e8c176b8f12fdf73220679c310d50cdbc119d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|