5
$\begingroup$

I am about to generate topology from a rdkit mol object with a conformer for a molecule in mol2 format, but receive the error this mol object has 'UndefinedStereochemistry'. As I am from computer science instead of Chemistry, I have no idea what this means and how to fix it.

I think a mol2 conformer file has all bond information and atom stereo position information. why this mol object still has 'UndefinedStereochemistry'? what should I do to make it to have full 'Stereochemistry'?

import rdkit.Chem as Chem
ligand = Chem.MolFromMol2File('test04192/ligand_clean.mol2')
ligand = Chem.AddHs(ligand)

I use this code to load the file to a mol object.below is my conformer file in text form

@<TRIPOS>MOLECULE
TEST
 33 36 0 0 0
SMALL
GASTEIGER

@<TRIPOS>ATOM
      1 N          64.6250   41.8100  -29.6810 N.pl3   1  UNL1       -0.1137
      2 N          64.2020   42.7600  -28.7510 N.2     1  UNL1       -0.1528
      3 C          64.4910   44.0110  -28.9750 C.2     1  UNL1        0.1707
      4 C          64.1890   45.1870  -28.2020 C.2     1  UNL1        0.1009
      5 C          65.2330   44.4850  -30.1440 C.2     1  UNL1        0.2922
      6 C          63.4360   45.1650  -26.9130 C.3     1  UNL1        0.0556
      7 N          64.6540   46.2470  -28.7700 N.2     1  UNL1       -0.1739
      8 N          65.3160   45.9130  -29.9790 N.am    1  UNL1       -0.1539
      9 O          65.6880   43.7840  -31.0770 O.2     1  UNL1       -0.2661
     10 C          65.9540   46.7820  -30.8890 C.ar    1  UNL1        0.0768
     11 C          65.2290   47.5060  -31.8040 C.ar    1  UNL1        0.0165
     12 C          65.8320   48.3650  -32.7090 C.ar    1  UNL1       -0.0032
     13 C          67.2020   48.5050  -32.6980 C.ar    1  UNL1       -0.0257
     14 C          67.8430   49.4300  -33.6740 C.3     1  UNL1        0.0307
     15 C          67.9330   47.7860  -31.7880 C.ar    1  UNL1       -0.0245
     16 C          69.4300   47.9550  -31.7930 C.3     1  UNL1        0.0307
     17 C          67.3190   46.9320  -30.8900 C.ar    1  UNL1        0.0123
     18 C          63.6760   40.8990  -30.2480 C.ar    1  UNL1        0.1302
     19 C          63.3690   40.9930  -31.6090 C.ar    1  UNL1        0.0215
     20 C          62.4640   40.1300  -32.1620 C.ar    1  UNL1        0.0016
     21 C          61.8510   39.1660  -31.4010 C.ar    1  UNL1        0.0033
     22 C          62.1320   39.0430  -30.0450 C.ar    1  UNL1        0.0403
     23 C          63.0450   39.9190  -29.5000 C.ar    1  UNL1        0.2124
     24 O          63.3880   39.8630  -28.1340 O.3     1  UNL1       -0.2851
     25 C          61.4920   38.0260  -29.2220 C.ar    1  UNL1        0.0033
     26 C          62.2590   37.2910  -28.3220 C.ar    1  UNL1        0.0001
     27 C          61.6850   36.3120  -27.5150 C.ar    1  UNL1        0.0002
     28 C          60.3350   36.0510  -27.5910 C.ar    1  UNL1        0.0066
     29 C          59.5580   36.7730  -28.4830 C.ar    1  UNL1        0.0798
     30 C          60.1480   37.7360  -29.2720 C.ar    1  UNL1        0.0067
     31 C          58.1320   36.5410  -28.6040 C.2     1  UNL1        0.3878
     32 O          57.6980   36.1020  -29.7120 O.co2   1  UNL1       -0.2406
     33 O          57.2920   36.7990  -27.5370 O.co2   1  UNL1       -0.2406
@<TRIPOS>BOND
     1     1    18    1
     2     1     2    1
     3     2     3    2
     4     3     5    1
     5     3     4    1
     6     4     7    2
     7     4     6    1
     8     5     9    2
     9     5     8   am
    10     7     8    1
    11     8    10    1
    12    10    11   ar
    13    10    17   ar
    14    11    12   ar
    15    12    13   ar
    16    13    14    1
    17    13    15   ar
    18    15    16    1
    19    15    17   ar
    20    18    19   ar
    21    18    23   ar
    22    19    20   ar
    23    20    21   ar
    24    21    22   ar
    25    22    23   ar
    26    22    25    1
    27    23    24    1
    28    25    30   ar
    29    25    26   ar
    30    26    27   ar
    31    27    28   ar
    32    28    29   ar
    33    29    30   ar
    34    29    31    1
    35    31    32   ar
    36    31    33   ar

$\endgroup$
4
  • $\begingroup$ Which version of RDKit are you using? I have tried your mol2 file with RDKit version 2022.03.5, and it runs the code without any errors. Unfortunately, it does not seem to be able to add hydrogens despite using Chem.AddHs. $\endgroup$
    – S R Maiti
    May 5, 2023 at 9:50
  • 1
    $\begingroup$ The issue of not being able to add Hydrogens to molecule obtained from a mol2 file is a currently unsolved bug in rdkit. Here is the issue on Github : github.com/rdkit/rdkit/issues/3106 $\endgroup$ May 5, 2023 at 15:07
  • $\begingroup$ @VandanRevanur Thanks so much for the answer. $\endgroup$
    – Suice May
    May 11, 2023 at 1:33
  • $\begingroup$ @SuiceMay if my answer has helped solve your question, could you select it as the accepted answer please consider clicking on the tick mark next to it ? By doing so you also get +2 points :) $\endgroup$ May 11, 2023 at 7:15

1 Answer 1

2
$\begingroup$

Currently there is a bug with the Chem.MolFromMol2File, in latest rdkit version: 2023.3.1, which seems to remove Hydrogens from the molecule when creating a mol object.

There is even an open issue on the Github of rdkit. Issue 3106.

Code to reproduce bug behaviour:

from rdkit.Chem.rdMolDescriptors import CalcMolFormula
import rdkit.Chem as Chem
 
ligand = Chem.MolFromMol2File('clean_ligand.mol2', removeHs=False)
CalcMolFormula(ligand)
# This prints out: C25N4O4-3 which is wrongly removing the Hydrogens even though removeHs is False.

Work-around Hack:

The hack is to read the mol2 file into an rdkit molecule, then convert the rdkit molecule to a PDB, and finally read the PDB back to get the rdkit molecule along including the hydrogens.

from rdkit.Chem.rdMolDescriptors import CalcMolFormula
import rdkit.Chem as Chem

ligand = Chem.MolFromMol2File('clean_lignad.mol2', removeHs=False)

Chem.MolToPDBFile(ligand,'clean_ligand.pdb')

clean_lig_pdb = Chem.MolFromPDBFile('clean_ligand.pdb')

CalcMolFormula(clean_lig_pdb)

# This prints out : C25H19N4O4-3 which now includes the hydrogens 
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .