From 70d7238a526df1c67616a27ce7622f95e8a69079 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 02:33:39 +0000 Subject: [PATCH 01/21] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v3.2.0 → v4.4.0](https://github.com/pre-commit/pre-commit-hooks/compare/v3.2.0...v4.4.0) - [github.com/psf/black: 23.3.0 → 23.9.1](https://github.com/psf/black/compare/23.3.0...23.9.1) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d1c0ed857..417d637fe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: # General linting - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.2.0 + rev: v4.4.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -9,7 +9,7 @@ repos: - id: check-added-large-files # General formatting - repo: https://github.com/psf/black - rev: 23.3.0 + rev: 23.9.1 hooks: - id: black - id: black-jupyter From 09a7186f062291dbe56a75bd90bce7a987d8227c Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Sun, 17 Sep 2023 13:30:15 +0100 Subject: [PATCH 02/21] Refactor utility functions --- pysr/sr.py | 60 +++++++-------------------------------------------- pysr/utils.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 52 deletions(-) create mode 100644 pysr/utils.py diff --git a/pysr/sr.py b/pysr/sr.py index e7383dcc3..777458014 100644 --- a/pysr/sr.py +++ b/pysr/sr.py @@ -33,6 +33,12 @@ init_julia, is_julia_version_greater_eq, ) +from .utils import ( + _csv_filename_to_pkl_filename, + _preprocess_julia_floats, + _safe_check_feature_names_in, + _subscriptify, +) Main = None # TODO: Rename to more descriptive name like "julia_runtime" @@ -945,10 +951,8 @@ def from_file( model : PySRRegressor The model with fitted equations. """ - if os.path.splitext(equation_file)[1] != ".pkl": - pkl_filename = _csv_filename_to_pkl_filename(equation_file) - else: - pkl_filename = equation_file + + pkl_filename = _csv_filename_to_pkl_filename(equation_file) # Try to load model from .pkl print(f"Checking if {pkl_filename} exists...") @@ -2437,51 +2441,3 @@ def run_feature_selection(X, y, select_k_features, random_state=None): clf, threshold=-np.inf, max_features=select_k_features, prefit=True ) return selector.get_support(indices=True) - - -def _csv_filename_to_pkl_filename(csv_filename) -> str: - # Assume that the csv filename is of the form "foo.csv" - assert str(csv_filename).endswith(".csv") - - dirname = str(os.path.dirname(csv_filename)) - basename = str(os.path.basename(csv_filename)) - base = str(os.path.splitext(basename)[0]) - - pkl_basename = base + ".pkl" - - return os.path.join(dirname, pkl_basename) - - -_regexp_im = re.compile(r"\b(\d+\.\d+)im\b") -_regexp_im_sci = re.compile(r"\b(\d+\.\d+)[eEfF]([+-]?\d+)im\b") -_regexp_sci = re.compile(r"\b(\d+\.\d+)[eEfF]([+-]?\d+)\b") - -_apply_regexp_im = lambda x: _regexp_im.sub(r"\1j", x) -_apply_regexp_im_sci = lambda x: _regexp_im_sci.sub(r"\1e\2j", x) -_apply_regexp_sci = lambda x: _regexp_sci.sub(r"\1e\2", x) - - -def _preprocess_julia_floats(s: str) -> str: - if isinstance(s, str): - s = _apply_regexp_im(s) - s = _apply_regexp_im_sci(s) - s = _apply_regexp_sci(s) - return s - - -def _subscriptify(i: int) -> str: - """Converts integer to subscript text form. - - For example, 123 -> "₁₂₃". - """ - return "".join([chr(0x2080 + int(c)) for c in str(i)]) - - -def _safe_check_feature_names_in(self, variable_names, generate_names=True): - """_check_feature_names_in with compat for old versions.""" - try: - return _check_feature_names_in( - self, variable_names, generate_names=generate_names - ) - except TypeError: - return _check_feature_names_in(self, variable_names) diff --git a/pysr/utils.py b/pysr/utils.py new file mode 100644 index 000000000..ca000aae7 --- /dev/null +++ b/pysr/utils.py @@ -0,0 +1,55 @@ +import os +import re + +from sklearn.utils.validation import _check_feature_names_in + + +def _csv_filename_to_pkl_filename(csv_filename: str) -> str: + if os.path.splitext(csv_filename)[1] == ".pkl": + return csv_filename + + # Assume that the csv filename is of the form "foo.csv" + assert str(csv_filename).endswith(".csv") + + dirname = str(os.path.dirname(csv_filename)) + basename = str(os.path.basename(csv_filename)) + base = str(os.path.splitext(basename)[0]) + + pkl_basename = base + ".pkl" + + return os.path.join(dirname, pkl_basename) + + +_regexp_im = re.compile(r"\b(\d+\.\d+)im\b") +_regexp_im_sci = re.compile(r"\b(\d+\.\d+)[eEfF]([+-]?\d+)im\b") +_regexp_sci = re.compile(r"\b(\d+\.\d+)[eEfF]([+-]?\d+)\b") + +_apply_regexp_im = lambda x: _regexp_im.sub(r"\1j", x) +_apply_regexp_im_sci = lambda x: _regexp_im_sci.sub(r"\1e\2j", x) +_apply_regexp_sci = lambda x: _regexp_sci.sub(r"\1e\2", x) + + +def _preprocess_julia_floats(s: str) -> str: + if isinstance(s, str): + s = _apply_regexp_im(s) + s = _apply_regexp_im_sci(s) + s = _apply_regexp_sci(s) + return s + + +def _safe_check_feature_names_in(self, variable_names, generate_names=True): + """_check_feature_names_in with compat for old versions.""" + try: + return _check_feature_names_in( + self, variable_names, generate_names=generate_names + ) + except TypeError: + return _check_feature_names_in(self, variable_names) + + +def _subscriptify(i: int) -> str: + """Converts integer to subscript text form. + + For example, 123 -> "₁₂₃". + """ + return "".join([chr(0x2080 + int(c)) for c in str(i)]) From 12e6d5e055630e762e228daf6fa2a983455875df Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Sun, 17 Sep 2023 13:37:58 +0100 Subject: [PATCH 03/21] Move denoising functionality to separate file --- pysr/denoising.py | 35 +++++++++++++++++++++++++++++++++++ pysr/sr.py | 31 ++++--------------------------- 2 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 pysr/denoising.py diff --git a/pysr/denoising.py b/pysr/denoising.py new file mode 100644 index 000000000..b65484529 --- /dev/null +++ b/pysr/denoising.py @@ -0,0 +1,35 @@ +"""Functions for denoising data during preprocessing.""" +import numpy as np + + +def denoise(X, y, Xresampled=None, random_state=None): + """Denoise the dataset using a Gaussian process.""" + from sklearn.gaussian_process import GaussianProcessRegressor + from sklearn.gaussian_process.kernels import RBF, ConstantKernel, WhiteKernel + + gp_kernel = RBF(np.ones(X.shape[1])) + WhiteKernel(1e-1) + ConstantKernel() + gpr = GaussianProcessRegressor( + kernel=gp_kernel, n_restarts_optimizer=50, random_state=random_state + ) + gpr.fit(X, y) + + if Xresampled is not None: + return Xresampled, gpr.predict(Xresampled) + + return X, gpr.predict(X) + + +def multi_denoise(X, y, Xresampled=None, random_state=None): + """Perform `denoise` along each column of `y` independently.""" + y = np.stack( + [ + denoise(X, y[:, i], Xresampled=Xresampled, random_state=random_state)[1] + for i in range(y.shape[1]) + ], + axis=1, + ) + + if Xresampled is not None: + return Xresampled, y + + return X, y diff --git a/pysr/sr.py b/pysr/sr.py index 777458014..eeb8be22d 100644 --- a/pysr/sr.py +++ b/pysr/sr.py @@ -18,6 +18,7 @@ from sklearn.utils import check_array, check_consistent_length, check_random_state from sklearn.utils.validation import _check_feature_names_in, check_is_fitted +from .denoising import denoise, multi_denoise from .deprecated import make_deprecated_kwargs_for_pysr_regressor from .export_jax import sympy2jax from .export_latex import sympy2latex, sympy2latextable, sympy2multilatextable @@ -1506,19 +1507,11 @@ def _pre_transform_training_data( # Denoising transformation if self.denoise: if self.nout_ > 1: - y = np.stack( - [ - _denoise( - X, y[:, i], Xresampled=Xresampled, random_state=random_state - )[1] - for i in range(self.nout_) - ], - axis=1, + X, y = multi_denoise( + X, y, Xresampled=Xresampled, random_state=random_state ) - if Xresampled is not None: - X = Xresampled else: - X, y = _denoise(X, y, Xresampled=Xresampled, random_state=random_state) + X, y = denoise(X, y, Xresampled=Xresampled, random_state=random_state) return X, y, variable_names, X_units, y_units @@ -2394,22 +2387,6 @@ def idx_model_selection(equations: pd.DataFrame, model_selection: str) -> int: return chosen_idx -def _denoise(X, y, Xresampled=None, random_state=None): - """Denoise the dataset using a Gaussian process.""" - from sklearn.gaussian_process import GaussianProcessRegressor - from sklearn.gaussian_process.kernels import RBF, ConstantKernel, WhiteKernel - - gp_kernel = RBF(np.ones(X.shape[1])) + WhiteKernel(1e-1) + ConstantKernel() - gpr = GaussianProcessRegressor( - kernel=gp_kernel, n_restarts_optimizer=50, random_state=random_state - ) - gpr.fit(X, y) - if Xresampled is not None: - return Xresampled, gpr.predict(Xresampled) - - return X, gpr.predict(X) - - # Function has not been removed only due to usage in module tests def _handle_feature_selection(X, select_k_features, y, variable_names): if select_k_features is not None: From c822df8f3455ad09e3fea152ccf067c49c4a7303 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Sun, 17 Sep 2023 13:42:11 +0100 Subject: [PATCH 04/21] Move feature selection functionality to separate file --- pysr/feature_selection.py | 35 +++++++++++++++++++++++++++++++++++ pysr/sr.py | 34 +--------------------------------- pysr/test/test.py | 11 +++-------- 3 files changed, 39 insertions(+), 41 deletions(-) create mode 100644 pysr/feature_selection.py diff --git a/pysr/feature_selection.py b/pysr/feature_selection.py new file mode 100644 index 000000000..a483e7e7f --- /dev/null +++ b/pysr/feature_selection.py @@ -0,0 +1,35 @@ +"""Functions for doing feature selection during preprocessing.""" +import numpy as np + + +def run_feature_selection(X, y, select_k_features, random_state=None) -> np.ndarray: + """ + Find most important features. + + Uses a gradient boosting tree regressor as a proxy for finding + the k most important features in X, returning indices for those + features as output. + """ + from sklearn.ensemble import RandomForestRegressor + from sklearn.feature_selection import SelectFromModel + + clf = RandomForestRegressor( + n_estimators=100, max_depth=3, random_state=random_state + ) + clf.fit(X, y) + selector = SelectFromModel( + clf, threshold=-np.inf, max_features=select_k_features, prefit=True + ) + return selector.get_support(indices=True) + + +# Function has not been removed only due to usage in module tests +def _handle_feature_selection(X, select_k_features, y, variable_names): + if select_k_features is not None: + selection = run_feature_selection(X, y, select_k_features) + print(f"Using features {[variable_names[i] for i in selection]}") + X = X[:, selection] + else: + selection = None + + return X, selection diff --git a/pysr/sr.py b/pysr/sr.py index eeb8be22d..e38800a98 100644 --- a/pysr/sr.py +++ b/pysr/sr.py @@ -25,6 +25,7 @@ from .export_numpy import sympy2numpy from .export_sympy import assert_valid_sympy_symbol, create_sympy_symbols, pysr2sympy from .export_torch import sympy2torch +from .feature_selection import run_feature_selection from .julia_helpers import ( _escape_filename, _load_backend, @@ -2385,36 +2386,3 @@ def idx_model_selection(equations: pd.DataFrame, model_selection: str) -> int: f"{model_selection} is not a valid model selection strategy." ) return chosen_idx - - -# Function has not been removed only due to usage in module tests -def _handle_feature_selection(X, select_k_features, y, variable_names): - if select_k_features is not None: - selection = run_feature_selection(X, y, select_k_features) - print(f"Using features {[variable_names[i] for i in selection]}") - X = X[:, selection] - - else: - selection = None - return X, selection - - -def run_feature_selection(X, y, select_k_features, random_state=None): - """ - Find most important features. - - Uses a gradient boosting tree regressor as a proxy for finding - the k most important features in X, returning indices for those - features as output. - """ - from sklearn.ensemble import RandomForestRegressor - from sklearn.feature_selection import SelectFromModel - - clf = RandomForestRegressor( - n_estimators=100, max_depth=3, random_state=random_state - ) - clf.fit(X, y) - selector = SelectFromModel( - clf, threshold=-np.inf, max_features=select_k_features, prefit=True - ) - return selector.get_support(indices=True) diff --git a/pysr/test/test.py b/pysr/test/test.py index 31bfcfa4c..120f34d08 100644 --- a/pysr/test/test.py +++ b/pysr/test/test.py @@ -14,14 +14,9 @@ from .. import PySRRegressor, julia_helpers from ..export_latex import sympy2latex -from ..sr import ( - _check_assertions, - _csv_filename_to_pkl_filename, - _handle_feature_selection, - _process_constraints, - idx_model_selection, - run_feature_selection, -) +from ..feature_selection import _handle_feature_selection, run_feature_selection +from ..sr import _check_assertions, _process_constraints, idx_model_selection +from ..utils import _csv_filename_to_pkl_filename DEFAULT_PARAMS = inspect.signature(PySRRegressor.__init__).parameters DEFAULT_NITERATIONS = DEFAULT_PARAMS["niterations"].default From b896bd3af4ef81cf9336277c42998a8822977b9e Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Sun, 17 Sep 2023 14:40:27 +0100 Subject: [PATCH 05/21] Mypy compatibility --- .github/workflows/CI.yml | 26 ++++++++++++++++++++++++++ mypy.ini | 8 ++++++++ pysr/export_latex.py | 24 +++++++++++++----------- pysr/export_sympy.py | 4 ++-- pysr/feature_selection.py | 2 +- pysr/sr.py | 11 ++++++----- 6 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 mypy.ini diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b863a4d8f..91ca092a5 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -143,3 +143,29 @@ jobs: run: | pip install coveralls coveralls --finish + + types: + name: Check types + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + strategy: + matrix: + python-version: ['3.10'] + + steps: + - uses: actions/checkout@v3 + - name: "Set up Python" + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: pip + - name: "Install PySR and all dependencies" + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install mypy jax jaxlib torch + python setup.py install + - name: "Run mypy" + run: mypy --install-types --non-interactive pysr diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 000000000..850edc545 --- /dev/null +++ b/mypy.ini @@ -0,0 +1,8 @@ +[mypy] +warn_return_any = True + +[mypy-sklearn.*] +ignore_missing_imports = True + +[mypy-julia.*] +ignore_missing_imports = True diff --git a/pysr/export_latex.py b/pysr/export_latex.py index bb655d658..0316f872a 100644 --- a/pysr/export_latex.py +++ b/pysr/export_latex.py @@ -1,5 +1,5 @@ """Functions to help export PySR equations to LaTeX.""" -from typing import List +from typing import List, Optional, Tuple import pandas as pd import sympy @@ -19,14 +19,16 @@ def _print_Float(self, expr): return super()._print_Float(reduced_float) -def sympy2latex(expr, prec=3, full_prec=True, **settings): +def sympy2latex(expr, prec=3, full_prec=True, **settings) -> str: """Convert sympy expression to LaTeX with custom precision.""" settings["full_prec"] = full_prec printer = PreciseLatexPrinter(settings=settings, prec=prec) return printer.doprint(expr) -def generate_table_environment(columns=["equation", "complexity", "loss"]): +def generate_table_environment( + columns: List[str] = ["equation", "complexity", "loss"] +) -> Tuple[str, str]: margins = "c" * len(columns) column_map = { "complexity": "Complexity", @@ -58,12 +60,12 @@ def generate_table_environment(columns=["equation", "complexity", "loss"]): def sympy2latextable( equations: pd.DataFrame, - indices: List[int] = None, + indices: Optional[List[int]] = None, precision: int = 3, - columns=["equation", "complexity", "loss", "score"], + columns: List[str] = ["equation", "complexity", "loss", "score"], max_equation_length: int = 50, output_variable_name: str = "y", -): +) -> str: """Generate a booktabs-style LaTeX table for a single set of equations.""" assert isinstance(equations, pd.DataFrame) @@ -71,7 +73,7 @@ def sympy2latextable( latex_table_content = [] if indices is None: - indices = range(len(equations)) + indices = list(equations.index) for i in indices: latex_equation = sympy2latex( @@ -126,11 +128,11 @@ def sympy2latextable( def sympy2multilatextable( equations: List[pd.DataFrame], - indices: List[List[int]] = None, + indices: Optional[List[List[int]]] = None, precision: int = 3, - columns=["equation", "complexity", "loss", "score"], - output_variable_names: str = None, -): + columns: List[str] = ["equation", "complexity", "loss", "score"], + output_variable_names: Optional[List[str]] = None, +) -> str: """Generate multiple latex tables for a list of equation sets.""" # TODO: Let user specify custom output variable diff --git a/pysr/export_sympy.py b/pysr/export_sympy.py index 37bd99da0..81142f481 100644 --- a/pysr/export_sympy.py +++ b/pysr/export_sympy.py @@ -51,14 +51,14 @@ def create_sympy_symbols( - feature_names_in: Optional[List[str]] = None, + feature_names_in: List[str], ) -> List[sympy.Symbol]: return [sympy.Symbol(variable) for variable in feature_names_in] def pysr2sympy( equation: str, *, extra_sympy_mappings: Optional[Dict[str, Callable]] = None -) -> sympy.Expr: +): local_sympy_mappings = { **(extra_sympy_mappings if extra_sympy_mappings else {}), **sympy_mappings, diff --git a/pysr/feature_selection.py b/pysr/feature_selection.py index a483e7e7f..a6ebf0390 100644 --- a/pysr/feature_selection.py +++ b/pysr/feature_selection.py @@ -2,7 +2,7 @@ import numpy as np -def run_feature_selection(X, y, select_k_features, random_state=None) -> np.ndarray: +def run_feature_selection(X, y, select_k_features, random_state=None): """ Find most important features. diff --git a/pysr/sr.py b/pysr/sr.py index e38800a98..71df6cacc 100644 --- a/pysr/sr.py +++ b/pysr/sr.py @@ -11,6 +11,7 @@ from io import StringIO from multiprocessing import cpu_count from pathlib import Path +from typing import List, Optional import numpy as np import pandas as pd @@ -1781,10 +1782,10 @@ def fit( y, Xresampled=None, weights=None, - variable_names=None, - X_units=None, - y_units=None, - ): + variable_names: Optional[List[str]] = None, + X_units: Optional[List[str]] = None, + y_units: Optional[List[str]] = None, + ) -> "PySRRegressor": """ Search for equations to fit the dataset and store them in `self.equations_`. @@ -2371,7 +2372,7 @@ def latex_table( return "\n".join(preamble_string + [table_string]) -def idx_model_selection(equations: pd.DataFrame, model_selection: str) -> int: +def idx_model_selection(equations: pd.DataFrame, model_selection: str): """Select an expression and return its index.""" if model_selection == "accuracy": chosen_idx = equations["loss"].idxmin() From 0b9e42193e8432b5b6127781b7083155d95d0084 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Sun, 17 Sep 2023 15:01:52 +0100 Subject: [PATCH 06/21] Move all deprecated functions to deprecated.py --- pysr/__init__.py | 3 ++- pysr/deprecated.py | 54 ++++++++++++++++++++++++++++++++++++++++ pysr/feynman_problems.py | 2 +- pysr/sr.py | 42 ------------------------------- 4 files changed, 57 insertions(+), 44 deletions(-) diff --git a/pysr/__init__.py b/pysr/__init__.py index 5f2200356..99c6a9742 100644 --- a/pysr/__init__.py +++ b/pysr/__init__.py @@ -1,9 +1,10 @@ from . import sklearn_monkeypatch +from .deprecated import best, best_callable, best_row, best_tex, pysr from .export_jax import sympy2jax from .export_torch import sympy2torch from .feynman_problems import FeynmanProblem, Problem from .julia_helpers import install -from .sr import PySRRegressor, best, best_callable, best_row, best_tex, pysr +from .sr import PySRRegressor from .version import __version__ __all__ = [ diff --git a/pysr/deprecated.py b/pysr/deprecated.py index ea5922729..ecfeb45e5 100644 --- a/pysr/deprecated.py +++ b/pysr/deprecated.py @@ -1,4 +1,58 @@ """Various functions to deprecate features.""" +import warnings + + +def pysr(X, y, weights=None, **kwargs): # pragma: no cover + from .sr import PySRRegressor + + warnings.warn( + "Calling `pysr` is deprecated. " + "Please use `model = PySRRegressor(**params); " + "model.fit(X, y)` going forward.", + FutureWarning, + ) + model = PySRRegressor(**kwargs) + model.fit(X, y, weights=weights) + return model.equations_ + + +def best(*args, **kwargs): # pragma: no cover + raise NotImplementedError( + "`best` has been deprecated. " + "Please use the `PySRRegressor` interface. " + "After fitting, you can return `.sympy()` " + "to get the sympy representation " + "of the best equation." + ) + + +def best_row(*args, **kwargs): # pragma: no cover + raise NotImplementedError( + "`best_row` has been deprecated. " + "Please use the `PySRRegressor` interface. " + "After fitting, you can run `print(model)` to view the best equation, " + "or " + "`model.get_best()` to return the best equation's " + "row in `model.equations_`." + ) + + +def best_tex(*args, **kwargs): # pragma: no cover + raise NotImplementedError( + "`best_tex` has been deprecated. " + "Please use the `PySRRegressor` interface. " + "After fitting, you can return `.latex()` to " + "get the sympy representation " + "of the best equation." + ) + + +def best_callable(*args, **kwargs): # pragma: no cover + raise NotImplementedError( + "`best_callable` has been deprecated. Please use the `PySRRegressor` " + "interface. After fitting, you can use " + "`.predict(X)` to use the best callable." + ) def make_deprecated_kwargs_for_pysr_regressor(): diff --git a/pysr/feynman_problems.py b/pysr/feynman_problems.py index a264a901b..b64b41397 100644 --- a/pysr/feynman_problems.py +++ b/pysr/feynman_problems.py @@ -4,7 +4,7 @@ import numpy as np -from .sr import best, pysr +from .deprecated import best, pysr PKG_DIR = Path(__file__).parents[1] FEYNMAN_DATASET = PKG_DIR / "datasets" / "FeynmanEquations.csv" diff --git a/pysr/sr.py b/pysr/sr.py index 71df6cacc..d824b52c2 100644 --- a/pysr/sr.py +++ b/pysr/sr.py @@ -48,17 +48,6 @@ already_ran = False -def pysr(X, y, weights=None, **kwargs): # pragma: no cover - warnings.warn( - "Calling `pysr` is deprecated. " - "Please use `model = PySRRegressor(**params); model.fit(X, y)` going forward.", - FutureWarning, - ) - model = PySRRegressor(**kwargs) - model.fit(X, y, weights=weights) - return model.equations_ - - def _process_constraints(binary_operators, unary_operators, constraints): constraints = constraints.copy() for op in unary_operators: @@ -181,37 +170,6 @@ def _check_assertions( ) -def best(*args, **kwargs): # pragma: no cover - raise NotImplementedError( - "`best` has been deprecated. Please use the `PySRRegressor` interface. " - "After fitting, you can return `.sympy()` to get the sympy representation " - "of the best equation." - ) - - -def best_row(*args, **kwargs): # pragma: no cover - raise NotImplementedError( - "`best_row` has been deprecated. Please use the `PySRRegressor` interface. " - "After fitting, you can run `print(model)` to view the best equation, or " - "`model.get_best()` to return the best equation's row in `model.equations_`." - ) - - -def best_tex(*args, **kwargs): # pragma: no cover - raise NotImplementedError( - "`best_tex` has been deprecated. Please use the `PySRRegressor` interface. " - "After fitting, you can return `.latex()` to get the sympy representation " - "of the best equation." - ) - - -def best_callable(*args, **kwargs): # pragma: no cover - raise NotImplementedError( - "`best_callable` has been deprecated. Please use the `PySRRegressor` " - "interface. After fitting, you can use `.predict(X)` to use the best callable." - ) - - # Class validation constants VALID_OPTIMIZER_ALGORITHMS = ["NelderMead", "BFGS"] From 6abcc15afe7953b08b4f15d1a3e9a127e4e40691 Mon Sep 17 00:00:00 2001 From: Zehao Jin <50961376+ZehaoJin@users.noreply.github.com> Date: Wed, 11 Oct 2023 04:26:36 +0200 Subject: [PATCH 07/21] Add paper "Discovery of a Planar Black Hole Mass Scaling Relation for Spiral Galaxies" (#437) --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: MilesCranmer --- docs/images/Planar_relation.png | Bin 0 -> 193587 bytes docs/papers.yml | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 docs/images/Planar_relation.png diff --git a/docs/images/Planar_relation.png b/docs/images/Planar_relation.png new file mode 100644 index 0000000000000000000000000000000000000000..e8100c42e8dc622ff04ec73ca49841e91fe4b77e GIT binary patch literal 193587 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 literal 0 HcmV?d00001 diff --git a/docs/papers.yml b/docs/papers.yml index 94d3b228c..1558c0716 100644 --- a/docs/papers.yml +++ b/docs/papers.yml @@ -2,6 +2,16 @@ # information to generate the "Research Showcase" papers: + - title: Discovery of a Planar Black Hole Mass Scaling Relation for Spiral Galaxies + authors: + - Benjamin L. Davis (1) + - Zehao Jin (1) + affiliations: + 1: Center for Astrophysics and Space Science, New York University Abu Dhabi + link: https://arxiv.org/abs/2309.08986 + abstract: Supermassive black holes (SMBHs) are tiny in comparison to the galaxies they inhabit, yet they manage to influence and coevolve along with their hosts. Evidence of this mutual development is observed in the structure and dynamics of galaxies and their correlations with black hole mass ($M_\bullet$). For our study, we focus on relative parameters that are unique to only disk galaxies. As such, we quantify the structure of spiral galaxies via their logarithmic spiral-arm pitch angles ($\phi$) and their dynamics through the maximum rotational velocities of their galactic disks ($v_\mathrm{max}$). In the past, we have studied black hole mass scaling relations between $M_\bullet$ and $\phi$ or $v_\mathrm{max}$, separately. Now, we combine the three parameters into a trivariate $M_\bullet$--$\phi$--$v_\mathrm{max}$ relationship that yields best-in-class accuracy in prediction of black hole masses in spiral galaxies. Because most black hole mass scaling relations have been created from samples of the largest SMBHs within the most massive galaxies, they lack certainty when extrapolated to low-mass spiral galaxies. Thus, it is difficult to confidently use existing scaling relations when trying to identify galaxies that might harbor the elusive class of intermediate-mass black holes (IMBHs). Therefore, we offer our novel relationship as an ideal predictor to search for IMBHs and probe the low-mass end of the black hole mass function by utilizing spiral galaxies. Already with rotational velocities widely available for a large population of galaxies and pitch angles readily measurable from uncalibrated images, we expect that the $M_\bullet$--$\phi$--$v_\mathrm{max}$ fundamental plane will be a useful tool for estimating black hole masses, even at high redshifts. + image: Planar_relation.png + date: 2023-10-03 - title: Interpretable machine learning methods applied to jet background subtraction in heavy-ion collisions authors: - Tanner Mengel (1) From 2f91f1f3377613949d2a15e5142e6dfef6a5b86c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:57:59 +0100 Subject: [PATCH 08/21] [pre-commit.ci] pre-commit autoupdate (#440) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.5.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.5.0) - [github.com/hadialqattan/pycln: v2.2.2 → v2.3.0](https://github.com/hadialqattan/pycln/compare/v2.2.2...v2.3.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 417d637fe..c4ed0f91b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: # General linting - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -20,7 +20,7 @@ repos: - id: nbstripout # Unused imports - repo: https://github.com/hadialqattan/pycln - rev: "v2.2.2" + rev: "v2.3.0" hooks: - id: pycln # Sorted imports From 56a619dac649f570e9a2d7a06bdd3e60cb1023c7 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 00:15:11 +0100 Subject: [PATCH 09/21] Tweak tuning tips --- docs/tuning.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/tuning.md b/docs/tuning.md index 954d7e5f8..9f24b2f71 100644 --- a/docs/tuning.md +++ b/docs/tuning.md @@ -12,15 +12,15 @@ I run from IPython (Jupyter Notebooks don't work as well[^1]) on the head node o 1. Use the default parameters. 2. Use only the operators I think it needs and no more. -3. Set `niterations` to some very large value, so it just runs for a week until my job finishes. If the equation looks good, I quit the job early. -4. Increase `populations` to `3*num_cores`. -5. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. -6. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) -7. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. -8. Set `maxdepth` strictly, but leave a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. -9. Set `parsimony` equal to about the minimum loss you would expect, divided by 5-10. e.g., if you expect the final equation to have a loss of `0.001`, you might set `parsimony=0.0001`. -10. Set `weight_optimize` to some larger value, maybe `0.001`. This is very important if `ncyclesperiteration` is large, so that optimization happens more frequently. -11. Set `turbo` to `True`. This may or not work, if there's an error just turn it off (some operators are not SIMD-capable). If it does work, it should give you a nice 20% speedup. +3. Increase `populations` to `3*num_cores`. +4. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. +5. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) +6. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. +7. Set `maxdepth` strictly, but leave a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. +8. Set `parsimony` equal to about the minimum loss you would expect, divided by 5-10. e.g., if you expect the final equation to have a loss of `0.001`, you might set `parsimony=0.0001`. +9. Set `weight_optimize` to some larger value, maybe `0.001`. This is very important if `ncyclesperiteration` is large, so that optimization happens more frequently. +10. Set `turbo` to `True`. This may or not work, if there's an error just turn it off (some operators are not SIMD-capable). If it does work, it should give you a nice 20% speedup. +11. For final runs, after I have tuned everything, I typically set `niterations` to some very large value, and just let it run for a week until my job finishes (genetic algorithms tend not to converge, they can look like they settle down, but then find a new family of expression, and explore a new space). If I am satisfied with the current equations (which are visible either in the terminal or in the saved csv file), I quit the job early. Since I am running in IPython, I can just hit `q` and then `` to stop the job, tweak the hyperparameters, and then start the search again. I can also use `warm_start=True` if I wish to continue where I left off (though note that changing some parameters, like `maxsize`, are incompatible with warm starts). From 440d30f7cb638457d8abdb019d41690c25b5b2cd Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 00:19:55 +0100 Subject: [PATCH 10/21] Advice on batching --- docs/tuning.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/tuning.md b/docs/tuning.md index 9f24b2f71..fcd048e5d 100644 --- a/docs/tuning.md +++ b/docs/tuning.md @@ -13,14 +13,15 @@ I run from IPython (Jupyter Notebooks don't work as well[^1]) on the head node o 1. Use the default parameters. 2. Use only the operators I think it needs and no more. 3. Increase `populations` to `3*num_cores`. -4. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. -5. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) -6. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. -7. Set `maxdepth` strictly, but leave a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. -8. Set `parsimony` equal to about the minimum loss you would expect, divided by 5-10. e.g., if you expect the final equation to have a loss of `0.001`, you might set `parsimony=0.0001`. -9. Set `weight_optimize` to some larger value, maybe `0.001`. This is very important if `ncyclesperiteration` is large, so that optimization happens more frequently. -10. Set `turbo` to `True`. This may or not work, if there's an error just turn it off (some operators are not SIMD-capable). If it does work, it should give you a nice 20% speedup. -11. For final runs, after I have tuned everything, I typically set `niterations` to some very large value, and just let it run for a week until my job finishes (genetic algorithms tend not to converge, they can look like they settle down, but then find a new family of expression, and explore a new space). If I am satisfied with the current equations (which are visible either in the terminal or in the saved csv file), I quit the job early. +4. If my dataset is more than 1000 points, I either subsample it (low-dimensional and not much noise) or set `batching=True` (high-dimensional or very noisy, so it needs to evaluate on all the data). +5. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. +6. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) +7. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. +8. Set `maxdepth` strictly, but leave a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. +9. Set `parsimony` equal to about the minimum loss you would expect, divided by 5-10. e.g., if you expect the final equation to have a loss of `0.001`, you might set `parsimony=0.0001`. +10. Set `weight_optimize` to some larger value, maybe `0.001`. This is very important if `ncyclesperiteration` is large, so that optimization happens more frequently. +11. Set `turbo` to `True`. This may or not work, if there's an error just turn it off (some operators are not SIMD-capable). If it does work, it should give you a nice 20% speedup. +12. For final runs, after I have tuned everything, I typically set `niterations` to some very large value, and just let it run for a week until my job finishes (genetic algorithms tend not to converge, they can look like they settle down, but then find a new family of expression, and explore a new space). If I am satisfied with the current equations (which are visible either in the terminal or in the saved csv file), I quit the job early. Since I am running in IPython, I can just hit `q` and then `` to stop the job, tweak the hyperparameters, and then start the search again. I can also use `warm_start=True` if I wish to continue where I left off (though note that changing some parameters, like `maxsize`, are incompatible with warm starts). From c751ff8cbb95bb6ecc73e6bea452b1ce6a85ff08 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 00:21:57 +0100 Subject: [PATCH 11/21] Move examples up on table of contents --- docs/interactive-docs.md | 2 +- mkdocs.yml | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/interactive-docs.md b/docs/interactive-docs.md index 3c87a5107..23be57076 100644 --- a/docs/interactive-docs.md +++ b/docs/interactive-docs.md @@ -1,4 +1,4 @@ -# Interactive Reference ⭐ +# Interactive Reference diff --git a/mkdocs.yml b/mkdocs.yml index 8199745ae..8da8cc2dc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -25,12 +25,11 @@ theme: nav: - index.md - - options.md + - examples.md - operators.md - tuning.md - - Examples: - - examples.md - - papers.md + - options.md + - papers.md - Reference: - api.md - api-advanced.md From 3ae1f0b6689930b49140f6da2b748a01cab31ac4 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 00:30:40 +0100 Subject: [PATCH 12/21] More docs on custom operators --- docs/operators.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/operators.md b/docs/operators.md index 1d37f3672..1777d28d6 100644 --- a/docs/operators.md +++ b/docs/operators.md @@ -2,8 +2,8 @@ ## Pre-defined -All Base julia operators that take 1 or 2 float32 as input, -and output a float32 as output, are available. A selection +All Base julia operators that take 1 or 2 scalars as input, +and output a scalar as output, are available. A selection of these and other valid operators are stated below. **Binary** @@ -58,9 +58,16 @@ you can define with by passing it to the `pysr` function, with, e.g., Make sure that it works with -`Float32` as a datatype. That means you need to write `1.5f3` -instead of `1.5e3`, if you write any constant numbers. +`Float32` as a datatype (for default precision, or `Float64` if you set `precision=64`). That means you need to write `1.5f3` +instead of `1.5e3`, if you write any constant numbers, or simply convert a result to `Float64(...)`. -Your operator should work with the entire real line (you can use -abs(x) for operators requiring positive input - see `log_abs`); otherwise -the search code will experience domain errors. +PySR expects that operators not throw an error for any input value over the entire real line from `-3.4e38` to `+3.4e38`. +Thus, for "invalid" inputs, such as negative numbers to a `sqrt` function, you may simply return a `NaN` of the same type as the input. For example, + +```julia +my_sqrt(x) = x >= 0 ? sqrt(x) : convert(typeof(x), NaN) +``` + +would be a valid operator. The genetic algorithm +will preferentially selection expressions which avoid +any invalid values over the training dataset. From 586d2037b39a776ebe3d7280dc91c0ff1a5025ef Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 00:34:15 +0100 Subject: [PATCH 13/21] Additional tuning advice --- docs/tuning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tuning.md b/docs/tuning.md index fcd048e5d..9af1f12c7 100644 --- a/docs/tuning.md +++ b/docs/tuning.md @@ -17,7 +17,7 @@ I run from IPython (Jupyter Notebooks don't work as well[^1]) on the head node o 5. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. 6. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) 7. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. -8. Set `maxdepth` strictly, but leave a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. +8. I typically don't use `maxdepth`, but if I do, I set it strictly, while also leaving a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. 9. Set `parsimony` equal to about the minimum loss you would expect, divided by 5-10. e.g., if you expect the final equation to have a loss of `0.001`, you might set `parsimony=0.0001`. 10. Set `weight_optimize` to some larger value, maybe `0.001`. This is very important if `ncyclesperiteration` is large, so that optimization happens more frequently. 11. Set `turbo` to `True`. This may or not work, if there's an error just turn it off (some operators are not SIMD-capable). If it does work, it should give you a nice 20% speedup. From 06a70dd785b93c6198262d301d21996b433ff28a Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Fri, 27 Oct 2023 01:01:12 +0100 Subject: [PATCH 14/21] Additional tuning advice --- docs/tuning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tuning.md b/docs/tuning.md index 9af1f12c7..aac4d1260 100644 --- a/docs/tuning.md +++ b/docs/tuning.md @@ -14,7 +14,7 @@ I run from IPython (Jupyter Notebooks don't work as well[^1]) on the head node o 2. Use only the operators I think it needs and no more. 3. Increase `populations` to `3*num_cores`. 4. If my dataset is more than 1000 points, I either subsample it (low-dimensional and not much noise) or set `batching=True` (high-dimensional or very noisy, so it needs to evaluate on all the data). -5. Set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. +5. While on a laptop or single node machine, you might leave the default `ncyclesperiteration`, on a cluster with ~100 cores I like to set `ncyclesperiteration` to maybe `5000` or so, until the head node occupation is under `10%`. (A larger value means the workers talk less frequently to eachother, which is useful when you have many workers!) 6. Set `constraints` and `nested_constraints` as strict as possible. These can help quite a bit with exploration. Typically, if I am using `pow`, I would set `constraints={"pow": (9, 1)}`, so that power laws can only have a variable or constant as their exponent. If I am using `sin` and `cos`, I also like to set `nested_constraints={"sin": {"sin": 0, "cos": 0}, "cos": {"sin": 0, "cos": 0}}`, so that sin and cos can't be nested, which seems to happen frequently. (Although in practice I would just use `sin`, since the search could always add a phase offset!) 7. Set `maxsize` a bit larger than the final size you want. e.g., if you want a final equation of size `30`, you might set this to `35`, so that it has a bit of room to explore. 8. I typically don't use `maxdepth`, but if I do, I set it strictly, while also leaving a bit of room for exploration. e.g., if you want a final equation limited to a depth of `5`, you might set this to `6` or `7`, so that it has a bit of room to explore. From 2e510337ccb62d272b013e5a4867aa11ed2e08b1 Mon Sep 17 00:00:00 2001 From: Shah Mahdi Hasan Date: Fri, 24 Nov 2023 11:51:30 +1100 Subject: [PATCH 15/21] Added "min" and "max" sympy mapping (#473) * Added "min" and "max" sympy mapping To overcome the sympy bug while using Min/Max operators as discussed under this issue: https://github.com/MilesCranmer/PySR/issues/183 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- pysr/export_sympy.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pysr/export_sympy.py b/pysr/export_sympy.py index 81142f481..e10609bde 100644 --- a/pysr/export_sympy.py +++ b/pysr/export_sympy.py @@ -47,6 +47,8 @@ "ceil": sympy.ceiling, "sign": sympy.sign, "gamma": sympy.gamma, + "max": lambda x, y: sympy.Piecewise((y, x < y), (x, True)), + "min": lambda x, y: sympy.Piecewise((x, x < y), (y, True)), } From ce15648b1e746d3b9b718d9df7dee81a55da86f3 Mon Sep 17 00:00:00 2001 From: Shah Mahdi Hasan Date: Mon, 27 Nov 2023 16:46:11 +1100 Subject: [PATCH 16/21] Added "round" operator in the Sympy mappings (#474) Enabling a workaround to avoid the following type error: `raise TypeError("Cannot round symbolic expression")` while using `round` as a unary operator. This issue was raised in #269 the the PR contains the exact solution put forth in the subsequent discussion --- pysr/export_sympy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysr/export_sympy.py b/pysr/export_sympy.py index e10609bde..3c3c5f931 100644 --- a/pysr/export_sympy.py +++ b/pysr/export_sympy.py @@ -49,6 +49,7 @@ "gamma": sympy.gamma, "max": lambda x, y: sympy.Piecewise((y, x < y), (x, True)), "min": lambda x, y: sympy.Piecewise((x, x < y), (y, True)), + "round": lambda x: sympy.ceiling(x - 0.5), } From 4ef3ad3570bc304afd826a72751704ca5d0fb24e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 14:55:26 -0600 Subject: [PATCH 17/21] [pre-commit.ci] pre-commit autoupdate (#446) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.9.1 → 23.11.0](https://github.com/psf/black/compare/23.9.1...23.11.0) - [github.com/hadialqattan/pycln: v2.3.0 → v2.4.0](https://github.com/hadialqattan/pycln/compare/v2.3.0...v2.4.0) - [github.com/PyCQA/isort: 5.12.0 → 5.13.0](https://github.com/PyCQA/isort/compare/5.12.0...5.13.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c4ed0f91b..52f19888b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,7 +9,7 @@ repos: - id: check-added-large-files # General formatting - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 23.11.0 hooks: - id: black - id: black-jupyter @@ -20,12 +20,12 @@ repos: - id: nbstripout # Unused imports - repo: https://github.com/hadialqattan/pycln - rev: "v2.3.0" + rev: "v2.4.0" hooks: - id: pycln # Sorted imports - repo: https://github.com/PyCQA/isort - rev: "5.12.0" + rev: "5.13.0" hooks: - id: isort additional_dependencies: [toml] From 2bd241ad3446a48b58fa7c02917b46546a434806 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Mon, 11 Dec 2023 20:54:32 +0000 Subject: [PATCH 18/21] Update backend version to v0.22.5 --- pysr/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pysr/version.py b/pysr/version.py index 4260786a0..8a8995f2f 100644 --- a/pysr/version.py +++ b/pysr/version.py @@ -1,2 +1,2 @@ -__version__ = "0.16.3" -__symbolic_regression_jl_version__ = "0.22.4" +__version__ = "0.16.4" +__symbolic_regression_jl_version__ = "0.22.5" From 5438f2f5c9bb15fc84ad535d4176a4976cf0a3d9 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Mon, 11 Dec 2023 16:07:32 -0600 Subject: [PATCH 19/21] Add `cond` operator to built-in mappings --- pysr/export_sympy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysr/export_sympy.py b/pysr/export_sympy.py index 3c3c5f931..3ea0baf06 100644 --- a/pysr/export_sympy.py +++ b/pysr/export_sympy.py @@ -50,6 +50,7 @@ "max": lambda x, y: sympy.Piecewise((y, x < y), (x, True)), "min": lambda x, y: sympy.Piecewise((x, x < y), (y, True)), "round": lambda x: sympy.ceiling(x - 0.5), + "cond": lambda x, y: sympy.Heaviside(x, H0=0) * y, } From 647625c7e075b4d31c4f28f7f5832a27a0fa85e1 Mon Sep 17 00:00:00 2001 From: MilesCranmer Date: Mon, 11 Dec 2023 16:07:59 -0600 Subject: [PATCH 20/21] Point user to GitHub in case of installation error --- pysr/julia_helpers.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pysr/julia_helpers.py b/pysr/julia_helpers.py index 7918c5e6d..e2f76090c 100644 --- a/pysr/julia_helpers.py +++ b/pysr/julia_helpers.py @@ -94,7 +94,15 @@ def install(julia_project=None, quiet=False, precompile=None): # pragma: no cov ], ) # Try installing again: - julia.install(quiet=quiet) + try: + julia.install(quiet=quiet) + except julia.tools.PyCallInstallError: + warnings.warn( + "PyCall.jl failed to install on second attempt. " + + "Please consult the GitHub issue " + + "https://github.com/MilesCranmer/PySR/issues/257 " + + "for advice on fixing this." + ) Main, init_log = init_julia(julia_project, quiet=quiet, return_aux=True) io_arg = _get_io_arg(quiet) From d39c0a676780e6785bd3de52cd14fd0b1614fcd1 Mon Sep 17 00:00:00 2001 From: Miles Cranmer Date: Wed, 13 Dec 2023 02:34:25 -0600 Subject: [PATCH 21/21] Update operators.md --- docs/operators.md | 96 +++++++++++++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 36 deletions(-) diff --git a/docs/operators.md b/docs/operators.md index 1777d28d6..012f9ff9b 100644 --- a/docs/operators.md +++ b/docs/operators.md @@ -2,46 +2,60 @@ ## Pre-defined -All Base julia operators that take 1 or 2 scalars as input, -and output a scalar as output, are available. A selection -of these and other valid operators are stated below. +First, note that pretty much any valid Julia function which +takes one or two scalars as input, and returns on scalar as output, +is likely to be a valid operator[^1]. +A selection of these and other valid operators are stated below. **Binary** -`+`, `-`, `*`, `/`, `^`, `greater`, `mod`, `logical_or`, -`logical_and` +- `+` +- `-` +- `*` +- `/` +- `^` +- `cond` + - Equal to `(x, y) -> x > 0 ? y : 0` +- `greater` + - Equal to `(x, y) -> x > y ? 1 : 0` +- `logical_or` + - Equal to `(x, y) -> (x > 0 || y > 0) ? 1 : 0` +- `logical_and` + - Equal to `(x, y) -> (x > 0 && y > 0) ? 1 : 0` +- `mod` **Unary** -`neg`, -`square`, -`cube`, -`exp`, -`abs`, -`log`, -`log10`, -`log2`, -`log1p`, -`sqrt`, -`sin`, -`cos`, -`tan`, -`sinh`, -`cosh`, -`tanh`, -`atan`, -`asinh`, -`acosh`, -`atanh_clip` (=atanh((x+1)%2 - 1)), -`erf`, -`erfc`, -`gamma`, -`relu`, -`round`, -`floor`, -`ceil`, -`round`, -`sign`. +- `neg` +- `square` +- `cube` +- `exp` +- `abs` +- `log` +- `log10` +- `log2` +- `log1p` +- `sqrt` +- `sin` +- `cos` +- `tan` +- `sinh` +- `cosh` +- `tanh` +- `atan` +- `asinh` +- `acosh` +- `atanh_clip` + - Equal to `atanh(mod(x + 1, 2) - 1)` +- `erf` +- `erfc` +- `gamma` +- `relu` +- `round` +- `floor` +- `ceil` +- `round` +- `sign` ## Custom @@ -52,7 +66,11 @@ you can define with by passing it to the `pysr` function, with, e.g., PySRRegressor( ..., unary_operators=["myfunction(x) = x^2"], - binary_operators=["myotherfunction(x, y) = x^2*y"] + binary_operators=["myotherfunction(x, y) = x^2*y"], + extra_sympy_mappings={ + "myfunction": lambda x: x**2, + "myotherfunction": lambda x, y: x**2 * y, + }, ) ``` @@ -62,7 +80,7 @@ Make sure that it works with instead of `1.5e3`, if you write any constant numbers, or simply convert a result to `Float64(...)`. PySR expects that operators not throw an error for any input value over the entire real line from `-3.4e38` to `+3.4e38`. -Thus, for "invalid" inputs, such as negative numbers to a `sqrt` function, you may simply return a `NaN` of the same type as the input. For example, +Thus, for invalid inputs, such as negative numbers to a `sqrt` function, you may simply return a `NaN` of the same type as the input. For example, ```julia my_sqrt(x) = x >= 0 ? sqrt(x) : convert(typeof(x), NaN) @@ -71,3 +89,9 @@ my_sqrt(x) = x >= 0 ? sqrt(x) : convert(typeof(x), NaN) would be a valid operator. The genetic algorithm will preferentially selection expressions which avoid any invalid values over the training dataset. + + + + + +[^1]: However, you will need to define a sympy equivalent in `extra_sympy_mapping` if you want to use a function not in the above list.