I'm trying to predict where a small molecule ligand will dock to a dimer protein and am trying to do a completely blind search. To do so, I use the start from mover to place the ligand at the center of my protein and then the initial perturb option in the Transform mover to randomly move it outside the protein. Since the protein is not circular, depending on which direction the ligand goes, it can end up pretty far from the protein. If this is wrong, or there is a better way to do it, feel free to let me know.
As for my main question, I was wondering if there was a way to either filter out structures in which the ligand was not in contact with the protein or a way to constrain the ligand to the surface of the protein during the initial perturb move.
I have currently tried using DSasa as an indirect way of filtering, but it doesn't appear to be working. I did notice that there is ligand_is_touching_X field in the scorefile but have no idea where that originates from and so cannot figure out how to incorporate that into a filter.
The ligand_is_touching_X field is calculated by the InterfaceScoreCalculator mover, and unfortunately the way that it's calculated and stored means that you really can't filter within the XML itself. The best you can do is a post filter on it after everything is done.
That said, I'd probably recommend approaching things differently.
Instead of doing a single starting location with a really big initial perturbation and box size, I'd probably recommend using a larger number of starting locations, each spread across the surface of the structure, each with a smaller initial pertubation and box size. You can then throw all of those starting locations together, and pick those docked conformations with the best energy.
The PDB input to the StartFrom mover is intended to make this sort of thing easier -- you can setup the water molecules (or other atoms) across the surface of the protein, and use each of those as the starting points. Using something like the editing feature of PyMol, it's relatively simple to place the atoms where you want them, and to confirm you have the coverage you need.
(One caveat here is that some of the older versions of Rosetta (including 3.8) have a bug with multiple starting conformations in the same run -- I'd recommend getting the most recent weekly if you're doing multiple starting conformations in the same run, as you would with a multi-atom PDB file to the StartFrom mover.)
To try your suggestion, I made a grid of oxygen atoms spaced 20 A apart all across the protein and fed them into the StartFrom. All of the output structures were concentrated to the side where my ligand was in my input structure. Does the grid and box recenter everytime the StartFrom mover picks a different starting location?
It should for the most recent weekly releases, but that's actually the bug in Rosetta3.8 that I talked about. If you're not using a very recent version of Rosetta, you might be having that issue.