ccsb-scripps / AutoDock-Vina

AutoDock Vina
http://vina.scripps.edu
Apache License 2.0
597 stars 210 forks source link

Low energy outliers with specific seed #172

Closed ros-luc closed 1 year ago

ros-luc commented 1 year ago

Hello,

I don't know if this might be related to #168 and #68

I'm running AutoDock Vina for virtual screening purposes. I usually run 10 simulations for each receptor-ligand pair, using a random seed each time, and from each pair I keep the best (i.e. lowest energy) mode. Then, with the 10 modes, I finally keep the lowest or the mean energy to score that ligand.

When using AutoDock Vina 1.1.2 this worked fine and I did not have any strange issues. However, with version 1.2.3 I randomly get very low energies for some receptor-ligand pair repetitions, compared to the other iterations.

For example:

AutoDock Vina v1.2.3
#################################################################
# If you used AutoDock Vina in your work, please cite:          #
#                                                               #
# J. Eberhardt, D. Santos-Martins, A. F. Tillack, and S. Forli  #
# AutoDock Vina 1.2.0: New Docking Methods, Expanded Force      #
# Field, and Python Bindings, J. Chem. Inf. Model. (2021)       #
# DOI 10.1021/acs.jcim.1c00203                                  #
#                                                               #
# O. Trott, A. J. Olson,                                        #
# AutoDock Vina: improving the speed and accuracy of docking    #
# with a new scoring function, efficient optimization and       #
# multithreading, J. Comp. Chem. (2010)                         #
# DOI 10.1002/jcc.21334                                         #
#                                                               #
# Please see https://github.com/ccsb-scripps/AutoDock-Vina for  #
# more information.                                             #
#################################################################

Scoring function : vina
Rigid receptor: PIGM_Q8I5U1.pdbqt
Ligand: ZINC000000003986.pdbqt
Grid center: X -2.769 Y 2.449 Z -11.717
Grid size  : X 34 Y 18 Z 16
Grid space : 1
Exhaustiveness: 8
CPU: 16
Verbosity: 1

Computing Vina grid ... done.
Performing docking (random seed: -857063289) ... WARNING: At low exhaustiveness, it may be impossible to utilize all CPUs.

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************

mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1       -6.194          0          0
   2        -5.98      1.769      7.577
   3       -5.682      3.611      5.701
   4       -5.671      1.655      2.044
   5       -5.205      2.969      7.806
   6       -5.018      18.99      20.68
   7       -5.012       2.85      6.709
   8       -4.927      19.61      21.79
   9       -4.917      17.65      20.01

This is repeated another 9 times with different random seeds, and the energies I get are in the same range. However, by chance the seed -2054348142 was used, and it gives me this:

AutoDock Vina v1.2.3
#################################################################
# If you used AutoDock Vina in your work, please cite:          #
#                                                               #
# J. Eberhardt, D. Santos-Martins, A. F. Tillack, and S. Forli  #
# AutoDock Vina 1.2.0: New Docking Methods, Expanded Force      #
# Field, and Python Bindings, J. Chem. Inf. Model. (2021)       #
# DOI 10.1021/acs.jcim.1c00203                                  #
#                                                               #
# O. Trott, A. J. Olson,                                        #
# AutoDock Vina: improving the speed and accuracy of docking    #
# with a new scoring function, efficient optimization and       #
# multithreading, J. Comp. Chem. (2010)                         #
# DOI 10.1002/jcc.21334                                         #
#                                                               #
# Please see https://github.com/ccsb-scripps/AutoDock-Vina for  #
# more information.                                             #
#################################################################

Scoring function : vina
Rigid receptor: PIGM_Q8I5U1.pdbqt
Ligand: ZINC000000003986.pdbqt
Grid center: X -2.769 Y 2.449 Z -11.717
Grid size  : X 34 Y 18 Z 16
Grid space : 1
Exhaustiveness: 8
CPU: 16
Verbosity: 1

Computing Vina grid ... done.
Performing docking (random seed: -2054348142) ... WARNING: At low exhaustiveness, it may be impossible to utilize all CPUs.

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************

mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1       -65.62          0          0
   2       -65.26      3.647      8.728
   3       -65.08      6.406      9.438
   4       -64.45      6.277      9.279
   5        -64.4      6.468      9.519
   6       -64.36      7.254      10.53
   7       -63.98      8.681       13.5
   8       -63.81       10.2      13.19
   9        191.9        8.8       11.9

Is -65.62 really a trustworthy value for energy? It does not make sense if I compare it with the other 9 iterations. This sometimes also happens in other receptor-ligand pairs. Since these could be outliers, I am "forced" to use the median instead of the mean or the lowest value, since outliers will disrupt the results.

The system I run this is Ubuntu 22.04.1 LTS, but it has happened in other platforms too. I'm also attaching the files I use vina_low_e.zip and the command: vina_1.2.3_linux_x86_64 --config PIGM_Q8I5U1.config --ligand ZINC000000003986.pdbqt --cpu 16 --spacing 1 --seed -2054348142

diogomart commented 1 year ago

Thank you for reporting. Definitely looks like a bug. I'll reply here when it's fixed.

diogomart commented 1 year ago

This was very likely fixed by #200

diogomart commented 1 year ago

I can reproduce the large negative values only with the v1.2.3 binary in the releases tab. If I compile v1.2.3 again I get reasonable energy values. Tried a few boost versions (1.81, 1.77, and 1.74) and none led to the large negative energies. Closing as I believe c1217c1ac7f5cfdd5931eba01f187dd967969c16 fixed it, see #200 for details. Feel free to re-open, or open a new issue, if these large negative values happen again.