CBDD / rDock

rDock is a fast and versatile Open Source docking program that can be used to dock small molecules against proteins and nucleic acids. It is designed for High Throughput Virtual Screening (HTVS) campaigns and Binding Mode prediction studies.
https://rdock.github.io
GNU Lesser General Public License v3.0
47 stars 21 forks source link

Issue: Discrepancy in Scoring Function when Docking with HOH in rDock #123

Open Arthurcarre opened 1 month ago

Arthurcarre commented 1 month ago

Description When docking a ligand with HOH (water molecules) using either the standard scoring function or the solvation scoring function, I obtain an SDF file containing the docked ligand, the HOH molecules, and a score (in my case the score was -20.9355).

If I remove the HOH molecules from the SDF pose try to rescore the SDF pose with the same scoring function providing the HOH molecules docked in PDB format in input to the rbdock function, I expect to get exactly the same score. However, I end up with a rescoring pose in the output SDF containing the ligand + HOH and a score of -25.0127.

If I repeat the same experiment of rescoring the SDF pose but without the HOH molecules docked PDB file in input, the score is -19.8285.

The point I want to highlight here is that for both scoring function, if you score a ligand with docked water molecules, the score obtained is different from the docking score.

I investigated this further and found that the difference lies in SCORE.INTRA, which "represents the relative energy of the ligand conformation" according to the documentation. The pose at the end of docking is penalized by SCORE.INTRA, but the rescoring pose is not. SCORE.INTER, which "is the main term of interest as it represents the protein-ligand (or RNA-ligand) interaction score," remains the same in both the docking and rescoring outputs.

I tried to verify if this point holds outside of docking with HOH, and it does not; the scores are the same.

Steps to Reproduce 1) Dock a ligand + One or several HOH molecules. 2) Delete the HOH molecules docked in the SDF output pose and write these HOH molecules docked into a PDB file in rbdock expected format (Illustration below). 3) Rescore the SDF pose with the same scoring function, providing the HOH molecules in PDB format. 4) Note the score difference between the docking and rescoring outputs. 5) Repeat the rescoring without providing the HOH PDB input. 6) Compare the scores in all scenarios.

Expected Behavior The score obtained from rescoring a pose with the same scoring function and identical conditions should match the original docking score.

Actual Behavior The score obtained from rescoring a pose with HOH molecules docked provided separately does not match the original docking score. The difference is due to the SCORE.INTRA term, which penalizes the docking pose but not the rescoring pose.

Additional Context This discrepancy is only observed when docking ligand and HOH molecules. When docking only ligand, the scores are consistent between docking and rescoring.

Example of SDF output pose of rbdock command docking water molecules.

output_SDF_pose_with_water_mols_docked
  RxDock  02152414383D
librxdock.so/0.1.0
 64 65  0  0  0  0  0  0  0  0999 V2000
    7.3147   -3.9586   14.9619 C   0  0  0  0  0  0
    7.0153   -4.6379   13.9855 O   0  0  0  0  0  0
    7.5035   -1.8392   13.6714 N   0  0  0  0  0  0
    7.5898   -2.4550   14.8795 C   0  0  0  0  0  0
    7.9998   -1.7564   16.0295 C   0  0  0  0  0  0
    8.3992   -0.4181   15.9258 C   0  0  0  0  0  0
    8.7512    1.5314   14.5142 C   0  0  0  0  0  0
    8.6723    2.1464   13.2582 C   0  0  0  0  0  0
    8.1837    1.4293   12.1547 C   0  0  0  0  0  0
    7.7981    0.0859   12.3105 C   0  0  0  0  0  0
    8.3377    0.1960   14.6699 C   0  0  0  0  0  0
    7.8663   -0.5473   13.5586 C   0  0  0  0  0  0
    7.3843   -4.4984   16.2326 N   0  0  0  0  0  0
    7.1340   -5.9227   16.5695 C   0  0  0  0  0  0
    5.6292   -6.1660   16.8619 C   0  0  0  0  0  0
    4.8498   -6.6652   16.0623 O   0  0  0  0  0  0
    8.0891   -6.3849   17.6950 C   0  0  0  0  0  0
    9.5132   -6.5747   17.1814 C   0  0  0  0  0  0
    9.8349   -6.4134   16.0198 O   0  0  0  0  0  0
   10.4274   -6.9372   18.1188 N   0  0  0  0  0  0
    3.4251   -7.3168   18.8887 C   0  0  0  0  0  0
    4.5081   -8.1022   19.4238 O   0  0  0  0  0  0
    3.8753   -5.8313   18.6663 C   0  0  0  0  0  0
    5.2505   -5.7784   18.1303 N   0  0  0  0  0  0
    2.9147   -4.9970   17.7602 C   0  0  0  0  0  0
    3.5379   -3.6916   17.2650 C   0  0  0  0  0  0
    3.8400   -2.6574   18.1688 C   0  0  0  0  0  0
    3.8329   -3.5279   15.8969 C   0  0  0  0  0  0
    4.4358   -1.4717   17.7081 C   0  0  0  0  0  0
    4.4277   -2.3412   15.4392 C   0  0  0  0  0  0
    4.7283   -1.3126   16.3441 C   0  0  0  0  0  0
    3.4388   -9.3316   17.3084 N   0  0  0  0  0  0
    2.8678   -7.9712   17.5872 C   0  0  0  0  0  0
    2.4599  -10.4287   17.6210 C   0  0  0  0  0  0
    1.9771  -10.4606   19.1000 C   0  0  0  0  0  0
    2.6748  -10.1034   20.0406 O   0  0  0  0  0  0
    3.0335  -11.8253   17.3091 C   0  0  0  0  0  0
    3.5950  -11.9408   15.8739 C   0  0  0  0  0  0
    4.2110  -13.3500   15.6351 C   0  0  0  0  0  0
    5.5444  -13.5556   16.3950 C   0  0  0  0  0  0
    6.5504  -12.4351   16.0643 C   0  0  0  0  0  0
    5.9505  -11.0388   16.3767 C   0  0  0  0  0  0
    4.6205  -10.8017   15.6101 C   0  0  0  0  0  0
    4.0079   -9.4116   15.9302 C   0  0  0  0  0  0
    0.6858  -10.9374   19.2407 N   0  0  0  0  0  0
   -0.0741  -11.0564   20.4835 C   0  0  0  0  0  0
   -1.5569  -11.3106   20.1286 C   0  0  0  0  0  0
    0.0113   -9.7458   21.2972 C   0  0  0  0  0  0
    0.4440  -12.2516   21.3160 C   0  0  0  0  0  0
    7.6525   -3.8382   16.9612 H   0  0  0  0  0  0
   11.3867   -7.0832   17.8153 H   0  0  0  0  0  0
   10.1377   -7.0323   19.0789 H   0  0  0  0  0  0
    5.2526   -8.0977   18.7435 H   0  0  0  0  0  0
    5.9776   -5.4001   18.7230 H   0  0  0  0  0  0
    0.2428  -11.2540   18.3950 H   0  0  0  0  0  0
    7.6952   -5.0507   18.9230 O   0  0  0  0  0  0
    8.6501   -5.1157   18.6760 H   0  0  0  0  0  0
    7.4086   -4.4130   18.2240 H   0  0  0  0  0  0
    0.0152    2.9512    9.1703 O   0  0  0  0  0  0        # <-  Water Molecule atom to extract
   -0.3748    3.7731    8.8653 H   0  0  0  0  0  0       # <-  Water Molecule atom to extract
    0.9689    3.1040    9.0152 H   0  0  0  0  0  0        # <-  Water Molecule atom to extract
    2.8089    3.3942    9.1141 O   0  0  0  0  0  0        # <-  Water Molecule atom to extract
    3.3626    2.6183    8.8766 H   0  0  0  0  0  0        # <-  Water Molecule atom to extract
    2.9723    3.4477   10.0743 H   0  0  0  0  0  0        # <-  Water Molecule atom to extract
  1  2  2  0  0  0
  1  4  1  0  0  0
  1 13  1  0  0  0
  3  4  2  0  0  0
  3 12  1  0  0  0
  4  5  1  0  0  0
  5  6  2  0  0  0
  6 11  1  0  0  0
  7 11  2  0  0  0
  7  8  1  0  0  0
  8  9  2  0  0  0
  9 10  1  0  0  0
 10 12  2  0  0  0
 11 12  1  0  0  0
 13 14  1  0  0  0
 14 15  1  0  0  0
 14 17  1  0  0  0
 15 16  2  0  0  0
 15 24  1  0  0  0
 17 18  1  0  0  0
 18 19  2  0  0  0
 18 20  1  0  0  0
 21 22  1  0  0  0
 21 23  1  0  0  0
 21 33  1  0  0  0
 23 24  1  0  0  0
 23 25  1  0  0  0
 25 26  1  0  0  0
 26 27  2  0  0  0
 26 28  1  0  0  0
 27 29  1  0  0  0
 28 30  2  0  0  0
 29 31  2  0  0  0
 30 31  1  0  0  0
 32 33  1  0  0  0
 32 34  1  0  0  0
 32 44  1  0  0  0
 34 35  1  0  0  0
 34 37  1  0  0  0
 35 36  2  0  0  0
 35 45  1  0  0  0
 38 37  1  0  0  0
 38 39  1  0  0  0
 38 43  1  0  0  0
 39 40  1  0  0  0
 40 41  1  0  0  0
 41 42  1  0  0  0
 43 42  1  0  0  0
 43 44  1  0  0  0
 45 46  1  0  0  0
 46 47  1  0  0  0
 46 48  1  0  0  0
 46 49  1  0  0  0
 13 50  1  0  0  0
 20 51  1  0  0  0
 20 52  1  0  0  0
 22 53  1  0  0  0
 24 54  1  0  0  0
 45 55  1  0  0  0
 56 57  1  0  0  0
 56 58  1  0  0  0
 59 60  1  0  0  0  # <- water bond to delete
 59 61  1  0  0  0  # <- water bond to delete
 62 63  1  0  0  0  # <- water bond to delete
 62 64  1  0  0  0  # <- water bond to delete
M  END

$$$$

I extract the water molecules from the output SDF and write them into PDB file.

HETATM    1  OW  SOL Z   1       7.695  -5.051  18.923  1.00  0.00           O  
HETATM    2  H1  SOL Z   1       8.650  -5.116  18.676  1.00  0.00           H  
HETATM    3  H2  SOL Z   1       7.409  -4.413  18.224  1.00  0.00           H  
HETATM    4  OW  SOL Z   2       0.015   2.951   9.170  1.00  0.00           O  
HETATM    5  H1  SOL Z   2      -0.375   3.773   8.865  1.00  0.00           H  
HETATM    6  H2  SOL Z   2       0.969   3.104   9.015  1.00  0.00           H  
HETATM    7  OW  SOL Z   3       2.809   3.394   9.114  1.00  0.00           O  
HETATM    8  H1  SOL Z   3       3.363   2.618   8.877  1.00  0.00           H  
HETATM    9  H2  SOL Z   3       2.972   3.448  10.074  1.00  0.00           H  
END

The resulting SDF pose without water molecules docked.

output_SDF_pose_without_water_mols_docked
     RDKit          3D

 55 59  0  0  0  0  0  0  0  0999 V2000
    7.3147   -3.9586   14.9619 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.0153   -4.6379   13.9855 O   0  0  0  0  0  0  0  0  0  0  0  0
    7.5035   -1.8392   13.6714 N   0  0  0  0  0  0  0  0  0  0  0  0
    7.5898   -2.4550   14.8795 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.9998   -1.7564   16.0295 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.3992   -0.4181   15.9258 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.7512    1.5314   14.5142 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.6723    2.1464   13.2582 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.1837    1.4293   12.1547 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.7981    0.0859   12.3105 C   0  0  0  0  0  0  0  0  0  0  0  0
    8.3377    0.1960   14.6699 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.8663   -0.5473   13.5586 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.3843   -4.4984   16.2326 N   0  0  0  0  0  0  0  0  0  0  0  0
    7.1340   -5.9227   16.5695 C   0  0  2  0  0  0  0  0  0  0  0  0
    5.6292   -6.1660   16.8619 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.8498   -6.6652   16.0623 O   0  0  0  0  0  0  0  0  0  0  0  0
    8.0891   -6.3849   17.6950 C   0  0  0  0  0  0  0  0  0  0  0  0
    9.5132   -6.5747   17.1814 C   0  0  0  0  0  0  0  0  0  0  0  0
    9.8349   -6.4134   16.0198 O   0  0  0  0  0  0  0  0  0  0  0  0
   10.4274   -6.9372   18.1188 N   0  0  0  0  0  0  0  0  0  0  0  0
    3.4251   -7.3168   18.8887 C   0  0  1  0  0  0  0  0  0  0  0  0
    4.5081   -8.1022   19.4238 O   0  0  0  0  0  0  0  0  0  0  0  0
    3.8753   -5.8313   18.6663 C   0  0  1  0  0  0  0  0  0  0  0  0
    5.2505   -5.7784   18.1303 N   0  0  0  0  0  0  0  0  0  0  0  0
    2.9147   -4.9970   17.7602 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.5379   -3.6916   17.2650 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.8400   -2.6574   18.1688 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.8329   -3.5279   15.8969 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.4358   -1.4717   17.7081 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.4277   -2.3412   15.4392 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.7283   -1.3126   16.3441 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.4388   -9.3316   17.3084 N   0  0  0  0  0  0  0  0  0  0  0  0
    2.8678   -7.9712   17.5872 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.4599  -10.4287   17.6210 C   0  0  2  0  0  0  0  0  0  0  0  0
    1.9771  -10.4606   19.1000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.6748  -10.1034   20.0406 O   0  0  0  0  0  0  0  0  0  0  0  0
    3.0335  -11.8253   17.3091 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.5950  -11.9408   15.8739 C   0  0  2  0  0  0  0  0  0  0  0  0
    4.2110  -13.3500   15.6351 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.5444  -13.5556   16.3950 C   0  0  0  0  0  0  0  0  0  0  0  0
    6.5504  -12.4351   16.0643 C   0  0  0  0  0  0  0  0  0  0  0  0
    5.9505  -11.0388   16.3767 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.6205  -10.8017   15.6101 C   0  0  2  0  0  0  0  0  0  0  0  0
    4.0079   -9.4116   15.9302 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.6858  -10.9374   19.2407 N   0  0  0  0  0  0  0  0  0  0  0  0
   -0.0741  -11.0564   20.4835 C   0  0  0  0  0  0  0  0  0  0  0  0
   -1.5569  -11.3106   20.1286 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.0113   -9.7458   21.2972 C   0  0  0  0  0  0  0  0  0  0  0  0
    0.4440  -12.2516   21.3160 C   0  0  0  0  0  0  0  0  0  0  0  0
    7.6525   -3.8382   16.9612 H   0  0  0  0  0  0  0  0  0  0  0  0
   11.3867   -7.0832   17.8153 H   0  0  0  0  0  0  0  0  0  0  0  0
   10.1377   -7.0323   19.0789 H   0  0  0  0  0  0  0  0  0  0  0  0
    5.2526   -8.0977   18.7435 H   0  0  0  0  0  0  0  0  0  0  0  0
    5.9776   -5.4001   18.7230 H   0  0  0  0  0  0  0  0  0  0  0  0
    0.2428  -11.2540   18.3950 H   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  2  0
  1  4  1  0
  1 13  1  0
  3  4  2  0
  3 12  1  0
  4  5  1  0
  5  6  2  0
  6 11  1  0
  7 11  2  0
  7  8  1  0
  8  9  2  0
  9 10  1  0
 10 12  2  0
 11 12  1  0
 13 14  1  0
 14 15  1  0
 14 17  1  1
 15 16  2  0
 15 24  1  0
 17 18  1  0
 18 19  2  0
 18 20  1  0
 21 22  1  0
 21 23  1  0
 21 33  1  6
 23 24  1  0
 23 25  1  6
 25 26  1  0
 26 27  2  0
 26 28  1  0
 27 29  1  0
 28 30  2  0
 29 31  2  0
 30 31  1  0
 32 33  1  0
 32 34  1  0
 32 44  1  0
 34 35  1  1
 34 37  1  0
 35 36  2  0
 35 45  1  0
 38 37  1  1
 38 39  1  0
 38 43  1  0
 39 40  1  0
 40 41  1  0
 41 42  1  0
 43 42  1  1
 43 44  1  0
 45 46  1  0
 46 47  1  0
 46 48  1  0
 46 49  1  0
 13 50  1  0
 20 51  1  0
 20 52  1  0
 22 53  1  0
 24 54  1  0
 45 55  1  0
M  END
ggutierrez-sunbright commented 1 month ago

Hi, Arthur,

Let me try and summarize to check I understood the issue:

I don't think I've ever docked ligands with water before, I'll need to do a couple checks in the code and with the example system you provided. Are you performing a tethered docking?

Regards

Arthurcarre commented 3 weeks ago

Hi Guillermo,

There seems to be a misunderstanding.

When I dock a ligand, I get a docking score corresponding to the (ligand) docking pose. When I rescore the (ligand) docking pose, I get rescoring score = docking score.

When I dock a ligand with a water molecule (ligand + water), I get a docking score corresponding to the docking pose (ligand + water). When I rescore the docking pose (ligand + water), I get rescoring scoredocking score.

Does that make things clearer ?

Bests, Arthur