In general you need to associate a particle which each feature you want to restrain since restraints generally act on a single set of equivalent particles. For the connectivity case you have a bunch of options, all of which do slightly different things.
- create a fragment in the molecular hierarchy which includes the other fragments (ie make this fragment the parent of the other fragments, the create_fragment function should help, but needs to be better documented) and then use a LowestRefinedPairScore
- create cover particles which cover the fragments in question and do as you did before with the connectivity restraint. You can use the helper::create_cover function to set this up and then pass the created particle to the connectivity restraint. I think this is closest to what you need. I think we should have a simpler helper function which creates the particle for you and hides the internal details. I'll add such over the next couple days. Then code will be something like
c0= IMP.helper.create_cover(IMP.Particles([f3,f5,f7])) c1= IMP.helper.create_cover(IMP.Particles([f0,f1,f2])
sd= IMP.core.SphereDistancePairScore(IMP.Harmonic(0,1)) cr= IMP.core.ConnectivityRestraint(sd) cr.add_particle(c0) cr.add_particle(c1)
On Sep 22, 2009, at 4:46 AM, Friedrich Foerster wrote:
> thanks. > but the functionality is not sufficient for my needs as it is: i do > not see any way to specify parts of a protein involved in an > interaction. > e.g., my proteins a and b each consist of 10 fragments. i have an > interaction between A and B that involves the first 3 fragments of > protein A and fragments 3,5,7 of protein B. how can i specify that > restraint currently (it used to work previously ...). so i am not > convinced why the old syntax had to go ... > > thanks > > frido > > On Mon, Sep 21, 2009 at 6:37 PM, Keren Lasker kerenl@salilab.org > wrote: >> one correlation - >> >> Frido - this is how it should look like: >> >> #create the two proteins >> prot_ps=IMP.Particles() >> prot_ps.append(IMP.Particle(m)) >> prot_ps.append(IMP.Particle(m)) >> prot1= >> IMP >> .atom.Hierarchy.setup_particle(prot_ps[0],IMP.atom.Hierarchy.PROTEIN) >> >> prot2= >> IMP >> .atom.Hierarchy.setup_particle(prot_ps[1],IMP.atom.Hierarchy.PROTEIN) >> >> #make the parts fragments and add to the molecules >> >> for e in [part1,part2,part3]: >> >> fh= IMP.atom.Hierarchy.setup_particle(e,IMP.atom.Hierarchy.FRAGMENT) >> >> #also make sure the part has radius >> prot1.add_child(fh) >> >> for e in [part4,part5,part6]: >> >> fh= IMP.atom.Hierarchy.setup_particle(e,IMP.atom.Hierarchy.FRAGMENT) >> >> #also make sure the part has radius >> prot2.add_child(fh) >> >> >> >> #create the restraint >> >> ufu = IMP.core.TruncatedHarmonicUpperBound( span, k, stddev, 2.) >> >> cps= IMP.core.ChildrenRefiner(IMP.atom.Hierarchy.get_traits()) >> lrps = IMP.misc.LowestRefinedPairScore(cps,ufu) >> connrest = IMP.core.ConnectivityRestraint(lrps) >> >> connrest.set_particles(prot_ps) >> >> m.add_restraint(connrest) >> >> >> On Sep 21, 2009, at 6:54 AM, Daniel Russel wrote: >> >> I think the problem is that the list of particles the connectivity >> restraint >> ends up with is [p0,p1...p5]. You should just give it two >> particles, one for >> each protein (with radius and center computed from a sphere cover, >> or with >> the distance computed using a particle refiner). I doubt the code >> below ever >> really did what you wanted (although it might have happened to >> agree:-) >> >> I can explain better once I'm back in the US in two days. >> >> >> On Sep 21, 2009, at 2:30 PM, Friedrich Foerster <foerster@biochem.mpg.de >> > >> wrote: >> >> hi all, >> >> i noticed that the connectivity restraint must have changed at some >> point: >> >> i want to impose a restraint on two proteins, each consisting of >> >> several particles. thus, i am interested in restraining the closest >> >> pair between the two proteins. whereas the following code did what i >> >> need previously it now calculates all against all distances >> (including >> >> intra-protein distances) - which is not what i want. >> >> i'd be grateful if anyone could tell me how i need to change my >> pseudo code: >> >> >> prot1 = [part1,part2,part3] >> >> prot2 = [part4,part5,part6] >> >> ufu = IMP.core.TruncatedHarmonicUpperBound( span, k, stddev, 2.) >> >> pairsc = IMP.core.SphereDistancePairScore(ufu, IRAD_KEY) >> >> connrest = IMP.core.ConnectivityRestraint(pairsc) >> >> for pps in [prot1,prot2]: >> >> connrest.add_particles(pps) >> >> to be explicit: the code now restrains distances in prot1 and prot2, >> >> which is what i do not want. i only want the inter-protein distances >> >> to be considered... >> >> thanks >> >> frido >> >> >> -- >> >> Dr. Friedrich Foerster >> >> Max-Planck Institut fuer Biochemie >> >> Am Klopferspitz 18 >> >> D-82152 Martinsried >> >> Tel: +49 89 8578 2651 >> >> Fax: +49 89 8578 2641 >> >> foerster@biochem.mpg.de >> >> www.tomotronic.org >> >> _______________________________________________ >> >> IMP-dev mailing list >> >> IMP-dev@salilab.org >> >> https://salilab.org/mailman/listinfo/imp-dev >> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev >> >> >> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev >> >> > > > > -- > -- > > Dr. Friedrich Foerster > Max-Planck Institut fuer Biochemie > Am Klopferspitz 18 > D-82152 Martinsried > > Tel: +49 89 8578 2651 > Fax: +49 89 8578 2641 > > foerster@biochem.mpg.de > > www.tomotronic.org > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev