template<class TransT>
class IMP::multifit::RMSDClustering< TransT >
RMSD clustering.
/note Iteratively joins pairs of close transformatins. The algorithm first clusters transformations for which the transformed centroids are close (fall into the same bin in a hash. Then, all clusters are globally reclustered. /note TransT should implement the functions: join_into() add a transformation to the current cluster and possibly updates the representative transformation for the cluster get_score() that returns the score (higher score is better) update_score() that updates the score of the cluster according to a new member get_representative_transformation() a function that returns the the representative transformation for a cluster
Public Types |
typedef boost::property
< boost::edge_weight_t, short > | ClusEdgeWeightProperty |
typedef boost::property
< boost::vertex_index_t, int > | ClusVertexIndexProperty |
typedef boost::adjacency_list
< boost::vecS, boost::vecS,
boost::undirectedS,
ClusVertexIndexProperty,
ClusEdgeWeightProperty > | Graph |
|
typedef GeometricHash< int, 3 > | Hash3 |
|
typedef RCGTraits::edge_descriptor | RCEdge |
|
typedef RCGTraits::edge_iterator | RCEdgeIt |
typedef boost::graph_traits
< Graph > | RCGTraits |
typedef
RCGTraits::vertex_descriptor | RCVertex |
|
typedef RCGTraits::vertex_iterator | RCVertexIt |
Protected Member Functions |
|
void | build_full_graph (const Hash3 &h, const std::vector< TransformationRecord * > &recs, float max_dist, Graph &g) |
|
void | build_graph (const Hash3::PointList &inds, const std::vector< TransformationRecord * > &recs, float max_dist, Graph &g) |
| virtual void | clean (std::vector< TransformationRecord * > *&records) |
| | Remove transformations which are not valid.
|
|
int | cluster_graph (Graph &g, const std::vector< TransformationRecord * > &recs, float max_dist) |
|
virtual int | exhaustive_clustering (float max_dist, std::vector< TransformationRecord * > &recs) |
|
int | fast_clustering (float max_dist, std::vector< TransformationRecord * > &recs) |
| virtual float | get_squared_distance (const TransT &trans1, const TransT &trans2) |