This example shows how to filter the list of close pairs generated in the IMP.container.ClosePairContainer (or IMP.container.CloseBipartitePairContainer). Eventually the filter should probably be implemented in C++, for speed but implementing the filter in Python is good for prototyping.
8 from __future__
import print_function
24 for i
in range(0, np):
25 p = m.add_particle(
"p%d" % i)
26 m.add_attribute(ik, p, i)
34 print(
"without", [(m.get_particle_name(x[0]), m.get_particle_name(x[1]))
35 for x
in cpc.get_contents()])
41 IMP.PairPredicate.__init__(self,
"ConsecutiveFilter%1%")
43 def get_value_index(self, m, pp):
44 diff = m.get_attribute(ik, pp[0]) - m.get_attribute(ik, pp[1])
45 if diff == -1
or diff == 1:
49 def do_get_inputs(self, m, pis):
50 return [m.get_particle(i)
for i
in pis]
52 def do_show(self, out):
56 f = ConsecutiveFilter()
57 cpc.add_pair_filter(f)
59 print(
"with", [(m.get_particle_name(x[0]), m.get_particle_name(x[1]))
60 for x
in cpc.get_contents()])