Open RMeli opened 3 years ago
This problem seems to occur only with the pip
-installed library. If I compile libmolgrid
from source (within a Singularity container), everything seems to work as expected.
The most likely problem is your version of openbabel is different than the one included with the pip package. Since the OBMol objects aren't compatible, it fails miserably. There a number of ways this could be dealt with.
I'm going to settle for 3 for now. It is possible that there is some other problem besides the versions (e.g. how the library was built vs changes in the source code).
Can you provide the details of your system openbabel (or whatever openbabel package molgrid would be using)?
Thank you for looking into this. I think having a warning after spotting this incompatibility would be great!
I installed openbabel
within the conda
environment from the conda-forge
channel. The version being installed was 3.1.1
. The conda
environment above was enough for me to reproduce the problem.
I can think of two solutions: (1) Embed a version of openbabel within molgrid that is guaranteed to be compatible (but may not be compatible with system openbabel, so less than ideal for integrating with pre-existing code). (2) Configure a conda package that builds molgrid (rather than getting it from pip) against the conda version of openbabel. Managing these sorts of dependencies is kinda of the point of using conda.
(1) is easy to do. (2) will have to wait until I have some poor sod to fob it off onto.
Given that (1) is less than ideal, I'd say (2) is the preferred option.
If you have any pointers I could have a look into it? I started looking at conda-forge, but it was unclear to me how to deal with CUDA packages.
Not really, having never done it. It looks like you need to come up with a build recipe. Figuring out the dependencies is probably the main difficulty and ensuring that you are building against an appropriate version of openbabel. I would look at the recipes for other packages. I would think making torch a dependency would pull in all the CUDA stuff you need.
Incidentally, v0.5.1, which is now in pypi, has openbabel as a submodule.
When trying to explicitly build a
CoordinateSet
object in Python as followsI get a segmentation fault:
I also tried to pass
obmol
directly (PyBel molecule) and to pass amolgrid.GninaIndexTyper
object as second argument, but always obtained the same error (or just aMemoryError
).OS: Ubuntu 18.04
conda
environment: