Spaces:
Sleeping
Sleeping
Commit
·
e0c7f38
1
Parent(s):
47510a9
Have PySR generate Project.toml from Python
Browse files- Project.toml +0 -6
- TODO.md +1 -0
- pysr/sr.py +29 -3
Project.toml
DELETED
|
@@ -1,6 +0,0 @@
|
|
| 1 |
-
[deps]
|
| 2 |
-
SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
|
| 3 |
-
|
| 4 |
-
[compat]
|
| 5 |
-
SymbolicRegression = "0.6.19"
|
| 6 |
-
julia = "1.5"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TODO.md
CHANGED
|
@@ -60,6 +60,7 @@
|
|
| 60 |
- [x] Record density over complexity. Favor equations that have a density we have not explored yet. Want the final density to be evenly distributed.
|
| 61 |
- [x] Do printing from Python side. Then we can do simplification and pretty-printing.
|
| 62 |
- [x] Sympy printing
|
|
|
|
| 63 |
- [ ] Sort these todo lists by priority
|
| 64 |
|
| 65 |
- [ ] Automatically convert log, log10, log2, pow to the correct operators.
|
|
|
|
| 60 |
- [x] Record density over complexity. Favor equations that have a density we have not explored yet. Want the final density to be evenly distributed.
|
| 61 |
- [x] Do printing from Python side. Then we can do simplification and pretty-printing.
|
| 62 |
- [x] Sympy printing
|
| 63 |
+
- [x] Store Project.toml inside PySR's python code, rather than copied to site-packages.
|
| 64 |
- [ ] Sort these todo lists by priority
|
| 65 |
|
| 66 |
- [ ] Automatically convert log, log10, log2, pow to the correct operators.
|
pysr/sr.py
CHANGED
|
@@ -957,10 +957,15 @@ class CallableEquation:
|
|
| 957 |
|
| 958 |
|
| 959 |
def _get_julia_project(julia_project):
|
| 960 |
-
pkg_directory = Path(__file__).parents[1]
|
| 961 |
if julia_project is None:
|
| 962 |
-
|
| 963 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 964 |
|
| 965 |
|
| 966 |
def silence_julia_warning():
|
|
@@ -1007,3 +1012,24 @@ To silence this warning, you can run pysr.silence_julia_warning() after importin
|
|
| 1007 |
Main = _Main
|
| 1008 |
|
| 1009 |
return Main
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 957 |
|
| 958 |
|
| 959 |
def _get_julia_project(julia_project):
|
|
|
|
| 960 |
if julia_project is None:
|
| 961 |
+
# Create temp directory:
|
| 962 |
+
tmp_dir = tempfile.mkdtemp()
|
| 963 |
+
tmp_dir = Path(tmp_dir)
|
| 964 |
+
# Create Project.toml in temp dir:
|
| 965 |
+
_write_project_file(tmp_dir)
|
| 966 |
+
return tmp_dir
|
| 967 |
+
else:
|
| 968 |
+
return Path(julia_project)
|
| 969 |
|
| 970 |
|
| 971 |
def silence_julia_warning():
|
|
|
|
| 1012 |
Main = _Main
|
| 1013 |
|
| 1014 |
return Main
|
| 1015 |
+
|
| 1016 |
+
|
| 1017 |
+
def _write_project_file(tmp_dir):
|
| 1018 |
+
"""This writes a Julia Project.toml to a temporary directory
|
| 1019 |
+
|
| 1020 |
+
The reason we need this is because sometimes Python will compile a project to binary,
|
| 1021 |
+
and then Julia can't read the Project.toml file. It is more reliable to have Python
|
| 1022 |
+
simply create the Project.toml from scratch.
|
| 1023 |
+
"""
|
| 1024 |
+
|
| 1025 |
+
project_toml = """
|
| 1026 |
+
[deps]
|
| 1027 |
+
SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
|
| 1028 |
+
|
| 1029 |
+
[compat]
|
| 1030 |
+
SymbolicRegression = "0.6.19"
|
| 1031 |
+
julia = "1.5"
|
| 1032 |
+
"""
|
| 1033 |
+
|
| 1034 |
+
project_toml_path = tmp_dir / "Project.toml"
|
| 1035 |
+
project_toml_path.write_text(project_toml)
|