TaskOperations (RosettaScripts)

This section defines instances of the TaskOperation class hierarchy when used in the context of the Parser/RosettaScripts. They become available in the DataMap.

TaskOperation classes are used by TaskFactory to configure the behavior of PackerTask when it is generated on-demand for routines that use the "packer" to reorganize/mutate sidechains. When used by certain Movers (at present, the PackRotamersMover and its subclasses), the TaskOperations control what happens during packing, usually by restriction "masks."

Table of contents


  <ReadResfile name=rrf/>
  <ReadResfile name=rrf2 filename=resfile2/>
  <PreventRepacking name=NotBeingUsedHereButPresenceOkay/>
  <RestrictResidueToRepacking name=restrict_Y100 resnum=100/>
  <RestrictToRepacking name=rtrp/>
  <OperateOnCertainResidues name=NoPackNonProt>
    <ResidueLacksProperty property=PROTEIN/>
  <PackRotamersMover name=packrot scorefxn=sf task_operations=rrf,NoPackNonProt,rtrp,restrict_Y100/>

In the rosetta code, the TaskOperation instances are registered with and then later created by a TaskOperationFactory. The factory calls parse_tag() on the base class virtual function, with no result by default. However, some TaskOperation classes (e.g. OperateOnCertainResidues and ReadResfile above) do implement parse_tag, and therefore their behavior can be configured using additional options in the "XML"/Tag definition.

General TaskOperations

List of current TaskOperation classes in the core library (* indicates use-at-own-risk/not sufficiently tested/still under development):

Position/Identity Specification


Read a resfile. If a filename is given, read from that file. Otherwise, read the file specified on the commandline with -packing:resfile.



Only allow residues to repack. No design.


Restrict a single residue to repacking. No design. resnum=(0&integer)


Do not allow repacking at all. Freezes residues. resnum=(0&int)


Do not allow disulfides to repack.


Designs in shells around a user-defined list of residues. Restricts all other residues to repacking. <DesignAround name=(&string) design_shell=(8.0 &real) resnums=(comma-delimited list) repack_on=(1 &bool)/>

  • resnums can be a list of pdb numbers, such as 291B,101A.
  • repack_on: leave everything outside of the design shell as repack only? If false, will prevent repacking on these residues


    Design residues with selected amino acids depending on the enviroment: layer. The layer of each residue is assigned as core, boundary, or surface, which are defined by accessible surface area of mainchain + CB. If resfile is read before calling this operation, this operation is not applied for the residues defined by PIKAA.

    Selected amino acid types for each layer:

    • Core
      • Loop: AFILPVWY
      • Strand: FIL VWY
      • Helix: AFIL VWY ( P only at the beginning of helix )
      • HelixCapping: DNST
    • Boundary
      • Strand: DEF IKLN QRSTVWY
      • Helix: ADE IKLN QRSTVWY ( P only at the beginning of helix )
      • HelixCapping: DNST
    • Surface
      • Loop: DEGHKNPQRST
      • Strand: DE HKN QRST
      • Helix: DE HKN QRST ( P only at the beginning of helix )
      • HelixCapping: DNST

    Option list

    • layer ( default "core_boundary_surface" ) : layer to be designed, other ex. core_surface means only design core and surface layer
    • use_original_non_designed_layer ( default, 0 ) : use original sequence for non designed layers, otherwise the residues on the layers turned into Ala
    • pore_radius ( default 2.0) : pore radius for calculating accessible surface area
    • core ( default 20.0) : residues of which asa is < core are defined as core
    • surface ( default 40.0) : residues of which asa is > surface are defined as surface


    Restricts to interface between two protein chains along a specified jump and with a given radius. rb_jump=(&integer, 1) distance=(&Real, 8.0)


    Restricts the task to residues defined as interface by the InterfaceVectorDefinitionCalculator

      <RestrictToInterfaceVector name=(& string) chain1_num=1 chain2_num=2 CB_dist_cutoff=10.0 nearby_atom_cutoff=5.5 vector_angle_cutoff=75.0 vector_dist_cutoff=9.0/>


    Restricts to the task that is the basis for protein-interface design.

    • repack_chain1=(1, &bool)
    • repack_chain2=(1, &bool)
    • design_chain1=(0, &bool)
    • design_chain2=(1, &bool)
    • allow_all_aas=(0 &bool)
    • design_all_aas=(0 &bool)
    • interface_distance_cutoff=(8.0, &Real)
    • jump=(1&integer) chains below, and above the jump are called chain1 and chain2 above.


    Setup packer task based on the detect design interface settings from enzyme design.

    <DetectProteinLigandInterface name=(&string) cut1=(6.0 &Real) cut2=(8.0 &Real) cut3=(10.0 &Real) cut4=(12.0 &Real) design=(1 &bool) resfile=("" &string)/>

    The task will set to design all residues with a Calpha within cut1 of the ligand (specifically the last ligand), or within cut2 of the ligand, where the Calpha-Cbeta vector points toward the ligand. Those residues within cut3 or within cut4 pointing toward the ligand will be set to repack. All others will be set to be fixed. Setting design to false will override the design (cut1/cut2) settings.

    If resfile is specified, the listed resfile will be read in the settings therein applied to the task. Any positions set to "AUTO" (and only those set to AUTO) will be subjected the detect design interface procedure as described above.


    Ensures that catalytic residues as specified in a match/constraint file do not get designed. If no option is specified the constrained residues will be set to repack only (not design).

    If the option fix_catalytic_aa=1 is set in the tag (or on the commandline), catalytic residues will be set to non-repacking.

    If the option -enzdes::ex_catalytic_rot <number> is active, the extra_sd sampling for every chi angle of the catalytic residues will be according to <number>, i.e. one can selectively oversample the catalytic residues


    Restrict design to user-specified residues. resnum=(0 &integer) keep_aas=(string). if resnum is left as 0, the restriction will apply throughout the pose. For instance, to generate an ala-pose:

    resnum=0 keep_aas="A"

    and call PackRotamersMover


    Threads a fasta-formatted sequence onto the source pdb. target_sequence=(&string), start_res=(1&int)

    and call PackRotamersMover


    <JointSequence use_current=(true &bool)  use_native=(false &bool) filename=(&string) native=(&string) use_natro=(false &bool) />

    Prohibit designing to residue identities that aren't found at that position in any of the listed structures:

    • use_current - Use residue identities from the current structure (input pose to apply() of the taskoperation)
    • use_native - Use residue identities from the structure listed with -in:file:native
    • filename - Use residue identities from the listed file
    • native - Use residue identities from the listed file

    If use_natro is true, the task operation also adds the rotamers from the native structures (use_native/native) in the rotamer library.

    Rotamer Specification


    Reads commandline options. For example, -ex1 -ex2 (does not read resfile from command line options) This taskoperation will complain about an unimplemented method, but you can safely ignore the message.


    Includes current rotamers (eg - from input pdb) in the rotamer set. These rotamers will be lost after a packing run, so they are only effective upon initial loading of a pdb!


    Sample residue chi angles much more finely during packing. Currently hardcoded to use three 1/3 step standard deviation. resnum=(&Integer) chi=(&Integer)

    Note: This might actually need to be called as RotamerExplosionCreator in the xml


    Prevent to use the rotamers of PHE, TYR and HIS that have chi2 far from 90.

    • chi2max ( default 110.0 ) : max value of chi2 to be used
    • chi2min ( default 70.0 ): min value of chi2 to be used


    Using a library of protein-ligand interactions, identify possible native-like interactions to the ligand and add those rotamers to the packer, possibly with a bonus.

    Required command line flags:

    • A
    • B
    • C
    • D
    • E
    • F
    • G


    <AddLigandMotifRotamers name=(&string)/>

    Since it only makes sense to run AddLigandMotifRotamers once (it takes a very long time), I have not made the options parseable. I can do that if there's interest--the code would take a minute--but I can't see an advantage. You can however read in multiple weight files in order to do motif weight ramping. -Matt

    Packer Behavior Modification


    Specifically upweight the strength of the protein-ligand interaction energies by a given factor.

    <ProteinLigandInterfaceUpweighter name=(&string) interface_weight=(1.0 &Real)/>



    Under development and untested. Use at your own risk.


    Under development and untested. Use at your own risk.


    Under development and untested. Use at your own risk.


    Under development and untested. Use at your own risk.


    Under development and untested. Use at your own risk.


    Restrict amino acid choices during design to Tyr and Ser. This is similar to the restricted YS alphabet used by Sidhu's group during in vitro evolution experiments. Under development and untested. Use at your own risk.

    Per Residue Specification

    OperateOnCertainResidues Operation

    Allows specification of Residue Level Task Operations based on residue properties specified with ResFilters.


    <OperateOnCertainResidues name=PROTEINnopack>
      <PreventRepackingRLT/> //Only one Residue level task per OperateOnCertainResidues block
      <ResidueHasProperty property=PROTEIN/> //Only one ResFilter per OperateOnCertainResidues block

    Residue Level TaskOperations

    Use these as a subtag for special OperateOnCertainResidues TaskOperation. Only one may be used per OperateOnCertainResidues






    Use these as a subtag for special OperateOnCertainResidues TaskOperation. Only one may be used per OperateOnCertainResidues



    • property. e.g. DNA, PROTEIN, POLAR, CHARGED (one only)



    Selects a set of residues based on their chain letter in the original PDB.

    • chain: defaults to "A"


    Excludes a set of residues based on their chain letter in the original PDB.

    • chain: defaults to "A"


    • name3: eg arg,lys,gua (one only)



    • indices

    comma-separated list of rosetta residue indices (1 to nres) e.g. indices=1,2,3,4,33



    • indices: comma-separated list of chain.pos identifiers e.g. indices=A.2,C.100,D.-10


    Currently Undocumented

    The following TaskOperations are available through RosettaScripts, but are not currently documented. See the code (particularly the respective parse_tag() and apply() functions) for details. (Some may be undocumented as they are experimental/not fully functional.)

    • AddRigidBodyLigandConfs
    • DisallowIfNonnative
    • OptCysHG
    • OptH
    • PreventChainFromRepacking
    • ReadResfileAndObeyLengthEvents
    • ReplicateTask
    • RestrictByCalculators
    • RestrictChainToRepacking
    • RestrictConservedLowDdg
    • RestrictDesignToProteinDNAInterface
    • RestrictNonSurfaceToRepacking
    • RestrictToNeighborhood
    • SeqprofConsensus
    • WatsonCrickRotamerCouplings

    Residue Level TaskOperations:

    • DisallowIfNonnativeRLT