Rosetta 3.4
Public Member Functions
core::kinematics::tree::JumpAtom Class Reference

an atom who are connected to its parent via rigid-body transformation "Jump" More...

#include <JumpAtom.hh>

Inheritance diagram for core::kinematics::tree::JumpAtom:
Inheritance graph
[legend]
Collaboration diagram for core::kinematics::tree::JumpAtom:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void dfs (AtomDOFChangeSet &changeset, ResidueCoordinateChangeList &res_change_list, Size const start_atom_index) const
 Perform a depth-first traversal of the tree that would be effected by a DOF change from this atom. Stop at atoms that have already been traversed.
virtual void update_xyz_coords ()
 The atom must retrieve an appropriate stub from its parent; it is the root of the subtree being refolded. Valid only if this atom is the maximal root of a subtree requiring coordinate updates -- if any ancestor of this atom requires a coordinate update, then the Stub this atom generates for itself will be invalid.
virtual void update_xyz_coords (Stub &stub)
 update this atom's xyz position
virtual void update_internal_coords (Stub &stub, bool const recursive=true)
 update the jump info
virtual void set_dof (DOF_Type const type, Real const value)
 set a degree of freedom for jump
virtual void set_dof (DOF_Type const type, core::Real const value, AtomDOFChangeSet &changeset)
 set degrees of freedom (internal coordinates). For use in output-sensitive refold subroutine.
virtual Real dof (DOF_Type const type) const
 get a degree of freedom from jump
virtual Jump const & jump () const
 access the jump
virtual void jump (Jump const &jump_in)
 set the jump
virtual void jump (Jump const &jump_in, AtomDOFChangeSet &changeset)
 set the jump. For use with output-sensitive refold subroutine.
virtual Atomclone (Atom *parent_in, AtomPointer2D &atom_pointer) const
 copy this atom
virtual void setup_min_map (DOF_ID &last_torsion, DOF_ID_Mask const &allow_move, MinimizerMapBase &min_map) const
 for minimizing, add DOF(RB) for a JumpAtom into the MinimizerMap
virtual void get_dof_axis_and_end_pos (Vector &axis, Position &end_pos, DOF_Type const type) const
 get rotation axis and end_pos for a JumpAtom.
virtual bool is_jump () const
 a jump atom is a jump? of course yes!!!
virtual bool keep_1st_child_pos () const
 when other atoms are inserted insert after 1st child if available.
virtual bool keep_dof_fixed (DOF_Type const type) const
 whether a jump should be fixed in some special cases
virtual void copy_coords (Atom const &src)
 copy DOFs, xyz's
virtual void update_stub (Stub &) const
 update the stub without actually updating coordinates
Atom const * stub_atom1 () const
 stub_atom1 of a jump-atom
Atom const * stub_atom2 () const
 stub_atom2 of a jump-atom
Atom const * stub_atom3 () const
 stub_atom3 of a jump atom

Detailed Description

an atom who are connected to its parent via rigid-body transformation "Jump"

See AtomTree overview and concepts for details.


Member Function Documentation

Atom * core::kinematics::tree::JumpAtom::clone ( Atom parent_in,
AtomPointer2D atom_pointer 
) const [virtual]
void core::kinematics::tree::JumpAtom::copy_coords ( Atom const &  src) [virtual]
void core::kinematics::tree::JumpAtom::dfs ( AtomDOFChangeSet changeset,
ResidueCoordinateChangeList res_change_list,
Size const  start_atom_index 
) const [virtual]

Perform a depth-first traversal of the tree that would be effected by a DOF change from this atom. Stop at atoms that have already been traversed.

Invokes Atom_ dfs function (which visits the subtree routed at this node). No younger siblings are effected by a DOF change at a JumpAtom.

Reimplemented from core::kinematics::tree::Atom_.

Real core::kinematics::tree::JumpAtom::dof ( DOF_Type const  type) const [virtual]

get a degree of freedom from jump

Note:
along n2c direction

Implements core::kinematics::tree::Atom.

References core::kinematics::Jump::get_rb_delta(), core::id::get_rb_number(), and protocols::rigid::n2c.

void core::kinematics::tree::JumpAtom::get_dof_axis_and_end_pos ( Vector axis,
Position end_pos,
DOF_Type const  type 
) const [virtual]

get rotation axis and end_pos for a JumpAtom.

  • axis is the unit vector along the rotation axis for that DOF(Eab). 2li end_pos is the ending point of this unit vector(Vb).

RB1, RB2 and RB3 are translation along x, y and z axis in the jump_start (input_stub) frame, which are input_stub.col(1), input_stub.col(2) and input_stub.col(3).
RB4, RB5 and RB6 are rotations along x, y and z axis in the input_stub frame, and the rotation is applied around the point of "rb_center" written in the jump_end (my_stub) frame. So "end_pos"for these 3 DOFs is the rb_center rewritten in xyz frame, which is my_stub.V+my_stub.M*rb_center. The axis is not simply x, y and z in the input_stub because these 3 DOFs are not independently applied. Here are how they are derived (by me and there might be other smarter way to think of it):

  • the jump rotation matrix is R = Rz(RB6) * Ry(RB5) * Rx(RB4) * rt.rotation.
  • if RB6 is perturbed by "d", the new rotation matrix is R' = Rz(d+RB6) * Ry(RB5) * Rx(RB4) * rt.rotation = Rz(d) * Rz(RB6) * Ry(RB5) * Rx(RB4) * rt.rotation = Rz(d) * R. This is to say perturbing RB6 by d is equivalent to making an extra rotation around Z axis in the input_stub frame and therefore the axis is just input_stub.col(3).
  • if RB5 is perturbed by "d", the new rotation matrix is R' = Rz(RB6) * Ry(d+RB5) * Rx(RB4) * rt.rotation = Rz(RB6) * Ry(d) * Ry(RB5) * Rx(RB4) * rt.rotation = Rz(RB6) * Ry(d) * Rz(RB6)^ * R. This is to say perturbing RB5 by d is equivalent to making an extra rotation Rz(RB6) * Ry(d) * Rz(RB6)^ in the input_stub frame and the axis of rotation is the one we try to get. what is it? Remember this rotation matrix is in the context of the input_stub frame M, so rewritting it in the xyz lab frame results in M * Rz(RB6) * Ry(d) * Rz(RB6)^ * M^. Since for matrices (A*B)^ = B^ * A^, we get (M *Rz(RB6)) * Ry(d) * (M * Rz(RB6))^ and this is eqivanelent to making a rotation around y axis in the frame of (M *Rz(RB6)) and therefore the axis is (input_stub.M * Z_rotation ).col(2)
  • similarly, one can the axis for a perturbation to RB4 DOF.

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::get_input_stub(), core::kinematics::Jump::get_rb_center(), core::kinematics::Jump::get_rb_delta(), core::id::get_rb_number(), core::kinematics::tree::Atom_::get_stub(), core::kinematics::Stub::M, protocols::rigid::n2c, core::id::RB4, core::id::RB5, core::id::RB6, and core::kinematics::Stub::v.

virtual bool core::kinematics::tree::JumpAtom::is_jump ( ) const [inline, virtual]

a jump atom is a jump? of course yes!!!

Implements core::kinematics::tree::Atom.

void core::kinematics::tree::JumpAtom::jump ( Jump const &  jump_in) [virtual]

set the jump

Implements core::kinematics::tree::Atom.

Jump const & core::kinematics::tree::JumpAtom::jump ( ) const [virtual]

access the jump

Implements core::kinematics::tree::Atom.

void core::kinematics::tree::JumpAtom::jump ( Jump const &  jump_in,
AtomDOFChangeSet changeset 
) [virtual]

set the jump. For use with output-sensitive refold subroutine.

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::note_dof_change().

virtual bool core::kinematics::tree::JumpAtom::keep_1st_child_pos ( ) const [inline, virtual]

when other atoms are inserted insert after 1st child if available.

--> this enables us to keep a stub of Downstream Jump atoms inside a single residue

Implements core::kinematics::tree::Atom.

bool core::kinematics::tree::JumpAtom::keep_dof_fixed ( DOF_Type const  type) const [virtual]

whether a jump should be fixed in some special cases

the root jump is not flexible (currently)

Reimplemented from core::kinematics::tree::Atom_.

References core::kinematics::tree::Atom_::parent().

Referenced by setup_min_map().

void core::kinematics::tree::JumpAtom::set_dof ( DOF_Type const  type,
Real const  value 
) [virtual]

set a degree of freedom for jump

Note:
along n2c direction

Implements core::kinematics::tree::Atom.

References core::id::get_rb_number(), protocols::rigid::n2c, core::kinematics::tree::Atom_::parent(), and core::kinematics::Jump::set_rb_delta().

Referenced by set_dof().

void core::kinematics::tree::JumpAtom::set_dof ( DOF_Type const  type,
core::Real const  value,
AtomDOFChangeSet set 
) [virtual]

set degrees of freedom (internal coordinates). For use in output-sensitive refold subroutine.

calls set_dof non-polymorphically: assumption is that JumpAtom is not subclassed, or, that if it is, that the derived class implements this overloaded set_dof function.

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::note_dof_change(), and set_dof().

void core::kinematics::tree::JumpAtom::setup_min_map ( DOF_ID last_torsion,
DOF_ID_Mask const &  allow_move,
MinimizerMapBase min_map 
) const [virtual]

for minimizing, add DOF(RB) for a JumpAtom into the MinimizerMap

last torsion is the torsion( Phi for BondedAtom and RB for JumpAtom) of the parent atom or the previous bonded sibling. Since unlike BondedAtom, JumpAtom's RB is independent from other sibling atoms, this will not modify last_torsion, unlike Atom::setup_min_map. recursively done all its offspring

Implements core::kinematics::tree::Atom.

References core::kinematics::MinimizerMapBase::add_atom(), core::kinematics::MinimizerMapBase::add_torsion(), core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::id::get_rb_type(), keep_dof_fixed(), and core::kinematics::tree::Atom_::parent().

Atom const* core::kinematics::tree::JumpAtom::stub_atom1 ( ) const [inline, virtual]

stub_atom1 of a jump-atom

it is itself if a stub can be defined for it. Otherwise it is parent

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::parent(), and core::kinematics::tree::Atom_::stub_defined().

Atom const* core::kinematics::tree::JumpAtom::stub_atom2 ( ) const [inline, virtual]

stub_atom2 of a jump-atom

it is its first bonded child if a stub can be defined for it. Otherwise it is parent's stub_atom2.

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::get_nonjump_atom(), core::kinematics::tree::Atom_::parent(), core::kinematics::tree::Atom::stub_atom2(), and core::kinematics::tree::Atom_::stub_defined().

Atom const* core::kinematics::tree::JumpAtom::stub_atom3 ( ) const [inline, virtual]

stub_atom3 of a jump atom

it is its child's child or its second child if a stub can be defined for it, otherwise it is its parent's stub_atom3

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom::get_nonjump_atom(), core::kinematics::tree::Atom_::get_nonjump_atom(), core::kinematics::tree::Atom_::parent(), core::kinematics::tree::Atom::stub_atom3(), and core::kinematics::tree::Atom_::stub_defined().

void core::kinematics::tree::JumpAtom::update_internal_coords ( Stub stub,
bool const  recursive = true 
) [virtual]

update the jump info

update the jump from the input stub and this atom's own stub. If defined, will recursively update internal coords for all its offspring atoms.

Note:
the input stub is not changed

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::Jump::from_stubs(), core::kinematics::tree::Atom_::get_stub(), and core::kinematics::Stub::is_orthogonal().

virtual void core::kinematics::tree::JumpAtom::update_stub ( Stub ) const [inline, virtual]

update the stub without actually updating coordinates

since for a jump atom, update internal coords or xyz dont change input jump, so we do not do anything here

Implements core::kinematics::tree::Atom.

void core::kinematics::tree::JumpAtom::update_xyz_coords ( ) [virtual]

The atom must retrieve an appropriate stub from its parent; it is the root of the subtree being refolded. Valid only if this atom is the maximal root of a subtree requiring coordinate updates -- if any ancestor of this atom requires a coordinate update, then the Stub this atom generates for itself will be invalid.

Relies on get_input_stub, which will use the coordinates of this atom's ancestors to build a stub. If this function has been invoked by AtomTree update_xyz_coords(), then these coordinates are guaranteed correct, since this atom is the root of a tree which needs to be refolded. Ergo, nothing in the tree above this atom needs to be refolded.

Reimplemented from core::kinematics::tree::Atom_.

References core::kinematics::tree::Atom_::get_input_stub().

void core::kinematics::tree::JumpAtom::update_xyz_coords ( Stub stub) [virtual]

update this atom's xyz position

call make_jump to "jump" from parent to this atom. Will recursively update xyz positions for all its offspring atoms.

Note:
the input stub is not changed

Implements core::kinematics::tree::Atom.

References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::Stub::is_orthogonal(), core::kinematics::Jump::make_jump(), core::kinematics::tree::Atom_::note_xyz_uptodate(), and core::kinematics::tree::Atom_::position().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines