ccsb-scripps / AutoDock-Vina

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

different score values between score() vs energies() after docking #231

Closed jaehongshin closed 10 months ago

jaehongshin commented 11 months ago

I use a python binding for docking. After a docking job, I calculated scores using v.energies(), v.score(), and v.optimize(). However v.energies and v.score turn different scores. Would any one explain this?

Only I figured out is when no of poses set to 1, the v.energies and v.score turn the same value. But no of poses set to greater than 1, v.energies() and v.score() turn different values. If v.score() takes the best pose, it should be the same value to v.energies(). Any comments would be helpful. Thanks

diogomart commented 11 months ago

Intramolecular energy of the first pose is subtracted from all poses. Does that explain what you observe?

jaehongshin commented 10 months ago

Would you explain the meaning for that why the energy of the first pose is subtracted from all poses? Thanks!!

diogomart commented 10 months ago

It's to preserve the ranking of the scoring function used for optimization. The search optimizes intra+inter, if vina subtracted the intra of each pose from itself, like in the autodock4 (AD4) scoring function, the ranking of poses would change (it changes with AD4 scoring). Both approaches are questionable from a physics standpoint, it's a "pick your poison" situation.