Skip to main content

RionMASS

RionMASS converts storage-ring revolution frequencies or times into atomic mass excesses. Python, command-line and Qt interfaces share a polynomial calibration engine and return the same reference diagnostics and result tables.

The workflow includes AME2020 references, nuclear-state and charge-state handling, custom reference masses, electronic-input covariance, leave-one-out validation and saved-run replay. Frequency extraction belongs upstream; RionMASS starts from observables and their uncertainties.

Installation

Python 3.10 or later is required.

python -m pip install RionMASS              # calibration engine
python -m pip install 'RionMASS[data,plot]'  # spreadsheets and plots
python -m pip install 'RionMASS[gui]'        # complete desktop workflow

For development, install python -m pip install -e '.[dev]' from a checkout.

Python workflow

from rionmass.api import export_result_tables, run_full_calibration_workflow
from rionmass.configuration import CalibrationConfig, ODSImportConfig

ods = ODSImportConfig("frequency_observables.ods", 0, unmeasured_list=("15N7+",), observable="frequency")
calibration = CalibrationConfig(elbien_source="nist", p=3)
result = run_full_calibration_workflow(ods, calibration)
print(result.unknown_df)
export_result_tables(result, "results")

p counts polynomial coefficients; the degree is p - 1. ODS input requires three columns: ion label, centroid frequency and centroid uncertainty, with frequencies in Hz. Fourth and fifth columns may supply RMS width and its uncertainty. Widths are optional metadata for inspection; missing or blank values remain unavailable and do not enter calibration or mass uncertainties. Supply harmonic when input frequencies have not been reduced to the fundamental. The time branch returns revolution times in ps. Isomer excitation energies are supplied separately in MeV.

python examples/quickstart.py runs an offline demonstration with public AME2020 records and the packaged NIST table. Its observables are constructed to demonstrate the interfaces; they are not experimental measurements.

Command line and desktop application

rionmass run --ods frequency_observables.ods --sheet-index 0 \
  --elbien-source nist --unmeasured 15N7+ --p 3 --outdir results
rionmass-gui

The GUI shows calibration plots, unknown masses, held-out reference predictions, AME2020 differences and separate uncertainty terms. Calibration and export run in background tasks. The selected references, order, states and electronic inputs remain inspectable.

Reference inputs and uncertainties

The GUI's Custom masses (keV) field and repeatable CLI --reference-mass options accept NUCLIDE=ME_KEV,SIGMA_KEV, a neutral-atom ground-state mass excess and positive one-standard-deviation error. Python callers use CalibrationConfig(reference_mass_overrides=...). Replacements enter the calibration and LOO comparisons; AME2020 remains a separately labelled comparator.

Explicit LOO anchors remain in the final fit with their input uncertainty. Their own holdouts are shown as diagnostics and excluded from the extra-scatter estimate. The default policy retains them in other folds' training sets. Select anchors from reference geometry or independent information before examining residuals.

Result tables separate calibration-curve, unknown-observable, LOO extra-scatter and electronic terms. The correction is cumulative ionization energy: I_q = B_neutral - B_ion. ElBiEn columns count remaining electrons; NIST total-binding rows use ion charge. Shared electronic inputs are propagated through calibration and atomic-mass recovery, retaining cancellation and cross-covariance. Missing covariance remains explicitly unavailable.

The extra-scatter estimate uses held-out predictions, not the full-fit reduced chi-square. LOO folds share references, so the marginal-pull convention is an empirical validation diagnostic. Unprovided reference or observable correlations are not inferred. See Scientific method and Electronic inputs for units and covariance assumptions.

Saved runs and replay

Save config + tables, Load config… and Replay config… create or restore DATE_RionMASS_CONFIG_suffix bundles. Completed runs freeze reference records, electronic inputs, software versions, constants and numerical checkpoints. Input spreadsheets are referenced rather than copied.

from rionmass.session import save_run_bundle, replay_run_configuration

folder, files = save_run_bundle("outputs", "label", ods, calibration, result)
report = replay_run_configuration(folder / "config.json")
print(report.mismatches, report.warnings)

An edited ODS file produces a hash warning and is still replayed with the saved sheet index. Numerical differences are reported separately. Settings-only snapshots contain no completed-result checkpoints. See Reproducibility.

Development, citation and license

pytest
ruff check .
ruff format --check .
pyright
python -m build
twine check dist/*
python scripts/check_release.py dist/*

Tests use constructed numerical fixtures and published reference inputs. See CONTRIBUTING.md, CITATION.cff, release instructions and LICENSE. Versioned releases are archived on Zenodo; use the DOI for the version used in your analysis. The license is GPL-3.0-or-later.

Metadata

Release files for RionMASS 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for RionMASS 1.0.1
File Size Uploaded Provenance
rionmass-1.0.1.tar.gz 163.1 kB With provenance Details

Built distribution (wheel)

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

Total release size: 294.6 kB

Release files / rionmass-1.0.1.tar.gz

Download URL rionmass-1.0.1.tar.gz
Size 163.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e8d42961d791158fddd27186194b88a8544aceaf7c546d78b5ebb2f6fe33ae16
BLAKE2b-256 checksum
How to use checksums
799e6e07b860a66de659e73dcc70acdc6ddbf16e287879738a61d34c66b4cb23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / rionmass-1.0.1-py3-none-any.whl

Download URL rionmass-1.0.1-py3-none-any.whl
Size 131.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b364494a44c9eddeb29d80a63899d17356a4eaf8ec383bd0a1cdc5dd139144ab
BLAKE2b-256 checksum
How to use checksums
1aeacd0fc92c843e52056bd1a720e064a3edd1e0c7ec8705e8db172cc01ef66c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for RionMASS 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for rionmass-1.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files Full provenance

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