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))