Skip to main content

srbf

Symbolic Regression Benchmark Framework

PyPI · Docs · Interactive results

srbf: Symbolic Regression Benchmark Framework

Publications

srbf visual abstract: benchmarks and methods go through one fair protocol (same expressions, wall-clock budgets, paired statistics, pre-declared corrected comparisons) into the interactive explorer with four-state verdicts.

srbf evaluates symbolic-regression models on shared benchmarks with shared metrics. It is the Symbolic Regression Benchmark Framework carved out of flash-ansr: the Benchmark driver, model adapters, and metrics, over symbolic-data catalogs. It depends one-way on flash-ansr (srbf imports flash-ansr; flash-ansr never imports srbf).

Built for contributions. Developers of SR methods add their model with an adapter that runs in the method's own environment (any torch, simplipy or Julia version): srbf new mymethod writes the worker, its suite config, an environment recipe and a test; srbf check runs it on real problems; srbf run and srbf analyze give the numbers. The pull request carries those files. Methods compatible with srbf's pins can instead register an in-process adapter class. The built-in adapters (flash_ansr, pysr, nesymres, e2e, lample_charton, brute_force) are reference examples, not a closed set. See the adapter contribution guide and CONTRIBUTING.md.

The benchmark seam (srbf.core Protocols + the Benchmark driver) is model-agnostic, the data source is always a symbolic-data catalog, and adapters are a thin mapper over each model (flash-ansr via FlashANSR.infer()). Inline !sweep config cross-products and multi-draw bootstrap reporting (bootstrap_report / draw_distribution) are built in.

Install

pip install srbf                 # benchmark driver + metrics + the flash-ansr adapter (usable out of the box)
pip install "srbf[baselines]"    # + PySR and other pip baseline deps (sympy, pysr, omegaconf)

srbf pulls in flash-ansr, symbolic-data, and simplipy automatically, and requires Python >= 3.12. The PySR adapter ships in the base wheel but the pysr package (plus a Julia precompile) comes with the [baselines] extra, so a bare install does not include a runnable PySR baseline. The unpackaged research baselines (NeSymReS, E2E) are provisioned out-of-band; see docs/models.md.

Quickstart

# 1. point srbf at a tree holding configs/, data/, and models/ (your srbf checkout works)
export FLASH_ANSR_ROOT=$(pwd)

# 2. get a model to evaluate (flash-ansr's CLI ships with srbf)
flash_ansr install psaegert/flash-ansr-v25.0-T7-3M

# 3. run an evaluation. The config names a symbolic-data catalog (`fastsrb`); it is fetched from
#    Hugging Face on first use and cached, so there is no local data-build step. The config is a
#    sweep over candidate counts; --sweep-filter picks one rung for a smoke test.
srbf run -c configs/evaluation/scaling/flash-ansr-v25.0-T7-3M_fastsrb.yaml --sweep-filter ladder=32 --limit 50 -v

Outputs land under results/evaluation/.../*.pkl, one row per evaluated problem with the raw prediction columns (derive FVU / recovery / F1 in a separate step; see docs/running.md). Run programmatically instead:

from srbf import Benchmark

# A config with inline !sweep / experiments expands to several runs; expand and run each one.
for benchmark in Benchmark.runs_from_config("configs/evaluation/scaling/flash-ansr-v25.0-T7-3M_fastsrb.yaml"):
    benchmark.run()  # resume-aware; a no-op if that run's configured target is already reached

# For a single, fully-resolved run (no !sweep / experiments), use from_config directly:
# Benchmark.from_config(config_dict).run()

Documentation

Guide What it covers
Running evaluations the srbf run CLI, config anatomy (data_source / model_adapter / runner / experiments / !sweep), outputs, resume, reporting
Benchmarks & datasets the data_source catalog block, the shipped catalog (fastsrb), custom catalogs
Models & provisioning installing/patching the built-in models; the model_adapter block per type
Fairness & provenance one protocol for every method, the upstream-defaults policy, config-provenance labels, blessed configs
Adding your model the adapter protocol + registry, and the PR flow to contribute a new SR method

Development

pip install -e ".[dev]"
pre-commit run --all-files
pytest tests

License

MIT (see LICENSE). Third-party attributions in THIRD_PARTY_LICENSES.

Release files for srbf 0.19.0

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

Source distribution (sdist)

Source distribution for srbf 0.19.0
File Size Uploaded
srbf-0.19.0.tar.gz 148.2 kB Details

Built distribution (wheel)

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

Total release size: 303.5 kB

Release files / srbf-0.19.0.tar.gz

Download URL srbf-0.19.0.tar.gz
Size 148.2 kB
Tags Source
SHA-256 checksum
How to use checksums
da220b37fa2ef4549a28fe15e1b3a2d49987d0963d8296c396e11a3d211377b1
BLAKE2b-256 checksum
How to use checksums
d5e905a5421bc7e85dbb7dd24011e70b60dd60cd13fedc54b215a44d0df5ba20
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 14, 2026.

Transparency log

Release files / srbf-0.19.0-py3-none-any.whl

Download URL srbf-0.19.0-py3-none-any.whl
Size 155.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba92907d2c394de0dd0613c2278a83d3139de3c421678ffb577cc5cca3041723
BLAKE2b-256 checksum
How to use checksums
f6de1b2e19113ad172d652eaa29ddf5236cfa830147357a6f7f8486929548487
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 14, 2026.

Transparency log
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