Python interface for TuringBot, a symbolic regression software that discovers mathematical formulas from data
Project description
TuringBot Python Library
Python interface for TuringBot, a symbolic regression software that discovers mathematical formulas from data.
TuringBot uses simulated annealing to search the space of possible mathematical expressions, finding accurate and compact formulas that describe your data. It supports 16 search metrics (including custom metrics), train/test splits, custom base functions, custom constants, and a wide range of mathematical functions.
Installation
pip install turingbot
You also need the TuringBot desktop application installed. Download it from turingbotsoftware.com/download.html.
Quick start
import time
from turingbot import simulation
sim = simulation()
# Start a symbolic regression search
# TuringBot is detected automatically if installed in the default location
sim.start_process(
input_file="your_data.csv", # CSV with input columns + target column
search_metric=4, # RMS error
threads=4,
)
# Let TuringBot search for formulas
time.sleep(60)
# Read the best formulas found so far
sim.refresh_functions()
for f in sim.functions:
print(f)
# Stop the search
sim.terminate_process()
Or using the context manager:
import time
from turingbot import simulation
with simulation() as sim:
sim.start_process(
input_file="your_data.csv",
search_metric=4,
threads=4,
)
time.sleep(60)
sim.refresh_functions()
for f in sim.functions:
print(f)
If TuringBot is installed in a non-default location, pass the path explicitly:
sim.start_process(
input_file="your_data.csv",
path="/custom/path/to/TuringBot",
)
Default paths checked automatically:
| OS | Path |
|---|---|
| Windows | C:\Program Files (x86)\TuringBot\TuringBot.exe |
| macOS | /Applications/TuringBot.app/Contents/MacOS/TuringBot |
| Linux | /usr/lib/turingbot/TuringBot |
Using numpy arrays and pandas DataFrames
You can pass numpy arrays or pandas DataFrames directly instead of file paths:
import numpy as np
from turingbot import simulation
# Generate some data: y = 2*x1 + x2^2
data = np.column_stack([
x1 := np.random.rand(100),
x2 := np.random.rand(100),
2 * x1 + x2 ** 2,
])
with simulation() as sim:
sim.start_process(
input_file=data,
column_names=["x1", "x2", "y"],
)
# ...
If column_names is not provided, TuringBot will use its default names (col1, col2, ...).
Pandas DataFrames work the same way, and column names are preserved automatically:
import pandas as pd
from turingbot import simulation
df = pd.read_csv("your_data.csv")
with simulation() as sim:
sim.start_process(input_file=df)
# ...
Input format
The input file should be a CSV or TXT file where the last column is the target variable. Example:
x1,x2,y
0.1,0.2,0.24
0.3,0.4,0.55
0.5,0.6,0.81
Search metrics
| ID | Metric |
|---|---|
| 1 | Mean relative error |
| 2 | Classification accuracy |
| 3 | Mean error |
| 4 | RMS error (default) |
| 5 | F-score |
| 6 | Correlation coefficient |
| 7 | Hybrid (CC + RMS) |
| 8 | Maximum error |
| 9 | Maximum relative error |
| 10 | Nash-Sutcliffe efficiency |
| 11 | Binary cross-entropy |
| 12 | Matthews correlation coefficient |
| 13 | Residual sum of squares |
| 14 | Root mean squared log error |
| 15 | Percentile error |
| 16 | Custom metric |
Parameters
See the full list of parameters in the start_process docstring, including:
threads-- Number of threadstrain_test_split-- Train/test split ratiomaximum_formula_complexity-- Max complexity of formulasinteger_constants-- Restrict to integer constantsnormalize_dataset-- Normalize input dataallowed_functions-- Restrict which math functions to usecustom_formula-- Provide a formula templatecustom_constants-- Define custom constants (e.g."g=9.81,c=299792458")custom_functions-- Define custom base functions (e.g."bump(x)=exp(-x*x)")custom_metric-- Define a custom error metric (e.g."mean(pow(actual-predicted,2))")function_size-- Override base function sizes (e.g."sin:3 cos:3 pow:5")
Documentation
Full documentation: turingbotsoftware.com/documentation.html
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turingbot-3.3.1.tar.gz.
File metadata
- Download URL: turingbot-3.3.1.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
120a01440285c7d5a2f0e097124dcd26812316ac5b8cc7a18ee0be45b5bbb14a
|
|
| MD5 |
ad12215c3d117364d2eb332c7c9aca26
|
|
| BLAKE2b-256 |
7ff45b49f1e535e187a5df5086eb15336038303dbdcbd7153c2cde442a4c6e60
|
File details
Details for the file turingbot-3.3.1-py3-none-any.whl.
File metadata
- Download URL: turingbot-3.3.1-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e5913d11cbae5e9bfa5a3f0f845c186b9ae93b037a16036b4c29c0d469668ab
|
|
| MD5 |
cefc6c59c176f0f0792f0e5049c9e8ed
|
|
| BLAKE2b-256 |
86e43c71d5abe0721ea12ecca35cf71e01446f867d9d1e3e3d63e147ec9e3b02
|