bertiniteam / b2

Bertini 2.0: The redevelopment of Bertini in C++.
88 stars 34 forks source link

test_all error #168

Open alexeyovchinnikov opened 2 years ago

alexeyovchinnikov commented 2 years ago

python3 test/test_all.py returns the following error:

Traceback (most recent call last): File "test/test_all.py", line 33, in import classes.test_classes File "\~/b2/python/test/classes/test_classes.py", line 31, in import classes.mpfr_test as mpfr_test File "\~/b2/python/test/classes/mpfr_test.py", line 33, in import pybertini as pb File "\~/.local/lib/python3.8/site-packages/pybertini/init.py", line 52, in import pybertini.system as system File "\~/.local/lib/python3.8/site-packages/pybertini/system/init.py", line 50, in import _pybertini.system ModuleNotFoundError: No module named '_pybertini'

r98inver commented 1 year ago

Same issue, on Ubuntu 22.04. Maybe I got a bit further, but still not working. First error I got was the same:

[...]
File "/home/r98inver/.local/lib/python3.10/site-packages/pybertini/system/__init__.py", line 50, in <module>
    import _pybertini.system
ModuleNotFoundError: No module named '_pybertini'

Per sudo make install it is located in /usr/local/lib/python3.10/site-packages, so tryed export PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.10/site-packages". Solved the issue, but now I get

[...]
File "/home/r98inver/.local/lib/python3.10/site-packages/pybertini/system/__init__.py", line 50, in <module>
    import _pybertini.system
ImportError: libbertini2.so.1: cannot open shared object file: No such file or directory

As suggested in this answer, I run export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib". Now it works but the test got multiple errors, including

TypeError: No Python class registered for C++ class std::complex<double>
Traceback (most recent call last):
  File "/home/r98inver/b2/python/test/classes/mpfr_test.py", line 237, in test_mp_complex_precision
    self.assertEqual(w.precision(),60)
AssertionError: 30 != 60
Traceback (most recent call last):
  File "/home/r98inver/b2/python/test/tracking/endgame_test.py", line 137, in test_using_total_degree_ss
    track_success_code = my_endgame.run(mpfr_complex(t_endgame_boundary),bdry_points[i]);
RuntimeError: CauchyEG Run time and point must be of matching precision. (50!=16)
ofloveandhate commented 1 year ago

TypeError: No Python class registered for C++ class std::complex

This one surprises me. Hmm.

The others, precision stuff, doesn't. boost::multiprecision made some breaking changes in 2018 or so, and I haven't had time to fix the internal code thoroughly since then.

ofloveandhate commented 1 year ago

What are you intending to do with Bertini 2? Are you aware that the software is experimental? If you're looking for a mature system for numerical algebraic geometry, please use Bertini 1. Though it lacks a Python interface, it's much more stable than Bertini 2. There are a number of other packages I could also recommend, too.

ofloveandhate commented 1 year ago

A bit of context may be helpful: My most recent work on B2 was Summer 2021, when a student and I implemented straight-line-programs as an alternative way to evaluate systems. But I never made the switch over to use them by default, and B2 continues to have precision issues due to the breaking changes in boost::multiprecision.

Alas, I ended up at a teaching university, and the community at large didn't pick up the torch for Bertini 2 when I stopped having 40 hours a week to devote to it as I did when I was a postdoc... I would welcome help on B2, if you're into it.

r98inver commented 1 year ago

Actually I have Bertini1.6 up and running, wrapped by Julia. I was just looking for python interface. I'm quite new to Bertini (and starting getting involved in computational algebraic geometry in general) but i would love to help with it as far as I can