home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
2.20.2
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
doc
examples
kernel
write_a_restraint.py
1
## \example kernel/write_a_restraint.py
2
# While we do not recommend doing serious work using restraints written
3
# in Python, it is often useful when prototyping or testing code.
4
# Copy this example and modify as needed.
5
#
6
7
from
__future__
import
print_function
8
import
IMP
9
import
sys
10
11
IMP.setup_from_argv
(sys.argv,
"Restraint example"
)
12
13
# a restraint which checks if particles are sorted in
14
# increasing order on k.
15
16
17
class
MyRestraint(
IMP.Restraint
):
18
# take the list of particles and the key to use
19
20
def
__init__
(self, m, ps, k):
21
IMP.Restraint.__init__(self, m,
"MyRestraint %1%"
)
22
self.ps = ps
23
self.k = k
24
25
def
unprotected_evaluate(self, da):
26
score = 0
27
for
i
in
range(1, len(self.ps)):
28
p0 = self.ps[i - 1]
29
p1 = self.ps[i]
30
if
p0.get_value(k) > p1.get_value(k):
31
diff = (p0.get_value(k) - p1.get_value(k))
32
score = score + diff
33
p0.add_to_derivative(k, -1, da)
34
p1.add_to_derivative(k, 1, da)
35
else
:
36
if
IMP.get_log_level
() >= IMP.TERSE:
37
print(p0.get_name(),
"and"
, p1.get_name(),
" are ok"
)
38
return
score
39
40
def
do_get_inputs(self):
41
return
self.ps
42
43
44
# some code to create and evaluate it
45
k =
IMP.FloatKey
(
"a key"
)
46
m =
IMP.Model
()
47
ps = []
48
for
i
in
range(0, 10):
49
p =
IMP.Particle
(m)
50
p.add_attribute(k, i)
51
ps.append(p)
52
r = MyRestraint(m, ps, k)
53
# IMP.set_log_level(IMP.TERSE)
54
print(r.evaluate(
True
))
IMP::setup_from_argv
Strings setup_from_argv(const Strings &argv, std::string description, std::string positional_description, int num_positional)
write_a_metric.MyMetric.__init__
def __init__
Definition:
write_a_metric.py:17
IMP::get_log_level
LogLevel get_log_level()
Get the currently active global log level.
Definition:
log.h:92
IMP::Model
Class for storing model, its restraints, constraints, and particles.
Definition:
Model.h:86
IMP::Key< 0 >
IMP::Particle
Class to handle individual particles of a Model object.
Definition:
Particle.h:43
IMP::Restraint
A restraint is a term in an IMP ScoringFunction.
Definition:
Restraint.h:56