You are here

Adding water interactions when docking a ligand with Rosetta 3.7.

3 posts / 0 new
Last post
Adding water interactions when docking a ligand with Rosetta 3.7.
#1

I am using RosettaScripts to dock a ligand, and I would like to include several - known - key water interactions. 

I found a demo somewhere (RosettaCon?) that showed this is possible, but I it looked like the xml was designed for a version well before Rosetta 3.7. From reading the Scripts docs, it looks like including the term minimize_water=true to the <MOVEMAP_BUILDER /> element should handle the water interactions. 

My starting PDB has 3 chains: A (the target protein), W (the relevant water atoms), and X (the starting position of the ligand).

The ligand docking similation runs as expected, HOWEVER, the final PDBs do NOT contain any water molecules, and upon visual inspection, it looks "wrong" because there are no water intereactions.

How can I get RosettaScripts to respect water molecules in the starting PDB?

My dock.xml is as follows (mostly taken from an example floating around here somewhere):

<ROSETTASCRIPTS>
	<SCOREFXNS>
		<ligand_soft_rep weights=ligand_soft_rep>
			<Reweight scoretype=fa_elec weight=0.42/>
		</ligand_soft_rep>
		<hard_rep weights=ligand>
			<Reweight scoretype=fa_elec weight=0.42/>
		</hard_rep>
	</SCOREFXNS>
	<LIGAND_AREAS>
		<docking_sidechain chain=X cutoff=6.0 add_nbr_radius=true all_atom_mode=true minimize_ligand=10/>
		<final_sidechain chain=X cutoff=6.0 add_nbr_radius=true all_atom_mode=true/>
		<final_backbone chain=X cutoff=7.0 add_nbr_radius=false all_atom_mode=true Calpha_restraints=0.3/>
	</LIGAND_AREAS>
	<INTERFACE_BUILDERS>
		<side_chain_for_docking ligand_areas=docking_sidechain/>
		<side_chain_for_final ligand_areas=final_sidechain/>
		<backbone ligand_areas=final_backbone extension_window=3/>
	</INTERFACE_BUILDERS>
	<MOVEMAP_BUILDERS>
		<docking sc_interface=side_chain_for_docking minimize_water=true/>
		<final sc_interface=side_chain_for_final bb_interface=backbone minimize_water=true/>
	</MOVEMAP_BUILDERS>
	<MOVERS>
		<Translate name=translate chain=X distribution=uniform angstroms=5.0 cycles=50/>
		<Rotate name=rotate chain=X distribution=uniform degrees=360 cycles=1000/>
		<SlideTogether name=slide_together chains=X/>
		<HighResDocker name=high_res_docker cycles=6 repack_every_Nth=3 scorefxn=ligand_soft_rep movemap_builder=docking/>
		<FinalMinimizer name=final scorefxn=hard_rep movemap_builder=final/>
		<InterfaceScoreCalculator name=add_scores chains=X scorefxn=hard_rep native="/tmp/crystal_complex.pdb" />
		<ParsedProtocol name=low_res_dock>
			<Add mover_name=translate/>
			<Add mover_name=rotate/>
			<Add mover_name=slide_together/>
		</ParsedProtocol>
		<ParsedProtocol name=high_res_dock>
			<Add mover_name=high_res_docker/>
			<Add mover_name=final/>
		</ParsedProtocol>
	</MOVERS>
	<PROTOCOLS>
		<Add mover_name=low_res_dock/>
	    <Add mover_name=high_res_dock/>
		<Add mover_name=add_scores/>
	</PROTOCOLS>
</ROSETTASCRIPTS>

 

My run command is:

/rosetta/bin/rosetta_scripts.linuxgccrelease 
  -database $ROSETTA_DATABASE 
  -in:file:s {complex_file} 
  -in:file:extra_res_fa {params} 
  -nstruct {nstruct} 
  -parser:protocol /scripts/xml/dock.xml 
  -packing:ex1 
  -packing:ex2 
  -no_optH false 
  -flip_HNQ true 
  -ignore_ligand_chi true 
  -out:prefix {output_directory_run} 
  -out:file:scorefile {scorefile} 
  -out:file:silent {silentfile} 
  -out:file:fullatom 
  -run:use_time_as_seed true 
  -mistakes:restore_pre_talaris_2013_behavior true

 

I've also attached my starting PDB, but I think that should be correct.

Category: 
Post Situation: 
Thu, 2017-06-01 09:37
brspurri

Actually, the fixes you want to make are indeed in your PDB file. There are several issues.

First off, you have zero occupancies for some of your water hydrogens. If you don't want Rosetta to completely ignore the coordinates you gave for them, you'll either need to change those 0.00s to 1.00s, or pass the option `-ignore_zero_occupancy false`

Next, all your waters have the same residue number. This means that Rosetta is going to think it's the same residue. You either need to renumber each residue with a distinct number, or put a "TER" line in between each water. (I'd suggest the former.)

Thirdly, by default Rosetta ignores residues named "HOH", as most of the time you do want to ignore these residues on from-PDB files. If you want to load the waters explicitly, you either want to rename those residue to "WAT" (instead of "HOH") or add the option `-ignore_waters false` to the commandline.

Finally, your water hydrogen names are different from what Rosetta expects. Leaving them as-is means that Rosetta will thow out the current hydrogen postions. I'd recommend renaming them "H1" and "H2" instead, to make sure you get the correct input position.

All told, here's what the water lines should look like in your PDB:

HETATM 3959  O   WAT W   1      23.481   9.211   5.931  1.00 13.64           O
HETATM 3960  H1  WAT W   1      22.971   8.400   5.876  1.00 20.00           H
HETATM 3961  H2  WAT W   1      24.353   8.969   5.610  1.00 99.00           H
HETATM 3962  O   WAT W   2      26.162  12.121   2.077  1.00 14.98           O
HETATM 3963  H1  WAT W   2      25.663  11.345   2.343  1.00 20.00           H
HETATM 3964  H2  WAT W   2      27.039  11.786   1.878  1.00 99.00           H
HETATM 3965  O   WAT W   3      27.172  -2.263   4.904  1.00 22.08           O
HETATM 3966  H1  WAT W   3      26.486  -2.260   4.233  1.00 20.00           H
HETATM 3967  H2  WAT W   3      27.918  -1.826   4.487  1.00 99.00           H

If you do that, I think you should be able to get them to come through in your runs and your output.

Thu, 2017-06-01 10:16
rmoretti

That did it! Solved. Thanks.

Thu, 2017-06-01 10:58
brspurri