forlilab / Meeko

Interfacing RDKit and AutoDock
GNU Lesser General Public License v2.1
182 stars 43 forks source link

Meeko doesn't handle rings correctly #33

Closed SynchronyML closed 1 year ago

SynchronyML commented 1 year ago

Hello, when I tried to use Meeko to convert IMP.sdf to pdbqt format for input vina docking, I found that Meeko could not complete the ring conversion correctly. I would appreciate it if you could help me!

right_sdf right format wrong_pdbqt wrong format

Below is the sdf file of imp

Unnamed
  Chem3D Core 17.111032222593D

 36 38  0  0  0  0  0  0  0  0999 V2000
    4.0718    1.9877    0.2177 P   0  0  0  0  0  0  0  0  0  0  0  0
    0.6910   -0.4213    1.3087 O   0  0  0  0  0  0  0  0  0  0  0  0
   -1.1639   -2.4556   -0.9179 O   0  0  0  0  0  0  0  0  0  0  0  0
    0.8139   -3.3170    0.5050 O   0  0  0  0  0  0  0  0  0  0  0  0
    3.1542    0.8157    0.7939 O   0  0  0  0  0  0  0  0  0  0  0  0
    5.4029    1.5379   -0.5815 O   0  0  0  0  0  0  0  0  0  0  0  0
    3.3955    2.9083   -0.9286 O   0  0  0  0  0  0  0  0  0  0  0  0
   -4.7849    3.0442   -0.1740 O   0  0  0  0  0  0  0  0  0  0  0  0
    4.5449    2.9491    1.2463 O   0  0  0  0  0  0  0  0  0  0  0  0
   -1.4154    0.4007    0.4349 N   0  0  0  0  0  0  0  0  0  0  0  0
   -2.0003    2.3267   -0.0122 N   0  0  0  0  0  0  0  0  0  0  0  0
   -3.4928   -0.6114    0.6783 N   0  0  0  0  0  0  0  0  0  0  0  0
   -5.1522    0.9009    0.3242 N   0  0  0  0  0  0  0  0  0  0  0  0
   -0.1975   -1.4875   -0.5944 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.1076   -2.1535   -0.2311 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.5364   -0.7498    0.6887 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.7369   -1.1093    0.6744 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.5990   -0.1168   -0.1013 C   0  0  0  0  0  0  0  0  0  0  0  0
   -2.6786    0.3297    0.4563 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.0054    1.5650    0.1609 C   0  0  0  0  0  0  0  0  0  0  0  0
   -3.0265    1.6000    0.1602 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.3332    1.9552    0.0789 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.7263   -0.3414    0.6141 C   0  0  0  0  0  0  0  0  0  0  0  0
   -0.0771   -0.7933   -1.4560 H   0  0  0  0  0  0  0  0  0  0  0  0
    1.7281   -2.4498   -1.1033 H   0  0  0  0  0  0  0  0  0  0  0  0
   -1.0577   -1.4435    1.3926 H   0  0  0  0  0  0  0  0  0  0  0  0
    2.3685   -1.5955    1.4560 H   0  0  0  0  0  0  0  0  0  0  0  0
    1.9849    0.4151   -0.8640 H   0  0  0  0  0  0  0  0  0  0  0  0
    3.4231   -0.6625   -0.6186 H   0  0  0  0  0  0  0  0  0  0  0  0
   -1.0477   -3.2057   -0.3268 H   0  0  0  0  0  0  0  0  0  0  0  0
    1.6173   -3.7902    0.7268 H   0  0  0  0  0  0  0  0  0  0  0  0
    0.0480    1.8538    0.0825 H   0  0  0  0  0  0  0  0  0  0  0  0
   -5.4706   -1.1293    0.7990 H   0  0  0  0  0  0  0  0  0  0  0  0
   -6.1503    1.0246    0.2951 H   0  0  0  0  0  0  0  0  0  0  0  0
    6.1503    1.9001   -0.1371 H   0  0  0  0  0  0  0  0  0  0  0  0
    3.3333    3.7902   -0.6039 H   0  0  0  0  0  0  0  0  0  0  0  0
  1  5  1  0      
  1  6  1  0      
  1  7  1  0      
  1  9  2  0      
  2 16  1  0      
  2 17  1  0      
  3 14  1  0      
  3 30  1  0      
  4 15  1  0      
  4 31  1  0      
  5 18  1  0      
  6 35  1  0      
  7 36  1  0      
  8 22  2  0      
 10 16  1  0      
 10 19  1  0      
 10 20  1  0      
 11 20  2  0      
 11 21  1  0      
 12 19  1  0      
 12 23  2  0      
 13 22  1  0      
 13 23  1  0      
 13 34  1  0      
 14 15  1  0      
 14 16  1  0      
 14 24  1  0      
 15 17  1  0      
 15 25  1  0      
 16 26  1  0      
 17 18  1  0      
 17 27  1  0      
 18 28  1  0      
 18 29  1  0      
 19 21  2  0      
 20 32  1  0      
 21 22  1  0      
 23 33  1  0      
M  END

$$$$
diogomart commented 1 year ago

Hi, the PDBQT does not set bonds, so Pymol is guessing them based on distances. The bonds in the five-member ring in the SDF you posted may be a little short.

SynchronyML commented 1 year ago

Thanks for your suggestion, it is indeed the problem of imp small molecule five-membered ring. But here I found that the five-membered ring in pdbqt can be perfectly converted to sdf format using obabel.

diogomart commented 1 year ago

OpenBabel also has to guess bonds and bond orders, which is an impossible task for some molecules. It is safer to use mk_copy_coords.py (which we will rename to mk_export.py in meeko v0.4.0).