Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Private Attributes | List of all members
protocols::toolbox::match_enzdes_util::ExternalGeomSampler Class Reference

The external geom sampler is a class that manages the data necessary to construct the coordinates of the three atoms in the downstream partner. More...

#include <ExternalGeomSampler.hh>

Inheritance diagram for protocols::toolbox::match_enzdes_util::ExternalGeomSampler:
Inheritance graph
[legend]

Public Types

typedef utility::VirtualBase parent
 
typedef core::Size Size
 
typedef core::Real Real
 
typedef
numeric::HomogeneousTransform
< Real
HTReal
 

Public Member Functions

 ~ExternalGeomSampler () override
 
 ExternalGeomSampler ()
 
 ExternalGeomSampler (ExternalGeomSampler const &)
 
ExternalGeomSampleroperator= (ExternalGeomSampler const &rhs)
 
void set_tor_U3D1_samples (utility::vector1< Real > const &tor_U3D1_samples)
 
void set_dis_U1D1_samples (utility::vector1< Real > const &dis_U1D1_samples)
 
void set_ang_U2D1_samples (utility::vector1< Real > const &ang_U2D1_samples)
 
void set_ang_U1D2_samples (utility::vector1< Real > const &ang_U1D2_samples)
 
void set_tor_U2D2_samples (utility::vector1< Real > const &tor_U2D2_samples)
 
void set_tor_U1D3_samples (utility::vector1< Real > const &tor_U1D3_samples)
 
void set_tor_U3D1_samples (std::list< Real > const &tor_U3D1_samples)
 
void set_dis_U1D1_samples (std::list< Real > const &dis_U1D1_samples)
 
void set_ang_U2D1_samples (std::list< Real > const &ang_U2D1_samples)
 
void set_ang_U1D2_samples (std::list< Real > const &ang_U1D2_samples)
 
void set_tor_U2D2_samples (std::list< Real > const &tor_U2D2_samples)
 
void set_tor_U1D3_samples (std::list< Real > const &tor_U1D3_samples)
 
void set_dis_D1D2 (Real distance)
 
void set_dis_D2D3 (Real distance)
 
void set_ang_D1D2D3 (Real ang_in_degrees)
 
void precompute_transforms ()
 Must be called after the samples are set, and the internal geometry of the three downstream coordinates (point 4, 5, and 6) are described. Does nothing if the transforms are up to date. More...
 
void flip_upstream_downstream_samples ()
 convenience function if one wants to change the meaning of upstream and downstream More...
 
core::Size n_tor_U3D1_samples () const
 Accessors. More...
 
core::Size n_dis_U1D1_samples () const
 
core::Size n_ang_U2D1_samples () const
 
core::Size n_ang_U1D2_samples () const
 
core::Size n_tor_U2D2_samples () const
 
core::Size n_tor_U1D3_samples () const
 
utility::vector1< Real > const & tor_U3D1_samples () const
 
utility::vector1< Real > const & dis_U1D1_samples () const
 
utility::vector1< Real > const & ang_U2D1_samples () const
 
utility::vector1< Real > const & ang_U1D2_samples () const
 
utility::vector1< Real > const & tor_U2D2_samples () const
 
utility::vector1< Real > const & tor_U1D3_samples () const
 
bool transforms_uptodate () const
 
HTReal const & transform (ExternalTransform id, core::Size which_state) const
 

Private Attributes

utility::vector1< Realdis_U1D1_samples_
 
utility::vector1< Realang_U2D1_samples_
 
utility::vector1< Realtor_U3D1_samples_
 
utility::vector1< Realang_U1D2_samples_
 
utility::vector1< Realtor_U2D2_samples_
 
utility::vector1< Realtor_U1D3_samples_
 
Real dis_D1D2_
 
Real dis_D2D3_
 
Real ang_D1D2D3_
 
bool transforms_uptodate_
 
utility::vector1
< utility::vector1< HTReal > > 
transforms_
 

Detailed Description

The external geom sampler is a class that manages the data necessary to construct the coordinates of the three atoms in the downstream partner.

The external geom sampler holds the data for the six degrees of freedom that describe the downstream atoms relative to the upstream atoms. The naming of the 6 atoms involved and the 6 degrees of freedom involved is as follows:

Atoms U1, U2, and U3 are on the upstream partner. Atoms D1, D2, and D3 are on the downstream partner. The numbers indicate the distance the atoms have from the "break" between the upstream and downstream partners.

DOF 1: "tor_U3D1" is the torsion between atoms U3, U2, U1 and D1. DOF 2: "ang_U2D1" is angle between atoms U2, U1 and D1. DOF 3: "dis_U1D1" is the distance between atoms U1 and D1. DOF 4: "tor_U2D2" is the torsion between atoms U2, U1, D1 and D2. DOF 5: "ang_U1D2" is the angle between atoms U1, D1 and D3 DOF 6: "tor_U1D3" is the torsion between atoms U1, D1, D2 and D3

This naming convention describes a parameter by three letters followed by two atom names. The letter is "d" for distance, "a" for angle, and "t" for torsion. The two numbers describe the end points of that parameter assuming a continuous span of numbers between. E.g. t25 describes the geometry of 4 atoms starting at 2 and going to 5, hitting atoms 3 and 4 along the way.

ASCII art: Fig 1. The 6 atoms that define the geometry between the upstream partner and the downstream partner. dis_U1D1 is the distance between atoms U1 and D1 U3 U2 — U1

      \ dis_U1D1

        D1 --- D2
                 \.
                   D3

Fig 2. The two angles U3 U2 — U1 ang_U2D1 ang_U1D2 D1 — D2 D3 Fig 3. The three torsions U3 \ tor_U3D1 tor_U3D1: torsion about U2-U1 axis starting at atom U3 and ending at D1 U2 — U1

      \ tor_U2D2      tor_U2D2: torsion about U1-D1 axis starting at atom U2 and ending at D2

        D1 --- D2
      tor_U1D3   \     tor_U1D3: torsion about D1-D2 axis starting at atom U1 and ending at D3
                   D3

There are three other parameters needed to construct the location of atoms 4, 5 and 6 from atoms 1, 2 and 3, but these are not considered DOFs as they are not allowed to vary. They are: Extra 1: the distance between atom D1 and atom D2 Extra 2: the distance between atom D2 and atom D3 Extra 3: the angle between atoms D1, D2 and D3.

These three parameters must be communicated to the ExternGeomSampler through its functions set_dis_D1D2, set_dis_D2D3 and set_ang_D1D2D3.

The ExternalGeomSampler holds the set of samples for each of the 6 DOFs. For each sample, it precomputes a HomogeneousTransform so that during the enumeration of all sample combinations the coordinate computation requires matrix multiplication only: the more expensive transcendental function evaluations evaluated before coordinate construction begins, their results stored, and are thereby avoided in the enumeration loops.

To build the coordinates of atoms D1, D2 and D3, given the sample id's for the 6 DOFs as the 6-tuple [ i, j, k, l, m, n ]: start with a coordinate frame at atom U1 s.t. the z axis lies on the vector from atom U2 to atom U1, the y axis lies in the plane defined atoms U1, U2 and U3, and the x axis is the cross-product of y and z. Call the start frame "frame1." frame2 is the product: frame1 * transform( HT_tor_U3D1, i ); frame3 is the product: frame2 * transform( HT_ang_U2D1, j ); frame4 is computed from frame3 by walking along frame3's z-axis by dis_U1D1_samples( k ); frame4.point() is the coordinate for atom 4. frame5 is the product: frame4 * transform( HT_tor_U2D2, l ); frame6 is the product: frame5 * transform( HT_ang_U1D2, m ); frame6.point() is the coordinate for atom 5. NOTE: transform( HT_ang_U1D2, m ) is the product of the z-axis rotation by ang_U1D2_sample_[ m ] and the transformation HT along the z-axis by the distance between atoms D1 and D2. The ExternalGeomSampler pre-multiplies these matricies. frame7 is the product: frame6 * transform( HT_tor_U1D3, n ); frame7.point() is the coordinate for atom 6. NOTE: transform( HT_tor_U1D3, n ) is the product of three HTs: the HT representing the z-axis rotation by tor_U1D3_sample_[ n ], the HT representing the x-axis rotation by ( -1 * ( 180 - ang_D1D2D3 ) ) and the HT representing the z-axis translation by the distance between atoms D2 and D3. The ExternalGeomSampler pre-multiplies these matrices.

Member Typedef Documentation

Constructor & Destructor Documentation

protocols::toolbox::match_enzdes_util::ExternalGeomSampler::~ExternalGeomSampler ( )
overridedefault
protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ExternalGeomSampler ( )
protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ExternalGeomSampler ( ExternalGeomSampler const &  other)

Member Function Documentation

utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ang_U1D2_samples ( ) const
inline

References ang_U1D2_samples_.

Referenced by set_ang_U1D2_samples().

utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ang_U2D1_samples ( ) const
inline

References ang_U2D1_samples_.

Referenced by set_ang_U2D1_samples().

utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::dis_U1D1_samples ( ) const
inline

References dis_U1D1_samples_.

Referenced by set_dis_U1D1_samples().

void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::flip_upstream_downstream_samples ( )

convenience function if one wants to change the meaning of upstream and downstream

References ang_U1D2_samples_, ang_U2D1_samples_, tor_U1D3_samples_, tor_U3D1_samples_, and transforms_uptodate_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_ang_U1D2_samples ( ) const
inline

References ang_U1D2_samples_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_ang_U2D1_samples ( ) const
inline

References ang_U2D1_samples_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_dis_U1D1_samples ( ) const
inline

References dis_U1D1_samples_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_tor_U1D3_samples ( ) const
inline

References tor_U1D3_samples_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_tor_U2D2_samples ( ) const
inline

References tor_U2D2_samples_.

core::Size protocols::toolbox::match_enzdes_util::ExternalGeomSampler::n_tor_U3D1_samples ( ) const
inline

Accessors.

References tor_U3D1_samples_.

ExternalGeomSampler & protocols::toolbox::match_enzdes_util::ExternalGeomSampler::operator= ( ExternalGeomSampler const &  rhs)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::precompute_transforms ( )
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_ang_D1D2D3 ( Real  ang_in_degrees)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_ang_U1D2_samples ( utility::vector1< Real > const &  ang_U1D2_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_ang_U1D2_samples ( std::list< Real > const &  ang_U1D2_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_ang_U2D1_samples ( utility::vector1< Real > const &  ang_U2D1_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_ang_U2D1_samples ( std::list< Real > const &  ang_U2D1_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_dis_D1D2 ( Real  distance)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_dis_D2D3 ( Real  distance)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_dis_U1D1_samples ( utility::vector1< Real > const &  dis_U1D1_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_dis_U1D1_samples ( std::list< Real > const &  dis_U1D1_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U1D3_samples ( utility::vector1< Real > const &  tor_U1D3_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U1D3_samples ( std::list< Real > const &  tor_U1D3_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U2D2_samples ( utility::vector1< Real > const &  tor_U2D2_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U2D2_samples ( std::list< Real > const &  tor_U2D2_samples)
void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U3D1_samples ( utility::vector1< Real > const &  tor_U3D1_samples)

Intialization routines all initialization routines must be invoked before building may begin. Once each has been called, the function precompute_transforms() must be called.

References tor_U3D1_samples(), tor_U3D1_samples_, and transforms_uptodate_.

void protocols::toolbox::match_enzdes_util::ExternalGeomSampler::set_tor_U3D1_samples ( std::list< Real > const &  tor_U3D1_samples)
utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U1D3_samples ( ) const
inline

References tor_U1D3_samples_.

Referenced by set_tor_U1D3_samples().

utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U2D2_samples ( ) const
inline

References tor_U2D2_samples_.

Referenced by set_tor_U2D2_samples().

utility::vector1< Real > const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U3D1_samples ( ) const
inline

References tor_U3D1_samples_.

Referenced by set_tor_U3D1_samples().

HTReal const& protocols::toolbox::match_enzdes_util::ExternalGeomSampler::transform ( ExternalTransform  id,
core::Size  which_state 
) const
inline
bool protocols::toolbox::match_enzdes_util::ExternalGeomSampler::transforms_uptodate ( ) const
inline

References transforms_uptodate_.

Member Data Documentation

Real protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ang_D1D2D3_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ang_U1D2_samples_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::ang_U2D1_samples_
private
Real protocols::toolbox::match_enzdes_util::ExternalGeomSampler::dis_D1D2_
private
Real protocols::toolbox::match_enzdes_util::ExternalGeomSampler::dis_D2D3_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::dis_U1D1_samples_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U1D3_samples_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U2D2_samples_
private
utility::vector1< Real > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::tor_U3D1_samples_
private
utility::vector1< utility::vector1< HTReal > > protocols::toolbox::match_enzdes_util::ExternalGeomSampler::transforms_
private
bool protocols::toolbox::match_enzdes_util::ExternalGeomSampler::transforms_uptodate_
private

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