kartelj / rils-rols

RILS-ROLS: Robust Symbolic Regression via Iterated Local Search and Ordinary Least Squares
MIT License
8 stars 2 forks source link

Issue in Colab (at least): python setup.py egg_info did not run successfully #4

Closed IronTessaro closed 9 months ago

IronTessaro commented 9 months ago

I tried to install the module in Colab but I got the following error:

Processing /content/rils-rols error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip. Preparing metadata (setup.py) ... error error: metadata-generation-failed

× Encountered error while generating package metadata. ╰─> See above for output.

note: This is an issue with the package mentioned above, not pip. hint: See above for details.

I managed to solve this by changing the "readme.md" file name or inside setup.py to "README.md".

kartelj commented 9 months ago

Hello Iron,

thank you for interest in our algorithm. Are we speaking about new version (1.5.*) or about the paper-referred one 1.2? Here is a working colab notebook for 1.2: https://colab.research.google.com/drive/1BujSPRKDpIOUXFFxedAk4FgXYv4dBTKs?authuser=0#scrollTo=2Fa0vYfYRNb4 And instructions: https://pypi.org/project/rils-rols/1.2/

Regarding 1.5.*, it is a work in progress, that is why documentation for it is not still on the master branch. But now I have corrected the link, you can see it on pypi.org that it refers to a non-master branch: https://pypi.org/project/rils-rols/ Maybe you should try to run 1.5.5 on local machine, there are some issues with installing it on colab.

Best regards, Aleksandar

IronTessaro commented 9 months ago

The Colab notebook for 1.2 worked fine, thanks! The issue happens when I try just pip install rils-rols, as described in the README file. It seems that the only problem is case-sensitive readme.md file that does not match the line 3 of setup.py file, which calls:

with open("README.md", "r") as fh:

setup.py calls uppercase README but the file is lowercase readme. I was able to perform a pip install . inside of the rils-rols folder by just matching them.

kartelj commented 9 months ago

Thank you for the catch. But now I am not sure are you using version 1.5.*, because this version setup.py is a lot different -- it is in this branch: https://github.com/kartelj/rils-rols/blob/binary-classifier-new/setup.py You probably looked at the master: https://github.com/kartelj/rils-rols/blob/master/setup.py

Maybe pypi cached something... Could you please run: pip install rils-rols==1.5.8 on colab and in local environment. When I try it in local, it works fine (win10), but it doesn't work on colab.

Also, one suggestion regarding real-world instances (I suppose you are interested in those). Version 1.2 is slow, so it used training dataset sampling (only 1%), which was enough for artificial instances with known solutions (so called ground-truth instances) salted with a bit of uniform noise. In real-world instances, this sample is not enough, it is better to use the whole training set. With new versions (1.5.*), RILS-ROLS is rewritten to C++ and packed as a Python module (that is why there are some installation issues remaining..). Have a look at this issue https://github.com/kartelj/rils-rols/issues/3 from few days before. There, I posted results of new C++ version on the black-box instances from SRBench, 120 of those. You will see that the results are quite good. For a reference look at the results at SRBench here: https://cavalab.org/srbench/results/ Old version 1.2 cannot reach these solutions: although the internal algorithm is almost the same, using such a large sample (100%) would make it practically unusable for moderate-to-large datasets.

IronTessaro commented 9 months ago

Yes, you are right. Since I can't perform a pip install rils-rols (neither pip install rils-rols==1.5.8) in Colab, I cloned the master repo, renamed readme.md to README.md, and ran pip install .. Without renaming it, I got the same error message as in pip install rils-rols, but maybe they are distinct issues.

Thanks for the support!

kartelj commented 9 months ago

The issue is solved, I hope. The problem was in pybind11, although it is mentioned in the setup.py dependencies, it is not recognized for some reason within Colab environment, so I have added explicit installation of this before instalation of rils-rols. (Maybe because pybind11 itself is used within setup.py, so it is referred before it is disclosed as a dependency...)

Here is a working minimal example for version 1.5.10 (default version at the moment): https://colab.research.google.com/drive/1U8I92VTQao9UA9ErBK3VX9AbpIX1LLIv#scrollTo=IdTS8UfmPVVo

IronTessaro commented 9 months ago

Thank you very much, Aleksandar! It works perfectly now.