Optimize six particles on a 2D unit grid. In order to remove translation degrees of freedom, the 0th particle is pinned at the origin by allowing it only a single conformation. To remove flips, the first particle is restrained to have a positive x coordinate.
18 def create_scoring(m, ps):
19 pairs = [[0, 1], [0, 2], [1, 3], [2, 3], [3, 4], [4, 5], [1, 5]]
25 [(ps[p[0]], ps[p[1]])
for p
in pairs],
28 pr.set_maximum_score(.01)
35 dr.set_maximum_score(.01)
39 def create_representation(m):
43 p = m.add_particle(
"P%d" % i)
49 def create_discrete_states(m, ps):
56 vs = vs + [-v
for v
in vs]
57 print(len(vs),
"states for each particle")
62 pst.set_particle_states(m.get_particle(p), states)
66 def create_sampler(m, r, pst):
84 states.set_log_level(IMP.SILENT)
85 s.set_assignments_table(states)
86 s.set_subset_filter_tables(filters)
94 m.set_log_level(IMP.SILENT)
96 print(
"creating representation")
97 ps = create_representation(m)
98 print(
"creating discrete states")
99 pst = create_discrete_states(m, ps)
100 print(
"creating score function")
101 rs = create_scoring(m, ps)
102 print(
"creating sampler")
103 s = create_sampler(m, rs, pst)
110 cs = s.create_sample()
112 print(
"found ", cs.get_number_of_configurations(),
"solutions")
114 for i
in range(cs.get_number_of_configurations()):
115 cs.load_configuration(i)
116 print(
"solution number:", i,
" is:", sf.evaluate(
False))