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

Public Types

typedef utility::VirtualBase parent
typedef core::Size Size
typedef core::Real Real
< Real

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< HTReal > > 

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

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

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

References ang_U1D2_samples_.

Referenced by set_ang_U1D2_samples().

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

References ang_U2D1_samples_.

Referenced by set_ang_U2D1_samples().

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

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

References ang_U1D2_samples_.

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

References ang_U2D1_samples_.

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

References dis_U1D1_samples_.

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

References tor_U1D3_samples_.

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

References tor_U2D2_samples_.

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


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

References tor_U1D3_samples_.

Referenced by set_tor_U1D3_samples().

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

References tor_U2D2_samples_.

Referenced by set_tor_U2D2_samples().

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

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
bool protocols::toolbox::match_enzdes_util::ExternalGeomSampler::transforms_uptodate ( ) const

References transforms_uptodate_.

Member Data Documentation

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

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