Rosetta
Public Member Functions | Private Types | Private Attributes | List of all members
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]

Public Member Functions

void dfs (AtomDOFChangeSet &changeset, ResidueCoordinateChangeList &res_change_list, Size const start_atom_index) const override
 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. More...
 
void update_xyz_coords () override
 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...
 
void update_xyz_coords (Stub &stub) override
 update this atom's xyz position More...
 
void update_internal_coords (std::deque< std::pair< Atom *, core::kinematics::Stub * > > *childlist, std::deque< core::kinematics::Stub > *stublist, Stub &stub) override
 Update the jump info. More...
 
void set_dof (DOF_Type const type, Real const value) override
 set a degree of freedom for jump More...
 
void set_dof (DOF_Type const type, core::Real const value, AtomDOFChangeSet &changeset) override
 set degrees of freedom (internal coordinates). For use in output-sensitive refold subroutine. More...
 
Real dof (DOF_Type const type) const override
 get a degree of freedom from jump More...
 
Jump const & jump () const override
 access the jump More...
 
void jump (Jump const &jump_in) override
 set the jump More...
 
void jump (Jump const &jump_in, AtomDOFChangeSet &changeset) override
 set the jump. For use with output-sensitive refold subroutine. More...
 
AtomOP shallow_clone () const override
 copy this atom, without connections More...
 
std::pair< bool, bool > get_inversion ()
 
void steal_inversion (AtomOP steal_from) override
 
void setup_min_map (DOF_ID &last_torsion, DOF_ID_Mask const &allow_move, MinimizerMapBase &min_map) const override
 for minimizing, add DOF(RB) for a JumpAtom into the MinimizerMap More...
 
void get_dof_axis_and_end_pos (Vector &axis, Position &end_pos, DOF_Type const type) const override
 get rotation axis and end_pos for a JumpAtom. More...
 
bool is_jump () const override
 a jump atom is a jump? of course yes!!! More...
 
bool keep_1st_child_pos () const override
 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...
 
bool keep_dof_fixed (DOF_Type const type) const override
 whether a jump should be fixed in some special cases More...
 
void copy_coords (Atom const &src) override
 copy DOFs, xyz's More...
 
void update_stub (Stub &) const override
 update the stub without actually updating coordinates More...
 
AtomCOP stub_atom1 () const override
 stub_atom1 of a jump-atom More...
 
AtomCOP stub_atom2 () const override
 stub_atom2 of a jump-atom More...
 
AtomCOP stub_atom3 () const override
 stub_atom3 of a jump atom More...
 
Atom const * raw_stub_atom1 () const override
 Rapid (increment-of-reference-count-avoiding) access to the fist stub atom. More...
 
Atom const * raw_stub_atom2 () const override
 Rapid (increment-of-reference-count-avoiding) access to the second stub atom. More...
 
Atom const * raw_stub_atom3 () const override
 Rapid (increment-of-reference-count-avoiding) access to the third stub atom. More...
 
void update_internal_coords (bool const recursive) override
 update internal coords of this atom and its offspring atoms (if recursive) More...
 
void update_internal_coords (Stub &stub, bool const recursive=true) override
 Update internal coordinates for this atom and possibly all children. More...
 
virtual void update_internal_coords (std::deque< std::pair< Atom *, core::kinematics::Stub * > > *childlist, std::deque< core::kinematics::Stub > *stublist, Stub &stub)=0
 update internal coords from stub and xyz coords. More...
 
virtual void update_internal_coords (Stub &stub, bool const recursive=true)=0
 Update internal coordinates for this atom and possibly all children. More...
 
virtual void update_internal_coords (bool const recursive)=0
 calculate my input_stub from the current xyz's and use that input_stub to update my torsions More...
 
- Public Member Functions inherited from core::kinematics::tree::Atom_
 ~Atom_ () override
 Destructor. More...
 
AtomOP clone (AtomAP parent_in, AtomPointer2D &atom_pointer) const override
 copy atom with new memory allocation More...
 
void update_internal_coords (bool const recursive) override
 update internal coords of this atom and its offspring atoms (if recursive) More...
 
void update_internal_coords (Stub &stub, bool const recursive=true) override
 Update internal coordinates for this atom and possibly all children. More...
 
Real dihedral_between_bonded_children (Atom const &child1, Atom const &child2) const override
 dihedral angle between two bonded children to this atom More...
 
void show () const override
 dump out AtomID for this atom, its parent and all its offspring More...
 
void show (int const &n_level) const override
 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 override
 update domain map More...
 
Atoms_ConstIterator atoms_begin () const override
 starting const iterator of the children atom list More...
 
Atoms_ConstIterator atoms_end () const override
 ending const iterator of the children atom list More...
 
Atoms_Iterator atoms_begin () override
 starting iterator of the children atom list More...
 
Atoms_Iterator atoms_end () override
 ending iterator of the children atom list More...
 
Size n_atom () const override
 number of children atoms More...
 
void append_atom (AtomOP) override
 append an atom as this atom's child More...
 
void delete_atom (AtomOP) override
 remove an atom from this atom's children More...
 
void insert_atom (AtomOP) override
 insert an atom as this atom's child More...
 
void insert_atom (AtomOP, int const) override
 tries to insert at the position specified by the second argument More...
 
void replace_atom (AtomOP const old_atom, AtomOP const new_atom) override
 replace the old atom by the new atom in the child atom list More...
 
AtomCOP get_nonjump_atom (Size const i) const override
 get non-jump atom by its index from the children atoms list More...
 
Size n_children () const override
 number of the child atoms More...
 
Size n_nonjump_children () const override
 number of the non-jump child atoms More...
 
AtomCOP child (Size const k) const override
 get a child atom by index (const method) More...
 
AtomOP child (Size const k) override
 get a child atom by index More...
 
Size child_index (AtomCOP child) const override
 the atom-index of this child More...
 
Size raw_child_index (Atom const *child) const override
 the atom-index of this child More...
 
bool downstream (AtomCOP atom1) const override
 whether atom1 is downstream of this atom. More...
 
AtomID const & id () const override
 Atom identifier. More...
 
void id (AtomID const &id_in) override
 AtomID assignment. More...
 
AtomID const & atom_id () const override
 Atom identifier. More...
 
Position const & position () const override
 Position. More...
 
void position (Position const &position_a) override
 Position assignment. More...
 
Position const & xyz () const override
 Position. More...
 
void xyz (Position const &position_a) override
 Position assignment. More...
 
Length const & x () const override
 x coordinate More...
 
Length const & y () const override
 y coordinate More...
 
Length const & z () const override
 z coordinate More...
 
Length distance (Atom const &atom) const override
 Distance to an Atom. More...
 
Length distance_squared (Atom const &atom) const override
 Distance squared to an Atom. More...
 
AtomOP parent () override
 Parent atom pointer. More...
 
AtomCOP parent () const override
 Parent atom pointer. More...
 
void parent (AtomAP parent_in) override
 parent assignment More...
 
Stub get_stub () const override
 stub centerd at this atom More...
 
Stub get_input_stub () const override
 stub used to build this atom More...
 
AtomID const & stub_atom1_id () const override
 stub atom1 's id More...
 
AtomID const & stub_atom2_id () const override
 stub atom2's id More...
 
AtomID const & stub_atom3_id () const override
 stub atom3's id More...
 
AtomCOP input_stub_atom0 () const override
 the center of the input stub for refolding this atom More...
 
AtomCOP input_stub_atom1 () const override
 the first atom to construct the input stub for refolding this atom More...
 
AtomCOP input_stub_atom2 () const override
 the second atom to construct the input stub for refolding this atom More...
 
AtomCOP input_stub_atom3 () const override
 the third atom to construct the input stub for refolding this atom More...
 
AtomID const & input_stub_atom0_id () const override
 input stub atom0's id More...
 
AtomID const & input_stub_atom1_id () const override
 input stub atom1's id More...
 
AtomID const & input_stub_atom2_id () const override
 input stub atom2's id More...
 
AtomID const & input_stub_atom3_id () const override
 input stub atom3's id More...
 
AtomCOP previous_sibling () const override
 routines for navigating the tree find the sibling atom before itself More...
 
AtomCOP previous_child (AtomCOP child) const override
 find the child atom before this child in the list More...
 
AtomOP next_child (AtomCOP child) override
 find the child atom after this child in the list More...
 
bool stub_defined () const override
 whether a Stub can be defined for this atom More...
 
Atom const * raw_parent () const override
 Rapid (increment-of-reference-count-avoiding) access to the parent atom pointer. More...
 
Atom const * raw_previous_sibling () const override
 Rapid (increment-of-reference-count-avoiding) access to the previous sibling pointer, i.e. the first child in the parent's children list to precede this atom. More...
 
Atom const * raw_previous_child (Atom const *child) const override
 Rapid (increment-of-reference-count-avoiding) access to the previous child pointer;. More...
 
Atom const * raw_input_stub_atom0 () const override
 Rapid (increment-of-reference-count-avoiding) access to the 0th input stub atom;. More...
 
Atom const * raw_input_stub_atom1 () const override
 Rapid (increment-of-reference-count-avoiding) access to the 1st input stub atom;. More...
 
Atom const * raw_input_stub_atom2 () const override
 Rapid (increment-of-reference-count-avoiding) access to the 2nd input stub atom;. More...
 
Atom const * raw_input_stub_atom3 () const override
 Rapid (increment-of-reference-count-avoiding) access to the 3rd input stub atom;. More...
 
Atom const * raw_get_nonjump_atom (Size const i) const override
 Rapid (increment-of-reference-count-avoiding) access to the ith non-jump atom in this atom's list of children. More...
 
virtual void update_xyz_coords ()=0
 The atom must retrieve an appropriate stub from its parent; it is the root of the subtree being refolded. More...
 
virtual void update_xyz_coords (Stub &stub)=0
 update xyz coords from stub and internal coords and More...
 
virtual void update_internal_coords (std::deque< std::pair< Atom *, core::kinematics::Stub * > > *childlist, std::deque< core::kinematics::Stub > *stublist, Stub &stub)=0
 update internal coords from stub and xyz coords. More...
 
virtual void update_internal_coords (Stub &stub, bool const recursive=true)=0
 Update internal coordinates for this atom and possibly all children. More...
 
virtual void update_internal_coords (bool const recursive)=0
 calculate my input_stub from the current xyz's and use that input_stub to update my torsions More...
 
virtual void insert_atom (AtomOP)=0
 
virtual void insert_atom (AtomOP, int const)=0
 
- Public Member Functions inherited from core::kinematics::tree::Atom
AtomCOP get_self_ptr () const
 
AtomOP get_self_ptr ()
 
AtomCAP get_self_weak_ptr () const
 
AtomAP get_self_weak_ptr ()
 

Private Types

typedef Atom_ Super
 

Private Attributes

Jump jump_
 Jump. 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...
 
void update_child_torsions (AtomOP const child) override
 when subtrees have changed their coordinates More...
 
Atoms_ConstIterator nonjump_atoms_begin () const override
 constant iterator of the first non-jump (bonded) atom in the vector of children atoms. More...
 
Atoms_Iterator nonjump_atoms_begin () override
 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...
 
void transform_Ax_plus_b_recursive (Matrix const &A, Vector const &b, ResidueCoordinateChangeList &res_change_list) override
 Transform atom and children by linear transformation. More...
 
void get_path_from_root (utility::vector1< AtomCAP > &path) const override
 
bool atom_is_on_path_from_root (AtomCOP atm) const override
 
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 Member Functions inherited from core::kinematics::tree::Atom
 Atom ()=default
 Default constructor. More...
 
 Atom (Atom const &)=default
 Copy constructor. More...
 
Atomoperator= (Atom const &)=default
 Copy assignment. More...
 
- Protected Attributes inherited from core::kinematics::tree::Atom_
AtomID atom_id_
 Atom ID. More...
 
AtomAP parent_
 Associated conformation Atom. More...
 
Atomraw_parent_
 Workaround copy of the parent pointer for use in functions where locking and unlocking the parent_ pointer would be prohibitively slow. More...
 
PointPosition position_
 xyz More...
 
Atoms atoms_
 Children atom pointers. More...
 

Detailed Description

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

See AtomTree overview and concepts for details.

Member Typedef Documentation

◆ Super

Member Function Documentation

◆ copy_coords()

void core::kinematics::tree::JumpAtom::copy_coords ( Atom const &  src)
overridevirtual

◆ dfs()

void core::kinematics::tree::JumpAtom::dfs ( AtomDOFChangeSet changeset,
ResidueCoordinateChangeList res_change_list,
Size const  start_atom_index 
) const
overridevirtual

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_.

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

◆ dof()

Real core::kinematics::tree::JumpAtom::dof ( DOF_Type const  type) const
overridevirtual

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(), jump_, and protocols::rigid::n2c.

◆ get_dof_axis_and_end_pos()

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

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_invert_downstream(), core::kinematics::Jump::get_invert_upstream(), core::kinematics::Jump::get_rb_center(), core::kinematics::Jump::get_rb_delta(), core::id::get_rb_number(), core::kinematics::tree::Atom_::get_stub(), jump_, core::kinematics::Stub::M, core::kinematics::Jump::mirror_z_transform, protocols::rigid::n2c, core::id::RB4, core::id::RB5, core::id::RB6, and core::kinematics::Stub::v.

◆ get_inversion()

std::pair<bool,bool> core::kinematics::tree::JumpAtom::get_inversion ( )
inline

◆ is_jump()

bool core::kinematics::tree::JumpAtom::is_jump ( ) const
inlineoverridevirtual

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

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

◆ jump() [1/3]

Jump const & core::kinematics::tree::JumpAtom::jump ( ) const
overridevirtual

access the jump

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

References jump_.

◆ jump() [2/3]

void core::kinematics::tree::JumpAtom::jump ( Jump const &  jump_in)
overridevirtual

set the jump

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

References jump_.

◆ jump() [3/3]

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

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

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

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

◆ keep_1st_child_pos()

bool core::kinematics::tree::JumpAtom::keep_1st_child_pos ( ) const
inlineoverridevirtual

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.

◆ keep_dof_fixed()

bool core::kinematics::tree::JumpAtom::keep_dof_fixed ( DOF_Type const  type) const
overridevirtual

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

◆ raw_stub_atom1()

Atom const * core::kinematics::tree::JumpAtom::raw_stub_atom1 ( ) const
overridevirtual

Rapid (increment-of-reference-count-avoiding) access to the fist stub atom.

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

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

◆ raw_stub_atom2()

Atom const * core::kinematics::tree::JumpAtom::raw_stub_atom2 ( ) const
overridevirtual

◆ raw_stub_atom3()

Atom const * core::kinematics::tree::JumpAtom::raw_stub_atom3 ( ) const
overridevirtual

◆ set_dof() [1/2]

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

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

◆ set_dof() [2/2]

void core::kinematics::tree::JumpAtom::set_dof ( DOF_Type const  type,
Real const  value 
)
overridevirtual

set a degree of freedom for jump

Note
along n2c direction

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

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

Referenced by set_dof().

◆ setup_min_map()

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

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

◆ shallow_clone()

AtomOP core::kinematics::tree::JumpAtom::shallow_clone ( ) const
overridevirtual

copy this atom, without connections

Note
this will recursively clone all this atom's offspring atoms

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

References jump_, and core::kinematics::tree::Atom_::position().

◆ steal_inversion()

void core::kinematics::tree::JumpAtom::steal_inversion ( AtomOP  steal_from)
overridevirtual

◆ stub_atom1()

AtomCOP core::kinematics::tree::JumpAtom::stub_atom1 ( ) const
inlineoverridevirtual

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::get_self_ptr(), core::kinematics::tree::Atom_::parent(), and core::kinematics::tree::Atom_::stub_defined().

◆ stub_atom2()

AtomCOP core::kinematics::tree::JumpAtom::stub_atom2 ( ) const
inlineoverridevirtual

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(), and core::kinematics::tree::Atom_::stub_defined().

◆ stub_atom3()

AtomCOP core::kinematics::tree::JumpAtom::stub_atom3 ( ) const
inlineoverridevirtual

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_::parent(), and core::kinematics::tree::Atom_::stub_defined().

◆ update_internal_coords() [1/6]

void core::kinematics::tree::Atom_::update_internal_coords
override

update internal coords of this atom and its offspring atoms (if recursive)

get the input stub for building this atom first

◆ update_internal_coords() [2/6]

virtual void core::kinematics::tree::Atom::update_internal_coords

calculate my input_stub from the current xyz's and use that input_stub to update my torsions

◆ update_internal_coords() [3/6]

void core::kinematics::tree::JumpAtom::update_internal_coords ( std::deque< std::pair< Atom *, core::kinematics::Stub * > > *  childlist,
std::deque< core::kinematics::Stub > *  stublist,
Stub stub 
)
overridevirtual

Update the jump info.

If childlist and stublist are not nullptr, childlist has pairs of (child atom, this stub), and stublist stores unique stubs. (Multiple pointers in childlist can point to the same stub, since that stub ultimately gets updated during the update of the coordinate.) appended so that children may subsequently be updated.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org).

update the jump from the input stub and this atom's own stub.

If childlist and stublist are not nullptr, childlist has pairs of (child atom, this stub), and stublist stores unique stubs. (Multiple pointers in childlist can point to the same stub, since that stub ultimately gets updated during the update of the coordinate.) appended so that children may subsequently be updated.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org).
Note
The input stub is not changed except in cases of mirror symmetry.

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::Jump::get_invert_downstream(), core::kinematics::Jump::get_invert_upstream(), core::kinematics::tree::Atom_::get_stub(), core::kinematics::Stub::is_orthogonal(), jump_, core::kinematics::Stub::M, and core::kinematics::Jump::mirror_z_transform.

◆ update_internal_coords() [4/6]

virtual void core::kinematics::tree::Atom::update_internal_coords

update internal coords from stub and xyz coords.

If childlist and stublist are not nullptr, childlist has pairs of (child atom, this stub), and stublist stores unique stubs. (Multiple pointers in childlist can point to the same stub, since that stub ultimately gets updated during the update of the coordinate.) appended so that children may subsequently be updated.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org).

◆ update_internal_coords() [5/6]

void core::kinematics::tree::Atom_::update_internal_coords
override

Update internal coordinates for this atom and possibly all children.

If recursive is true, we update children, grandchildren, great-grandchildren, etc., but we don't use a recursive algorithm.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org).

◆ update_internal_coords() [6/6]

virtual void core::kinematics::tree::Atom::update_internal_coords

Update internal coordinates for this atom and possibly all children.

If recursive is true, we update children, grandchildren, great-grandchildren, etc., but we don't use a recursive algorithm.

Author
Vikram K. Mulligan (vmull.nosp@m.igan.nosp@m.@flat.nosp@m.iron.nosp@m.insti.nosp@m.tute.nosp@m..org).

◆ update_stub()

void core::kinematics::tree::JumpAtom::update_stub ( Stub stub) const
overridevirtual

◆ update_xyz_coords() [1/2]

void core::kinematics::tree::JumpAtom::update_xyz_coords ( )
overridevirtual

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(), core::kinematics::Jump::get_invert_upstream(), jump_, core::kinematics::Stub::M, and core::kinematics::Jump::mirror_z_transform.

◆ update_xyz_coords() [2/2]

void core::kinematics::tree::JumpAtom::update_xyz_coords ( Stub stub)
overridevirtual

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(), jump_, core::kinematics::Jump::make_jump(), core::kinematics::tree::Atom_::note_xyz_uptodate(), core::kinematics::tree::Atom_::position(), and core::kinematics::Stub::v.

Member Data Documentation

◆ jump_

Jump core::kinematics::tree::JumpAtom::jump_
private

Jump.

A jump atom is connected to its parent via rigid-body transformation("jump"). It requires two stubs to define a jump, one is the parent atoms's stub and the other is the stub centered at this jump atom, which requires at least three atoms on the jump atom's side (including itself). For example, a stub is defined from B-A-C or A-B-C (A is the jump atom, B and C are its offspring). If less than 3 atoms on the jump atom's side, i.e., stub_defined() == False, this atom will just use its parent stub.

Referenced by copy_coords(), dof(), get_dof_axis_and_end_pos(), get_inversion(), jump(), set_dof(), shallow_clone(), steal_inversion(), update_internal_coords(), update_stub(), and update_xyz_coords().


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