home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
develop.b3a5ae88fa,2024/04/30
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