Correct ligand-receptor energy when no_refine is enabled. #178
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
According to vina.cpp#L719-L722, function
igrid.eval()
should return energy between receptor and ligand whenvina
/vinardo
score function is selected.In default,
m_no_refine
is false and the behavior of functionnon_cache.eval()
is correct. However, this is not true in functioncache.eval()
.Since ligand-receptor energy is calculated from
all_grids
minusflex_grids
, this fix is necessary for a correct energy report whenno_refine
option is enabled in Vina.Since both
non_cache.eval()
andcache.eval()
are called only when scoring a model, search & optimization procedures won't be affected.We can quickly verify the behavior change in Vina's
score_only
mode:cd example/flexible_docking/solution vina \ --receptor 1fpu_receptor_rigid.pdbqt \ --flex 1fpu_receptor_flex.pdbqt \ --ligand ../data/1iep_ligand.pdbqt \ --config 1fpu_receptor_rigid_vina_box.txt \ --score_only \ --seed 137 \ --no_refine \ --verbosity 2
Inserting extra log lines in
vina.cpp
, value delta ofall_grids
between unfixed and fixed equals exactly the value offlex_grids
.