IMP
2.0.0
The Integrative Modeling Platform
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
AllPairContainer.h
Go to the documentation of this file.
1
/**
2
* \file IMP/container/AllPairContainer.h
3
* \brief Return all pairs from a SingletonContainer
4
*
5
* This file is generated by a script (core/tools/make-container).
6
* Do not edit directly.
7
*
8
* Copyright 2007-2013 IMP Inventors. All rights reserved.
9
*/
10
11
#ifndef IMPCONTAINER_ALL_PAIR_CONTAINER_H
12
#define IMPCONTAINER_ALL_PAIR_CONTAINER_H
13
14
#include <IMP/container/container_config.h>
15
#include <
IMP/generic.h
>
16
#include <
IMP/PairContainer.h
>
17
#include <
IMP/SingletonContainer.h
>
18
#include <
IMP/container/ListPairContainer.h
>
19
#include <
IMP/base/Pointer.h
>
20
#include <
IMP/pair_macros.h
>
21
IMPCONTAINER_BEGIN_NAMESPACE
22
23
//! Return all unordered pairs of particles taken from the SingletonContainer
24
/** Here is an example using this container to restrain all particles in a set
25
to be within a a certain distance of one another.
26
\verbinclude restrain_diameter.py
27
28
\note Sequential access is much more efficient than random access which is
29
suicidally slow for now. Complain if you want fast(er) random access.
30
We might listen.
31
32
\usesconstraint
33
*/
34
class
IMPCONTAINEREXPORT
AllPairContainer
:
public
PairContainer
35
{
36
IMP::base::OwnerPointer<SingletonContainer>
c_;
37
friend
class
AllBipartitePairContainer
;
38
public
:
39
template
<
class
F>
40
void
apply_generic
(F* f)
const
{
41
validate_readable();
42
ParticleIndexes
pis= c_->get_indexes();
43
for
(
unsigned
int
i=0; i< pis.size(); ++i) {
44
for
(
unsigned
int
j=0; j< i; ++j) {
45
f->apply_index(get_model(), ParticleIndexPair(pis[i], pis[j]));
46
}
47
}
48
}
49
//! Get the individual particles from the passed SingletonContainer
50
AllPairContainer
(SingletonContainerAdaptor c,
51
std::string name=
"AllPairContainer%1%"
);
52
53
IMP_PAIR_CONTAINER
(
AllPairContainer
);
54
};
55
56
IMP_OBJECTS
(
AllPairContainer
,
AllPairContainers
);
57
58
IMPCONTAINER_END_NAMESPACE
59
60
#endif
/* IMPCONTAINER_ALL_PAIR_CONTAINER_H */