![]() |
Rosetta
2020.11
|
Bin the six degrees of freedom that describe the downstream geometry of a hit. These degrees of freedom are, in order, the x, y and z coordinates of orientation atom3, and the phi, psi, and theta euler angles that describe the orientation of the coordinate frame at orientation atom 3. The binner is responsible for maintaining the lower corner of the 6-d space – the first two Euler angles wrap at 360; the third Euler angle, theta, does not wrap in the same way. See the comments for the bin6 method. More...
#include <SixDHasher.hh>
Public Types | |
typedef numeric::Real | Real |
typedef numeric::Size | Size |
typedef numeric::xyzVector < numeric::Real > | Vector |
typedef numeric::geometry::BoundingBox < Vector > | BoundingBox |
![]() | |
typedef platform::Size | Size |
typedef platform::Size | size_type |
Public Member Functions | |
~SixDCoordinateBinner () override | |
Automatically generated virtual destructor for class deriving directly from ReferenceCount. More... | |
SixDCoordinateBinner (BoundingBox const &bounding_box, Size3 const &euler_offsets, utility::fixedsizearray1< Real, 6 > bin_widths) | |
bool | contains (Real6 const &point) const |
void | tree_init (Size max_radius) |
Bin6D | bin6 (Real6 const &values) const |
Construct the discrete representation of a six-dimensional vector of reals representing an xyz coordinate in its first three dimensions and a set of three Euler angles in the last three dimensions. Precondition: The xyz coordinate must be inside the bounding box of this binner. Precondition: The euler angles should be in degrees; the first two should be in the range between 0 and 360, the third should be in the range from 0 to 180. More... | |
Bin6D | halfbin6 (Real6 const &values) const |
Determine halfbin index for a point in 6D i.e., how far from the lower corner of the point's containing 6D voxel is the point – is it more than halfway to the next 6D voxel? Each dimension returned will hold a 0 or a 1. More... | |
boost::uint64_t | bin_index (Bin6D const &bin) const |
functor used by boost (and sgi's stl) hash classes. More... | |
boost::uint64_t | bin_index (Real6 const &values) const |
compute the bin index (64-bit int) for a 6D point. More... | |
std::vector< boost::uint64_t > | radial_bin_index (numeric::Size radius, Real6 const ¢er) const |
Bin6D | bin_from_index (boost::uint64_t index) const |
Real6 | bin_center_point (Bin6D const &bin) const |
BoundingBox | bounding_volume_from_index (boost::uint64_t index) const |
BoundingBox const & | bounding_box () const |
Real3 const & | euler_offsets () const |
Real6 const & | bin_widths () const |
Real6 const & | halfbin_widths () const |
Size6 const & | dimsizes () const |
![]() | |
ReferenceCount () | |
Default constructor. More... | |
virtual | ~ReferenceCount () |
Private Member Functions | |
SixDCoordinateBinner () | |
Real3 | wrap_euler_angles (Real6 const &values) const |
Private Attributes | |
BoundingBox | bounding_box_ |
Size6 | dimsizes_ |
Size6 | dimprods_ |
Real6 | bin_widths_ |
Real6 | halfbin_widths_ |
Real3 | euler_offsets_ |
SixDOffsetTree | offset_tree_ |
Bin the six degrees of freedom that describe the downstream geometry of a hit. These degrees of freedom are, in order, the x, y and z coordinates of orientation atom3, and the phi, psi, and theta euler angles that describe the orientation of the coordinate frame at orientation atom 3. The binner is responsible for maintaining the lower corner of the 6-d space – the first two Euler angles wrap at 360; the third Euler angle, theta, does not wrap in the same way. See the comments for the bin6 method.
typedef numeric::geometry::BoundingBox< Vector > numeric::geometry::hashing::SixDCoordinateBinner::BoundingBox |
typedef numeric::xyzVector< numeric::Real > numeric::geometry::hashing::SixDCoordinateBinner::Vector |
|
overridedefault |
Automatically generated virtual destructor for class deriving directly from ReferenceCount.
Auto-generated virtual destructor
|
privatedefault |
numeric::geometry::hashing::SixDCoordinateBinner::SixDCoordinateBinner | ( | BoundingBox const & | bounding_box, |
Size3 const & | euler_offsets, | ||
utility::fixedsizearray1< Real, 6 > | bin_widths | ||
) |
Construct the discrete representation of a six-dimensional vector of reals representing an xyz coordinate in its first three dimensions and a set of three Euler angles in the last three dimensions. Precondition: The xyz coordinate must be inside the bounding box of this binner. Precondition: The euler angles should be in degrees; the first two should be in the range between 0 and 360, the third should be in the range from 0 to 180.
When floating point comparison breaks down, it is possible to have a point hash outside of the bounding volume: 359.999999 / 10.0 -> 36 instead of 35. For this reason, it's important to mod the resulting bin index by the number of bins.
References bin_widths_, bounding_box_, numeric::geometry::BoundingBox< typename >::contains(), dimsizes_, numeric::geometry::BoundingBox< typename >::lower(), wrap_euler_angles(), numeric::xyzVector< typename >::x(), numeric::xyzVector< typename >::y(), and numeric::xyzVector< typename >::z().
Referenced by bin_index(), halfbin6(), and radial_bin_index().
|
inline |
References basic::options::OptionKeys::lh::fragpdb::bin, dimprods_, and test.T200_Scoring::ii.
Referenced by bounding_volume_from_index().
|
inline |
functor used by boost (and sgi's stl) hash classes.
References ObjexxFCL::format::A(), dimprods_, and dimsizes_.
Referenced by bin_index(), and radial_bin_index().
|
inline |
compute the bin index (64-bit int) for a 6D point.
References basic::options::OptionKeys::lh::fragpdb::bin, bin6(), and bin_index().
|
inline |
References bin_widths_.
|
inline |
References bounding_box_.
|
inline |
References bounding_box_, and numeric::geometry::BoundingBox< typename >::contains().
|
inline |
References dimsizes_.
|
inline |
References euler_offsets_.
Determine halfbin index for a point in 6D i.e., how far from the lower corner of the point's containing 6D voxel is the point – is it more than halfway to the next 6D voxel? Each dimension returned will hold a 0 or a 1.
References basic::options::OptionKeys::lh::fragpdb::bin, bin6(), bin_widths_, bounding_box_, halfbin_widths_, test.T200_Scoring::ii, numeric::geometry::BoundingBox< typename >::lower(), and wrap_euler_angles().
|
inline |
References halfbin_widths_.
std::vector< boost::uint64_t > numeric::geometry::hashing::SixDCoordinateBinner::radial_bin_index | ( | numeric::Size | radius, |
Real6 const & | center | ||
) | const |
|
inline |
References numeric::geometry::hashing::SixDOffsetTree::init(), and offset_tree_.
|
private |
When using a particular set of offsets, make sure that the euler angles wrap so that neighboring points in 6D actually fall into the same bins. The logic here is tested thuroughly in Hasher.cxxtest.hh
References euler_offsets_.
Referenced by bin6(), and halfbin6().
|
private |
Referenced by bin6(), bin_center_point(), bin_widths(), bounding_volume_from_index(), halfbin6(), and SixDCoordinateBinner().
|
private |
Referenced by bin6(), bin_center_point(), bounding_box(), bounding_volume_from_index(), contains(), halfbin6(), and SixDCoordinateBinner().
|
private |
Referenced by bin_from_index(), bin_index(), and SixDCoordinateBinner().
|
private |
Referenced by bin6(), bin_index(), dimsizes(), radial_bin_index(), and SixDCoordinateBinner().
|
private |
Referenced by bin_center_point(), euler_offsets(), SixDCoordinateBinner(), and wrap_euler_angles().
|
private |
Referenced by bin_center_point(), halfbin6(), halfbin_widths(), and SixDCoordinateBinner().
|
private |
Referenced by radial_bin_index(), and tree_init().