michellab/BioSimSpace

Unable to import BioSimSpace after mamba installation

akalpokas opened this issue ยท 12 comments

Hello,

After installing biosimspace using mamba I am unable to import it in python.

I have installed it using:

mamba create -n biosimspace23 -c conda-forge -c michellab biosimspace

I tried importing it using:

import BioSimSpace as BSS

Which gives:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[1], line 1
----> 1 import BioSimSpace as BSS

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/__init__.py:209
    206     del _shlex
    207     del _subprocess
--> 209 from . import Align
    210 from . import Box
    211 from . import FreeEnergy

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/Align/__init__.py:43
      1 ######################################################################
      2 # BioSimSpace: Making biomolecular simulation a breeze!
      3 #
   (...)
     23 # https://github.com/MobleyLab/Lomap, which is released under the MIT
     24 # license.
     26 """
     27 .. currentmodule:: BioSimSpace.Align
     28
   (...)
     40     viewMapping
     41 """
---> 43 from ._align import *

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/Align/_align.py:79
     77 from .._Exceptions import AlignmentError as _AlignmentError
     78 from .._Exceptions import MissingSoftwareError as _MissingSoftwareError
---> 79 from .._SireWrappers import Molecule as _Molecule
     81 from .. import IO as _IO
     82 from .. import Units as _Units

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/_SireWrappers/__init__.py:40
      1 ######################################################################
      2 # BioSimSpace: Making biomolecular simulation a breeze!
      3 #
   (...)
     19 # along with BioSimSpace. If not, see <http://www.gnu.org/licenses/>.
     20 #####################################################################
     22 """
     23 .. currentmodule:: BioSimSpace._SireWrappers
     24
   (...)
     37     SearchResult
     38 """
---> 40 from ._atom import *
     41 from ._bond import *
     42 from ._molecule import *

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/_SireWrappers/_atom.py:34
     30 __all__ = ["Atom"]
     32 from sire.legacy import Mol as _SireMol
---> 34 from ..Types import Coordinate as _Coordinate
     35 from ..Types import Length as _Length
     36 from ._sire_wrapper import SireWrapper as _SireWrapper

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/Types/__init__.py:44
      1 ######################################################################
      2 # BioSimSpace: Making biomolecular simulation a breeze!
      3 #
   (...)
     19 # along with BioSimSpace. If not, see <http://www.gnu.org/licenses/>.
     20 #####################################################################
     22 """
     23 .. currentmodule:: BioSimSpace.Types
     24
   (...)
     41     Volume
     42 """
---> 44 from ._angle import *
     45 from ._area import *
     46 from ._charge import *

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/Types/_angle.py:35
     31 from sire import units as _SireUnits
     33 from ._type import Type as _Type
---> 35 class Angle(_Type):
     36     """An angle type."""
     38     # A list of the supported Sire unit names.

File ~/miniconda3/envs/biosimspace23/lib/python3.9/site-packages/BioSimSpace/Types/_angle.py:42, in Angle()
     39 _sire_units = ["radian", "degree"]
     41 # Dictionary of allowed units.
---> 42 _supported_units = { "RADIAN" : _SireUnits.radian,
     43                      "DEGREE" : _SireUnits.degree }
     45 # Map unit abbreviations to the full name.
     46 _abbreviations = { "R" : "RADIAN",
     47                    "D" : "DEGREE" }

AttributeError: module 'sire.units' has no attribute 'radian'

BioSimSpace version: 2023.0.0
Sire version: 2023.0.3 (011b6f6edb831eeb5447b6d4e2a015123a99b2a2/GitHub/2023-01-10T10:14:37+00:00 | UNCLEAN)

I have tried this by installing the development version too using:

mamba create -n biosimspace23-dev -c conda-forge -c michellab/label/dev biosimspace

Which gives the same error when importing as well. If I force mamba to install BioSimSpace version 2022.2.1 then it works.

I hope this helps, thanks.

Yes, it looks like we've incorrectly specified the Sire version range for our 2023 pre-release version of BioSimSpace. You should also be able to fix things by specifying the Sire version. For example, I think the 2023.0.2 development version of Sire should work with the latest devel conda package.

mamba create -n biosimspace23-dev -c conda-forge -c michellab/label/dev sire=2023.0.2 biosimspace

Yup, that works. Thanks for your help!

No problem, thanks for reporting. Once the full 2023.1.0 release is available I'll delete the pre-release packages. This will avoid other people running into the same issue in future.

Hej, fyi: I have the same problem with your conda-forge version :(

Thanks, we don't have a package on conda-forge. Does the solution posted above not work for you?

ah! my bad! but yes the the fix works (I was installing it like this: conda install -c conda-forge biosimspace - that's where my confusion came from)

Hi, I have installed biosimspace on this way. However when I am analyzing the relative free-energy value it gives an error.

AnalysisError Traceback (most recent call last)
Cell In[12], line 1
----> 1 pmf_free, overlap_matrix_free = BSS.FreeEnergy.Relative.analyse(f'o_xylene_benzene/free')
2 pmf_bound, overlap_matrix_bound = BSS.FreeEnergy.Relative.analyse(f'o_xylene_benzene/bound')
3 freenrg_rel = BSS.FreeEnergy.Relative.difference(pmf_bound, pmf_free)

File /cluster/ddu/cmmartinez001/miniconda3/envs/biosimspace-dev/lib/python3.9/site-packages/BioSimSpace/FreeEnergy/_relative.py:431, in Relative.analyse(work_dir)
429 # SOMD.
430 if len(data) > 0:
--> 431 return Relative._analyse_somd(work_dir)
433 # Now check for GROMACS output.
434 else:
435 data = glob(work_dir + "/lambda*/gromacs.xvg")

File /cluster/ddu/cmmartinez001/miniconda3/envs/biosimspace-dev/lib/python3.9/site-packages/BioSimSpace/FreeEnergy/_relative.py:605, in Relative._analyse_somd(work_dir)
598 proc = _subprocess.run(
599 _Utils.command_split(command),
600 shell=False,
601 stdout=_subprocess.PIPE,
602 stderr=_subprocess.PIPE,
603 )
604 if proc.returncode != 0:
--> 605 raise _AnalysisError("SOMD free-energy analysis failed!")
607 # Re-run without subsampling if the subsampling has resulted in less than 50 samples.
608 with open("%s/mbar.txt" % work_dir) as file:

AnalysisError: SOMD free-energy analysis failed!

In a previosu version it worked without any problem. Not sure if the code has been updated. Thanks

Cesar

Thanks, I'll try to reproduce this later and get back to you.

Hmmm, it's working for me with some existing ethane/methanol solvation free energy data. Is it possible to share the data for which it's failing. You could also edit the file shown in the error message above to print the standard output and error, e.g.:

print(proc.stdout)
print(proc.stderr)

(Do the above after adding text=True to the subprocess.run parameters.)

For reference, I did find an issue with our GROMACS analysis which resulted from the new (well, not so new) way we split command-line arguments for subprocess. This means that we now need to expand the glob for xvg files prior to running gmx bar. This is now fixed. For the few cases I've tested, SOMD analysis still appears to work just fine.

Also, when we figure out what the actual problem is I'll move it to a new issue thread, since it appears to have nothing to do with the original question. In future, please open a new issue when the query us unrelated. It makes book-keeping much easier.

Cheers.

I've tested using some example output from here (same system as you are looking at) and it still works for me.