8 #ifndef IMPCORE_PREDICATES_H
9 #define IMPCORE_PREDICATES_H
11 #include <IMP/core/core_config.h>
16 IMPCORE_BEGIN_NAMESPACE
24 "InBoundingBox3DSingletonPredicate%1%")
28 return bb_.get_contains(
XYZ(m, pi).get_coordinates()) ? 1 : 0;
46 "AttributeSingletonPredicate%1%")
50 return m->get_attribute(bb_, pi);
71 m->get_sphere(pi[0]).get_radius() + m->get_sphere(pi[1]).get_radius();
72 #if IMP_HAS_CHECKS > 1
75 for (
unsigned int i = 0; i < 3; ++i) {
76 double delta = std::abs(m->get_sphere(pi[0]).get_center()[i] -
77 m->get_sphere(pi[1]).get_center()[i]);
85 m->get_sphere(pi[1]).get_center()) <
86 algebra::get_squared(sr);
103 template <
class Predicate,
class Score = SingletonScore>
108 Score *get_score(
int val)
const {
109 if (val < offset_ || val > scores_.size() + offset_) {
112 return scores_[val + offset_];
118 std::string name =
"PredicateScore%1%")
120 void set_singleton_score(
int val, Score *score) {
122 "Negative predicate values not supported yet");
123 scores_.resize(std::max<int>(val + 1, scores_.size()));
124 scores_[val] = score;
134 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
135 template <
class Predicate,
class Score>
139 int val = pred_->get_value(m, p);
140 Score *s = get_score(val);
142 return s->Score::evaluate_index(m, p, da);
150 template <
class Predicate,
class Score>
151 inline PredicateSingletonScore<Predicate, Score> *
155 ret->set_score(val, score);
159 IMPCORE_END_NAMESPACE
Return 1 if the XYZ is in the bounding box, 0 otherwise.
virtual ModelObjectsTemp do_get_inputs(Model *m, const ParticleIndexes &pi) const
A class to store an fixed array of same-typed values.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
virtual int get_value_index(Model *m, ParticleIndex pi) const
Compute the predicate and the derivative if needed.
double get_squared_distance(const VectorD< D > &v1, const VectorD< D > &v2)
Compute the squared distance between two vectors.
Macros for various classes.
ParticlesTemp get_particles(Model *m, const ParticleIndexes &ps)
virtual int get_value_index(Model *m, const ParticleIndexPair &pi) const
Compute the predicate and the derivative if needed.
A smart pointer to a reference counted object.
#define IMP_INTERNAL_CHECK(expr, message)
An assertion to check for internal errors in IMP. An IMP::ErrorException will be thrown.
Define SingletonPredicate.
Class for storing model, its restraints, constraints, and particles.
double get_distance(const Plane3D &pln, const Vector3D &p)
Return the distance between a plane and a point in 3D.
Return the value of an int attribute as the predicate value.
Abstract class for scoring object(s) of type ParticleIndex.
#define IMP_SINGLETON_SCORE_METHODS(Name)
A decorator for a particle with x,y,z coordinates.
virtual ModelObjectsTemp do_get_inputs(Model *m, const ParticleIndexes &pi) const
virtual ModelObjectsTemp do_get_inputs(Model *m, const ParticleIndexes &pi) const
Return 1 if two XYZRs collide.
#define IMP_SINGLETON_PREDICATE_METHODS(Name)
Define extra the functions needed for a SingletonPredicate.
Abstract predicate function.
Abstract predicate function.
double Float
Basic floating-point value (could be float, double...)
#define IMP_USAGE_CHECK(expr, message)
A runtime test for incorrect usage of a class or method.
PredicateSingletonScore< Predicate, Score > * create_predicates_singleton_score(Predicate *pred, int val, Score *score)
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.
Class for adding derivatives from restraints to the model.
#define IMP_PAIR_PREDICATE_METHODS(Name)
Define extra the functions needed for a PairPredicate.
virtual int get_value_index(Model *m, ParticleIndex pi) const
Compute the predicate and the derivative if needed.
A decorator for a particle with x,y,z coordinates and a radius.