Skip to content

Latest commit

 

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A Python reimplementation of RUMP, the Rutherford backscattering spectrometry (RBS) simulation and analysis package

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages