![]() |
Rosetta
2021.16
|
Iterative loop closure mover, based on a linearization of the kinematics, which adjusts all free backbone torsion angles simultaneously in each iteration. More...
#include <JacobiLoopClosureMover.hh>

Public Member Functions | |
| JacobiLoopClosureMover () | |
| Constructors ///. More... | |
| JacobiLoopClosureMover (JacobiLoopClosureMover const &src) | |
| Copy constructor (not needed unless you need deep copies) More... | |
| JacobiLoopClosureMover (protocols::loops::Loop const &loop) | |
| Constructor based on a loop. More... | |
| JacobiLoopClosureMover (protocols::loops::Loop const &loop, core::kinematics::MoveMapCOP const &mm) | |
| Constructor based on a loop and a MoveMap. More... | |
| JacobiLoopClosureMover (core::kinematics::jacobian::SeriesJacobiansOP const jacobian_chain) | |
| Constructor based on a Jacobian serial chain. More... | |
| ~JacobiLoopClosureMover () override | |
| Destructor (important for properly forward-declaring smart-pointer members) More... | |
| void | set_loop (protocols::loops::Loop const &new_loop) |
| Mover Methods ///. More... | |
| protocols::loops::Loop | get_loop () |
| void | set_movemap (core::kinematics::MoveMapOP const new_mm) |
| Set the MoveMap. More... | |
| void | apply (core::pose::Pose &pose) override |
| Execute the loop closure. More... | |
| void | show (std::ostream &output=std::cout) const override |
| Show the contents of the Mover. More... | |
| bool | last_closure_success () |
| Get boolean indicating whether last closure was successfully completed. More... | |
| core::Size | last_closure_cycles () |
| Returns the number of cycles that were needed for the last closure. More... | |
| void | set_max_cycles (core::Size max_cycles) |
| Set maximum number of iterations to find a loop closure solution. More... | |
| core::Size | get_max_cycles () |
| Get value for maximum number of iterations to find a loop closure solution. More... | |
| void | set_error_norms (core::Real error_norm_rot, core::Real error_norm_lin) |
| Set norm-values of allowed rotational [deg] and linear error vectors [Ang] that define successful closure. More... | |
| core::Real | get_allowed_norm_rot () |
| Get value for norm of allowed rotational error vector [deg] that defines successful closure. More... | |
| core::Real | get_allowed_norm_lin () |
| Get value for norm of allowed linear error vector [Ang] that defines successful closure. More... | |
| void | set_dq_max_allowed (core::Real dq_max_allowed) |
| Set maximum change in dihedral angle in each cycle. More... | |
| core::Real | get_dq_max_allowed () |
| Get value for maximum change applied to a torsion angle during a single cycle [rad]. More... | |
| void | set_verbose (bool setting) |
| Set whether or not to output non-critical information. More... | |
| void | parse_my_tag (utility::tag::TagCOP tag, basic::datacache::DataMap &) override |
| Rosetta Scripts Support ///. More... | |
| protocols::moves::MoverOP | fresh_instance () const override |
| required in the context of the parser/scripting scheme More... | |
| protocols::moves::MoverOP | clone () const override |
| required in the context of the parser/scripting scheme More... | |
| std::string | get_name () const override |
| Each derived class must specify its name. The class name. More... | |
Public Member Functions inherited from protocols::moves::Mover | |
| Mover () | |
| virtual MoverOP | create () |
| MoverCOP | get_self_ptr () const |
| MoverOP | get_self_ptr () |
| MoverCAP | get_self_weak_ptr () const |
| MoverAP | get_self_weak_ptr () |
| Mover (std::string const &type_name) | |
| sets the type for a mover; name_ has been removed (2010/05/14) More... | |
| virtual void | test_move (Pose &pose) |
| : Unit test support function. Apply one move to a given pose. Allows extra test specific functions to be called before applying More... | |
| virtual bool | reinitialize_for_each_job () const |
| Inform the Job Distributor (August '08 vintage) whether this object needs to be freshly regenerated on each use. More... | |
| virtual bool | reinitialize_for_new_input () const |
| Inform the Job Distributor (August '08 vintage) whether this object needs to be regenerated when the input pose is about to change, (for example, if the Mover has special code on the first apply() that is only valid for that one input pose). More... | |
| MoverStatus | get_last_move_status () const |
| end parser interface, start Job Distributor interface///////////// More... | |
| void | reset_status () |
| resets status to SUCCESS, meant to be used before an apply(). The job distributor (august 08 vintage) uses this to ensure non-accumulation of status across apply()s. More... | |
| virtual core::pose::PoseOP | get_additional_output () |
| Mechanism by which a mover may return multiple output poses from a single input pose. More... | |
| void | set_type (std::string const &setting) |
| Set the 'type' string. More... | |
| std::string | get_type () const |
| void | type (const std::string &type_in) |
| Set the 'type' string. More... | |
| std::string const & | type () const |
| Get the set 'type' string. More... | |
| virtual void | set_input_pose (PoseCOP pose) |
| setter for poses contained for rms More... | |
| virtual void | set_native_pose (PoseCOP pose) |
| setter for native poses contained for rms -— we should get rid of this method? it is widely used, but a bit unsafe More... | |
| PoseCOP | get_input_pose () const |
| PoseCOP | get_native_pose () const |
| void | set_current_job (protocols::jobdist::BasicJobCOP job) |
| jobdist::BasicJobCOP | get_current_job () const |
| virtual void | set_current_tag (std::string const &new_tag) |
| std::string | get_current_tag () const |
| A tag is a unique identifier used to identify structures produced by this Mover. get_current_tag() returns the tag, and set_current_tag( std::string tag ) sets the tag. This functionality is not intended for use with the 2008 job distributor. More... | |
| virtual core::Real | last_proposal_density_ratio () |
| virtual void | clear_info () |
| Strings container can be used to return miscellaneous info (as std::string) from a mover, such as notes about the results of apply(). The job distributor (Apr 09 vintage) will check this function to see if your protocol wants to add string info to the Job that ran this mover. One way this can be useful is that later, a JobOutputter may include/append this info to an output file. More... | |
| virtual Strings & | info () |
| non-const accessor More... | |
| virtual Strings const & | info () const |
| const accessor More... | |
| virtual void | provide_citation_info (basic::citation_manager::CitationCollectionList &) const |
| Provide citations to the passed CitationCollectionList Subclasses should add the info for themselves and any other classes they use. More... | |
Static Public Member Functions | |
| static std::string | mover_name () |
| static void | provide_xml_schema (utility::tag::XMLSchemaDefinition &xsd) |
Static Public Member Functions inherited from protocols::moves::Mover | |
| static std::string | name () |
| static void | register_options () |
| Overload this static method if you access options within the mover. More... | |
Private Member Functions | |
| core::kinematics::MoveMapOP | create_default_movemap (protocols::loops::Loop loop) |
| Create default MoveMap. More... | |
| void | init_constructor (protocols::loops::Loop const &loop, core::kinematics::MoveMapCOP const &mm) |
| Initializes data members from constructor input arguments. More... | |
| void | init_apply (core::pose::Pose &pose) |
| Initializes private parameters of the Jacobi mover that depend on the pose and are only set when apply() is called. More... | |
| void | prepare_foldtree (core::pose::Pose &pose) |
| Function that checks and adjusts the fold tree as part of the init_apply method. More... | |
| void | store_target_icoors (core::pose::Pose const &pose) |
| extract internal coordinates of the upper loop connection (between the final residue of the loop and the first residue that follows) More... | |
| std::pair< numeric::xyzVector < core::Real > , numeric::xyzVector < core::Real > > | update_target (core::pose::Pose const &pose) |
| Calculate the target position and Euler angles of the final C-atom in the loop w.r.t the reference frame connected to ref_bb_atom_id_. More... | |
| std::pair< numeric::xyzVector < core::Real > , numeric::xyzVector < core::Real > > | update_current (core::pose::Pose const &pose) |
| Calculate the current position and Euler angles of the final C-atom in the loop w.r.t the reference frame connected to ref_bb_atom_id_. More... | |
| std::pair< numeric::xyzVector < core::Real > , numeric::xyzVector < core::Real > > | calculate_error_twist (std::pair< numeric::xyzVector< core::Real >, numeric::xyzVector< core::Real > > target, std::pair< numeric::xyzVector< core::Real >, numeric::xyzVector< core::Real > > current) |
| Extract the error twist (linearized rotations) from the current and target position and orientation (in Euler angles) More... | |
| numeric::MathMatrix< core::Real > | weigh_columns_inversely_squared (numeric::MathMatrix< core::Real > const &) |
| method that gives weights to different columns (that all represent that same error twist in their respective torsion space), inversely proptional to the norm of the required torsion changes More... | |
Private Attributes | |
| core::Size | max_cycles_ = 200 |
| number of iterations before closure is aborted More... | |
| core::Real | err_rot_allowed_ = 5 * numeric::constants::d::degrees_to_radians |
| Maximum norms of rotational [rad] and linear error [Ang] for closure to be accepted as successful. More... | |
| core::Real | err_lin_allowed_ = 0.1 |
| core::Real | delta_euler_angle_max_ = numeric::constants::d::pi / 4 |
| maximum Euler angle error that is projected onto torsion angles during each cycle [rad] More... | |
| core::Real | dq_max_allowed_ = 45 * numeric::constants::d::degrees_to_radians |
| maximum change applied to a torsion angle during an individual cycle [rad] More... | |
| bool | verbose_ = false |
| setting that determines whether non-critical information is printed to tracer. Errors/warnings are always printed More... | |
| protocols::loops::Loop | loop_ |
| copy of the input loop More... | |
| core::kinematics::MoveMapCOP | movemap_ |
| copy of the pointer to the movemap More... | |
| utility::vector1< core::Size > | free_residues_ |
| vector1 with the numbers of the residues whose phi and psi angles are allowed to be adjusted by the mover More... | |
| core::kinematics::jacobian::SeriesJacobiansOP | jacobian_chain_ {nullptr} |
| pointer to vector with Jacobian objects More... | |
| core::Size | closure_cycles_ {0} |
| counter of number of cycles in the loop closure while-loop More... | |
| bool | closure_success_ {false} |
| BOOl to communicate with user about success/failure of closure. More... | |
| core::id::AtomID | ref_bb_atom_id_ {0,0} |
| atom id of the first CA atom in the loop, which is fixed to the preceding backbone residue and whose stub is the reference frame for all vectors and matrices More... | |
| utility::vector1 < core::id::AtomID > | target_bb_atom_ids_ {6} |
| atom ids of the backbone atoms of the last residue of the loop and the first residue following More... | |
| utility::vector1 < core::chemical::AtomICoor > | icoor_targets_ {3} |
| internal coordinates of the target residue, which determine how the loop must be connected to the backbone. Stored in this form, and not as homogeneous matrix, because maybe a user in the future would like to change individual values manually More... | |
Additional Inherited Members | |
Public Types inherited from protocols::moves::Mover | |
| typedef utility::tag::TagCOP | TagCOP |
| typedef core::pose::Pose | Pose |
| typedef core::pose::PoseCOP | PoseCOP |
| typedef std::list< std::string > | Strings |
Protected Member Functions inherited from protocols::moves::Mover | |
| void | set_last_move_status (MoverStatus status) |
| nonvirtual setter for MoverStatus last_status_. Protected means that only the mover itself will be able to change its own status. The job distributor (august 08 vintage) is aware of status set with this function and will do what the MoverStatus says. More... | |
Iterative loop closure mover, based on a linearization of the kinematics, which adjusts all free backbone torsion angles simultaneously in each iteration.
| protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::JacobiLoopClosureMover | ( | ) |
Constructors ///.
Default constructor
|
default |
Copy constructor (not needed unless you need deep copies)
Copy constructor.
| protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::JacobiLoopClosureMover | ( | protocols::loops::Loop const & | loop | ) |
Constructor based on a loop.
References create_default_movemap(), init_constructor(), protocols::loops::Loop::start(), and protocols::loops::Loop::stop().
| protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::JacobiLoopClosureMover | ( | protocols::loops::Loop const & | loop, |
| core::kinematics::MoveMapCOP const & | mm | ||
| ) |
Constructor based on a loop and a MoveMap.
References init_constructor(), protocols::loops::Loop::start(), protocols::loops::Loop::stop(), protocols::loops::TR(), and verbose_.
| protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::JacobiLoopClosureMover | ( | core::kinematics::jacobian::SeriesJacobiansOP const | jacobian_chain | ) |
Constructor based on a Jacobian serial chain.
Constructor based on a pointer to a Jacobian serial chain.
References core::id::BB, init_constructor(), and jacobian_chain_.
|
override |
Destructor (important for properly forward-declaring smart-pointer members)
|
overridevirtual |
Execute the loop closure.
Apply the mover.
Implements protocols::moves::Mover.
References calculate_error_twist(), closure_cycles_, closure_success_, core::pose::Pose::conformation(), dq_max_allowed_, err_lin_allowed_, err_rot_allowed_, init_apply(), jacobian_chain_, protocols::mean_field::max(), max_cycles_, protocols::loops::TR(), update_current(), update_target(), verbose_, and weigh_columns_inversely_squared().
|
private |
Extract the error twist (linearized rotations) from the current and target position and orientation (in Euler angles)
References delta_euler_angle_max_.
Referenced by apply().
|
overridevirtual |
required in the context of the parser/scripting scheme
Reimplemented from protocols::moves::Mover.
|
private |
Create default MoveMap.
References core::id::BB, protocols::loops::Loop::start(), and protocols::loops::Loop::stop().
Referenced by JacobiLoopClosureMover(), and parse_my_tag().
|
overridevirtual |
required in the context of the parser/scripting scheme
Reimplemented from protocols::moves::Mover.
|
inline |
Get value for norm of allowed linear error vector [Ang] that defines successful closure.
References err_lin_allowed_.
|
inline |
Get value for norm of allowed rotational error vector [deg] that defines successful closure.
References err_rot_allowed_.
|
inline |
Get value for maximum change applied to a torsion angle during a single cycle [rad].
References dq_max_allowed_.
|
inline |
References loop_.
|
inline |
Get value for maximum number of iterations to find a loop closure solution.
References max_cycles_.
|
overridevirtual |
Each derived class must specify its name. The class name.
Implements protocols::moves::Mover.
References mover_name().
|
private |
Initializes private parameters of the Jacobi mover that depend on the pose and are only set when apply() is called.
Initializes private parameters of the Jacobi mover that depend on the pose and are only set when apply() is called. This function also checks and - if necessary - adjusts the FoldTree in preparation for Jacobi loop closure.
References core::pose::Pose::conformation(), core::pose::Pose::fold_tree(), free_residues_, jacobian_chain_, loop_, prepare_foldtree(), ref_bb_atom_id_, core::pose::Pose::residue(), protocols::loops::Loop::start(), store_target_icoors(), and protocols::loops::TR().
Referenced by apply().
|
private |
Initializes data members from constructor input arguments.
References free_residues_, loop_, movemap_, protocols::loops::Loop::start(), and protocols::loops::Loop::stop().
Referenced by JacobiLoopClosureMover(), parse_my_tag(), set_loop(), and set_movemap().
|
inline |
Returns the number of cycles that were needed for the last closure.
References closure_cycles_.
|
inline |
Get boolean indicating whether last closure was successfully completed.
References closure_success_.
|
static |
|
overridevirtual |
Rosetta Scripts Support ///.
parse XML tag (to use this Mover in Rosetta Scripts)
Reimplemented from protocols::moves::Mover.
References create_default_movemap(), err_lin_allowed_, err_rot_allowed_, init_constructor(), max_cycles_, protocols::loop_modeling::utilities::parse_loops_from_tag(), and verbose_.
|
private |
Function that checks and adjusts the fold tree as part of the init_apply method.
References core::conformation::Residue::connected_residue_at_upper(), core::chemical::CUTPOINT_LOWER, core::chemical::CUTPOINT_UPPER, core::id::D, core::pose::Pose::fold_tree(), core::chemical::ResidueType::get_base_type_cop(), core::kinematics::FoldTree::get_residue_edge(), core::kinematics::FoldTree::is_cutpoint(), core::kinematics::FoldTree::is_jump_point(), core::kinematics::FoldTree::is_root(), loop_, protocols::mean_field::min(), core::pose::Pose::omega(), core::id::PHI, core::pose::Pose::psi(), core::kinematics::FoldTree::reorder(), core::pose::Pose::residue(), core::pose::Pose::residue_type(), core::pose::Pose::set_dof(), protocols::loops::set_loop_cutpoint_in_pose_fold_tree(), protocols::loops::Loop::start(), protocols::loops::start, protocols::loops::Loop::stop(), core::id::THETA, protocols::loops::TR(), and verbose_.
Referenced by init_apply().
|
static |
References protocols::loop_modeling::utilities::append_subelement_and_attributes_for_parse_loops_from_tag(), mover_name(), and protocols::moves::xsd_type_definition_w_attributes_and_repeatable_subelements().
Referenced by protocols::loops::loop_closure::jacobi::JacobiLoopClosureMoverCreator::provide_xml_schema().
|
inline |
Set maximum change in dihedral angle in each cycle.
References dq_max_allowed_.
| void protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::set_error_norms | ( | core::Real | error_norm_rot, |
| core::Real | error_norm_lin | ||
| ) |
Set norm-values of allowed rotational [deg] and linear error vectors [Ang] that define successful closure.
error_norm_rot should be supplied in degrees.
References err_lin_allowed_, err_rot_allowed_, and protocols::loops::TR().
| void protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::set_loop | ( | protocols::loops::Loop const & | new_loop | ) |
|
inline |
Set maximum number of iterations to find a loop closure solution.
References max_cycles_.
| void protocols::loops::loop_closure::jacobi::JacobiLoopClosureMover::set_movemap | ( | core::kinematics::MoveMapOP const | new_mm | ) |
Set the MoveMap.
References init_constructor(), and loop_.
|
inline |
|
overridevirtual |
Show the contents of the Mover.
Reimplemented from protocols::moves::Mover.
References protocols::moves::Mover::show().
Referenced by protocols::loops::loop_closure::jacobi::operator<<().
|
private |
extract internal coordinates of the upper loop connection (between the final residue of the loop and the first residue that follows)
References core::kinematics::AtomTree::atom(), core::pose::Pose::atom_tree(), core::id::D, core::kinematics::tree::Atom::distance(), core::kinematics::tree::Atom::dof(), core::pose::Pose::dof(), core::pose::Pose::fold_tree(), core::kinematics::FoldTree::get_residue_edge(), icoor_targets_, core::kinematics::FoldTree::is_jump_point(), loop_, core::conformation::Residue::mainchain_atom(), core::pose::Pose::omega(), core::id::PHI, core::pose::Pose::phi(), core::pose::Pose::psi(), core::pose::Pose::residue(), core::pose::Pose::residue_type(), protocols::loops::start, protocols::loops::Loop::stop(), target_bb_atom_ids_, core::id::THETA, and protocols::loops::TR().
Referenced by init_apply().
|
private |
Calculate the current position and Euler angles of the final C-atom in the loop w.r.t the reference frame connected to ref_bb_atom_id_.
References core::kinematics::AtomTree::atom(), core::pose::Pose::atom_tree(), core::id::BB, core::kinematics::tree::Atom::get_stub(), icoor_targets_, loop_, ref_bb_atom_id_, protocols::loops::Loop::stop(), target_bb_atom_ids_, and core::pose::Pose::torsion().
Referenced by apply().
|
private |
Calculate the target position and Euler angles of the final C-atom in the loop w.r.t the reference frame connected to ref_bb_atom_id_.
This function calculates the pose (position and orientation) of the last backbone atom of the loop (C-atom [C] of the end residue [e] of the loop [l], 'Cle'). For that, the stored internal coordinates of the connection to the backbone are used to relate Cl to the first CA-atom of the backbone (CAbb) after the loop This CAbb atom in term is fixed w.r.t. the CA atom of the start residue of the loop (CA1).
References core::kinematics::AtomTree::atom(), core::pose::Pose::atom_tree(), core::kinematics::Stub::from_four_points(), core::kinematics::RT::get_rotation(), core::kinematics::tree::Atom::get_stub(), core::kinematics::RT::get_translation(), icoor_targets_, ref_bb_atom_id_, target_bb_atom_ids_, and core::kinematics::tree::Atom::xyz().
Referenced by apply().
|
private |
method that gives weights to different columns (that all represent that same error twist in their respective torsion space), inversely proptional to the norm of the required torsion changes
method that gives weights to different columns (that all represent that same error twist in their respective torsion space), inversely proportional to the norm of the required torsion changes
References protocols::loops::TR(), and verbose_.
Referenced by apply().
|
private |
counter of number of cycles in the loop closure while-loop
Referenced by apply(), and last_closure_cycles().
|
private |
BOOl to communicate with user about success/failure of closure.
Referenced by apply(), and last_closure_success().
|
private |
maximum Euler angle error that is projected onto torsion angles during each cycle [rad]
Referenced by calculate_error_twist().
|
private |
maximum change applied to a torsion angle during an individual cycle [rad]
increasing this value potentially increases speed of closure (number of cycles needed), but also increases risk of erratic behavior. Decreasing will reduce erratic behavior, but slows down speed of closure
Referenced by apply(), get_dq_max_allowed(), and set_dq_max_allowed().
|
private |
Referenced by apply(), get_allowed_norm_lin(), parse_my_tag(), and set_error_norms().
|
private |
Maximum norms of rotational [rad] and linear error [Ang] for closure to be accepted as successful.
Referenced by apply(), get_allowed_norm_rot(), parse_my_tag(), and set_error_norms().
|
private |
vector1 with the numbers of the residues whose phi and psi angles are allowed to be adjusted by the mover
Referenced by init_apply(), and init_constructor().
|
private |
internal coordinates of the target residue, which determine how the loop must be connected to the backbone. Stored in this form, and not as homogeneous matrix, because maybe a user in the future would like to change individual values manually
this member variable is set when the apply() function is called because it relies on the conformation
Referenced by store_target_icoors(), update_current(), and update_target().
|
private |
pointer to vector with Jacobian objects
Referenced by apply(), init_apply(), and JacobiLoopClosureMover().
|
private |
copy of the input loop
Referenced by get_loop(), init_apply(), init_constructor(), prepare_foldtree(), set_movemap(), store_target_icoors(), and update_current().
|
private |
number of iterations before closure is aborted
Referenced by apply(), get_max_cycles(), parse_my_tag(), and set_max_cycles().
|
private |
copy of the pointer to the movemap
Referenced by init_constructor(), and set_loop().
|
private |
atom id of the first CA atom in the loop, which is fixed to the preceding backbone residue and whose stub is the reference frame for all vectors and matrices
this member variable is set when the apply() function is called because it relies on the conformation
Referenced by init_apply(), update_current(), and update_target().
|
private |
atom ids of the backbone atoms of the last residue of the loop and the first residue following
this member variable is set when the apply() function is called because it relies on the conformation
Referenced by store_target_icoors(), update_current(), and update_target().
|
private |
setting that determines whether non-critical information is printed to tracer. Errors/warnings are always printed
Referenced by apply(), JacobiLoopClosureMover(), parse_my_tag(), prepare_foldtree(), set_verbose(), and weigh_columns_inversely_squared().
1.8.7