Symbolic Regression Benchmark Framework
PyPI · Docs · Interactive results
srbf runs symbolic regression methods on the same expressions, sampled the same way, and reads every
prediction with one judge. A method is plugged in with a small adapter, a YAML config describes the
evaluation, and four commands take it from a first smoke test to a report:
srbf new mymethod # scaffold an adapter for your method
srbf check -c config.yaml # a few real problems, step by step
srbf run -c config.yaml -v # the evaluation
srbf analyze -c config.yaml -o report
- 29 catalogs, 6,660 expressions: Feynman, FastSRB, Nguyen and the other classical suites, physics
collections and synthetic corpora, served by
symbolic-data. - Any method, in its own environment: a worker is one Python file with a
fit()function, run in the interpreter you name, with whatever torch, Julia or NumPy version your method needs. - One judge: every prediction is parsed, evaluated on held-out points and compared with the ground truth in one canonical form.
- Evaluations that scale: inline
!sweepladders, whole-suite configs, resumable runs, and sharding across GPUs with a checked merge. - Statistics that fit the design: paired comparisons on the same expressions, rank analysis with critical differences, bootstrap intervals.
- Stated provenance: every configuration carries a label for who chose it, and every result file records what ran.
The published results are on the results explorer.
Install
pip install srbf # the framework, the metrics and the adapters of the worker protocol
pip install "srbf[baselines]" # plus what the PySR, NeSymReS and E2E adapters import
pip install "srbf[analysis]" # plus matplotlib, for the figures of `srbf analyze`
pip install "srbf[flash-ansr]" # plus flash-ansr, for the Flash-ANSR adapter
srbf needs Python 3.12 or newer and installs symbolic-data and simplipy with it.
Quickstart
No GPU and no model are needed for a first run: srbf new writes an adapter whose placeholder fits
a linear model.
export SRBF_ROOT=$PWD/bench # models, results and adapters live here
srbf new mymethod --python "$(which python)"
srbf check -c bench/adapters/mymethod/config.yaml # two real problems, every step named
srbf run -c bench/adapters/mymethod/config.yaml --experiment nguyen -v
srbf analyze -c bench/adapters/mymethod/config.yaml -o report # report/results.md and figures/
To evaluate a released Flash-ANSR model on one catalog at one budget:
git clone https://github.com/psaegert/srbf && cd srbf && pip install ".[flash-ansr]" && export SRBF_ROOT=$PWD
hf download psaegert/flash-ansr-v25.0-T8-3M --local-dir models/psaegert/flash-ansr-v25.0-T8-3M
srbf run -c configs/evaluation/scaling/flash-ansr-v25.0-T8-3M_srbf.yaml --experiment nguyen --sweep-filter ladder=32 -v
Documentation
| Guide | What it covers |
|---|---|
| Quickstart | both tours above, with their output |
| Concepts | ground truth, problem, catalog, budget, judge: the vocabulary |
| Adding your method | the worker contract and the pull request |
| Running evaluations | the config, ladders, suites, resuming, sharding, clusters |
| Results | result files, deriving metrics, intervals, the report |
| Metrics | the definition of every metric |
| Paired comparisons | comparing two methods, ranking many |
| Benchmarks | the 29 catalogs and their sources, custom catalogs |
| Models | installing and configuring the built-in methods |
| Command line | every command and flag |
| Fairness | one protocol, upstream defaults, provenance labels, timing |
Citing
srbf accompanies Saegert & Köthe 2026, Breaking the Simplification Bottleneck in Amortized Neural Symbolic Regression (ICML 2026), arXiv:2602.08885. If you publish numbers on a catalog, cite its source as well (Benchmarks).
Development
pip install -e ".[dev]"
pre-commit run --all-files
pytest tests
License
MIT (see LICENSE). Third-party attributions in THIRD_PARTY_LICENSES.
Metadata
Release files for srbf 0.21.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 | |
|---|---|---|---|
| srbf-0.21.0.tar.gz | 211.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| srbf-0.21.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 418.0 kB
Release files / srbf-0.21.0.tar.gz
| Download URL | srbf-0.21.0.tar.gz |
|---|---|
| Size | 211.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0a0df8aa2ebdc11992b08b7b09cd7ec5988ab2dadcf6b721893cc31feca55183
|
|
BLAKE2b-256 checksum How to use checksums |
4adc832bbbc5e031f29e6380b507f90f6363bdd7a4c079e20f1e6eb7faa66fd9
|
| 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 Sep 28, 2026.
Transparency logRelease files / srbf-0.21.0-py3-none-any.whl
| Download URL | srbf-0.21.0-py3-none-any.whl |
|---|---|
| Size | 206.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f0ca57feea51c275c1313e23f22671d1f7c201c5f1111b78c48a803808e9c51
|
|
BLAKE2b-256 checksum How to use checksums |
aeede84d668c7eea22a53191182c8e2c4cf443c1a12d1857eaeeab902efe4ead
|
| 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 Sep 28, 2026.
Transparency log