IMP  2.3.1
The Integrative Modeling Platform
embeddings.h
Go to the documentation of this file.
1 /**
2  * \file IMP/statistics/embeddings.h
3  * \brief Cluster sets of points.
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPSTATISTICS_EMBEDDINGS_H
10 #define IMPSTATISTICS_EMBEDDINGS_H
11 
12 #include <IMP/statistics/statistics_config.h>
13 #include "Embedding.h"
14 #include <IMP/base/object_macros.h>
15 #include <IMP/ConfigurationSet.h>
16 #include <IMP/SingletonContainer.h>
17 #include <IMP/algebra/VectorD.h>
18 
19 IMPSTATISTICS_BEGIN_NAMESPACE
20 
21 //! Embed a configuration using the XYZ coordinates of a set of particles
22 /** The point for each configuration of the model is a concatenation of
23  the Cartesian coordinates of the particles contained in the passed
24  SingletonContainer.
25 
26  See ConfigurationSet for more information about the input.
27 */
28 class IMPSTATISTICSEXPORT ConfigurationSetXYZEmbedding : public Embedding {
31  bool align_;
32 
33  public:
34  /** If align is true, all the configurations are rigidly aligned with
35  the first before generating their coordinates.
36  */
38  SingletonContainerAdaptor pi,
39  bool align = false);
40  algebra::VectorKD get_point(unsigned int i) const IMP_OVERRIDE;
41  unsigned int get_number_of_items() const IMP_OVERRIDE;
43 };
44 
45 /** Embed particles using the values of some of their attributes.
46  By default, the Cartesian coordinates are used, but another
47  set of attributes can be chosen. When using attributes that
48  are not equivalent (for example, angular degrees of freedom),
49  it is probably useful to rescale the attributes according
50  to their ranges (see IMP::kernel::Model::get_range()). This is
51  done by passing rescale=true to the constructor.
52 */
53 class IMPSTATISTICSEXPORT ParticleEmbedding : public Embedding {
55  FloatKeys ks_;
56  bool rescale_;
58 
59  public:
61 #if defined(IMP_DOXYGEN)
62  = core::XYZ::get_xyz_keys()
63 #else
64  = FloatKeys(
65  IMP::kernel::internal::
66  xyzr_keys,
67  IMP::kernel::internal::
68  xyzr_keys +
69  3)
70 #endif
71  ,
72  bool rescale = false);
73  algebra::VectorKD get_point(unsigned int i) const IMP_OVERRIDE;
74  unsigned int get_number_of_items() const IMP_OVERRIDE;
76 };
77 
78 //! Simply return the coordinates of a VectorD
79 class IMPSTATISTICSEXPORT VectorDEmbedding : public Embedding {
81 
82  public:
83  template <class C>
84  VectorDEmbedding(const C &vs)
85  : Embedding("VectorDs") {
86  vectors_.resize(vs.size());
87  for (unsigned int i = 0; i < vs.size(); ++i) {
88  vectors_[i] = algebra::VectorKD(vs[i].begin(), vs[i].end());
89  }
90  }
91 #ifdef SWIG
98 #endif
99  algebra::VectorKD get_point(unsigned int i) const IMP_OVERRIDE;
100  unsigned int get_number_of_items() const IMP_OVERRIDE;
102 };
103 
104 IMPSTATISTICS_END_NAMESPACE
105 
106 #endif /* IMPSTATISTICS_EMBEDDINGS_H */
A class to store a set of configurations of a model.
Embed a configuration using the XYZ coordinates of a set of particles.
Definition: embeddings.h:28
Various general useful macros for IMP.
Import IMP/kernel/SingletonContainer.h in the namespace.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:147
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
IMP::kernel::FloatKeys FloatKeys
A smart pointer to a reference counted object.
Definition: Pointer.h:87
Simple D vector class.
Store data to be clustered for embedding based algorithms.
Import IMP/kernel/ConfigurationSet.h in the namespace.
Cluster sets of points.
VectorD<-1 > VectorKD
Definition: VectorD.h:411
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.
Simply return the coordinates of a VectorD.
Definition: embeddings.h:79