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.
15 def create_scoring(m, ps):
16 pairs = [[0, 1], [0, 2], [1, 3], [2, 3], [3, 4], [4, 5], [1, 5]]
24 pr.set_maximum_score(.01)
31 dr.set_maximum_score(.01)
32 print(m.get_root_restraint_set())
36 def create_representation(m):
46 def create_discrete_states(ps):
53 vs = vs + [-v
for v
in vs]
54 print(len(vs),
"states for each particle")
59 pst.set_particle_states(p, states)
63 def create_sampler(m, r, pst):
80 states.set_log_level(IMP.base.SILENT)
81 s.set_assignments_table(states)
82 s.set_subset_filter_tables(filters)
89 m.set_log_level(IMP.base.SILENT)
91 print(
"creating representation")
92 ps = create_representation(m)
93 print(
"creating discrete states")
94 pst = create_discrete_states(ps)
95 print(
"creating score function")
96 rs = create_scoring(m, ps)
97 print(
"creating sampler")
98 s = create_sampler(m, rs, pst)
105 cs = s.create_sample()
107 print(
"found ", cs.get_number_of_configurations(),
"solutions")
108 for i
in range(cs.get_number_of_configurations()):
109 cs.load_configuration(i)
110 print(
"solution number:", i,
" is:", m.evaluate(
False))