home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
develop.d97d4ead1f,2024/11/21
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
version 20241121.develop.d97d4ead1f
SingletonPredicate.h
Go to the documentation of this file.
1
// Autogenerated by ../../../../tmp/nightly-build-472/imp-20241121.develop.d97d4ead1f/tools/build/make_containers.py
2
// from ../../../../tmp/nightly-build-472/imp-20241121.develop.d97d4ead1f/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