Rosetta
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
core::kinematics::jacobian::ModuleType1 Class Reference

The ModuleType1 class covers the Jacobian analysis at the lower-level for type-1 systems, which have internal DoFs that can be organized as three sets of two torsion angles with intersecting axes. More...

#include <ModuleType1.hh>

Inheritance diagram for core::kinematics::jacobian::ModuleType1:
Inheritance graph
[legend]

Classes

struct  jacobian_struct
 Struct to pass around all variations of Jacobian matrices @detail fw_dofs is the Jacobian matrix that maps differential torsion angles [rad/s] or [delta rad] on Cartesian reference frame fw_cons is the 6x6 Jacobian matrix that maps virtual (helper, constrained) torsion angles [rad/s] or [delta rad] on Cartesian reference frame fw_all is the 6x6 Jacobian matrix that maps all six torsion angles (real and virtual) [rad/s] or [delta rad] on Cartesian reference frame inv_dofs is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto torsion angles inv_cons is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto virtual torsion angles that represent the modules constraints inv_all is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto all torsion angles (real and virtual) More...
 
struct  screw_construct_struct
 struct with the different linear algebra objects that are needed to express the twists and wrenches to calculate the instantaneous Jacobian matrices of the module More...
 

Public Types

typedef std::pair< numeric::xyzVector< core::Real >, numeric::xyzVector< core::Real > > Screw
 typedef of a screw as a pair of xyzVectors More...
 

Public Member Functions

 ModuleType1 ()=delete
 No default constructor because modules are not used on their own, but always as part of a SeriesJacobian. More...
 
 ModuleType1 (core::Size const &dofs_module, utility::vector1< core::id::TorsionID > const &torsion_ids, core::id::AtomID const &ref_atom)
 Constructor for module with 1, 2 or 3 sets of two AtomIDs whose X-axes represent intersecting torsion axes. More...
 
 ModuleType1 (ModuleType1 const &src)
 Copy constructor. More...
 
 ~ModuleType1 () override
 Destructor. More...
 
ModuleType1OP clone () const
 Clone operation: make a copy of this object, and return an owning pointer to the copy. More...
 
utility::vector1< core::id::TorsionIDget_torsion_ids ()
 Returns the residues that make up the Jacobian module. N.B. this vector always contains six residue numbers, but only the first < number_dofs_ > torsion IDs are free to move. The remaining torsions represent constrained motions. More...
 
core::Size get_number_dofs ()
 Returns the number of DoFs of which this module represents the differential equations. More...
 
utility::vector1< core::Sizefree_residues ()
 Returns the number of DoFs of which this module represents the differential equations. More...
 
ModuleType1::jacobian_struct get_jacobian_matrices (core::conformation::Conformation const &conformation)
 calculate all Jacobian matrices for the instantaneous conformation More...
 
numeric::MathVector< core::Realget_torsion_values (core::conformation::Conformation const &conformation)
 Get variables that are associated to this instance. More...
 
void set_torsion_values (core::conformation::Conformation &conformation, numeric::MathVector< core::Real > const &vars)
 Set the variables that are associated to this module. More...
 
void apply_delta_torsion_values (core::conformation::Conformation &conformation, numeric::MathVector< core::Real > const &dq)
 apply vector of delta angles to the torsion angles that are associated to this instance More...
 

Private Member Functions

ModuleType1::screw_construct_struct update_screw_vectors (core::conformation::Conformation const &conformation)
 Updates the screw axes and moment arm vectors of the object. More...
 
utility::vector1< Screwget_orthogonal_wrenches_from_twists (Screw const &twist_1, Screw const &twist_2, numeric::HomogeneousTransform< core::Real > const &H_CA0_CAa, numeric::HomogeneousTransform< core::Real > const &H_CAa_Ca, numeric::HomogeneousTransform< core::Real > const &H_Ca_CAb, numeric::HomogeneousTransform< core::Real > const &H_CAb_Cb)
 Returns the two wrenches that are dual to the input twists, which is used in Jacobian analysis. More...
 

Private Attributes

core::Size number_dofs_
 number of dofs of the module More...
 
utility::vector1< core::id::TorsionIDtorsion_ids_
 torsion IDs of the dofs used in this module More...
 
utility::vector1< core::Sizefree_residues_
 torsion IDs of the dofs used in this module More...
 
core::id::AtomID ref_atom_ID_
 the atom which acts as the reference frame for all vectors More...
 

Static Private Attributes

static constexpr core::Real denom_singular_bound_ = 1e-2
 bound to check for singularity in Jacobian denominator More...
 
static constexpr core::Real denom_orthogonal_bound_ = 1e-6
 bound to check for screw orthogonality More...
 
static constexpr core::Real pos_singular_bound_ = 1e-10
 bound to check for singularity in atom position More...
 

Detailed Description

The ModuleType1 class covers the Jacobian analysis at the lower-level for type-1 systems, which have internal DoFs that can be organized as three sets of two torsion angles with intersecting axes.

Author
teunhoevenaars (teunh.nosp@m.oeve.nosp@m.naars.nosp@m.@gma.nosp@m.il.co.nosp@m.m)

Member Typedef Documentation

◆ Screw

typedef std::pair< numeric::xyzVector<core::Real>, numeric::xyzVector<core::Real> > core::kinematics::jacobian::ModuleType1::Screw

typedef of a screw as a pair of xyzVectors

Constructor & Destructor Documentation

◆ ModuleType1() [1/3]

core::kinematics::jacobian::ModuleType1::ModuleType1 ( )
delete

No default constructor because modules are not used on their own, but always as part of a SeriesJacobian.

◆ ModuleType1() [2/3]

core::kinematics::jacobian::ModuleType1::ModuleType1 ( core::Size const &  dofs_module,
utility::vector1< core::id::TorsionID > const &  torsion_ids,
core::id::AtomID const &  ref_atom 
)

Constructor for module with 1, 2 or 3 sets of two AtomIDs whose X-axes represent intersecting torsion axes.

Stores the basic information needed to perform the Jacobian analysis for this module for any conformation

References core::id::BB, free_residues_, number_dofs_, ref_atom_ID_, and torsion_ids_.

◆ ModuleType1() [3/3]

core::kinematics::jacobian::ModuleType1::ModuleType1 ( ModuleType1 const &  src)
default

Copy constructor.

Copy constructor. Keep default unless deep copying is needed (and in that case, consider using DeepCopyOPs.)

◆ ~ModuleType1()

core::kinematics::jacobian::ModuleType1::~ModuleType1 ( )
override

Destructor.

Member Function Documentation

◆ apply_delta_torsion_values()

void core::kinematics::jacobian::ModuleType1::apply_delta_torsion_values ( core::conformation::Conformation conformation,
numeric::MathVector< core::Real > const &  dq 
)

apply vector of delta angles to the torsion angles that are associated to this instance

Apply vector of delta angles to the torsion angles that are associated to this instance.

Parameters
[in]vectordq must have dimension 6 and all delta angles must be in radians

References number_dofs_, core::conformation::Conformation::set_torsion(), core::conformation::Conformation::torsion(), and torsion_ids_.

◆ clone()

ModuleType1OP core::kinematics::jacobian::ModuleType1::clone ( ) const

Clone operation: make a copy of this object, and return an owning pointer to the copy.

◆ free_residues()

utility::vector1<core::Size> core::kinematics::jacobian::ModuleType1::free_residues ( )
inline

Returns the number of DoFs of which this module represents the differential equations.

References free_residues_.

◆ get_jacobian_matrices()

ModuleType1::jacobian_struct core::kinematics::jacobian::ModuleType1::get_jacobian_matrices ( core::conformation::Conformation const &  conformation)

calculate all Jacobian matrices for the instantaneous conformation

Calculates all Jacobian matrices for the instantaneous conformation.

Based on the definition of the torsion axes (provided by means of AtomIDs), this function calculates the set of six twists and wrenches for this module. A twist is a dual Cartesian vector: one xyzVector expresses the differential Cartesian rotational vector, and another expresses the differential Cartesian linear vector. See Huang et al. (2011) Generalized Jacobian analysis of lower mobility manipulators for details on the definition of twists and wrenches and their relations.

References denom_orthogonal_bound_, denom_singular_bound_, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_all, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_cons, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_dofs, get_orthogonal_wrenches_from_twists(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::Hmatrices, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_all, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_cons, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_dofs, number_dofs_, core::kinematics::jacobian::ModuleType1::screw_construct_struct::r_vectors, core::kinematics::jacobian::ModuleType1::screw_construct_struct::s_vectors, core::chemical::element::Ta, core::chemical::element::Tc, torsion_ids_, core::kinematics::jacobian::TR(), and update_screw_vectors().

◆ get_number_dofs()

core::Size core::kinematics::jacobian::ModuleType1::get_number_dofs ( )
inline

Returns the number of DoFs of which this module represents the differential equations.

References number_dofs_.

◆ get_orthogonal_wrenches_from_twists()

utility::vector1< ModuleType1::Screw > core::kinematics::jacobian::ModuleType1::get_orthogonal_wrenches_from_twists ( Screw const &  twist_1,
Screw const &  twist_2,
numeric::HomogeneousTransform< core::Real > const &  H_CA0_CAa,
numeric::HomogeneousTransform< core::Real > const &  H_CAa_Ca,
numeric::HomogeneousTransform< core::Real > const &  H_Ca_CAb,
numeric::HomogeneousTransform< core::Real > const &  H_CAb_Cb 
)
private

Returns the two wrenches that are dual to the input twists, which is used in Jacobian analysis.

References pos_singular_bound_, torsion_ids_, and core::kinematics::jacobian::TR().

Referenced by get_jacobian_matrices().

◆ get_torsion_ids()

utility::vector1< core::id::TorsionID > core::kinematics::jacobian::ModuleType1::get_torsion_ids ( )
inline

Returns the residues that make up the Jacobian module. N.B. this vector always contains six residue numbers, but only the first < number_dofs_ > torsion IDs are free to move. The remaining torsions represent constrained motions.

References torsion_ids_.

◆ get_torsion_values()

numeric::MathVector< core::Real > core::kinematics::jacobian::ModuleType1::get_torsion_values ( core::conformation::Conformation const &  conformation)

Get variables that are associated to this instance.

Get torsion angle values that belong to this instance.

Parameters
[out]vectordq is has dimension number_dofs of this modules and all delta are in degrees

References number_dofs_, core::conformation::Conformation::torsion(), and torsion_ids_.

◆ set_torsion_values()

void core::kinematics::jacobian::ModuleType1::set_torsion_values ( core::conformation::Conformation conformation,
numeric::MathVector< core::Real > const &  vars 
)

Set the variables that are associated to this module.

Apply vector of values to the torsion angles that are associated to this instance.

Parameters
[in]vectordq must have dimension number_dofs and all delta angles must be in degrees

References number_dofs_, core::conformation::Conformation::set_torsion(), and torsion_ids_.

◆ update_screw_vectors()

ModuleType1::screw_construct_struct core::kinematics::jacobian::ModuleType1::update_screw_vectors ( core::conformation::Conformation const &  conformation)
private

Updates the screw axes and moment arm vectors of the object.

Updates the screw axes and moment arm vectors of the object @detail For the Jacobian analysis axis vectors and arm vectors are required Handles to the six torsion axes are provided by means of AtomIDs. AtomID uniquely points to a Stub, whose X-axes correspond to torsion axes. Thus, to identify the axes of the phi and psi torsions the stubs associated to respectively the mainchain CA- and C-atoms are needed.

References core::kinematics::AtomTree::atom(), core::conformation::Conformation::atom_tree(), core::kinematics::RT::get_rotation(), core::kinematics::tree::Atom::get_stub(), core::kinematics::RT::get_translation(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::Hmatrices, core::conformation::Residue::mainchain_atom(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::r_vectors, ref_atom_ID_, core::conformation::Conformation::residue(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::s_vectors, and torsion_ids_.

Referenced by get_jacobian_matrices().

Member Data Documentation

◆ denom_orthogonal_bound_

constexpr core::Real core::kinematics::jacobian::ModuleType1::denom_orthogonal_bound_ = 1e-6
staticconstexprprivate

bound to check for screw orthogonality

Referenced by get_jacobian_matrices().

◆ denom_singular_bound_

constexpr core::Real core::kinematics::jacobian::ModuleType1::denom_singular_bound_ = 1e-2
staticconstexprprivate

bound to check for singularity in Jacobian denominator

Referenced by get_jacobian_matrices().

◆ free_residues_

utility::vector1<core::Size> core::kinematics::jacobian::ModuleType1::free_residues_
private

torsion IDs of the dofs used in this module

Referenced by free_residues(), and ModuleType1().

◆ number_dofs_

core::Size core::kinematics::jacobian::ModuleType1::number_dofs_
private

◆ pos_singular_bound_

constexpr core::Real core::kinematics::jacobian::ModuleType1::pos_singular_bound_ = 1e-10
staticconstexprprivate

bound to check for singularity in atom position

Referenced by get_orthogonal_wrenches_from_twists().

◆ ref_atom_ID_

core::id::AtomID core::kinematics::jacobian::ModuleType1::ref_atom_ID_
private

the atom which acts as the reference frame for all vectors

Referenced by ModuleType1(), and update_screw_vectors().

◆ torsion_ids_

utility::vector1<core::id::TorsionID> core::kinematics::jacobian::ModuleType1::torsion_ids_
private

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