Back to TaskOperations page.

JumpSelectors


JumpSelectors select a subset of Jumps from the FoldTree of a Pose. Their apply() method takes a Pose and returns a JumpSubset (a utility::vector1< bool >). This vector1 will be as large as there are jumps in the input Pose, and its ith entry will be "true" if jump i has been selected.

The most common way of using a JumpSelector is with a MoveMapFactory where you can construct a MoveMap that allows some jumps to minimize while keeping other jumps fixed. They can also be used to select residues, e.g. with the JumpDownstreamSelector or the JumpUpstreamSelector (coming soon).

JumpSelectors can be declared in their own block, outside of the TaskOperation block. For example:

  <JUMP_SELECTORS>
      <JumpIndex name="jump1" jump="1"/>
      <Interchain name="interchain"/>
  </JUMP_SELECTORS>
Some JumpSelectors can nest other JumpSelectors in their definition; e.g.
  <JUMP_SELECTORS>
      <Or name="interchain_and_jump1">
         <JumpIndex jump="1"/>
         <Interchain/>
      </Or>
  </JUMP_SELECTORS>
In this case, the documented structure of the Or JumpSelector will be stated as
  <Or name=(%string)>
      <(Selector)/>
  </Or>
With the <(Selector)> subtag designating that any JumpSelector can be nested inside it, including an Or selector (if you so desired).

Logical JumpSelectors

NotJumpSelector

<Not name="(&string)" selector="(&string)">

or

<Not name="(&string)">
    <(Selector) .../>
</Not>
  • The NotJumpSelector requires exactly one selector.
  • The NotJumpSelector flips the boolean status returned by the apply function of the selector it contains.
  • If the "selector" option is given, then a previously declared JumpSelector (from a JUMP_SELECTORS block of the XML file) will be retrieved from the DataMap
  • If the "selector" option is not given, then a sub-tag containing an anonymous/unnamed JumpSelector must be declared. This sub-selector will not end up in the DataMap. For example, it is possible to nest an Index selector beneath a Not selector to say "give me all jumps except for Jump 2"
    <Not name="all_but_jump2">
       <JumpIndex jump="2"/>
    </Not>
    any JumpSelector can be defined as a subtag of the Not selector. You cannot, however, pass the subselector by name except by using the "selector" option.

AndJumpSelector

<And name="(&string)" selectors="(&string)">
   <(Selector1)/>
   <(Selector2)/>
    ...
</And>
  • The AndJumpSelector can take arbitrarily many selectors.
  • The AndJumpSelector takes a logical AND of the JumpSubset vectors returned by the apply functions of each of the JumpSelectors it contains. Practically speaking, this means that it returns the intersection of the selected sets -- the jumps that are in set 1 AND in set 2. (Do not confuse this with the "or" selector, which returns the union of the two sets -- the jumps that are in set 1 OR in set 2.)
  • The "selectors" option should be a comma-separated string of previously-declared selector names. These selectors will be retrieved from the DataMap.
  • The "selectors" option is not required, nor are the sub-tags required; but at least one of the two must be given. Both can be given, if desired.
  • Selectors declared in the sub-tags will be appended to the set of selectors for the AndJumpSelector, but will not be added to the DataMap.

OrJumpSelector

<Or name="(&string)" selectors="(&string)">
   <(Selector1)/>
   <(Selector2)/>
    ...
</Or>
  • The OrJumpSelector can take arbitrarily many selectors.
  • The OrJumpSelector takes a logical OR of the JumpSubset vectors returned by the apply functions of each of the JumpSelectors it contains. Practically speaking, this means that it returns the union of the selected sets -- the jumps that are in set 1 OR in set 2. (Do not confuse this with the "and" selector, which returns the intersection of the two sets -- the jumps that are in set 1 AND in set 2.)
  • The "selectors" option should be a comma-separated string of previously-declared selector names. These selectors will be retrieved from the DataMap.
  • The "selectors" option is not required, nor are the sub-tags required; but at least one of the two must be given. Both can be given, if desired.
  • Selectors declared in the sub-tags will be appended to the set of selectors for the OrJumpSelector, but will not be added to the DataMap.

Conformation Independent Jump Selectors

JumpIndex

<JumpIndex jump="(&int)"/>
  • This can select a single jump only

Interchain

<Interchain/>
  • This selector selects all jumps that span two chains

JumpForResidue

  <JumpForResidue name="chainb_jump" residue_selector="chainB" allow_multiple_results="true"/>
  • JumpForResidue selects the jump that builds the residues passed in
  • residue_selector: We will select the jumps that build the residues selected by this residue selector
  • allow_multiple_results: If false, we will assert that every residue passed in is built by the same jump

ExclusivelySharedJumpSelector

  <ExclusivelySharedJumpSelector name="name" residue_selector="sele"/>
  • ExclusivelySharedJumpSelector selects the jump that builds ALL and ONLY the residues passed in

Example:

<ROSETTASCRIPTS>
  <RESIDUE_SELECTORS>
    <Chain name="sele" chains="1,3"/>
  </RESIDUE_SELECTORS>

  <MOVERS>
    <EnsureExclusivelySharedJumpMover name="ensure_jump" residue_selector="sele"/> 
  </MOVERS>

  <JUMP_SELECTORS>
    <ExclusivelySharedJumpSelector name="js" residue_selector="sele"/>
  </JUMP_SELECTORS>

  <RESIDUE_SELECTORS>
    <JumpDownstream name="downstream" jump_selector="js"/>
  </RESIDUE_SELECTORS>

  <SIMPLE_METRICS>
    <SelectedResiduesPyMOLMetric name="starting_pymol_selection" residue_selector="sele" custom_type="start"/>
    <SelectedResiduesPyMOLMetric name="final_pymol_selection" residue_selector="downstream" custom_type="final"/>
  </SIMPLE_METRICS>

  <PROTOCOLS>
    <Add mover_name="ensure_jump"/>
    <Add metrics="starting_pymol_selection,final_pymol_selection" />
  </PROTOCOLS>
</ROSETTASCRIPTS>

See Also

See Also