At the most abstract level, all of the computations that are needed in interface design fall into two categories: Movers and Filters. Movers change the conformation of the complex by acting on it, e.g., docking/design/minimization, and filters decide whether a given conformation should go on to the subsequent dock_design steps. Filters are meant to reduce the amount of computation that is conducted on conformations that show no promise. Then, a dock_design protocol is merely a sequence of movers and filters.
The implementation for this behaviour is done by the following components:
<...> to define a branch statement (a statement that has more leaves) <.../> a leaf statement. "" defines input expected from the user with ampersand (&) defining the type that is expected (string, float, etc.) () defines the default value that the parser will use if that is not provided by the protocol.
<CompoundStatement name=(&string)> <OPERATION filter_name=(true_filter &string)/> <.... </CompoundStatement>
score12: exactly what you think. docking_score: high resolution docking scorefxn (standard+docking_patch) docking_score_low: low resolution docking scorefxn (interchain_cen) soft_rep: soft_rep_design weights.
<"scorefxn_name" weights=(standard &string) patch="&string">
fnr=(the value set by apply_to_pose for favor_native_residue &float) hs_hash=(the value set by apply_to_pose for hotspot_hash &float)
<my_spiffy_score weights="soft_rep_design" patch="dock" fnr=6.0/> will multiply the favor_native_residue bonus by 6.0
<favor_native_residue bonus=(1.5 &bool)/>
<hashing_constraints scorefxn=(score12 &string) stubfile=(stubs.pdb &string) redesign_chain=(2 &integer) cb_force=(1.0 &float) worst_allowed_stub_bonus=(-1.0 &float) apply_stub_self_energies=(1 &bool) apply_stub_bump_cutoff=(4.0 &float) pick_best_energy_constraint=(1 &bool)/>
<"mover_name" name="&string" .../>
<DockDesign name=( &string)> <Add mover_name=( null &string) filter_name=( true_filter &string)/> ... </DockDesign>
<LoopOver name=(&string) mover_name=(&string) filter_name=( true_filter &string) iterations=(10 &Integer)/>
<Docking name="&string" score_low=(docking_score_low &string) score_high=(docking_score &string) fullatom=(0 &bool) local_refine=(0 &bool) view=(0 &bool) rb_jump=(1 &Integer)/>
<RepackMinimize name="&string" scorefxn_repack=(score12 &string) scorefxn_minimize=(score12 &string) repack_partner1=(0 &bool) repack_partner2=(1 &bool) design=(1 &bool) interface_cutoff_distance=(8.0 &Real) repack_non_ala=(1 &bool) min_rigid_body=(1 &bool)> <residue pdb_num/res_num, see below/> </RepackMinimize>
<DesignMinimizeHbonds name=(design_minimize_hbonds &string) hbond_weight=(3.0 &float) scorefxn_design=(score12 &string) scorefxn_minimize=score12) donors="design donors? &bool" acceptors="design acceptors? &bool" bb_hbond=(0 &bool) sc_hbond=(1 &bool) hbond_energy=(-0.5 &float) interface_cutoff_distance=(8.0 &float) design_partner1=(0 &bool) design_partner2=(1 &bool) repack_non_ala=(1 &bool) min_rigid_body=(1 &bool)> <residue pdb_num="pdb residue and chain, e.g., 31B &string"/> <residue res_num="serially defined residue number, e.g., 212 &integer"/> </DesignMinimizeHbonds> hbond_weight: sets the increase (in folds) of the hbonding terms in each of the scorefunctions that are defined. bb_hbond: do backbone-backbone hbonds count? sc_hbond: do backbone-sidechain and sidechain-sidechain hbonds count? hbond_energy: what is the energy threshold below which an hbond is counted as such. repack_non_ala: see RepackMinimize
<build_Ala_pose name=(ala_pose &string) partner1=(0 &bool) partner2=(1 &bool) interface_distance_cutoff=(8.0 &float)/>
<SaveAndRetrieveSidechains name=(save_and_retrieve_sidechains &string)/>
<Backrub name=(backrub &string) partner1=(0 &bool) partner2=(1 &bool) interface_distance_cutoff=(8.0 &Real) moves=(1000 &integer) sc_move_probability=(0.25 &float) scorefxn=(score12 &string)> <residue pdb_num="pdb residue and chain, e.g., 31B &string"/> <residue res_num="serially defined residue number, e.g., 212 &integer"/> <span begin="serially defined residue number, e.g., 10 &integer" end="serially defined residue number, e.g., 20 &integer"/> </Backrub>
<PlaceStub name=(&string) chain_to_design=(2 &integer) score_threshold=(-2.0 &Real) temperature=(0.8 &Real) repack_non_ala=(1 &bool) self_energy_trials=(2000 &Integer) two_sided_trials=(200 &Integer) stubfile=(&string) final_filter=(true_filter &string)/> self_energy_trials: how many times should we try to place a stub and test its self energy (this is a fast step, so high is probably good). two_sided_trials: how many two-sided trials to test (this is slow, so recommended is just slightly more than the number of stubs in the library). stubfile: using a stub file other than the one used to make constraints. This is useful for placing stubs one after the other. final_filter: one of the default DockDesignFilters or the ones defined by the user. This will be applied at the final stage of stub placement as the last test. Useful, e.g., if we want a stub to form an hbond to a particular target residue.
<PlaceScaffold name=(&string) chain_to_design=(2 &integer) score_threshold=(-2.0 &Real) temperature=(0.8 &Real) repack_non_ala=(1 &bool) distance=(2.0 &Real) self_energy_trials=(2000 &Integer) two_sided_trials=(2000 &Integer) stubfile=(&string) final_filter=(true_filter &string)/> repack_non_ala: see RepackMinimize distance: max distance from scaffold CA to stub CA self_energy_trials: how many times should we try to place a stub and test its self energy (this is a fast step, so high is probably good). two_sided_trials: how many two-sided trials to test (this is slow, so recommended is just slightly more than the number of stubs in the library). stubfile: using a stub file other than the one used to make constraints. This is useful for placing stubs one after the other. final_filter: one of the default DockDesignFilters or the ones defined by the user. This will be applied at the final stage of stub placement as the last test. Useful, e.g., if we want a stub to form an hbond to a particular target residue.
<DumpPdb name=(&string) fname=(dump.pdb &string)/>
<Prepack name=(&string) scorefxn=(score_docking &string) jump_number=(1 &integer)/>
<DomainAssembly name=(&string) linker_start_(pdb_num/res_num, see above) linker_end_(pdb_num/res_num, see above) frag3=(&string) frag9=(&string)/>
<HotspotHasher name=(&string) nstubs=(1000 &integer) target_resnum_(pdb_num/res_num, see above) target_distance=(15 &Real) in=(&string) out=(hash.stubs &string) threshold=(-1.0 &Real)> <residue type=(&string)/> </HotspotHasher>
<"filter_name" name="&string" ... confidence=(1 &Real)/>
<Ddg name=(ddg &string) scorefxn=(score12 &string) threshold=(-15 &float)/>
<ResInInterface name=(riif &string) residues=(20 &integer) jump_number=(1 &integer)/>
backbone: should we count backbone-backbone hbonds? sidechain: should we count backbone-sidechain and sidechain-sidechain hbonds? <HbondsToResidue name=(hbonds_filter &string) partners="how many hbonding partners are expected &integer" energy_cutoff=(-0.5 &float) backbone=(0 &bool) sidechain=(1 &bool) "res_num/pdb_num see above">
<Sasa name=(sasa_filter &string) threshold=(800 &float)/>
<ResidueBurial name=(&string) "res_num/pdb_num see above" distance=(8.0 &Real) neighbors=(1 &Integer)/>
<BuriedUnsatHbonds name=(&string) jump_number=(1 &Size) cutoff=(20 &Size)/>
<ResidueDistance name=(&string) res1_"res_num/pdb_num see above" res2_"resnum/pdb_num" distance=(8.0 &Real)/>
<EnergyPerResidue name=(energy_per_res_filter &string) scorefxn=(score12 &string) score_type=(total_score &string) pdb_num/res_num(see above) energy_cutoff=(0.0 &float)/>
ScoreType name=(score_type_filter &string) scorefxn=(score12 &string) score_type=(&string) threshold=(&float)/>