Spaces:
Running
Running
import os | |
import pandas as pd | |
import traceback as tb | |
import numpy as np | |
from argparse import ArgumentParser | |
# Args: | |
# niterations | |
# binary_operators | |
# unary_operators | |
# col_to_fit | |
empty_df = pd.DataFrame( | |
{ | |
"equation": [], | |
"loss": [], | |
"complexity": [], | |
} | |
) | |
if __name__ == "__main__": | |
parser = ArgumentParser() | |
parser.add_argument("--niterations", type=int) | |
parser.add_argument("--binary_operators", type=str) | |
parser.add_argument("--unary_operators", type=str) | |
parser.add_argument("--col_to_fit", type=str) | |
parser.add_argument("--filename", type=str) | |
args = parser.parse_args() | |
niterations = args.niterations | |
binary_operators = eval(args.binary_operators) | |
unary_operators = eval(args.unary_operators) | |
col_to_fit = args.col_to_fit | |
filename = args.filename | |
os.environ["PATH"] += ":/home/user/.local/bin/" | |
try: | |
import pysr | |
from julia.api import JuliaInfo | |
info = JuliaInfo.load(julia="/home/user/.local/bin/julia") | |
from julia import Main as _Main | |
pysr.sr.Main = _Main | |
from pysr import PySRRegressor | |
df = pd.read_csv(filename) | |
y = np.array(df[col_to_fit]) | |
X = df.drop([col_to_fit], axis=1) | |
model = PySRRegressor( | |
update=False, | |
niterations=niterations, | |
binary_operators=binary_operators, | |
unary_operators=unary_operators, | |
) | |
model.fit(X, y) | |
df = model.equations_[["equation", "loss", "complexity"]] | |
# Convert all columns to string type: | |
df = df.astype(str) | |
df.to_csv("pysr_output.csv", index=False) | |
except Exception as e: | |
error_message = tb.format_exc() | |
# Dump to file: | |
empty_df.to_csv("pysr_output.csv", index=False) | |
with open("error.log", "w") as f: | |
f.write(error_message) | |