Spaces:
Running
Running
MilesCranmer
commited on
Commit
•
bc63109
1
Parent(s):
79a7cfe
Bump version with precision parameter
Browse files- Project.toml +1 -1
- pysr/sr.py +17 -4
- setup.py +1 -1
Project.toml
CHANGED
@@ -2,5 +2,5 @@
|
|
2 |
SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
|
3 |
|
4 |
[compat]
|
5 |
-
SymbolicRegression = "0.6.
|
6 |
julia = "1.5"
|
|
|
2 |
SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
|
3 |
|
4 |
[compat]
|
5 |
+
SymbolicRegression = "0.6.9"
|
6 |
julia = "1.5"
|
pysr/sr.py
CHANGED
@@ -133,6 +133,7 @@ def pysr(
|
|
133 |
denoise=False,
|
134 |
Xresampled=None,
|
135 |
precision=32,
|
|
|
136 |
):
|
137 |
"""Run symbolic regression to fit f(X[i, :]) ~ y[i] for all i.
|
138 |
Note: most default parameters have been tuned over several example
|
@@ -253,6 +254,8 @@ def pysr(
|
|
253 |
:type denoise: bool
|
254 |
:param precision: What precision to use for the data. By default this is 32 (float32), but you can select 64 or 16 as well.
|
255 |
:type precision: int
|
|
|
|
|
256 |
:returns: Results dataframe, giving complexity, MSE, and equations (as strings), as well as functional forms. If list, each element corresponds to a dataframe of equations for each output.
|
257 |
:type: pd.DataFrame/list
|
258 |
"""
|
@@ -431,6 +434,7 @@ def pysr(
|
|
431 |
tournament_selection_p=tournament_selection_p,
|
432 |
denoise=denoise,
|
433 |
precision=precision,
|
|
|
434 |
)
|
435 |
|
436 |
kwargs = {**_set_paths(tempdir), **kwargs}
|
@@ -488,12 +492,19 @@ def _set_globals(X, **kwargs):
|
|
488 |
global_state[key] = value
|
489 |
|
490 |
|
491 |
-
def _final_pysr_process(
|
|
|
|
|
492 |
command = [
|
493 |
"julia",
|
494 |
f"-O{julia_optimization:d}",
|
495 |
-
str(runfile_filename),
|
496 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
497 |
if timeout is not None:
|
498 |
command = ["timeout", f"{timeout}"] + command
|
499 |
_cmd_runner(command, **kwargs)
|
@@ -544,6 +555,7 @@ def _create_julia_files(
|
|
544 |
pkg_directory,
|
545 |
need_install,
|
546 |
update,
|
|
|
547 |
**kwargs,
|
548 |
):
|
549 |
with open(hyperparam_filename, "w") as f:
|
@@ -573,14 +585,15 @@ def _create_julia_files(
|
|
573 |
"[" + ",".join(['"' + vname + '"' for vname in variable_names]) + "]"
|
574 |
)
|
575 |
|
|
|
576 |
if weights is not None:
|
577 |
print(
|
578 |
-
f"EquationSearch(X, y, weights=weights, niterations={niterations:d}, varMap={varMap}, options=options, numprocs={
|
579 |
file=f,
|
580 |
)
|
581 |
else:
|
582 |
print(
|
583 |
-
f"EquationSearch(X, y, niterations={niterations:d}, varMap={varMap}, options=options, numprocs={
|
584 |
file=f,
|
585 |
)
|
586 |
|
|
|
133 |
denoise=False,
|
134 |
Xresampled=None,
|
135 |
precision=32,
|
136 |
+
multithreading=False,
|
137 |
):
|
138 |
"""Run symbolic regression to fit f(X[i, :]) ~ y[i] for all i.
|
139 |
Note: most default parameters have been tuned over several example
|
|
|
254 |
:type denoise: bool
|
255 |
:param precision: What precision to use for the data. By default this is 32 (float32), but you can select 64 or 16 as well.
|
256 |
:type precision: int
|
257 |
+
:param multithreading: Use multithreading instead of distributed
|
258 |
+
:type multithreading: bool
|
259 |
:returns: Results dataframe, giving complexity, MSE, and equations (as strings), as well as functional forms. If list, each element corresponds to a dataframe of equations for each output.
|
260 |
:type: pd.DataFrame/list
|
261 |
"""
|
|
|
434 |
tournament_selection_p=tournament_selection_p,
|
435 |
denoise=denoise,
|
436 |
precision=precision,
|
437 |
+
multithreading=multithreading,
|
438 |
)
|
439 |
|
440 |
kwargs = {**_set_paths(tempdir), **kwargs}
|
|
|
492 |
global_state[key] = value
|
493 |
|
494 |
|
495 |
+
def _final_pysr_process(
|
496 |
+
julia_optimization, runfile_filename, timeout, multithreading, procs, **kwargs
|
497 |
+
):
|
498 |
command = [
|
499 |
"julia",
|
500 |
f"-O{julia_optimization:d}",
|
|
|
501 |
]
|
502 |
+
|
503 |
+
if multithreading:
|
504 |
+
command.append("--threads")
|
505 |
+
command.append(f"{procs}")
|
506 |
+
|
507 |
+
command.append(str(runfile_filename))
|
508 |
if timeout is not None:
|
509 |
command = ["timeout", f"{timeout}"] + command
|
510 |
_cmd_runner(command, **kwargs)
|
|
|
555 |
pkg_directory,
|
556 |
need_install,
|
557 |
update,
|
558 |
+
multithreading,
|
559 |
**kwargs,
|
560 |
):
|
561 |
with open(hyperparam_filename, "w") as f:
|
|
|
585 |
"[" + ",".join(['"' + vname + '"' for vname in variable_names]) + "]"
|
586 |
)
|
587 |
|
588 |
+
cprocs = 0 if multithreading else procs
|
589 |
if weights is not None:
|
590 |
print(
|
591 |
+
f"EquationSearch(X, y, weights=weights, niterations={niterations:d}, varMap={varMap}, options=options, numprocs={cprocs}, multithreading={'true' if multithreading else 'false'})",
|
592 |
file=f,
|
593 |
)
|
594 |
else:
|
595 |
print(
|
596 |
+
f"EquationSearch(X, y, niterations={niterations:d}, varMap={varMap}, options=options, numprocs={cprocs})",
|
597 |
file=f,
|
598 |
)
|
599 |
|
setup.py
CHANGED
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
|
|
5 |
|
6 |
setuptools.setup(
|
7 |
name="pysr",
|
8 |
-
version="0.6.
|
9 |
author="Miles Cranmer",
|
10 |
author_email="[email protected]",
|
11 |
description="Simple and efficient symbolic regression",
|
|
|
5 |
|
6 |
setuptools.setup(
|
7 |
name="pysr",
|
8 |
+
version="0.6.10",
|
9 |
author="Miles Cranmer",
|
10 |
author_email="[email protected]",
|
11 |
description="Simple and efficient symbolic regression",
|