![]() |
Rosetta
2020.22
|
an atom who are connected to its parent via rigid-body transformation "Jump" More...
#include <JumpAtom.hh>
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 (Stub &stub, bool const recursive=true) 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 | clone (AtomAP parent_in, AtomPointer2D &atom_pointer) const override |
copy this atom 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... | |
![]() | |
~Atom_ () override | |
Destructor. More... | |
void | update_internal_coords (bool const recursive) override |
update internal coords of this atom and its offspring atoms (if recursive) 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 ¤t_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... | |
![]() | |
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 | |
![]() | |
typedef PointPosition | Position |
typedef utility::vector0< AtomOP > | Atoms |
typedef Atoms::ConstIterator | Atoms_ConstIterator |
typedef Atoms::Iterator | Atoms_Iterator |
typedef numeric::xyzMatrix< Real > | Matrix |
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 |
![]() | |
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... | |
![]() | |
Atom ()=default | |
Default constructor. More... | |
Atom & | operator= (Atom const &)=default |
Copy assignment. More... | |
![]() | |
AtomID | atom_id_ |
Atom ID. More... | |
AtomAP | parent_ |
Associated conformation Atom. More... | |
Atom * | raw_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... | |
an atom who are connected to its parent via rigid-body transformation "Jump"
See AtomTree overview and concepts for details.
|
private |
|
overridevirtual |
copy this atom
Implements core::kinematics::tree::Atom.
References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::tree::Atom_::id(), jump_, and core::kinematics::tree::Atom_::position().
|
overridevirtual |
copy DOFs, xyz's
copy DOFs, xyz's. this asserts equal topology. do recursively to copy for all its children
Implements core::kinematics::tree::Atom.
References core::kinematics::tree::Atom_::atoms_begin(), core::kinematics::tree::Atom_::atoms_end(), core::kinematics::tree::Atom::child(), core::kinematics::tree::Atom_::id(), core::kinematics::tree::Atom::id(), core::kinematics::tree::Atom::jump(), jump_, core::kinematics::tree::Atom_::n_children(), core::kinematics::tree::Atom::n_children(), and core::kinematics::tree::Atom_::operator=().
|
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().
get a degree of freedom from jump
Implements core::kinematics::tree::Atom.
References core::kinematics::Jump::get_rb_delta(), core::id::get_rb_number(), jump_, and protocols::rigid::n2c.
|
overridevirtual |
get rotation axis and end_pos for a JumpAtom.
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):
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.
References core::kinematics::Jump::get_invert_downstream(), core::kinematics::Jump::get_invert_upstream(), and jump_.
Referenced by steal_inversion().
|
inlineoverridevirtual |
a jump atom is a jump? of course yes!!!
Implements core::kinematics::tree::Atom.
|
overridevirtual |
|
overridevirtual |
|
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().
|
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.
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().
|
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().
|
overridevirtual |
Rapid (increment-of-reference-count-avoiding) access to the second stub atom.
Implements core::kinematics::tree::Atom.
References core::kinematics::tree::Atom_::raw_get_nonjump_atom(), core::kinematics::tree::Atom_::raw_parent(), core::kinematics::tree::Atom::raw_stub_atom2(), and core::kinematics::tree::Atom_::stub_defined().
|
overridevirtual |
Rapid (increment-of-reference-count-avoiding) access to the third stub atom.
Implements core::kinematics::tree::Atom.
References core::kinematics::tree::Atom_::raw_get_nonjump_atom(), core::kinematics::tree::Atom::raw_get_nonjump_atom(), core::kinematics::tree::Atom_::raw_parent(), core::kinematics::tree::Atom::raw_stub_atom3(), and core::kinematics::tree::Atom_::stub_defined().
|
overridevirtual |
set a degree of freedom for jump
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().
|
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().
|
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().
|
overridevirtual |
Implements core::kinematics::tree::Atom.
References get_inversion(), jump_, and core::kinematics::Jump::set_invert().
|
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().
|
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().
|
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().
|
overridevirtual |
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.
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.
|
inlineoverridevirtual |
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.
|
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.
|
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.
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(), and core::kinematics::tree::Atom_::position().
|
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 clone(), copy_coords(), dof(), get_dof_axis_and_end_pos(), get_inversion(), jump(), set_dof(), steal_inversion(), update_internal_coords(), and update_xyz_coords().