|
6 | 6 | __author__ = "Patrick Kunzmann, Simon Mathis"
|
7 | 7 | __all__ = ["to_mol", "from_mol"]
|
8 | 8 |
|
| 9 | +import copy |
9 | 10 | import numbers
|
10 | 11 | import warnings
|
11 | 12 | from collections import defaultdict
|
12 | 13 | import numpy as np
|
13 | 14 | import rdkit.Chem.AllChem as Chem
|
14 | 15 | from rdkit.Chem import SanitizeFlags
|
| 16 | +from rdkit.rdBase import BlockLogs |
15 | 17 | from biotite.interface.version import requires_version
|
16 | 18 | from biotite.interface.warning import LossyConversionWarning
|
17 | 19 | from biotite.structure.atoms import AtomArray, AtomArrayStack
|
@@ -320,7 +322,10 @@ def from_mol(mol, conformer_id=None, add_hydrogen=None):
|
320 | 322 | if add_hydrogen is None:
|
321 | 323 | add_hydrogen = not _has_explicit_hydrogen(mol)
|
322 | 324 | if add_hydrogen:
|
323 |
| - Chem.SanitizeMol(mol, SanitizeFlags.SANITIZE_ADJUSTHS) |
| 325 | + mol = copy.deepcopy(mol) |
| 326 | + with BlockLogs(): |
| 327 | + # Avoid modifying the input molecule |
| 328 | + Chem.SanitizeMol(mol, SanitizeFlags.SANITIZE_ADJUSTHS) |
324 | 329 | mol = Chem.AddHs(mol, addCoords=False, addResidueInfo=False)
|
325 | 330 |
|
326 | 331 | rdkit_atoms = mol.GetAtoms()
|
@@ -427,7 +432,8 @@ def from_mol(mol, conformer_id=None, add_hydrogen=None):
|
427 | 432 | # Copy as 'Kekulize()' modifies the molecule in-place
|
428 | 433 | mol = Chem.Mol(mol)
|
429 | 434 | try:
|
430 |
| - Chem.Kekulize(mol) |
| 435 | + with BlockLogs(): |
| 436 | + Chem.Kekulize(mol) |
431 | 437 | except Chem.KekulizeException:
|
432 | 438 | warnings.warn(
|
433 | 439 | "Kekulization failed, "
|
|
0 commit comments