IMP
2.4.0
The Integrative Modeling Platform
IMP Mainpage
Modules
Classes
Examples
core/simple.py
Illustration of simple usage of the
IMP
library from Python.
1
## \example core/simple.py
2
# Illustration of simple usage of the IMP library from Python.
3
#
4
5
import
IMP
6
import
IMP.algebra
7
import
IMP.core
8
9
m =
IMP.kernel.Model
()
10
11
# Create two "untyped" Particles
12
p1 =
IMP.kernel.Particle
(m)
13
p2 =
IMP.kernel.Particle
(m)
14
15
# "Decorate" the Particles with x,y,z attributes (point-like particles)
16
d1 =
IMP.core.XYZ.setup_particle
(p1)
17
d2 =
IMP.core.XYZ.setup_particle
(p2)
18
19
# Use some XYZ-specific functionality (set coordinates)
20
d1.set_coordinates(
IMP.algebra.Vector3D
(10.0, 10.0, 10.0))
21
d2.set_coordinates(
IMP.algebra.Vector3D
(-10.0, -10.0, -10.0))
22
print(d1, d2)
23
24
# Harmonically restrain p1 to be zero distance from the origin
25
f =
IMP.core.Harmonic
(0.0, 1.0)
26
s =
IMP.core.DistanceToSingletonScore
(f,
IMP.algebra.Vector3D
(0., 0., 0.))
27
r1 =
IMP.core.SingletonRestraint
(s, p1)
28
m.add_restraint(r1)
29
30
# Harmonically restrain p1 and p2 to be distance 5.0 apart
31
f =
IMP.core.Harmonic
(5.0, 1.0)
32
s =
IMP.core.DistancePairScore
(f)
33
r2 =
IMP.core.PairRestraint
(s, (p1, p2))
34
m.add_restraint(r2)
35
36
# Optimize the x,y,z coordinates of both particles with conjugate gradients
37
d1.set_coordinates_are_optimized(
True
)
38
d2.set_coordinates_are_optimized(
True
)
39
o =
IMP.core.ConjugateGradients
(m)
40
o.optimize(50)
41
print(d1, d2)