Skip to content

Commit e51a855

Browse files
authored
Merge pull request #428 from OpenBioSim/fix_426_427
Fix issues #426 and #427
2 parents 89c3c07 + 9ea582b commit e51a855

File tree

6 files changed

+36
-26
lines changed

6 files changed

+36
-26
lines changed

python/BioSimSpace/Align/_squash.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import itertools as _it
22
import numpy as _np
33
import os as _os
4-
import parmed as _pmd
54
import shutil as _shutil
65
import tempfile
76

@@ -164,6 +163,8 @@ def _squash_molecule(molecule, explicit_dummies=False):
164163

165164
# Perform the multi-residue squashing with ParmEd as it is much easier and faster.
166165
with tempfile.TemporaryDirectory() as tempdir:
166+
import parmed as _pmd
167+
167168
# Load in ParmEd.
168169
_saveMolecules(f"{tempdir}/temp", mol0 + mol1, "prm7,rst7")
169170
_shutil.move(f"{tempdir}/temp.prm7", f"{tempdir}/temp.parm7")

python/BioSimSpace/Parameters/_Protocol/_openforcefield.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
# To override any protocols, just implement a custom "run" method in any
3434
# of the classes.
3535

36+
from ..._Exceptions import MissingSoftwareError as _MissingSoftwareError
3637
from ..._Utils import _try_import, _have_imported
3738

3839
import os as _os
@@ -106,6 +107,15 @@
106107
_OpenFFMolecule = _openff
107108
_Forcefield = _openff
108109

110+
111+
try:
112+
from sire.legacy.Base import findExe as _findExe
113+
114+
_findExe("antechamber")
115+
_has_antechamber = True
116+
except:
117+
_has_antechamber = False
118+
109119
# Reset stderr.
110120
_sys.stderr = _orig_stderr
111121
del _sys, _orig_stderr
@@ -269,6 +279,12 @@ def run(self, molecule, work_dir=None, queue=None):
269279
raise _ThirdPartyError(msg) from None
270280
charge_from_molecules = [off_molecule]
271281
else:
282+
if not _has_antechamber:
283+
raise _MissingSoftwareError(
284+
f"{self._forcefield} is not supported. AnteChamber "
285+
"(http://ambermd.org) or OpenFF-NAGL are needed for "
286+
"charge calculation."
287+
) from None
272288
charge_from_molecules = None
273289

274290
# Extract the molecular topology.

python/BioSimSpace/Parameters/_parameters.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -520,18 +520,6 @@ def _parameterise_openff(
520520
parameterisation is complete and get the parameterised molecule.
521521
"""
522522

523-
from sire.legacy.Base import findExe as _findExe
524-
525-
try:
526-
_findExe("antechamber")
527-
except:
528-
raise _MissingSoftwareError(
529-
f"'{forcefield}' is not supported. AmberTools "
530-
"(http://ambermd.org) is needed for charge "
531-
"calculation and 'antechamber' executable "
532-
"must be in your PATH."
533-
) from None
534-
535523
# Validate arguments.
536524

537525
if not isinstance(molecule, (_Molecule, str)):

python/BioSimSpace/Sandpit/Exscientia/Align/_squash.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import tempfile
55

66
import numpy as _np
7-
import parmed as _pmd
87
from sire.legacy import IO as _SireIO
98
from sire.legacy import Mol as _SireMol
109

@@ -158,6 +157,8 @@ def _squash_molecule(molecule, explicit_dummies=False):
158157

159158
# Perform the multi-residue squashing with ParmEd as it is much easier and faster.
160159
with tempfile.TemporaryDirectory() as tempdir:
160+
import parmed as _pmd
161+
161162
# Load in ParmEd.
162163
_saveMolecules(f"{tempdir}/temp", mol0 + mol1, "prm7,rst7")
163164
_shutil.move(f"{tempdir}/temp.prm7", f"{tempdir}/temp.parm7")

python/BioSimSpace/Sandpit/Exscientia/Parameters/_Protocol/_openforcefield.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
# To override any protocols, just implement a custom "run" method in any
3434
# of the classes.
3535

36+
from ..._Exceptions import MissingSoftwareError as _MissingSoftwareError
3637
from ..._Utils import _try_import, _have_imported
3738

3839
import os as _os
@@ -106,6 +107,15 @@
106107
_OpenFFMolecule = _openff
107108
_Forcefield = _openff
108109

110+
111+
try:
112+
from sire.legacy.Base import findExe as _findExe
113+
114+
_findExe("antechamber")
115+
_has_antechamber = True
116+
except:
117+
_has_antechamber = False
118+
109119
# Reset stderr.
110120
_sys.stderr = _orig_stderr
111121
del _sys, _orig_stderr
@@ -269,6 +279,12 @@ def run(self, molecule, work_dir=None, queue=None):
269279
raise _ThirdPartyError(msg) from None
270280
charge_from_molecules = [off_molecule]
271281
else:
282+
if not _has_antechamber:
283+
raise _MissingSoftwareError(
284+
f"{self._forcefield} is not supported. AnteChamber "
285+
"(http://ambermd.org) or OpenFF-NAGL are needed for "
286+
"charge calculation."
287+
) from None
272288
charge_from_molecules = None
273289

274290
# Extract the molecular topology.

python/BioSimSpace/Sandpit/Exscientia/Parameters/_parameters.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -520,18 +520,6 @@ def _parameterise_openff(
520520
parameterisation is complete and get the parameterised molecule.
521521
"""
522522

523-
from sire.legacy.Base import findExe as _findExe
524-
525-
try:
526-
_findExe("antechamber")
527-
except:
528-
raise _MissingSoftwareError(
529-
f"'{forcefield}' is not supported. AmberTools "
530-
"(http://ambermd.org) is needed for charge "
531-
"calculation and 'antechamber' executable "
532-
"must be in your PATH."
533-
) from None
534-
535523
# Validate arguments.
536524

537525
if not isinstance(molecule, (_Molecule, str)):

0 commit comments

Comments
 (0)