>> Keren, what is your use case? If it's not "get a list of interacting >> pairs" then we'll need to do something different. > Ben - as I wrote in my last reply - it is not all_pairs, since the > optimization tries to find that. We get MSMS data which says a,b,c,d,e > create a complex - but we do not know which interacts with which. so > what DOMINO needs out of the restraint is a-e .
It seems there are four different classes of restraints: 1) simple restraints where all particles in the restraint do interaction (for example DistanceRestraint)
2) compound restraints where there are a number of different sets of particles where the particles interactions within the set but there are no interactions between sets within the restraint: PairListRestraint or BondedListRestraint or SingletonListRestraint or most of the other restraints
3) combinatorial restraits where ultimately there will be several interacting subsets of particles, but the makeup of the subsets are not known until the end of the optimization (ConnectivityRestraint or LowestNRestraint)
4) and a group without a good name where all of the particles interact in some sense, but only a few of the interactions directly affect the final solution (such as NonBondedRestraint).
As far as I can tell, you want: 1) the set of all the particles 2) a list of sets of particles 3) the set of all the particles 4) I don't know what you want for this or perhaps just disallow it with Domino?
So a get_interacting_sets method which returns a vector of Particles's (the two s's are intentional :-) would be what you want.