IMP
2.4.0
The Integrative Modeling Platform
IMP Mainpage
Modules
Classes
Examples
domino/merge_tree.py
The example shows how to generate and inspect a merge tree for use in Domino.
1
## \example domino/merge_tree.py
2
# The example shows how to generate and inspect a merge tree for use in Domino.
3
4
import
IMP
5
import
IMP.domino
6
import
IMP.core
7
import
IMP.container
8
import
IMP.algebra
9
10
IMP.base.set_log_level
(IMP.base.TERSE)
11
m =
IMP.kernel.Model
()
12
# don't print messages about evaluation
13
m.set_log_level(IMP.base.SILENT)
14
15
bb =
IMP.algebra.BoundingBox3D
((0, 0, 0), (10, 10, 10))
16
allc = []
17
for
i
in
range(0, 7):
18
p =
IMP.kernel.Particle
(m)
19
d =
IMP.core.XYZR.setup_particle
(
20
p,
IMP.algebra.Sphere3D
(
IMP.algebra.get_random_vector_in
(bb), 1))
21
allc.append(d.get_coordinates())
22
pst =
IMP.domino.ParticleStatesTable
()
23
ss =
IMP.domino.XYZStates
(allc)
24
for
p
in
m.get_particles():
25
pst.set_particle_states(p, ss)
26
# generate a set of restraints based on the close pairs in this randomly
27
# chosen configuration
28
cp =
IMP.core.GridClosePairsFinder
()
29
cp.set_distance(1)
30
cps = cp.get_close_pairs(m.get_particles())
31
32
if
len(cps) > 0:
33
# one cannot create a container from an empty list
34
acp =
IMP.container.ListPairContainer
(cps)
35
else
:
36
acp =
IMP.container.ListPairContainer
(m)
37
ps =
IMP.core.SoftSpherePairScore
(1)
38
r =
IMP.container.PairsRestraint
(ps, acp)
39
40
# compute the interaction graph based on all the restraints
41
ig =
IMP.domino.get_interaction_graph
([r],
42
pst)
43
# generate a junction tree from the interaction graph
44
jt =
IMP.domino.get_junction_tree
(ig)
45
print(dir(jt))
46
print(type(jt))
47
# create a merge tree from the junction tree, this can be passed to
48
# IMP.domin.DominoSampler
49
mt =
IMP.domino.get_merge_tree
(jt)
50
s = pst.get_subset()
51
print(s, type(s))