|
|
bool | compute () |
|
|
void | setConformationSet (ConformationSet *new_set, bool precompute_atombijection=false) |
| sets the poses to be clustered, the conformation set's reference system will the base system More...
|
|
void | setBaseSystemAndPoses (System const &base_system, std::vector< PosePointer > const &poses) |
|
void | setBaseSystemAndTransformations (System const &base_system, String transformation_file_name) |
|
const ConformationSet * | getConformationSet () const |
| returns the poses to be clustered as ConformationSet More...
|
|
ConformationSet * | getConformationSet () |
| returns the poses to be clustered as ConformationSet More...
|
|
const std::vector< RigidTransformation > & | getRigidTransformations () const |
| returns the poses as rigid transformations More...
|
|
std::vector< Vector3 > & | getCentersOfMass () |
| returns the centers of mass-vector (non-empty only for CENTER_OF_MASS_DISTANCE) More...
|
|
std::vector< Vector3 > const & | getCentersOfMass () const |
| returns the centers of mass-vector, const version (non-empty only for CENTER_OF_MASS_DISTANCE) More...
|
|
const System & | getSystem () const |
| returns the reference pose More...
|
|
System & | getSystem () |
| returns the reference pose More...
|
|
Size | getNumberOfPoses () const |
| returns the number of poses More...
|
|
Size | getNumberOfClusters () const |
| returns the number of clusters found More...
|
|
const std::set< Index > & | getCluster (Index i) const |
|
std::set< Index > & | getCluster (Index i) |
|
Size | getClusterSize (Index i) const |
| returns the size of cluster i More...
|
|
float | getClusterScore (Index i) const |
| returns the score of cluster i More...
|
|
float | getScore (const System sys_a, const System sys_b, Options options) const |
| returns the score between two poses given as systems More...
|
|
AtomBijection & | getAtomBijection () |
| returns a reference to the cached AtomBijection More...
|
|
AtomBijection const & | getAtomBijection () const |
| returns a const reference to the cached AtomBijection More...
|
|
void | applyTransformation2System (Index i, System &target_system) |
| apply a transformation to a given system More...
|
|
void | convertTransformations2Snaphots () |
| convert the poses to SnapShots More...
|
|
void | convertSnaphots2Transformations () |
| convert the poses to rigid transformations More...
|
|
float | computeCompleteLinkageRMSD (Index i, Options options, bool initialize=true) |
| returns the complete linkage RMSD of cluster i More...
|
|
boost::shared_ptr< System > | getPose (Index i) const |
| returns the complete linkage RMSD of a pose set More...
|
|
std::vector< PosePointer > const & | getPoses () const |
| returns poses as PosePointer More...
|
|
boost::shared_ptr< System > | getClusterRepresentative (Index i) |
| returns the "central cluster" conformation of cluster i as system More...
|
|
Index | findClusterRepresentative (Index i) |
| returns the index of the cluster representative More...
|
|
boost::shared_ptr< ConformationSet > | getClusterConformationSet (Index i) |
| returns cluster i as ConformationSet More...
|
|
boost::shared_ptr< ConformationSet > | getReducedConformationSet () |
| returns a ConformationSet containing one structure per cluster More...
|
|
bool | refineClustering (Options const &refined_options) |
|
|
Eigen::MatrixXd | pairwise_scores_ |
|
ConformationSet * | current_set_ |
| the ConformationSet we wish to cluster More...
|
|
std::vector< std::set< Index > > | clusters_ |
| the clusters: sets of pose indices More...
|
|
std::vector< Index > | cluster_representatives_ |
|
std::vector< float > | cluster_scores_ |
| the scores of the clusters More...
|
|
Index | rmsd_level_of_detail_ |
| the RMSD definition used for clustering More...
|
|
std::vector< PosePointer > | poses_ |
|
std::vector< RigidTransformation > | transformations_ |
|
Eigen::Matrix3f | covariance_matrix_ |
|
System | base_system_ |
|
SnapShot | base_conformation_ |
|
bool | has_rigid_transformations_ |
|
bool | delete_conformation_set_ |
|
std::vector< double > | lambda_ |
|
std::vector< int > | pi_ |
|
std::vector< double > | mu_ |
|
Size | number_of_selected_atoms_ |
|
std::vector< Vector3 > | com_ |
|
AtomBijection | atom_bijection_ |
|
System | system_i_ |
|
System | system_j_ |
|
ClusterTree | cluster_tree_ |
| The tree built during hierarchical clustering. More...
|
|
std::vector< std::set< Index > > | extractClustersForThreshold (float threshold, Size min_size=0) |
|
std::vector< std::set< Index > > | extractNBestClusters (Size n) |
|
std::vector< std::set< Index > > | filterClusters (Size min_size=1) |
|
void | serializeWardClusterTree (std::ostream &out, bool binary=false) |
|
void | deserializeWardClusterTree (std::istream &in, bool binary=false) |
|
void | exportWardClusterTreeToGraphViz (std::ostream &out) |
|
void | exportClusterTreeToJSON (std::ostream &out) |
|
void | printClusters (std::ostream &out=std::cout) const |
|
void | printClusterScores (std::ostream &out=std::cout) |
|
bool | trivialCompute_ () |
|
bool | linearSpaceCompute_ () |
|
bool | althausCompute_ () |
|
void | slinkInner_ (int current_level) |
|
void | clinkInner_ (int current_level) |
|
bool | nearestNeighborChainCompute_ () |
|
void | initWardDistance_ (Index rmsd_type) |
|
void | updateWardDistance_ (ClusterTreeNode parent, ClusterTreeNode i, ClusterTreeNode j, Index rmsd_type) |
|
float | computeWardDistance_ (ClusterTreeNode i, ClusterTreeNode j, Index rmsd_type) |
|
std::set< Index > | collectClusterBelow_ (ClusterTreeNode const &v) |
|
void | computeCenterOfMasses_ () |
|
void | precomputeAtomBijection_ () |
|
float | getClusterRMSD_ (Index i, Index j, Index rmsd_type) |
|
bool | readTransformationsFromFile_ (String filename) |
|
float | getRMSD_ (Index i, Index j, Index rmsd_type) |
|
void | storeSnapShotReferences_ () |
|
void | printCluster_ (Size i, std::ostream &out=std::cout) const |
|
void | printVariables_ (int a, int b, double c, int d, double e, int current_level) |
|
void | clear_ () |
|
void | exportToJSONDFS_ (ClusterTreeNode const ¤t, String &result) |
|
static bool | isExcludedByLevelOfDetail_ (Atom const *atom, Index rmsd_level_of_detail) |
|
Computation of clusters of docking poses.
Pose Clustering
This class computes clusters of docking poses given as a conformation set using a complete linkage algorithm.
The class assumes the following setup
- a pairwise rigid protein-protein docking
- all receptor-ligand poses have already been mapped onto each other such that the "receptors" are kept fixed
- the given pose set only contains the "ligands"
We offer several algorithms via the option CLUSTER_METHOD:
- TRIVIAL_COMPLETE_LINKAGE: a naive implementation, that guarantees an optimal final partition.
- CLINK_DEFAYS as described in D. Defays: An efficient algorithm for a complete link method. The Computer Journal. 20, 4, British Computer Society, 1977, p. 364-366. Please note that this implementation does not guarantee to find the best final clustering!
- NEAREST_NEIGHBOR_CHAIN_WARD as described in Murtagh, Fionn (1983): "A survey of recent advances in hierarchical clustering algorithms", The Computer Journal 26 (4): 354–359
Note that this algorithm computes a full clustering.
- SLINK_SIBSON as described in R. Sibson: SLINK: an optimally efficient algorithm for the single-link cluster method. The Computer Journal. 16, 1, British Computer Society, 1973, p. 30-34
The scope of the scoring (the atoms to be considered) can be defined via the option RMSD_LEVEL_OF_DETAIL. If the option is set to PROPERTY_BASED_ATOM_BIJECTION, arbitrary sets of atoms, e.g. binding pockets, can be used by assigning property named "ATOMBIJECTION_RMSD_SELECTION" to the respective atoms in the reference system. See also BALL::Expression.
The minimal rmsd or ward distance between the final clusters can be defined via option DISTANCE_THRESHOLD. In order to relate RMSD and ward distance, we use sqrt(ward_dist / number_of_selected_atoms) for threshold extraction.
The nearest neighbor chain ward clustering in principle computes a full clustering. Option DISTANCE_THRESHOLD gives a ward distance that is automatically used to extract clusters. Further extractions with different thresholds are possible.
The complete linkage algorithms guarantee a minimal cluster distance (max RMSD between all pairs of two clusters), specified with option DISTANCE_THRESHOLD.
The initial poses can be given as ConformationSet or as transformation file, i.e. translation and rotation of each pose. Depending on this choice, the option RMSD_TYPE has to be set to SNAPSHOT_RMSD or RIGID_RMSD. If RMSD_TYPE is set to CENTER_OF_MASS_DISTANCE, the option RMSD_LEVEL_OF_DETAIL will be ignored.
By setting the option RUN_PARALLEL to true, the user can request parallel execution. This will be performed if the execution environment is enabled (BALL_HAS_TBB), and if the algorithm supports it.
Definition at line 126 of file poseClustering.h.