IMP  2.1.1
The Integrative Modeling Platform
kernel/PairPredicate.h
Go to the documentation of this file.
1 /**
2  * \file IMP/kernel/PairPredicate.h
3  * \brief Define PairPredicate.
4  *
5  * WARNING This file was generated from PairPredicate.h
6  * in /tmp/nightly-build-61576/imp-2.1.1/tools/build/container_templates/kernel
7  * by tools/maintenance/setup_containers.py.
8  *
9  * Copyright 2007-2013 IMP Inventors. All rights reserved.
10  */
11 
12 #ifndef IMPKERNEL_PAIR_PREDICATE_H
13 #define IMPKERNEL_PAIR_PREDICATE_H
14 
15 #include <IMP/kernel/kernel_config.h>
16 #include "base_types.h"
17 #include "ParticleTuple.h"
18 #include "DerivativeAccumulator.h"
19 #include "internal/container_helpers.h"
20 #include "model_object_helpers.h"
21 
22 IMPKERNEL_BEGIN_NAMESPACE
23 
24 //! Abstract predicate function
25 /** A predicate is a function which returns one of a discrete set of
26  values (eg -1, 0, 1 depending on whether a value is negative, zero
27  or positive). PairPredicates will evaluate the predicate for the passed
28  particles.
29 
30  Implementers should check out IMP_PAIR_PREDICATE().
31 */
32 class IMPKERNELEXPORT PairPredicate : public ParticleInputs,
33  public base::Object {
34  public:
35  typedef ParticlePair Argument;
37  PairPredicate(std::string name = "PairPredicate %1%");
38  /** \deprecated_at{2.1} Use the index based version.*/
39  IMPKERNEL_DEPRECATED_METHOD_DECL(2.1)
40  virtual int get_value(const ParticlePair& vt) const;
41 
42  /** \deprecated_at{2.1} Use the index based version.*/
43  IMPKERNEL_DEPRECATED_METHOD_DECL(2.1)
44  virtual Ints get_value(const ParticlePairsTemp &o) const;
45 
46 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
47  virtual void remove_if_equal(kernel::Model *m, ParticleIndexPairs &ps, int v) const;
48  virtual void remove_if_not_equal(kernel::Model *m, ParticleIndexPairs &ps, int v) const;
49 #endif
50 
51  //! Compute the predicate and the derivative if needed.
52  virtual int get_value_index(kernel::Model *m, const ParticleIndexPair& vt) const;
53 
54  //! Enable them to be use as functors
55  /** But beware of slicing.
56  */
57  int operator()(kernel::Model *m, const ParticleIndexPair& vt) const {
58  return get_value_index(m, vt);
59  }
60 
61  virtual Ints get_value_index(kernel::Model *m, const ParticleIndexPairs &o) const {
62  Ints ret(o.size());
63  for (unsigned int i = 0; i < o.size(); ++i) {
64  ret[i] += get_value_index(m, o[i]);
65  }
66  return ret;
67  }
68 
70 };
71 
72 IMPKERNEL_END_NAMESPACE
73 
74 #endif /* IMPKERNEL_PAIR_PREDICATE_H */
Class for adding derivatives from restraints to the model.
int operator()(kernel::Model *m, const ParticleIndexPair &vt) const
Enable them to be use as functors.
Basic types used by IMP.
#define IMP_REF_COUNTED_DESTRUCTOR(Name)
Ref counted objects should have private destructors.
Single variable function.
A class to store an fixed array of same-typed values.
Definition: base/Array.h:33
Abstract predicate function.
Common base class for heavy weight IMP objects.
Classes to handle individual model particles.
IMP::kernel::PairPredicate PairPredicate
Class for storing model, its restraints, constraints, and particles.