This is a bonus tutorial showing how to use residue selectors and task operations for selectively designing protein-protein interfaces! - Get PDB complex of interest:
mkdir relax; cd relax
perl ~/tools/get_pdb.pl 3pnl A B > 3pnlAB.pdb
- Make PDB Rosetta-friendly. Why is this important? Because if residues are allowed to mutate, Rosetta is more likely to mutate a residue to a smaller amino acid than try figure out how to repack a big residue to relieve a small clash.
Prepare "flags" file:
-in:file:s 3pnlAB.pdb
-nstruct 5
-beta Prepare "xml" file:
<ROSETTASCRIPTS>
<SCOREFXNS>
<beta weights="beta.wts">
<Reweight scoretype="coordinate_constraint" weight="1" />
</beta>
</SCOREFXNS>
<TASKOPERATIONS>
<IncludeCurrent name="use_input_sc" />
<ExtraRotamersGeneric name="add_rot" ex1="1" ex2="1" />
</TASKOPERATIONS>
<FILTERS></FILTERS>
<MOVERS>
<VirtualRoot name="add_vrt" />
<AtomCoordinateCstMover name="add_cst_sc" sidechain="1" />
<FastRelax name="relax" scorefxn="beta" task_operations="use_input_sc,add_rot" />
</MOVERS>
<PROTOCOLS>
<Add mover_name="add_vrt" />
<Add mover_name="add_cst_sc" />
<Add mover_name="relax" />
</PROTOCOLS>
<OUTPUT scorefxn="beta" />
</ROSETTASCRIPTS> Run Rosetta scripts!
rosetta_scripts.default.linuxgccrelease @flags -parser:protocol xml What is the best "total_score" of the 5 structures generate (-nstruct 5)? Why do we generate multiple structures? - Lets do design!
mkdir design; cd design
cp ../3pnlAB_0001.pdb . # copy the top scoring structure Prepare "flags" file:
-in:file:s 3pnlAB_0001.pdb
-nstruct 20
-beta Prepare "xml" file: What we want to do: a) allow residues at chain A interface to mutate and repack b) allow residues at chain B interface to only repack but NOT mutate c) disallow residues that are NOT at the interface to repack/mutate. d) calculate ddg
<ROSETTASCRIPTS>
<SCOREFXNS>
<beta weights="beta.wts">
<Reweight scoretype="coordinate_constraint" weight="1" />
</beta>
</SCOREFXNS>
<RESIDUE_SELECTORS>
<Chain name=chainA chains="A"/>
<Chain name=chainB chains="B"/>
<Neighborhood name=interface_chA selector=chainB distance=8.0/>
<Neighborhood name=interface_chB selector=chainA distance=8.0/>
<And name="AB_interface" selectors="interface_chA,interface_chB" />
<Not name=Not_interface selector=AB_interface />
</RESIDUE_SELECTORS>
<TASKOPERATIONS>
<IncludeCurrent name="use_input_sc" />
<ExtraRotamersGeneric name="add_rot" ex1="1" ex2="1" />
<OperateOnResidueSubset name=restrict_to_interface selector="Not_interface">
<PreventRepackingRLT/>
</OperateOnResidueSubset>
<OperateOnResidueSubset name=restrict_target2repacking selector="chainB">
<RestrictToRepackingRLT/>
</OperateOnResidueSubset>
</TASKOPERATIONS>
<FILTERS>
<Ddg name="ddg" scorefxn="beta" threshold="0" jump="1" repeats="5" repack="1" />
</FILTERS>
<MOVERS>
<VirtualRoot name="add_vrt" />
<AtomCoordinateCstMover name="add_cst" />
<ClearConstraintsMover name="rm_all_cst" />
<FastDesign name="slow_design" scorefxn="beta" task_operations="use_input_sc,add_rot,restrict_to_interface,restrict_target2repacking" />
<FastDesign name="fast_design" scorefxn="beta" task_operations="restrict_to_interface,restrict_target2repacking" repeats="1"/>
</MOVERS>
<PROTOCOLS>
<Add mover_name="add_vrt" />
<Add mover_name="add_cst" />
<Add mover_name="fast_design" />
<Add mover_name="rm_all_cst" />
<Add filter_name="ddg" />
</PROTOCOLS>
<OUTPUT scorefxn="beta" />
</ROSETTASCRIPTS> Note: I include a "slow_design" mover and a "fast_design" mover. The slow_design allows additional rotamers (from ex1 and ex2, and also input sidechains). Since this takes a long time, in the tutorial I only include a "fast_design" option. Run Rosetta scripts!
rosetta_scripts.default.linuxgccrelease @flags -parser:protocol xml
|
|