9 #ifndef IMPCORE_GAUSSIAN_H
10 #define IMPCORE_GAUSSIAN_H
13 #include <IMP/core/core_config.h>
21 #include "internal/rigid_bodies.h"
22 #include <Eigen/Dense>
24 IMPCORE_BEGIN_NAMESPACE
26 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
32 Matrix3D(Eigen::Matrix3d mat,
33 std::string name=
"Matrix3DDensityMap%1%"):Object(name),mat_(mat){ }
34 Eigen::Matrix3d get_mat()
const {
return mat_;}
51 static ObjectKey get_local_covariance_key();
52 static ObjectKey get_global_covariance_key();
65 return local->get_mat();
71 get_local_covariance().diagonal()[1],
72 get_local_covariance().diagonal()[2]);
77 ObjectKey k = get_global_covariance_key();
79 if (!
get_model()->get_has_attribute(k, pi)) {
80 update_global_covariance();
83 return global->get_mat();
96 IMP_NEW(Matrix3D,local,(covar.asDiagonal()));
100 local->set_was_used(
true);
107 set_local_covariance(Eigen::Vector3d(v.get_data()));
112 IMP_NEW(Matrix3D,global,(covar));
113 ObjectKey k = get_global_covariance_key();
115 if (!
get_model()->get_has_attribute(k, pi)) {
120 global->set_was_used(
true);
124 void update_global_covariance();
132 IMPCORE_END_NAMESPACE
The base class for decorators.
void add_cache_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
ParticleIndex get_particle_index() const
Returns the particle index decorated by this decorator.
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
Model * get_model() const
Returns the Model containing the particle.
Storage of a model, its restraints, constraints and particles.
Exception definitions and assertions.
void set_global_covariance(Eigen::Matrix3d covar)
set the global-frame covariance. does NOT update local frame!
#define IMP_NEW(Typename, varname, args)
Declare a ref counted pointer to a new object.
void clear_particle_caches(ParticleIndex pi)
Clear all the cache attributes of a given particle.
Class for storing model, its restraints, constraints, and particles.
A Gaussian distribution in 3D.
Common base class for heavy weight IMP objects.
Eigen::Matrix3d get_global_covariance()
retrieve global covariance
functionality for defining rigid bodies
Helper macros for implementing Decorators.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
set the value of particle attribute with the specified key
#define IMP_DECORATOR_SETUP_0(Name)
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
A shared base class to help in debugging and things.
#define IMP_DECORATOR_METHODS(Name, Parent)
void set_local_covariance(const Eigen::Vector3d covar)
set the local-frame covariance.
#define IMP_DECORATORS(Name, PluralName, Parent)
Define the types for storing sets of decorators.
algebra::Gaussian3D get_gaussian() const
create Gaussian3D from these attributes
bool get_has_attribute(TypeKey attribute_key, ParticleIndex particle) const
return true if particle has attribute with the specified key
A decorator for a rigid body.
void set_variances(const algebra::Vector3D v)
equivalent to set_local_covariance, used for backwards compatibility
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)
get the value of the particle attribute with the specified key
algebra::Vector3D get_variances() const
retrieve local variances as Vector3D
Eigen::Matrix3d get_local_covariance() const
retrieve local covariance (as diagonal matrix)
IMP::algebra::ReferenceFrame3D get_reference_frame() const