home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
2.22.0
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
version 2.22.0
SingletonPredicate.h
Go to the documentation of this file.
1
// Autogenerated by ../../../../tmp/nightly-build-470/imp-2.22.0/tools/build/make_containers.py
2
// from ../../../../tmp/nightly-build-470/imp-2.22.0/tools/build/container_templates/kernel/ClassnamePredicate.h
3
// Do not edit - any changes will be lost!
4
5
/**
6
* \file IMP/SingletonPredicate.h
7
* \brief Define SingletonPredicate.
8
*
9
* Copyright 2007-2022 IMP Inventors. All rights reserved.
10
*/
11
12
#ifndef IMPKERNEL_SINGLETON_PREDICATE_H
13
#define IMPKERNEL_SINGLETON_PREDICATE_H
14
15
#include <IMP/kernel_config.h>
16
#include "
base_types.h
"
17
#include "
DerivativeAccumulator.h
"
18
#include "internal/container_helpers.h"
19
#include "
model_object_helpers.h
"
20
21
IMPKERNEL_BEGIN_NAMESPACE
22
23
//! Abstract predicate function
24
/** A predicate is a function which returns one of a discrete set of
25
values (eg -1, 0, 1 depending on whether a value is negative, zero
26
or positive). SingletonPredicates will evaluate the predicate for the passed
27
particles.
28
29
Implementers should check out IMP_SINGLETON_PREDICATE().
30
*/
31
class
IMPKERNELEXPORT
SingletonPredicate
:
public
ParticleInputs
,
32
public
Object
{
33
public
:
34
typedef
Particle
*
Argument
;
35
typedef
ParticleIndex
IndexArgument
;
36
SingletonPredicate
(std::string name =
"SingletonPredicate %1%"
);
37
38
#if !defined(IMP_DOXYGEN) && !defined(SWIG)
39
//! remove any particles in ps for which this predicate evaluates to v
40
virtual
void
remove_if_equal(
Model
*m,
ParticleIndexes
&ps,
41
int
v)
const
;
42
//! remove any particles in ps for which this predicate does not evaluate to v
43
virtual
void
remove_if_not_equal(
Model
*m,
ParticleIndexes
&ps,
44
int
v)
const
;
45
#endif
46
47
//! Compute the predicate and the derivative if needed.
48
virtual
int
get_value_index(
Model
*m,
ParticleIndex
vt)
const
= 0;
49
50
//! Setup for a batch of calls to get_value_index_in_batch()
51
//! (could be used for improving performance - e.g. preload various
52
//! tables from model)
53
virtual
void
setup_for_get_value_index_in_batch
(
Model
*)
const
{};
54
55
//! Same as get_value_index, but possibly with optimizations
56
//! for a batch of calls. Call setup_for_get_value_index_in_batch()
57
//! right before calling a batch of those.
58
virtual
int
get_value_index_in_batch
(
Model
* m,
ParticleIndex
vt)
const
{
59
return
get_value_index(m, vt);
60
}
61
62
//! Enable them to be use as functors
63
/** But beware of slicing.
64
*/
65
int
operator()
(
Model
*m,
ParticleIndex
vt)
const
{
66
return
get_value_index(m, vt);
67
}
68
69
virtual
Ints
get_value_index(
Model
*m,
70
const
ParticleIndexes
&o)
const
{
71
Ints
ret(o.size());
72
for
(
unsigned
int
i = 0; i < o.size(); ++i) {
73
ret[i] += get_value_index(m, o[i]);
74
}
75
return
ret;
76
}
77
78
IMP_REF_COUNTED_DESTRUCTOR
(SingletonPredicate);
79
};
80
81
IMPKERNEL_END_NAMESPACE
82
83
#endif
/* IMPKERNEL_SINGLETON_PREDICATE_H */
base_types.h
Basic types used by IMP.
IMP::SingletonPredicate::operator()
int operator()(Model *m, ParticleIndex vt) const
Enable them to be use as functors.
Definition:
SingletonPredicate.h:65
DerivativeAccumulator.h
Class for adding derivatives from restraints to the model.
IMP::Index< ParticleIndexTag >
IMP::SingletonPredicate::setup_for_get_value_index_in_batch
virtual void setup_for_get_value_index_in_batch(Model *) const
Definition:
SingletonPredicate.h:53
IMP::ParticleInputs
Base class for objects that take particle arguments and read from them.
Definition:
model_object_helpers.h:18
IMP_REF_COUNTED_DESTRUCTOR
#define IMP_REF_COUNTED_DESTRUCTOR(Name)
Set up destructor for a ref counted object.
Definition:
ref_counted_macros.h:25
IMP::SingletonPredicate::get_value_index_in_batch
virtual int get_value_index_in_batch(Model *m, ParticleIndex vt) const
Definition:
SingletonPredicate.h:58
IMP::Vector< ParticleIndex, std::allocator< ParticleIndex > >
IMP::Model
Class for storing model, its restraints, constraints, and particles.
Definition:
Model.h:86
IMP::Object
Common base class for heavy weight IMP objects.
Definition:
Object.h:111
model_object_helpers.h
Classes used in the construction of ModelObjects.
IMP::SingletonPredicate
Abstract predicate function.
Definition:
SingletonPredicate.h:31
IMP::Particle
Class to handle individual particles of a Model object.
Definition:
Particle.h:43