Author: Gordon Lemmon
location: doc/apps/pilot/multi_residue_ligand_dock.dox
last updated: 5-25-2009
An introductory tutorial on ligand docking can be found here.
This application performs ligand docking. It refactors previous versions of RosettaLigand. New features include docking of multiple ligands simultaneously and representing ligands as multiple fragments. These ligand fragments can have rotamer libraries and thus can be sampled just like side chain rotamers.
Caveat: this code currently only works with 2 ligand fragments. To get rotamer sampling to work correctly the neighbor atoms of the two fragments must be the same atoms as the CONNECT atoms (ie the atoms whose bond was broke to split the ligand into 2 fragments). Generalizing this is our next goal.
As a fully refactored version of ligand_dock, this application breaks one class into 15 or so classes. Additionally it utilizes JD2, streamlining input and output choices. New features include multiple ligand docking and multiple fragment ligands with ligand fragment rotamer sampling.
The user will need:
See readme_for_multi_ligand_dock_demos within the demo directory shown above.
rosetta/main/source/src/apps/public/ligand_docking/pdb_to_molfile can be used to create a mol file for your ligand Next rosetta/main/source/python/apps/public/molfile2params can be used to create the necessary ligand .params files.
Here I will describe the syntax of the ligand option file.
# Comments in this file begin with a '#' sign
# There are two section flags, 'DEFAULT' and 'LIGAND <chain_id>'
# Some options are only available as default options (they are not ligand specific)
# Other options are only available as ligand specific options (default doesn't make sense)
# Most options can be used either by default or as ligand specific options.
# Caveat: A ligand will NOT be docked by default. You must provide the 'LIGAND <chain_id>'
tag even if you are going to use all default options.
DEFAULT # applies to all ligands listed after LIGAND keywords.
soft_rep [old|new] # default-only option with two accepted parameters. If provided, use the soft repulsive score during
# docking (but continue using hard-repulsive during the final minimization). 'old' uses Rosetta++ electrostatics and is
# recommended.
protocol [meiler2006|abbreviated|abbrev2|min_only|custom <int> <int>] # DEFAULT only option. The docking step consists of
# cycles of either rotamer trials (1 residue at a time) or a "full repack" (several residues receive rotamer trials
# simultaneously). The choices are:
# meiler2006. 50 cycles with repacks every 8th
# abbreviated. 5 cycles with a repack on the 4th.
# abbrev2. 6 cycles with repacks on the 3rd and 6th.
# min_only. No cycles of docking. Skip to final minimization.
# custom 42 6. This example would be 42 cycles with repacks every 6th.
LIGAND X # X is the chain ID as seen in the PDB
random_conformer # choose a random starting conformer (can also be a DEFAULT option)
mutate_same_name3 # during packing sample ligand rotamers that share the same 3 letter name (can also be a DEFAULT option)
translate [uniform|gaussian] 5.0 50 # Move the ligand up to 5.0 angstroms along a uniform distribution, or center a normal
# distribution at 5.0 angstroms for a random ligand translation. Try up to 50 moves to find a ligand translation that
# lands the ligand neighbor atom in an empty space. (can also be a DEFAULT option)
rotate uniform 360 1000 # Try for up to 1000 cycles of 360 degree rotations to collect a certain maximum number of rotations that
# lead to a *set* of ligand poses with a minimum difference of RMSDs, all of which have acceptable attractive and repulsive scores.
# Choose randomly from among this set. If no acceptable rotations are found use the one that leads to the best attractive and
# and repulsive scores. Also filter for user provided constraints (not yet implemented). (can also be a DEFAULT option)
slide_together # after initial placement (translate/rotate) slide ligand 1 angstrom at a time until it runs into protein, i
# then back up 1 angstrom (can also be a DEFAULT option)
tether_ligand 0.1 # constrain ligand centroid during docking step so small repeated movements don't lead to ligand running
# away (can also be a default option)
minimize_ligand 10 # Let ligand rotatable bonds minimize, with harmonic restraints where one standard deviation is 10 degrees:
minimize_backbone 0.3 # In the final minimization, let the backbone minimize with harmonic restraints on the Calphas (stddev = 0.3 A).
start_from x1,y1,z1 x2,y2,z2 a space separated list of comma separated xyz triplets to randomly select from for initial ligand placement.
# This option can NOT be a default option (you wouldn't want both ligands ending up in the same place!)
If you chose to use the "out:file:atom_tree_diffs" flag, which I recommend because it makes extra small files, then you will have to also use apps/public/ligand_docking/extract_atom_tree_diffs to get PDBs back.
I wrote a python script that makes RMSD plots from your atom_tree_diff files. Ask me about it.
Q. Does this code work? A. Reply hazy, try again.
Q. Should I use this code? A. Signs point to yes.
Q. Is there a publication yet? A. My sources say no.
Q. Is this code awesome? A. It is certain.
Feel free to ask a question. I will consult my majic 8-ball and get back with you.