Skip to content

pyRUMP

########  ##    ## ########  ##     ## ##     ## ########  
##     ##  ##  ##  ##     ## ##     ## ###   ### ##     ## 
##     ##   ####   ##     ## ##     ## #### #### ##     ## 
########     ##    ########  ##     ## ## ### ## ########  
##           ##    ##   ##   ##     ## ##     ## ##        
##           ##    ##    ##  ##     ## ##     ## ##        
##           ##    ##     ##  #######  ##     ## ##        
    

$ pyrump

An AI-powered 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. pyRUMP installs via a standard pip install and runs on Windows, macOS, and Linux.

The original RUMP is ~22k lines of C code from the late 1980s (archived for historical reference at github.com/ikost/Rump-and-Genplot-Archive), with an HTML manual and no active support; the distribution was previously available via genplot.com, now abandoned and no longer resolving. pyRUMP reproduces the simulation physics and data-analysis flow as a tested, importable Python library, with both a classical RUMP CLI and a Python API. Plotting uses matplotlib; fitting uses scipy/numpy.

Each of these was a deliberate choice. The original C code needed a separate makefile per platform (makeaix, makelnx, makeosx, makesgi, makesolaris, ...); Python collapses that into one pip install that runs unmodified on Windows, macOS, and Linux. scipy and numpy provide compiled, vectorized numerical routines, so the least-squares fitting and data analysis stay fast without any hand-written C. And matplotlib's backend system replaces the dozen-plus hardware-specific printer and plotter drivers GENPLOT used to ship (deskjet, epson, hpgl, laserjet, postdrv, tektrx, xdriver, and more) with a single plotting API that targets any output device.

Rewriting RUMP from scratch with AI assistance is also a chance to move past a straight port. A handful of bugs in the original C are already fixed rather than just reproduced (kept honest by validating both against the C oracle — see RUMP quirks and defects). New physics has been added, like Andersen screening alongside RUMP's original L'Ecuyer correction (see the SCREENING command). And the user workflow is gaining new commands beyond what RUMP ever had, like automatic per-fit REPORT generation. More input formats — reading spectra from SimNRA and NDF — are also planned.

The original RUMP ecosystem included RUMPX, an X-Window GUI popular among Windows users two decades ago. pyRUMP doesn't have a GUI counterpart yet — the author prefers CLI tools — but a Python equivalent could be added later if there's real demand for it.

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.

Where to go next

  • Getting started — install pyRUMP and run your first simulation
  • Manual — what the forward model computes, the interactive shell, CLI, and sample-description reference
  • Development — the Python API, contributing, validation against the original, and porting notes