plainerman / DiffDock-Pocket

Implementation of DiffDock-Pocket: Diffusion for Pocket-Level Docking with Side Chain Flexibility
MIT License
23 stars 2 forks source link

sidechains do not move #9

Closed CLG68 closed 1 month ago

CLG68 commented 1 month ago

Hi,

I had to change torch.multiprocessing.set_start_method(mp_method)
to if torch.multiprocessing.get_start_method(allow_none=True) != mp_method: torch.multiprocessing.set_start_method(mp_method)

to be able to run inference.py.

The other problem I got is that the side-chains in your ex, did not move. python inference.py --protein_path example_data/3dpf_protein.pdb --ligand example_data/3dpf_ligand.sdf --batch_size 10 --samples_per_complex 40 --keep_local_structures

I got: Number of complexes: 1 of which 0 failed radius protein: mean 22.95050048828125, std 0.0, min 22.95050048828125, max 22.95050048828125, sum 22.95050048828125 radius molecule: mean 11.018976211547852, std 0.0, min 11.018976211547852, max 11.018976211547852, sum 11.018976211547852 distance protein-mol: mean 0.9265375137329102, std 0.0, min 0.9265375137329102, max 0.9265375137329102, sum 0.9265375137329102 rmsd matching: mean 0.0, std 0.0, min 0, max 0, sum 0 sidechain conformer match rotations: mean 0.0, std 0.0, min 0, max 0, sum 0 sidechain_conformer_match_improvements: mean 0.0, std 0.0, min 0, max 0, sum 0 rec_lig_steric_clashes: mean 0.0, std 0.0, min 0, max 0, sum 0, percentage: 0.0 rec_sc_lig_steric_clashes: mean 0.0, std 0.0, min 0, max 0, sum 0, percentage: 0.0 rec_sc_rec_rest_steric_clashes: mean 0.5405405405405406, std 0.0, min 0.5405405405405406, max 0.5405405405405406, sum 0.5405405405405406, percentage: 100.0 rec_sc_rec_sc_steric_clashes: mean 0.0, std 0.0, min 0.0, max 0.0, sum 0.0, percentage: 0.0 match_rmsd: no data

Was I supposed to get other numbers than all those Zeros with this ex?

Thank you for your help

CLG68 commented 1 month ago

Also, there is not much difference if I generate 1, 5, 10 or 40 poses. The poses are not exactly the same but really close, I think I could just generate 1pose + minimization and that would be enough. Maybe this is linked to the fact that the side-chains do not move much so the number of solutions is limited.

Best

plainerman commented 1 month ago

Thank you fir filing this issue.

Regarding your 1st point: If you would like, you can create a PR for that change. Any help is appreciated, as I don't have much time for this project nowadays.

2.Yes, all the zeros are expected for two reasons: The conformed matching 0 are because there is no side chain matching. This is only relevant during training where we match a computationally generated structure to a holo crystal structure from pdb. As for the steric clashes, these are 0 because there are no overlapping atoms (which is a good thing). If you get a lot of those, you will probably need to relax the poses after inference (there is the argument --relax for that)

  1. This is because the sample is from the training data set. I assume that the model has remembered the sample and produces similar results. If you switch to samples from the validation set or test set, this should be different. Note, however, that also for us, increasing to 40 samples did not change much. 10 should be fine for the most part.
plainerman commented 1 month ago

I closed this issue for now. Feel free to reopen it if you have any more concerns. For the PR you can reference this issue nonetheless if you want to submit your changes :)

CLG68 commented 1 month ago

Thank you very much for your quick response and for developing such a useful and powerful tool. It's indeed a good sign that the pose converges so quickly if 3dpf was part of the training set.

I just wanted to make sure that everything was ok before using your tool on my target and also validate that I don't necessarily need to generate up to 40 poses.

Thanks again