Spaces:
Runtime error
Runtime error
| import io | |
| import gradio as gr | |
| import os | |
| import tempfile | |
| import numpy as np | |
| import pandas as pd | |
| def greet( | |
| file_obj: tempfile._TemporaryFileWrapper, | |
| col_to_fit: str, | |
| niterations: int, | |
| binary_operators: list, | |
| unary_operators: list, | |
| ): | |
| empty_df = pd.DataFrame( | |
| { | |
| "equation": [], | |
| "loss": [], | |
| "complexity": [], | |
| } | |
| ) | |
| if col_to_fit == "": | |
| return ( | |
| empty_df, | |
| "Please enter a column to predict!", | |
| ) | |
| if len(binary_operators) == 0 and len(unary_operators) == 0: | |
| return ( | |
| empty_df, | |
| "Please select at least one operator!", | |
| ) | |
| if file_obj is None: | |
| return ( | |
| empty_df, | |
| "Please upload a CSV file!", | |
| ) | |
| niterations = int(niterations) | |
| # Need to install PySR in separate python instance: | |
| os.system( | |
| """if [ ! -d "$HOME/.julia/environments/pysr-0.9.1" ] | |
| then | |
| python -c 'import pysr; pysr.install()' | |
| fi""" | |
| ) | |
| from pysr import PySRRegressor | |
| df = pd.read_csv(file_obj.name) | |
| y = np.array(df[col_to_fit]) | |
| X = df.drop([col_to_fit], axis=1) | |
| model = PySRRegressor( | |
| update=False, | |
| temp_equation_file=True, | |
| 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) | |
| return df, "Successful." | |
| def main(): | |
| demo = gr.Interface( | |
| fn=greet, | |
| description="A demo of PySR", | |
| inputs=[ | |
| gr.File(label="Upload a CSV File"), | |
| gr.Textbox(label="Column to Predict", placeholder="y"), | |
| gr.Slider( | |
| minimum=1, | |
| maximum=1000, | |
| value=40, | |
| label="Number of iterations", | |
| ), | |
| gr.CheckboxGroup( | |
| choices=["+", "-", "*", "/", "^"], | |
| label="Binary Operators", | |
| value=["+", "-", "*", "/"], | |
| ), | |
| gr.CheckboxGroup( | |
| choices=["sin", "cos", "exp", "log"], | |
| label="Unary Operators", | |
| value=[], | |
| ), | |
| ], | |
| outputs=[gr.DataFrame(label="Equations"), gr.Textbox(label="Error Log")], | |
| ) | |
| # Add file to the demo: | |
| demo.launch() | |
| if __name__ == "__main__": | |
| main() | |