Results reproducibility

Here, we provide instructions to reproduce the results of the benchmarking experiments presented in our papers. See the Benchmarks section of the documentation accessing the challenges in the benchmarks (eg. if you want to benchmark your own method).

Feynman benchmarking

The purpose of the Feynman benchmark is to evaluate symbolic regression systems, in particular methods built for scientific discovery. That is methods able to produce compact, predictive and interpretable expressions from potentially noisy data.

See [Udrescu 2019] which introduced the benchmark, [La Cava 2021] which formalized it and [Tenachi 2023] for the evaluation of physo on this benchmark.

Running a single Feynman problem

Running physo on challenge number i \(\in\) {0, 1, …, 119} of the Feynman benchmark, with a trial seed t \(\in \mathbb{N}\), employing a noise level of n \(\in [0,1]\).

python feynman_run.py --equation i --trial t --noise n

E.g. Running problem 5 with a trial seed 1, at a noise level of 0.0, parallel mode activated and 4 CPUs:

python feynman_run.py --equation 5 --trial 1 --noise 0.0 --parallel_mode 1 --ncpus 4

Making an HPC jobfile

Making a jobile to run all Feynman problems at a noise level 0.0:

python feynman_make_run_file.py --noise 0.0

Analyzing results

Analyzing a results folder:

python feynman_results_analysis.py --path [results folder]

Results

logo

Class benchmarking

The purpose of the Class benchmark is to evaluate Class symbolic regression systems, that is: methods for automatically finding a single analytical functional form that accurately fits multiple datasets - each governed by its own (possibly) unique set of fitting parameters.

See [Tenachi 2024] in which we introduce this first benchmark for Class SR methods and evaluate physo on it.

Running a single class problem

Running physo on challenge number i \(\in\) {0, 1, …, 7} of the Class benchmark, using a trial seed t \(\in \mathbb{N}\), employing a noise level of n \(\in [0,1]\) and exploiting Nr \(\in \mathbb{N}\) realizations.

python classbench_run.py --equation i --trial t --noise n --n_reals Nr

Eg. Running problem 7 with a trial seed 3, at a noise level of 0.001, and 10 realizations.

python classbench_run.py --equation 7 --trial 3 --noise 0.001 --n_reals 10

Making an HPC jobfile

Making a jobile to run all Class problems.

python classbench_make_run_file.py

Analyzing results

Analyzing a results folder:

python classbench_results_analysis.py --path [results folder]

Results

logo

Class benchmarking (MW bonus)

The purpose of this bonus is to evaluate Class symbolic regression systems on a real-world problem, that is the discovery of the Milky Way dark matter distribution from observed positions and velocities of stellar streams.

logo

See [Tenachi 2024] in which we introduce this bonus and evaluate physo on it.

Running a single configuration

Running physo on the Milky Way streams problem, using a trial seed t \(\in \mathbb{N}\), employing a noise level of n \(\in [0,1]\) and exploiting a fraction of fr \(\in [0,1]\) realizations.

python MW_streams_run.py --noise n --trial t --frac_real fr

Making an HPC jobfile

Making a jobile to run all Class problems.

python MW_streams_make_run_file.py

Analyzing results

Analyzing a results folder:

python MW_streams_results_analysis.py --path [results folder]

Results

logo