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

an atom which are bonded to its parentt, derived from Atom_ More...

#include <BondedAtom.hh>

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

List of all members.

Public Member Functions

 BondedAtom ()
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. Will recurse on younger siblings if a phi on this atom has changed.
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 cartesian coordinates for this atom from its input stub and internal cooridnates
virtual void update_internal_coords (Stub &stub, bool const recursive=true)
 update internal coordinates for this atom from its xyz position and input stub
virtual void update_stub (Stub &stub) const
 update the stub without actually updating coordinates
virtual void set_dof (DOF_Type const type, core::Real const value)
 set degrees of freedom (internal coordinates)
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 core::Real dof (DOF_Type const type) const
 get degrees of freedom
virtual Jump const & jump () const
 abort if attempt to get jump for a bonded atom
virtual void jump (Jump const &)
 abort if attempt to set jump for a bonded atom
virtual void jump (Jump const &, AtomDOFChangeSet &)
 abort if attempt to set jump for a bonded atom
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(PHI,THETA,D) for a BondedAtom 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 BondedAtom.
virtual bool is_jump () const
 bonded atom is a jump? of course not!!!
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 DOF for this atom should be fixed?
virtual void copy_coords (Atom const &src)
 copy DOFs, xyz's
Atom const * stub_atom1 () const
 stub_atom1 of a bonded atom
Atom const * stub_atom2 () const
 stub_atom2 of a bonded atom
Atom const * stub_atom3 () const
 stub_atom3 of a bonded atom

Detailed Description

an atom which are bonded to its parentt, derived from Atom_

See AtomTree overview and concepts for details.


Constructor & Destructor Documentation

core::kinematics::tree::BondedAtom::BondedAtom ( ) [inline]

Referenced by clone().


Member Function Documentation

Atom * core::kinematics::tree::BondedAtom::clone ( Atom parent_in,
AtomPointer2D atom_pointer 
) const [virtual]
void core::kinematics::tree::BondedAtom::copy_coords ( Atom const &  src) [virtual]
void core::kinematics::tree::BondedAtom::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. Will recurse on younger siblings if a phi on this atom has changed.

Invokes Atom_ dfs function before, optionally recursing to younger siblings should those younger siblings be effected by a DOF change on this node (e.g. phi_ change).

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

References core::kinematics::tree::Atom::atoms_begin(), core::kinematics::tree::Atom::atoms_end(), core::kinematics::tree::Atom_::dof_refold_index(), and core::kinematics::tree::Atom_::parent_.

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

get degrees of freedom

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

References core::id::D, core::id::PHI, and core::id::THETA.

Referenced by clone().

void core::kinematics::tree::BondedAtom::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 BondedAtom.

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

consider simple case like, A->B->C->D and we want to know the change of D position with respect to the rotation along B->C bond( dr/dphi). In this case, Eab is the unit vector along B->C, end_positon is C, and dr/dphi is given as Eab x (D-C).
For B->C bond rotation is the DOF(PHI) of Atom D, so end_pos is input_stub.v which is the position of Atom C and axis is input_stub.M.col(1) which is the unit vector pointing from B to C.
For DOF(THETA) of Atom D, it is a rotation around a unit vector (ending at C) which is perpendicular to B->C->D plane. So the end_pos is the position of Atom C and the axix is the my_stub.M.col(3). For DOF(D) of Atom D, it is a translation along C->D axis and that is my_stub.M.col(1)

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

References core::id::D, core::kinematics::tree::Atom_::get_input_stub(), core::kinematics::tree::Atom_::get_stub(), core::kinematics::Stub::M, core::id::PHI, core::id::THETA, and core::kinematics::Stub::v.

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

bonded atom is a jump? of course not!!!

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

Referenced by keep_dof_fixed(), and stub_atom3().

virtual Jump const& core::kinematics::tree::BondedAtom::jump ( ) const [inline, virtual]

abort if attempt to get jump for a bonded atom

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

References core::kinematics::tree::Atom_::abort_bad_call(), and core::kinematics::tree::BOGUS_JUMP.

virtual void core::kinematics::tree::BondedAtom::jump ( Jump const &  ) [inline, virtual]

abort if attempt to set jump for a bonded atom

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

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

virtual void core::kinematics::tree::BondedAtom::jump ( Jump const &  ,
AtomDOFChangeSet  
) [inline, virtual]

abort if attempt to set jump for a bonded atom

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

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

virtual bool core::kinematics::tree::BondedAtom::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::BondedAtom::keep_dof_fixed ( DOF_Type const  type) const [virtual]

whether a DOF for this atom should be fixed?

  • bond distance D can always be flexible
  • bond angle THETA is not meaningful if it is defined by A-B-A in some special cases, for example N-CA-C in which CA is a jump atom, then THETA of the N atom is defined by N-CA-N.
  • torsion angle PHI is not meaningful if it is defined by A-B-A-D or A-B-D-A or A-D-B-A in some special cases.

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

References core::id::D, is_jump(), core::kinematics::tree::Atom_::parent(), core::id::PHI, core::kinematics::tree::Atom_::stub_atom2_id(), core::kinematics::tree::Atom_::stub_atom3_id(), and core::id::THETA.

Referenced by setup_min_map(), update_internal_coords(), and update_xyz_coords().

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

set degrees of freedom (internal coordinates)

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

References core::id::D, core::id::PHI, and core::id::THETA.

Referenced by clone(), and set_dof().

void core::kinematics::tree::BondedAtom::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 BondedAtom 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(), core::id::PHI, and set_dof().

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

for minimizing,add DOF(PHI,THETA,D) for a BondedAtom into the MinimizerMap

last torsion is the torsion( Phi for BondedAtom and RB for JumpAtom) of the parent atom or previous bonded sibling. Since BondedAtom's PHI is dependent on its previous sibling BondedAtom,this may modify last_torsion, if our bond torsion angle is changing and this atom has other sibling atoms after itself. 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::D, keep_dof_fixed(), core::id::PHI, core::id::phi_torsion(), and core::id::THETA.

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

stub_atom1 of a bonded atom

it is itself

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

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

stub_atom2 of a bonded atom

it is its parent

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

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

Referenced by stub_atom3().

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

stub_atom3 of a bonded atom

  • if this atom's parent is a bonded_atom it is this atom's parent's parent.
  • if this atom's parent is a jump atom, it is this atom's first non-jump sibling or its second non-jump sibling (if it itself is the first) or its first non-jump child (if it does not have any sibling)

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

References core::kinematics::tree::Atom::id(), is_jump(), core::kinematics::tree::Atom_::parent(), core::kinematics::tree::Atom::stub_atom2(), stub_atom2(), core::kinematics::tree::Atom::stub_atom3(), and core::kinematics::tree::Atom_::stub_defined().

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

update internal coordinates for this atom from its xyz position and input stub

starting from the input stub, calculate the internal coordinates d_, theta_ and phi_ for this atom. If recusrvie is true, obtain the new stub centered at this atom and pass the new stub to all its children atoms to update their internal coordinates recursively.

Note:
stub passed in is modified by rotating phi_ around x in the stub frame

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

References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::Stub::is_orthogonal(), keep_dof_fixed(), core::kinematics::Stub::M, core::kinematics::tree::Atom_::position(), core::id::THETA, core::kinematics::Stub::v, core::kinematics::tree::Atom_::x(), core::kinematics::tree::Atom_::y(), and core::kinematics::tree::Atom_::z().

void core::kinematics::tree::BondedAtom::update_stub ( Stub stub) const [virtual]

update the stub without actually updating coordinates

pass out the stub we would pass out if we were actually updating coords or DOFs, which is rotate the stub around its x axis by phi_.

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

References core::kinematics::Stub::M.

void core::kinematics::tree::BondedAtom::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::atoms_begin(), core::kinematics::tree::Atom::atoms_end(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::tree::Atom_::get_input_stub(), core::kinematics::tree::Atom_::parent(), and core::kinematics::tree::Atom_::parent_.

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

update cartesian coordinates for this atom from its input stub and internal cooridnates

starting from the input stub, calculate xyz position of this atom from its internal coordinates d_, theta_ and phi_. If recusrvie is true, obtain the new stub centered at this atom and pass the new stub to all its children atoms to update their xyz positions recursively.

Note:
stub passed in is modified by rotating phi_ around x in the stub frame

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

References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::Stub::is_orthogonal(), keep_dof_fixed(), core::kinematics::Stub::M, core::kinematics::tree::Atom_::note_xyz_uptodate(), core::kinematics::tree::Atom_::position(), core::id::THETA, and core::kinematics::Stub::v.


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