Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Types | Private Attributes | List of all members
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]

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. More...
 
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. More...
 
virtual void update_xyz_coords (Stub &stub)
 update cartesian coordinates for this atom from its input stub and internal cooridnates More...
 
virtual void update_internal_coords (Stub &stub, bool const recursive=true)
 update internal coordinates for this atom from its xyz position and input stub More...
 
virtual void update_stub (Stub &stub) const
 update the stub without actually updating coordinates More...
 
virtual void set_dof (DOF_Type const type, core::Real const value)
 set degrees of freedom (internal coordinates) More...
 
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. More...
 
virtual core::Real dof (DOF_Type const type) const
 get degrees of freedom More...
 
virtual Jump const & jump () const
 abort if attempt to get jump for a bonded atom More...
 
virtual void jump (Jump const &)
 abort if attempt to set jump for a bonded atom More...
 
virtual void jump (Jump const &, AtomDOFChangeSet &)
 abort if attempt to set jump for a bonded atom More...
 
virtual AtomOP clone (AtomAP parent_in, AtomPointer2D &atom_pointer) const
 copy this atom More...
 
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 More...
 
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. More...
 
virtual bool is_jump () const
 bonded atom is a jump? of course not!!! More...
 
virtual bool keep_1st_child_pos () const
 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 More...
 
virtual bool keep_dof_fixed (DOF_Type const type) const
 whether a DOF for this atom should be fixed? More...
 
virtual void copy_coords (Atom const &src)
 copy DOFs, xyz's More...
 
AtomCOP stub_atom1 () const
 stub_atom1 of a bonded atom More...
 
AtomCOP stub_atom2 () const
 stub_atom2 of a bonded atom More...
 
AtomCOP stub_atom3 () const
 stub_atom3 of a bonded atom More...
 
- Public Member Functions inherited from core::kinematics::tree::Atom_
virtual ~Atom_ ()
 Destructor. More...
 
virtual void set_weak_ptr_to_self (AtomAP weak_ptr)
 Set the weak-pointer-to-self for this atom. Must be called after the Atom is created and put inside of an owning_ptr. Required for atoms to be able to hold pointers to their parents: parents must give child atoms weak pointers to themselves. More...
 
void update_internal_coords (bool const recursive)
 update internal coords of this atom and its offspring atoms (if recursive) More...
 
Real dihedral_between_bonded_children (AtomCOP child1, AtomCOP child2) const
 dihedral angle between two bonded children to this atom More...
 
void show () const
 dump out AtomID for this atom, its parent and all its offspring More...
 
void show (int const &n_level) const
 dump out AtomID for this atom, its parent and all its offspring up to n_level More...
 
void update_domain_map (int &current_color, int &biggest_color, DomainMap &domain_map, AtomID_Mask const &dof_moved, AtomID_Mask const &atom_moved) const
 update domain map More...
 
Atoms_ConstIterator atoms_begin () const
 starting const iterator of the children atom list More...
 
Atoms_ConstIterator atoms_end () const
 ending const iterator of the children atom list More...
 
Atoms_Iterator atoms_begin ()
 starting iterator of the children atom list More...
 
Atoms_Iterator atoms_end ()
 ending iterator of the children atom list More...
 
Size n_atom () const
 number of children atoms More...
 
void append_atom (AtomOP)
 append an atom as this atom's child More...
 
void delete_atom (AtomOP)
 remove an atom from this atom's children More...
 
void insert_atom (AtomOP)
 insert an atom as this atom's child More...
 
void insert_atom (AtomOP, int const )
 tries to insert at the position specified by the second argument More...
 
void replace_atom (AtomOP const old_atom, AtomOP const new_atom)
 replace the old atom by the new atom in the child atom list More...
 
AtomCOP get_nonjump_atom (Size const i) const
 get non-jump atom by its index from the children atoms list More...
 
Size n_children () const
 delete this atom and all its children More...
 
Size n_nonjump_children () const
 number of the non-jump child atoms More...
 
AtomCOP child (Size const k) const
 get a child atom by index (const method) More...
 
AtomOP child (Size const k)
 get a child atom by index More...
 
Size child_index (AtomCOP child) const
 the atom-index of this child More...
 
bool downstream (AtomCOP atom1) const
 whether atom1 is downstream of this atom. More...
 
AtomID const & id () const
 Atom identifier. More...
 
void id (AtomID const &id_in)
 AtomID assignment. More...
 
AtomID const & atom_id () const
 Atom identifier. More...
 
Position const & position () const
 Position. More...
 
void position (Position const &position_a)
 Position assignment. More...
 
Position const & xyz () const
 Position. More...
 
void xyz (Position const &position_a)
 Position assignment. More...
 
Length const & x () const
 x coordinate More...
 
Length const & y () const
 y coordinate More...
 
Length const & z () const
 z coordinate More...
 
Length distance (Atom const &atom) const
 Distance to an Atom. More...
 
Length distance_squared (Atom const &atom) const
 Distance squared to an Atom. More...
 
AtomCOP parent () const
 Parent atom pointer. More...
 
void parent (AtomAP parent_in)
 parent assignment More...
 
AtomOP parent ()
 Parent atom pointer. More...
 
Stub get_stub () const
 stub centerd at this atom More...
 
Stub get_input_stub () const
 stub used to build this atom More...
 
AtomID const & stub_atom1_id () const
 stub atom1 's id More...
 
AtomID const & stub_atom2_id () const
 stub atom2's id More...
 
AtomID const & stub_atom3_id () const
 stub atom3's id More...
 
AtomCOP input_stub_atom0 () const
 the center of the input stub for refolding this atom More...
 
AtomCOP input_stub_atom1 () const
 the first atom to construct the input stub for refolding this atom More...
 
AtomCOP input_stub_atom2 () const
 the second atom to construct the input stub for refolding this atom More...
 
AtomCOP input_stub_atom3 () const
 the third atom to construct the input stub for refolding this atom More...
 
AtomID const & input_stub_atom0_id () const
 input stub atom0's id More...
 
AtomID const & input_stub_atom1_id () const
 input stub atom1's id More...
 
AtomID const & input_stub_atom2_id () const
 input stub atom2's id More...
 
AtomID const & input_stub_atom3_id () const
 input stub atom3's id More...
 
AtomCOP previous_sibling () const
 routines for navigating the tree find the sibling atom before itself More...
 
AtomCOP previous_child (AtomCOP child) const
 find the child atom before this child in the list More...
 
AtomOP next_child (AtomCOP child)
 find the child atom after this child in the list More...
 
bool stub_defined () const
 whether a Stub can be defined for this atom More...
 
- Public Member Functions inherited from core::kinematics::tree::Atom
virtual ~Atom ()
 Destructor. More...
 

Private Types

typedef Atom_ Super
 

Private Attributes

Real phi_
 DOF properties of a bonded atom. More...
 
Real theta_
 
Real d_
 
bool dof_change_propagates_to_younger_siblings_
 Track whether a dof change from this node (since the last update_xyz) induces a coordinate change for this node's younger siblings. More...
 

Additional Inherited Members

- Public Types inherited from core::kinematics::tree::Atom
typedef PointPosition Position
 
typedef utility::vector0< AtomOPAtoms
 
typedef Atoms::ConstIterator Atoms_ConstIterator
 
typedef Atoms::Iterator Atoms_Iterator
 
typedef numeric::xyzMatrix< RealMatrix
 
typedef id::DOF_Type DOF_Type
 
typedef id::DOF_ID DOF_ID
 
typedef id::AtomID AtomID
 
typedef id::AtomID_Mask AtomID_Mask
 
typedef id::DOF_ID_Mask DOF_ID_Mask
 
typedef void iterator_category
 
typedef void difference_type
 
- Protected Member Functions inherited from core::kinematics::tree::Atom_
 Atom_ ()
 Default constructor. More...
 
 Atom_ (Atom_ const &atom)
 Copy constructor. More...
 
Atom_operator= (Atom_ const &atom)
 Copy assignment. More...
 
AtomAP this_weak_ptr ()
 Read access to the replacement "this" pointer. More...
 
AtomCAP this_weak_ptr () const
 Read access to the replacement "this" pointer. More...
 
void update_child_torsions (AtomOP const child)
 when subtrees have changed their coordinates More...
 
Atoms_ConstIterator nonjump_atoms_begin () const
 constant iterator of the first non-jump (bonded) atom in the vector of children atoms. More...
 
Atoms_Iterator nonjump_atoms_begin ()
 iterator of the first non-jump (bonded) atom in the vector of children atoms. More...
 
void abort_bad_call () const
 helper function to abort if something is wrong in atom tree More...
 
virtual void transform_Ax_plus_b_recursive (Matrix const &A, Vector const &b, ResidueCoordinateChangeList &res_change_list)
 Transform atom and children by linear transformation. More...
 
void get_path_from_root (utility::vector1< AtomCOP > &path) const
 
bool atom_is_on_path_from_root (AtomCOP atm) const
 
void note_dof_change (AtomDOFChangeSet &changset)
 Records this atom as having a changed DOF in the input list of Atoms with changed DOFs. For use in output-sensitive refold subroutine. More...
 
void note_xyz_uptodate ()
 To ensure proper function of the output-senstive refold subroutine, derived classes must invoke this function during their update_xyz_coord subroutines. More...
 
Size dof_refold_index () const
 read access for derived classes More...
 
- Protected Attributes inherited from core::kinematics::tree::Atom_
AtomAP this_weak_ptr_
 Each atom must hold a weak pointer to itself, and this weak pointer must be given to the atom at its construction. More...
 
AtomID atom_id_
 Atom ID. More...
 
AtomAP parent_
 Associated conformation Atom. More...
 
PointPosition position_
 xyz More...
 
Atoms atoms_
 Children atom pointers. More...
 

Detailed Description

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

See AtomTree overview and concepts for details.

Member Typedef Documentation

Constructor & Destructor Documentation

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

Referenced by clone().

Member Function Documentation

AtomOP core::kinematics::tree::BondedAtom::clone ( AtomAP  parent_in,
AtomPointer2D atom_pointer 
) const
virtual

copy this atom

Note
This will recursively clone all this atom's offspring atoms
Assumes that atom_pointer has already been properly dimensioned

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

References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), BondedAtom(), core::id::D, dof(), dof_change_propagates_to_younger_siblings_, core::kinematics::tree::Atom_::id(), core::id::PHI, core::kinematics::tree::Atom_::position(), and core::id::THETA.

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_::dfs(), dof_change_propagates_to_younger_siblings_, 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, d_, core::id::PHI, phi_, core::id::THETA, and 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
inlinevirtual

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
inlinevirtual

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 &  )
inlinevirtual

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  
)
inlinevirtual

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
inlinevirtual

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, d_, core::id::PHI, phi_, core::id::THETA, and theta_.

Referenced by 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 dof_change_propagates_to_younger_siblings_, 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.

AtomCOP core::kinematics::tree::BondedAtom::stub_atom1 ( ) const
inlinevirtual

stub_atom1 of a bonded atom

it is itself

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

AtomCOP core::kinematics::tree::BondedAtom::stub_atom2 ( ) const
inlinevirtual

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().

AtomCOP core::kinematics::tree::BondedAtom::stub_atom3 ( ) const
inlinevirtual

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 is_jump(), core::kinematics::tree::Atom_::parent(), stub_atom2(), 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(), d_, core::kinematics::Stub::is_orthogonal(), keep_dof_fixed(), core::kinematics::Stub::M, phi_, core::kinematics::tree::Atom_::position(), core::id::THETA, 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, and phi_.

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_end(), dof_change_propagates_to_younger_siblings_, 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(), d_, dof_change_propagates_to_younger_siblings_, core::kinematics::Stub::is_orthogonal(), keep_dof_fixed(), core::kinematics::Stub::M, core::kinematics::tree::Atom_::note_xyz_uptodate(), phi_, core::kinematics::tree::Atom_::position(), core::id::THETA, theta_, and core::kinematics::Stub::v.

Member Data Documentation

Real core::kinematics::tree::BondedAtom::d_
private
bool core::kinematics::tree::BondedAtom::dof_change_propagates_to_younger_siblings_
private

Track whether a dof change from this node (since the last update_xyz) induces a coordinate change for this node's younger siblings.

Referenced by clone(), dfs(), set_dof(), and update_xyz_coords().

Real core::kinematics::tree::BondedAtom::phi_
private

DOF properties of a bonded atom.

  • a bonded atom is an atom who connects to its parent by a "bond" (covalent or virtual) and therefore its position is defined by three internal coordinates: d_, theta_, and phi_.
  • d_ is the bond distance between this atom and its parent.
  • theta_ is the bond angle between this atom(A), its parent's stub_atom1(B) and its parent's stub_atom2(C), i.e., angle in between B->A ^ C->B.
  • phi_ is either the torsion angle defined by A, B, C and D (C's parents), or the improper angle defined by A, B, C and D (B's child and A's previous sibling).

Referenced by copy_coords(), dof(), set_dof(), update_internal_coords(), update_stub(), and update_xyz_coords().

Real core::kinematics::tree::BondedAtom::theta_
private

The documentation for this class was generated from the following files: