Back to TaskOperations page.



Jared Adolf-Bryfogle;; PI: Roland Dunbrack



Grafting class adapted from Steven Lewis' pose_into_pose algorithm.

1) Inserts the pose piece into the scaffold pose, deleting any overhang residues or residues in the region the insertion will occur between.

2) Connects the left side of the piece to the scaffold by inserting ideal geometry (aka superposition of terminal overhangs is not needed)

3) Cycles of:

  • a) SmallMover for sampling

  • b) CCD to close right (Nter) side of the graft. The insert is included as dihedral-inflexible residues in the CCD arm. Residues on either side of the scaffold are used by default to close the loop. A Moevemap can be given to include more residues for CCD to use, such as loops connecting secondary structural elements

  • c) MinMover to help close the graft through chain break terms

  • d) Closure check - will stop if closed (This can be overridden)

  • e) MonteCarlo Boltzmann criterion

5) Repack flexible residues, insert residues, connecting residues between scaffold and insert, and neighbors


Uses a single arm to close the loop by default.

 ****Nter_loop_start---->Piece----> | Cter_loop_end****

The default movemap keeps insert Frozen in dihedral angle space, But think of the insert as part of a CCD giant arm. Default flexibility on Nter and Cter is only two residues (--> part of diagram). Will delete any residues between start and end, and any overhang residues from the insert.

Algorithm originally from pose_into_pose:

  • The insert will be left unchanged in internal-coordinate space except for the phi on the first residue, and the psi/omega on the last residue, and atoms whose bonding partners change as a result of the insertion unless insert_flexibility options are set.
  • Internally, apply performs the insertion, idealizes the connection residues (omegas to 180, peptide bonds idealized) and the newly made polymer connections at the insert point, and then attempts to close the loop(s).
  • It is intended, but not guaranteed, to produce a graft with good rama, omega, and chainbreak/peptide_bond scores. All-atom minimization of graft or pose after insertion is recommended.

XML Script

 <CCDEndsGraftMover name="(&string)" spm_reference_name="(&string)" start_pdb_num (&string) end_pdb_num="(&string)" nter_overhang="(&size, 0)" cter_overhang="(&size, 0)" stop_at_closure="(&bool, true)", copy_pdbinfo="(&bool, false)"/>

Required XML Options

Combine with SavePoseMover for insertions

  • spm_reference_name (&string): The name of the reference pose we are inserting. See SavePoseMover for more info.
  • start_pdb_num: PDB Number to start keep region from (including it). Ex: 24L. Use start_res_num instead for internal numbering
  • end_pdb_num: PDB Number to end keep region at (including it); Ex: 42L. Use end_res_num instead for internal numbering

Flexibility Options

Connection: scaffold-insert-scaffold

  • scaffold_flex_Nter (&size) (default=2): Use this many residues Nter of the insert to optimize the insertion and close the peptide bond of the scaffold-insert.
  • scaffold_flex_Cter (&size) (default=2): Use this many residues Cter of the insert to optimize the insertion and close the peptide bond of the scaffold-insert.
  • insert_flex_Nter (&size) (default=0): Use this many insert residues on the Nter side to optimize the insertion and close the peptide bond of the scaffold-insert.
  • insert_flex_Cter (&size) (default=0): Use this many insert residues on the Cter side to optimize the insertion and close the peptide bond of the scaffold-insert.

Extra XML Options

  • Nter_overhang (&size) (default=0): Number of extra residues on the Nter side of your insert to use for superposition for insertion. Will delete these residues before insertion.
  • Cter_overhang (&size) (default=0): Number of extra residues on the Nter side of your insert to use for superposition for insertion. Will delete these residues before insertion.
  • mintype (&string) (default=dfpmin_armijo_nonmonotone): Sets the mintype for the MinMover
  • copy_pdbinfo(&bool) (default=false): Copy the PDBInfo (PDB residue numbers and chain Ids) into the new pose. Make these able to be output in the final pose.
  • cen_scorefxn (&string) (default=smoothed version of that used originally for Steven Lewis' AnchoredDesignProtocol): Centroid Scorefunction to use
  • fa_scorefxn (&string) (default=Rosetta default): All Atom scorefunction to use for final repack
  • cycles (&size) (default=300): Set the number of cycles to use.
  • final_repack (&size) (default=true): Do a final repack of the insert and neighbors after the protocol is complete?
  • neighbor_dis (&real) (default=4.0): Set the neighbor detection distance for the final repack
  • skip_sampling (&bool) (default=false): Sets the mover to skip the small mover sampling step.

MoveMap Options

You can optionally specify movemaps for both the insert and the scaffold to use during minimization, CCD, etc. Not recommended for general use, use the flexibility options instead for simplicity. See the FastRelaxMover for more details on MoveMap specification.

Will combine the movemaps for apply, and renumber everything. Flexible residues in multiple chains not recommended. This can be amazing as you can use loop regions in various parts of your protein to help the graft complete.

Note: Will disregard flexibility settings, as the movemaps will be used as primary way to define flexibility. May want to consider turning off the sampling step when passing crazy movemaps.

  • insert_movemap: Specify the insert movemap as an inner tag.
  • scaffold_movemap: Specify the scaffold movemap as an inner tag

XML Example

In this example, we graft 3 CDRs (loopy regions) from one antibody (graft_from.pdb) into another using the SavePoseMover. I know it is confusing - it is much easier to use this mover with PyRosetta.

We use the KeepRegionMover to iteratively cut out a CDR from the PDB, save its state in the save pose mover, graft it in, and then repeat. SavePoseMover is used to save the state of different structures so we can combine them, delete things in them, etc. We use the ParsedProtocolMover to combine movers as a sequence.

We are then left with a new antibody that has CDRs from a different antibody. No chain breaks should be present in this new antibody. Note that CCDEndsGraftMover does not always work to close regions. The AnchoredGraftMover is better at closing non-loopy regions; however, it can result in strange structures and itself may require additional optimization for the structure. The RAbD Antibody Design program uses a combination of both movers to close and optimize 100 percent of antibody CDR grafts.

		<SavePoseMover name="save_current" reference_name="current"/>
		<SavePoseMover name="save_CDR" reference_name="CDR"/>
		<SavePoseMover name="restore_current" restore_pose="1" reference_name="current"/>
		<SavePoseMover name="restore_ab" restore_pose="1" reference_name="ab" pdb_file="graft_from.pdb"/>
		<ParsedProtocol name="save_cdr_restore" >
			<Add mover="save_CDR" />
			<Add mover="restore_current" />
		<ParsedProtocol name="save_current_restore_ab" >
			<Add mover="save_current" />
			<Add mover="restore_ab" />
		<KeepRegionMover name="k_L1" start_pdb_num="24L" end_pdb_num="42L" nter_overhang="2" cter_overhang="2"/>
		<KeepRegionMover name="k_L2" start_pdb_num="57L" end_pdb_num="72L" nter_overhang="2" cter_overhang="2"/>
		<KeepRegionMover name="k_L3" start_pdb_num="107L" end_pdb_num="138L" nter_overhang="2" cter_overhang="2"/>
		<CCDEndsGraftMover name="graft_L1" start_pdb_num="23L" end_pdb_num="43L" spm_reference_name="CDR" copy_pdbinfo="1"/>
		<CCDEndsGraftMover name="graft_L2" start_pdb_num="56L" end_pdb_num="73L" spm_reference_name="CDR" copy_pdbinfo="1"/>
		<CCDEndsGraftMover name="graft_L3" start_pdb_num="106L" end_pdb_num="139L" spm_reference_name="CDR" copy_pdbinfo="1"/>
		<Add mover_name="save_current" />
		<Add mover_name="restore_ab"/>
    		<Add mover_name="k_L1" />
		<Add mover_name="save_cdr_restore"/>
		<Add mover_name="graft_L1"/>
		<Add mover_name="save_current_restore_ab"/>
		<Add mover_name="k_L2"/>
		<Add mover_name="save_cdr_restore"/>
		<Add mover_name="graft_L2"/>
		<Add mover_name="save_current_restore_ab"/>
		<Add mover_name="k_L3"/>
		<Add mover_name="save_cdr_restore"/>
		<Add mover_name="graft_L3"/>
		<Add mover_name="save_current"/>

See Also