Hi list,
I was wondering about the exact meaning of the ExcludedVolumeRestraint score, and how this score was computed. So I took my virtual shovel and had a few hours digging in IMP code, but I still have questions.
For what I understood, the score is computed as the sum of harmonic functions over a set of pairs of intersecting spheres (this score being 0.0 for non interacting spheres), but the way these pairs are built is still a little fuzzy for me.
Here is the sample python code I wrote using that restraint :
rigidChains = {} for chain in IMP.atom.Chains(IMP.atom.get_by_type(mh, IMP.atom.CHAIN_TYPE)) : rigidChains[chain.get_id()] = IMP.atom.setup_as_rigid_body(chain)
...
lsc = IMP.container.ListSingletonContainer() for rb in rigidChains.values() : lsc.add_particle(rb.get_particle()) m.add_restraint( IMP.core.ExcludedVolumeRestraint( lsc, IMP.core.LeavesRefiner(refChains.values()[0].get_traits()) ) )
I intuitively expected IMP to consider all pairs of intersecting atom-spheres between any two different chains, but reading the code I could not convince me this is actually what is computed. I could not decide for instance if pairs of atoms in a same chain were considered or not, and in fact I could not even see where exactly atoms were extracted out of my rigid body hierarchies…
Could you explain me in a few words if my sample code does what I expect from it, and if not, how to change it to obtain the desired behavior.
Thanks a lot
Dr. Benjamin SCHWARZ Biocomputing group Email : schwarz@igbmc.fr Voice : +33 (0)3 68 85 47 30 FAX : +33 (0)3 68 85 47 18
Structural Biology & Genomics Dept. - IGBMC 1 rue Laurent Fries BP 10142 F - 67404 Illkirch CEDEX