Re: [IMP-users] Sampling and writing to pym/rmf
ah sorry ! this line gives me the error
h= IMP.atom.Hierarchy.get_children(cs)
thanks
josh
On 2 July 2014 17:45, imp-users-request@salilab.org wrote:
> Send IMP-users mailing list submissions to > imp-users@salilab.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://salilab.org/mailman/listinfo/imp-users > or, via email, send a message with subject or body 'help' to > imp-users-request@salilab.org > > You can reach the person managing the list at > imp-users-owner@salilab.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of IMP-users digest..." > > > Today's Topics: > > 1. Re: Sampling and writing to pym/rmf (Barak Raveh) (Barak Raveh) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 2 Jul 2014 09:45:30 -0700 > From: Barak Raveh barak.raveh@gmail.com > To: Help and discussion for users of IMP imp-users@salilab.org > Subject: Re: [IMP-users] Sampling and writing to pym/rmf (Barak Raveh) > Message-ID: > <CAHp+_Uo19VasJDJYi+2CoUUu= > u_6duKCraVetU4dW45+oDhTAw@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Which lines throws the error? > > > On Wed, Jul 2, 2014 at 4:56 AM, Josh Bullock jma.bullock@gmail.com > wrote: > > > Hi Barek, > > > > So I'm not giving hierarchy.get_children the correct input: > > > > TypeError: unbound method get_children() must be called with Hierarchy > > instance as first argument (got ConfigurationSet instance instead) > > > > I'm not sure which argument is the hierarchy instance. > > > > Thanks, > > > > Josh > > > > ------------------------------------------------- > > > > cs= get_conformations(m) > > > > for i in range(0, cs.get_number_of_configurations()): > > JOSH = cs.load_configuration(i) > > S= IMP.atom.Selection > > h= IMP.atom.Hierarchy.get_children(cs) > > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") > > rh = RMF.create_rmf_file(tfn) > > > > On 1 July 2014 17:31, imp-users-request@salilab.org wrote: > > > >> Send IMP-users mailing list submissions to > >> imp-users@salilab.org > >> > >> To subscribe or unsubscribe via the World Wide Web, visit > >> https://salilab.org/mailman/listinfo/imp-users > >> or, via email, send a message with subject or body 'help' to > >> imp-users-request@salilab.org > >> > >> You can reach the person managing the list at > >> imp-users-owner@salilab.org > >> > >> When replying, please edit your Subject line so it is more specific > >> than "Re: Contents of IMP-users digest..." > >> > >> > >> Today's Topics: > >> > >> 1. Re: Sampling and writing to pym/rmf (Barak Raveh) > >> > >> > >> ---------------------------------------------------------------------- > >> > >> Message: 1 > >> Date: Tue, 1 Jul 2014 09:31:33 -0700 > >> From: Barak Raveh barak.raveh@gmail.com > >> To: Help and discussion for users of IMP imp-users@salilab.org > >> Subject: Re: [IMP-users] Sampling and writing to pym/rmf > >> Message-ID: > >> <CAHp+_UowiBwJozbwOfi8yFEVt7Z8o2tEZ= > >> LvYPnJh-LjpC2cSA@mail.gmail.com> > >> Content-Type: text/plain; charset="utf-8" > >> > >> Hi Josh, from a very superficial look, your code to write the RMF files > >> seems fine - do you get an output RMF file? Could you load it in > Chimera? > >> > >> > >> On Tue, Jul 1, 2014 at 2:40 AM, Josh Bullock jma.bullock@gmail.com > >> wrote: > >> > >> > Hello, > >> > > >> > I'm relatively new to all this so please let me know if i'm making any > >> > obvious errors ... > >> > > >> > Essentially all i'm trying to do is generate an ensemble of models > made > >> > from four subunits - constrained by MS connectivity restraints. The > >> models > >> > get scored but nothing seems to write to the pymol file. Ideally i'd > >> like > >> > to write to an .rmf but i haven't worked that one out either ... > >> > > >> > Is this a reasonable way to go about my problem ? > >> > > >> > Many thanks, > >> > > >> > Josh > >> > > >> > ------------------------------------------- > >> > > >> > import IMP > >> > import IMP.atom > >> > import IMP.rmf > >> > import inspect > >> > import IMP.container > >> > import IMP.display > >> > import IMP.statistics > >> > #import IMP.example > >> > import sys, math, os, optparse > >> > import RMF > >> > > >> > from optparse import OptionParser > >> > > >> > > >> > # Convert the arguments into strings and number > >> > Firstpdb = str(sys.argv[1]) > >> > Secondpdb = str(sys.argv[2]) > >> > Thirdpdb = str(sys.argv[3]) > >> > Fourthpdb = str(sys.argv[4]) > >> > models = float(sys.argv[5]) > >> > > >> > #***************************************** > >> > > >> > # the spring constant to use, it doesnt really matter > >> > k=100 > >> > # the target resolution for the representation, this is used to > specify > >> > how detailed > >> > # the representation used should be > >> > resolution=300 > >> > # the box to perform everything > >> > bb=IMP.algebra.BoundingBox3D(IMP.algebra.Vector3D(0,0,0), > >> > IMP.algebra.Vector3D(300, 300, 300)) > >> > > >> > > >> > # this function creates the molecular hierarchies for the various > >> involved > >> > proteins > >> > def create_representation(): > >> > m= IMP.Model() > >> > all=IMP.atom.Hierarchy.setup_particle(IMP.Particle(m)) > >> > all.set_name("the universe") > >> > # create a protein, represented as a set of connected balls of > >> > appropriate > >> > # radii and number, chose by the resolution parameter and the > >> number of > >> > # amino acids. > >> > > >> > def create_protein_from_pdbs(name, files): > >> > > >> > def create_from_pdb(file): > >> > sls=IMP.SetLogState(IMP.NONE) > >> > datadir = os.getcwd() > >> > print datadir > >> > t=IMP.atom.read_pdb( datadir+'/' + file, m, > >> > IMP.atom.ATOMPDBSelector()) > >> > del sls > >> > #IMP.atom.show_molecular_hierarchy(t) > >> > c=IMP.atom.Chain(IMP.atom.get_by_type(t, > >> > IMP.atom.CHAIN_TYPE)[0]) > >> > if c.get_number_of_children()==0: > >> > IMP.atom.show_molecular_hierarchy(t) > >> > # there is no reason to use all atoms, just approximate > the > >> > pdb shape instead > >> > s=IMP.atom.create_simplified_along_backbone(c, > >> > > >> resolution/300.0) > >> > IMP.atom.destroy(t) > >> > # make the simplified structure rigid > >> > rb=IMP.atom.create_rigid_body(s) > >> > # rb=IMP.atom.create_rigid_body(c) > >> > rb.set_coordinates_are_optimized(True) > >> > return s > >> > # return c > >> > > >> > h= create_from_pdb(files[0]) > >> > h.set_name(name) > >> > all.add_child(h) > >> > > >> > create_protein_from_pdbs("A", [Firstpdb]) > >> > create_protein_from_pdbs("B", [Secondpdb]) > >> > create_protein_from_pdbs("C", [Thirdpdb]) > >> > create_protein_from_pdbs("D", [Fourthpdb]) > >> > #create_protein_from_pdbs("C", ["rpt3_imp.pdb"]) > >> > return (m, all) > >> > > >> > # create the needed restraints and add them to the model > >> > > >> > def create_restraints(m, all): > >> > def add_connectivity_restraint(s): > >> > > >> > tr= IMP.core.TableRefiner() > >> > rps=[] > >> > for sc in s: > >> > ps= sc.get_selected_particles() > >> > rps.append(ps[0]) > >> > tr.add_particle(ps[0], ps) > >> > > >> > # duplicate the IMP.atom.create_connectivity_restraint > >> > functionality > >> > > >> > score= > >> > > >> > IMP.core.KClosePairsPairScore(IMP.core.HarmonicSphereDistancePairScore(0,1),tr) > >> > > >> > r= IMP.core.MSConnectivityRestraint(m,score) > >> > > >> > iA = r.add_type([rps[0]]) > >> > iB = r.add_type([rps[1]]) > >> > iC = r.add_type([rps[2]]) > >> > iD = r.add_type([rps[3]]) > >> > n1 = r.add_composite([iA, iB, iC, iD]) > >> > n2 = r.add_composite([iA, iB], n1) > >> > n3 = r.add_composite([iC, iD], n1) > >> > n4 = r.add_composite([iB, iC, iD], n1) > >> > > >> > m.add_restraint(r) > >> > > >> > evr=IMP.atom.create_excluded_volume_restraint([all]) > >> > m.add_restraint(evr) > >> > # a Selection allows for natural specification of what the > >> restraints > >> > act on > >> > S= IMP.atom.Selection > >> > sA=S(hierarchy=all, molecule="A") > >> > sB=S(hierarchy=all, molecule="B") > >> > sC=S(hierarchy=all, molecule="C") > >> > sD=S(hierarchy=all, molecule="D") > >> > add_connectivity_restraint([sA, sB, sC, sD]) > >> > > >> > > >> > # find acceptable conformations of the model > >> > def get_conformations(m): > >> > sampler= IMP.core.MCCGSampler(m) > >> > sampler.set_bounding_box(bb) > >> > # magic numbers, experiment with them and make them large enough > for > >> > things to work > >> > sampler.set_number_of_conjugate_gradient_steps(100) > >> > sampler.set_number_of_monte_carlo_steps(20) > >> > sampler.set_number_of_attempts(models) > >> > # We don't care to see the output from the sampler > >> > sampler.set_log_level(IMP.SILENT) > >> > # return the IMP.ConfigurationSet storing all the found > >> configurations > >> > that > >> > # meet the various restraint maximum scores. > >> > cs= sampler.create_sample() > >> > return cs > >> > > >> > > >> > # cluster the conformations and write them to a file > >> > def analyze_conformations(cs, all, gs): > >> > # we want to cluster the configurations to make them easier to > >> > understand > >> > # in the case, the clustering is pretty meaningless > >> > embed= IMP.statistics.ConfigurationSetXYZEmbedding(cs, > >> > > >> > IMP.container.ListSingletonContainer(IMP.atom.get_leaves(all)), True) > >> > cluster= IMP.statistics.create_lloyds_kmeans(embed, 10, 10000) > >> > # dump each cluster center to a file so it can be viewed. > >> > for i in range(cluster.get_number_of_clusters()): > >> > center= cluster.get_cluster_center(i) > >> > cs.load_configuration(i) > >> > w= IMP.display.PymolWriter("cluster.%d.pym"%i) > >> > for g in gs: > >> > w.add_geometry(g) > >> > > >> > > >> > > >> > > >> > #****************************************************************************************** > >> > # now do the actual work > >> > > >> > (m,all)= create_representation() > >> > IMP.atom.show_molecular_hierarchy(all) > >> > create_restraints(m, all) > >> > > >> > # in order to display the results, we need something that maps the > >> > particles onto > >> > # geometric objets. The IMP.display.Geometry objects do this mapping. > >> > # IMP.display.XYZRGeometry map an IMP.core.XYZR particle onto a sphere > >> > gs=[] > >> > for i in range(all.get_number_of_children()): > >> > color= IMP.display.get_display_color(i) > >> > n= all.get_child(i) > >> > name= n.get_name() > >> > g= IMP.atom.HierarchyGeometry(n) > >> > g.set_color(color) > >> > gs.append(g) > >> > > >> > cs= get_conformations(m) > >> > > >> > print "found", cs.get_number_of_configurations(), "solutions" > >> > > >> > ListScores = [] > >> > for i in range(0, cs.get_number_of_configurations()): > >> > cs.load_configuration(i) > >> > # print the configuration > >> > print "solution number: ",i,"scored :", m.evaluate(False) > >> > ListScores.append(m.evaluate(False)) > >> > > >> > f1 = open("out_scores.csv", "w") > >> > f1.write("\n".join(map(lambda x: str(x), ListScores))) > >> > f1.close() > >> > > >> > # for each of the configuration, dump it to a file to view in pymol > >> > for i in range(0, cs.get_number_of_configurations()): > >> > JOSH = cs.load_configuration(i) > >> > S= IMP.atom.Selection > >> > h= IMP.atom.Hierarchy.get_children(cs) > >> > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") > >> > rh = RMF.create_rmf_file(tfn) > >> > > >> > # add the hierarchy to the file > >> > IMP.rmf.add_hierarchies(rh, h) > >> > > >> > # add the current configuration to the file as frame 0 > >> > IMP.rmf.save_frame(rh) > >> > > >> > for g in gs: > >> > w.add_geometry(g) > >> > > >> > analyze_conformations(cs, all, gs) > >> > > >> > > >> > _______________________________________________ > >> > IMP-users mailing list > >> > IMP-users@salilab.org > >> > https://salilab.org/mailman/listinfo/imp-users > >> > > >> > > >> > >> > >> -- > >> Barak > >>
Hi Josh,
I think get_children() is only a member function of Hierarchy, so you should do something like
IMP.atom.Hierarchy(p) c = p.get_children()
'cs' seems to be a ConfigurationSet object - are you sure that you expect it to have children?
What do you want to do?
Cheers, Barak
On Wed, Jul 2, 2014 at 1:42 PM, Josh Bullock jma.bullock@gmail.com wrote:
> ah sorry ! this line gives me the error > > h= IMP.atom.Hierarchy.get_children(cs) > > thanks > > josh > > On 2 July 2014 17:45, imp-users-request@salilab.org wrote: > >> Send IMP-users mailing list submissions to >> imp-users@salilab.org >> >> To subscribe or unsubscribe via the World Wide Web, visit >> https://salilab.org/mailman/listinfo/imp-users >> or, via email, send a message with subject or body 'help' to >> imp-users-request@salilab.org >> >> You can reach the person managing the list at >> imp-users-owner@salilab.org >> >> When replying, please edit your Subject line so it is more specific >> than "Re: Contents of IMP-users digest..." >> >> >> Today's Topics: >> >> 1. Re: Sampling and writing to pym/rmf (Barak Raveh) (Barak Raveh) >> >> >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Wed, 2 Jul 2014 09:45:30 -0700 >> From: Barak Raveh barak.raveh@gmail.com >> To: Help and discussion for users of IMP imp-users@salilab.org >> Subject: Re: [IMP-users] Sampling and writing to pym/rmf (Barak Raveh) >> Message-ID: >> <CAHp+_Uo19VasJDJYi+2CoUUu= >> u_6duKCraVetU4dW45+oDhTAw@mail.gmail.com> >> Content-Type: text/plain; charset="utf-8" >> >> Which lines throws the error? >> >> >> On Wed, Jul 2, 2014 at 4:56 AM, Josh Bullock jma.bullock@gmail.com >> wrote: >> >> > Hi Barek, >> > >> > So I'm not giving hierarchy.get_children the correct input: >> > >> > TypeError: unbound method get_children() must be called with Hierarchy >> > instance as first argument (got ConfigurationSet instance instead) >> > >> > I'm not sure which argument is the hierarchy instance. >> > >> > Thanks, >> > >> > Josh >> > >> > ------------------------------------------------- >> > >> > cs= get_conformations(m) >> >> > >> > for i in range(0, cs.get_number_of_configurations()): >> > JOSH = cs.load_configuration(i) >> > S= IMP.atom.Selection >> > h= IMP.atom.Hierarchy.get_children(cs) >> > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") >> > rh = RMF.create_rmf_file(tfn) >> > >> > On 1 July 2014 17:31, imp-users-request@salilab.org wrote: >> > >> >> Send IMP-users mailing list submissions to >> >> imp-users@salilab.org >> >> >> >> To subscribe or unsubscribe via the World Wide Web, visit >> >> https://salilab.org/mailman/listinfo/imp-users >> >> or, via email, send a message with subject or body 'help' to >> >> imp-users-request@salilab.org >> >> >> >> You can reach the person managing the list at >> >> imp-users-owner@salilab.org >> >> >> >> When replying, please edit your Subject line so it is more specific >> >> than "Re: Contents of IMP-users digest..." >> >> >> >> >> >> Today's Topics: >> >> >> >> 1. Re: Sampling and writing to pym/rmf (Barak Raveh) >> >> >> >> >> >> ---------------------------------------------------------------------- >> >> >> >> Message: 1 >> >> Date: Tue, 1 Jul 2014 09:31:33 -0700 >> >> From: Barak Raveh barak.raveh@gmail.com >> >> To: Help and discussion for users of IMP imp-users@salilab.org >> >> Subject: Re: [IMP-users] Sampling and writing to pym/rmf >> >> Message-ID: >> >> <CAHp+_UowiBwJozbwOfi8yFEVt7Z8o2tEZ= >> >> LvYPnJh-LjpC2cSA@mail.gmail.com> >> >> Content-Type: text/plain; charset="utf-8" >> >> >> >> >> Hi Josh, from a very superficial look, your code to write the RMF files >> >> seems fine - do you get an output RMF file? Could you load it in >> Chimera? >> >> >> >> >> >> On Tue, Jul 1, 2014 at 2:40 AM, Josh Bullock jma.bullock@gmail.com >> >> wrote: >> >> >> >> > Hello, >> >> > >> >> > I'm relatively new to all this so please let me know if i'm making >> any >> >> > obvious errors ... >> >> > >> >> > Essentially all i'm trying to do is generate an ensemble of models >> made >> >> > from four subunits - constrained by MS connectivity restraints. The >> >> models >> >> > get scored but nothing seems to write to the pymol file. Ideally i'd >> >> like >> >> > to write to an .rmf but i haven't worked that one out either ... >> >> > >> >> > Is this a reasonable way to go about my problem ? >> >> > >> >> > Many thanks, >> >> > >> >> > Josh >> >> > >> >> > ------------------------------------------- >> >> > >> >> > import IMP >> >> > import IMP.atom >> >> > import IMP.rmf >> >> > import inspect >> >> > import IMP.container >> >> > import IMP.display >> >> > import IMP.statistics >> >> > #import IMP.example >> >> > import sys, math, os, optparse >> >> > import RMF >> >> > >> >> > from optparse import OptionParser >> >> > >> >> > >> >> > # Convert the arguments into strings and number >> >> > Firstpdb = str(sys.argv[1]) >> >> > Secondpdb = str(sys.argv[2]) >> >> > Thirdpdb = str(sys.argv[3]) >> >> > Fourthpdb = str(sys.argv[4]) >> >> > models = float(sys.argv[5]) >> >> > >> >> > #***************************************** >> >> > >> >> > # the spring constant to use, it doesnt really matter >> >> > k=100 >> >> > # the target resolution for the representation, this is used to >> specify >> >> > how detailed >> >> > # the representation used should be >> >> > resolution=300 >> >> > # the box to perform everything >> >> > bb=IMP.algebra.BoundingBox3D(IMP.algebra.Vector3D(0,0,0), >> >> > IMP.algebra.Vector3D(300, 300, 300)) >> >> > >> >> > >> >> > # this function creates the molecular hierarchies for the various >> >> involved >> >> > proteins >> >> > def create_representation(): >> >> > m= IMP.Model() >> >> > all=IMP.atom.Hierarchy.setup_particle(IMP.Particle(m)) >> >> > all.set_name("the universe") >> >> > # create a protein, represented as a set of connected balls of >> >> > appropriate >> >> > # radii and number, chose by the resolution parameter and the >> >> number of >> >> > # amino acids. >> >> > >> >> > def create_protein_from_pdbs(name, files): >> >> > >> >> > def create_from_pdb(file): >> >> > sls=IMP.SetLogState(IMP.NONE) >> >> > datadir = os.getcwd() >> >> > print datadir >> >> > t=IMP.atom.read_pdb( datadir+'/' + file, m, >> >> > IMP.atom.ATOMPDBSelector()) >> >> > del sls >> >> > #IMP.atom.show_molecular_hierarchy(t) >> >> > c=IMP.atom.Chain(IMP.atom.get_by_type(t, >> >> > IMP.atom.CHAIN_TYPE)[0]) >> >> > if c.get_number_of_children()==0: >> >> > IMP.atom.show_molecular_hierarchy(t) >> >> > # there is no reason to use all atoms, just approximate >> the >> >> > pdb shape instead >> >> > s=IMP.atom.create_simplified_along_backbone(c, >> >> > >> >> resolution/300.0) >> >> > IMP.atom.destroy(t) >> >> > # make the simplified structure rigid >> >> > rb=IMP.atom.create_rigid_body(s) >> >> > # rb=IMP.atom.create_rigid_body(c) >> >> > rb.set_coordinates_are_optimized(True) >> >> > return s >> >> > # return c >> >> > >> >> > h= create_from_pdb(files[0]) >> >> > h.set_name(name) >> >> > all.add_child(h) >> >> > >> >> > create_protein_from_pdbs("A", [Firstpdb]) >> >> > create_protein_from_pdbs("B", [Secondpdb]) >> >> > create_protein_from_pdbs("C", [Thirdpdb]) >> >> > create_protein_from_pdbs("D", [Fourthpdb]) >> >> > #create_protein_from_pdbs("C", ["rpt3_imp.pdb"]) >> >> > return (m, all) >> >> > >> >> > # create the needed restraints and add them to the model >> >> > >> >> > def create_restraints(m, all): >> >> > def add_connectivity_restraint(s): >> >> > >> >> > tr= IMP.core.TableRefiner() >> >> > rps=[] >> >> > for sc in s: >> >> > ps= sc.get_selected_particles() >> >> > rps.append(ps[0]) >> >> > tr.add_particle(ps[0], ps) >> >> > >> >> > # duplicate the IMP.atom.create_connectivity_restraint >> >> > functionality >> >> > >> >> > score= >> >> > >> >> >> IMP.core.KClosePairsPairScore(IMP.core.HarmonicSphereDistancePairScore(0,1),tr) >> >> > >> >> > r= IMP.core.MSConnectivityRestraint(m,score) >> >> > >> >> > iA = r.add_type([rps[0]]) >> >> > iB = r.add_type([rps[1]]) >> >> > iC = r.add_type([rps[2]]) >> >> > iD = r.add_type([rps[3]]) >> >> > n1 = r.add_composite([iA, iB, iC, iD]) >> >> > n2 = r.add_composite([iA, iB], n1) >> >> > n3 = r.add_composite([iC, iD], n1) >> >> > n4 = r.add_composite([iB, iC, iD], n1) >> >> > >> >> > m.add_restraint(r) >> >> > >> >> > evr=IMP.atom.create_excluded_volume_restraint([all]) >> >> > m.add_restraint(evr) >> >> > # a Selection allows for natural specification of what the >> >> restraints >> >> > act on >> >> > S= IMP.atom.Selection >> >> > sA=S(hierarchy=all, molecule="A") >> >> > sB=S(hierarchy=all, molecule="B") >> >> > sC=S(hierarchy=all, molecule="C") >> >> > sD=S(hierarchy=all, molecule="D") >> >> > add_connectivity_restraint([sA, sB, sC, sD]) >> >> > >> >> > >> >> > # find acceptable conformations of the model >> >> > def get_conformations(m): >> >> > sampler= IMP.core.MCCGSampler(m) >> >> > sampler.set_bounding_box(bb) >> >> > # magic numbers, experiment with them and make them large enough >> for >> >> > things to work >> >> > sampler.set_number_of_conjugate_gradient_steps(100) >> >> > sampler.set_number_of_monte_carlo_steps(20) >> >> > sampler.set_number_of_attempts(models) >> >> > # We don't care to see the output from the sampler >> >> > sampler.set_log_level(IMP.SILENT) >> >> > # return the IMP.ConfigurationSet storing all the found >> >> configurations >> >> > that >> >> > # meet the various restraint maximum scores. >> >> > cs= sampler.create_sample() >> >> > return cs >> >> > >> >> > >> >> > # cluster the conformations and write them to a file >> >> > def analyze_conformations(cs, all, gs): >> >> > # we want to cluster the configurations to make them easier to >> >> > understand >> >> > # in the case, the clustering is pretty meaningless >> >> > embed= IMP.statistics.ConfigurationSetXYZEmbedding(cs, >> >> > >> >> > IMP.container.ListSingletonContainer(IMP.atom.get_leaves(all)), >> True) >> >> > cluster= IMP.statistics.create_lloyds_kmeans(embed, 10, 10000) >> >> > # dump each cluster center to a file so it can be viewed. >> >> > for i in range(cluster.get_number_of_clusters()): >> >> > center= cluster.get_cluster_center(i) >> >> > cs.load_configuration(i) >> >> > w= IMP.display.PymolWriter("cluster.%d.pym"%i) >> >> > for g in gs: >> >> > w.add_geometry(g) >> >> > >> >> > >> >> > >> >> > >> >> >> #****************************************************************************************** >> >> > # now do the actual work >> >> > >> >> > (m,all)= create_representation() >> >> > IMP.atom.show_molecular_hierarchy(all) >> >> > create_restraints(m, all) >> >> > >> >> > # in order to display the results, we need something that maps the >> >> > particles onto >> >> > # geometric objets. The IMP.display.Geometry objects do this mapping. >> >> > # IMP.display.XYZRGeometry map an IMP.core.XYZR particle onto a >> sphere >> >> > gs=[] >> >> > for i in range(all.get_number_of_children()): >> >> > color= IMP.display.get_display_color(i) >> >> > n= all.get_child(i) >> >> > name= n.get_name() >> >> > g= IMP.atom.HierarchyGeometry(n) >> >> > g.set_color(color) >> >> > gs.append(g) >> >> > >> >> > cs= get_conformations(m) >> >> > >> >> > print "found", cs.get_number_of_configurations(), "solutions" >> >> > >> >> > ListScores = [] >> >> > for i in range(0, cs.get_number_of_configurations()): >> >> > cs.load_configuration(i) >> >> > # print the configuration >> >> > print "solution number: ",i,"scored :", m.evaluate(False) >> >> > ListScores.append(m.evaluate(False)) >> >> > >> >> > f1 = open("out_scores.csv", "w") >> >> > f1.write("\n".join(map(lambda x: str(x), ListScores))) >> >> > f1.close() >> >> > >> >> > # for each of the configuration, dump it to a file to view in pymol >> >> > for i in range(0, cs.get_number_of_configurations()): >> >> > JOSH = cs.load_configuration(i) >> >> > S= IMP.atom.Selection >> >> > h= IMP.atom.Hierarchy.get_children(cs) >> >> > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") >> >> > rh = RMF.create_rmf_file(tfn) >> >> > >> >> > # add the hierarchy to the file >> >> > IMP.rmf.add_hierarchies(rh, h) >> >> > >> >> > # add the current configuration to the file as frame 0 >> >> > IMP.rmf.save_frame(rh) >> >> > >> >> > for g in gs: >> >> > w.add_geometry(g) >> >> > >> >> > analyze_conformations(cs, all, gs) >> >> > >> >> > >> >> > _______________________________________________ >> >> > IMP-users mailing list >> >> > IMP-users@salilab.org >> >> > https://salilab.org/mailman/listinfo/imp-users >> >> > >> >> > >> >> >> >> >> >> -- >> >> Barak >> >>
* I meant
h = IMP.atom.Hierarchy(p) c = p.get_children(h)
this assumes that particle p was already decorated as Hierarchy (let me know if you are not familiar with decorators, Hierarchy, or Particle).
On Wed, Jul 2, 2014 at 3:02 PM, Barak Raveh barak.raveh@gmail.com wrote:
> Hi Josh, > > I think get_children() is only a member function of Hierarchy, so you > should do something like > > IMP.atom.Hierarchy(p) > c = p.get_children() > > 'cs' seems to be a ConfigurationSet object - are you sure that you expect > it to have children? > > What do you want to do? > > Cheers, > Barak > > On Wed, Jul 2, 2014 at 1:42 PM, Josh Bullock jma.bullock@gmail.com > wrote: > >> ah sorry ! this line gives me the error >> >> h= IMP.atom.Hierarchy.get_children(cs) >> >> thanks >> >> josh >> >> On 2 July 2014 17:45, imp-users-request@salilab.org wrote: >> >>> Send IMP-users mailing list submissions to >>> imp-users@salilab.org >>> >>> To subscribe or unsubscribe via the World Wide Web, visit >>> https://salilab.org/mailman/listinfo/imp-users >>> or, via email, send a message with subject or body 'help' to >>> imp-users-request@salilab.org >>> >>> You can reach the person managing the list at >>> imp-users-owner@salilab.org >>> >>> When replying, please edit your Subject line so it is more specific >>> than "Re: Contents of IMP-users digest..." >>> >>> >>> Today's Topics: >>> >>> 1. Re: Sampling and writing to pym/rmf (Barak Raveh) (Barak Raveh) >>> >>> >>> ---------------------------------------------------------------------- >>> >>> Message: 1 >>> Date: Wed, 2 Jul 2014 09:45:30 -0700 >>> From: Barak Raveh barak.raveh@gmail.com >>> To: Help and discussion for users of IMP imp-users@salilab.org >>> Subject: Re: [IMP-users] Sampling and writing to pym/rmf (Barak Raveh) >>> Message-ID: >>> <CAHp+_Uo19VasJDJYi+2CoUUu= >>> u_6duKCraVetU4dW45+oDhTAw@mail.gmail.com> >>> Content-Type: text/plain; charset="utf-8" >>> >>> Which lines throws the error? >>> >>> >>> On Wed, Jul 2, 2014 at 4:56 AM, Josh Bullock jma.bullock@gmail.com >>> wrote: >>> >>> > Hi Barek, >>> > >>> > So I'm not giving hierarchy.get_children the correct input: >>> > >>> > TypeError: unbound method get_children() must be called with Hierarchy >>> > instance as first argument (got ConfigurationSet instance instead) >>> > >>> > I'm not sure which argument is the hierarchy instance. >>> > >>> > Thanks, >>> > >>> > Josh >>> > >>> > ------------------------------------------------- >>> > >>> > cs= get_conformations(m) >>> >>> > >>> > for i in range(0, cs.get_number_of_configurations()): >>> > JOSH = cs.load_configuration(i) >>> > S= IMP.atom.Selection >>> > h= IMP.atom.Hierarchy.get_children(cs) >>> > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") >>> > rh = RMF.create_rmf_file(tfn) >>> > >>> > On 1 July 2014 17:31, imp-users-request@salilab.org wrote: >>> > >>> >> Send IMP-users mailing list submissions to >>> >> imp-users@salilab.org >>> >> >>> >> To subscribe or unsubscribe via the World Wide Web, visit >>> >> https://salilab.org/mailman/listinfo/imp-users >>> >> or, via email, send a message with subject or body 'help' to >>> >> imp-users-request@salilab.org >>> >> >>> >> You can reach the person managing the list at >>> >> imp-users-owner@salilab.org >>> >> >>> >> When replying, please edit your Subject line so it is more specific >>> >> than "Re: Contents of IMP-users digest..." >>> >> >>> >> >>> >> Today's Topics: >>> >> >>> >> 1. Re: Sampling and writing to pym/rmf (Barak Raveh) >>> >> >>> >> >>> >> ---------------------------------------------------------------------- >>> >> >>> >> Message: 1 >>> >> Date: Tue, 1 Jul 2014 09:31:33 -0700 >>> >> From: Barak Raveh barak.raveh@gmail.com >>> >> To: Help and discussion for users of IMP imp-users@salilab.org >>> >> Subject: Re: [IMP-users] Sampling and writing to pym/rmf >>> >> Message-ID: >>> >> <CAHp+_UowiBwJozbwOfi8yFEVt7Z8o2tEZ= >>> >> LvYPnJh-LjpC2cSA@mail.gmail.com> >>> >> Content-Type: text/plain; charset="utf-8" >>> >>> >> >>> >> Hi Josh, from a very superficial look, your code to write the RMF >>> files >>> >> seems fine - do you get an output RMF file? Could you load it in >>> Chimera? >>> >> >>> >> >>> >> On Tue, Jul 1, 2014 at 2:40 AM, Josh Bullock jma.bullock@gmail.com >>> >> wrote: >>> >> >>> >> > Hello, >>> >> > >>> >> > I'm relatively new to all this so please let me know if i'm making >>> any >>> >> > obvious errors ... >>> >> > >>> >> > Essentially all i'm trying to do is generate an ensemble of models >>> made >>> >> > from four subunits - constrained by MS connectivity restraints. The >>> >> models >>> >> > get scored but nothing seems to write to the pymol file. Ideally i'd >>> >> like >>> >> > to write to an .rmf but i haven't worked that one out either ... >>> >> > >>> >> > Is this a reasonable way to go about my problem ? >>> >> > >>> >> > Many thanks, >>> >> > >>> >> > Josh >>> >> > >>> >> > ------------------------------------------- >>> >> > >>> >> > import IMP >>> >> > import IMP.atom >>> >> > import IMP.rmf >>> >> > import inspect >>> >> > import IMP.container >>> >> > import IMP.display >>> >> > import IMP.statistics >>> >> > #import IMP.example >>> >> > import sys, math, os, optparse >>> >> > import RMF >>> >> > >>> >> > from optparse import OptionParser >>> >> > >>> >> > >>> >> > # Convert the arguments into strings and number >>> >> > Firstpdb = str(sys.argv[1]) >>> >> > Secondpdb = str(sys.argv[2]) >>> >> > Thirdpdb = str(sys.argv[3]) >>> >> > Fourthpdb = str(sys.argv[4]) >>> >> > models = float(sys.argv[5]) >>> >> > >>> >> > #***************************************** >>> >> > >>> >> > # the spring constant to use, it doesnt really matter >>> >> > k=100 >>> >> > # the target resolution for the representation, this is used to >>> specify >>> >> > how detailed >>> >> > # the representation used should be >>> >> > resolution=300 >>> >> > # the box to perform everything >>> >> > bb=IMP.algebra.BoundingBox3D(IMP.algebra.Vector3D(0,0,0), >>> >> > IMP.algebra.Vector3D(300, 300, 300)) >>> >> > >>> >> > >>> >> > # this function creates the molecular hierarchies for the various >>> >> involved >>> >> > proteins >>> >> > def create_representation(): >>> >> > m= IMP.Model() >>> >> > all=IMP.atom.Hierarchy.setup_particle(IMP.Particle(m)) >>> >> > all.set_name("the universe") >>> >> > # create a protein, represented as a set of connected balls of >>> >> > appropriate >>> >> > # radii and number, chose by the resolution parameter and the >>> >> number of >>> >> > # amino acids. >>> >> > >>> >> > def create_protein_from_pdbs(name, files): >>> >> > >>> >> > def create_from_pdb(file): >>> >> > sls=IMP.SetLogState(IMP.NONE) >>> >> > datadir = os.getcwd() >>> >> > print datadir >>> >> > t=IMP.atom.read_pdb( datadir+'/' + file, m, >>> >> > IMP.atom.ATOMPDBSelector()) >>> >> > del sls >>> >> > #IMP.atom.show_molecular_hierarchy(t) >>> >> > c=IMP.atom.Chain(IMP.atom.get_by_type(t, >>> >> > IMP.atom.CHAIN_TYPE)[0]) >>> >> > if c.get_number_of_children()==0: >>> >> > IMP.atom.show_molecular_hierarchy(t) >>> >> > # there is no reason to use all atoms, just approximate >>> the >>> >> > pdb shape instead >>> >> > s=IMP.atom.create_simplified_along_backbone(c, >>> >> > >>> >> resolution/300.0) >>> >> > IMP.atom.destroy(t) >>> >> > # make the simplified structure rigid >>> >> > rb=IMP.atom.create_rigid_body(s) >>> >> > # rb=IMP.atom.create_rigid_body(c) >>> >> > rb.set_coordinates_are_optimized(True) >>> >> > return s >>> >> > # return c >>> >> > >>> >> > h= create_from_pdb(files[0]) >>> >> > h.set_name(name) >>> >> > all.add_child(h) >>> >> > >>> >> > create_protein_from_pdbs("A", [Firstpdb]) >>> >> > create_protein_from_pdbs("B", [Secondpdb]) >>> >> > create_protein_from_pdbs("C", [Thirdpdb]) >>> >> > create_protein_from_pdbs("D", [Fourthpdb]) >>> >> > #create_protein_from_pdbs("C", ["rpt3_imp.pdb"]) >>> >> > return (m, all) >>> >> > >>> >> > # create the needed restraints and add them to the model >>> >> > >>> >> > def create_restraints(m, all): >>> >> > def add_connectivity_restraint(s): >>> >> > >>> >> > tr= IMP.core.TableRefiner() >>> >> > rps=[] >>> >> > for sc in s: >>> >> > ps= sc.get_selected_particles() >>> >> > rps.append(ps[0]) >>> >> > tr.add_particle(ps[0], ps) >>> >> > >>> >> > # duplicate the IMP.atom.create_connectivity_restraint >>> >> > functionality >>> >> > >>> >> > score= >>> >> > >>> >> >>> IMP.core.KClosePairsPairScore(IMP.core.HarmonicSphereDistancePairScore(0,1),tr) >>> >> > >>> >> > r= IMP.core.MSConnectivityRestraint(m,score) >>> >> > >>> >> > iA = r.add_type([rps[0]]) >>> >> > iB = r.add_type([rps[1]]) >>> >> > iC = r.add_type([rps[2]]) >>> >> > iD = r.add_type([rps[3]]) >>> >> > n1 = r.add_composite([iA, iB, iC, iD]) >>> >> > n2 = r.add_composite([iA, iB], n1) >>> >> > n3 = r.add_composite([iC, iD], n1) >>> >> > n4 = r.add_composite([iB, iC, iD], n1) >>> >> > >>> >> > m.add_restraint(r) >>> >> > >>> >> > evr=IMP.atom.create_excluded_volume_restraint([all]) >>> >> > m.add_restraint(evr) >>> >> > # a Selection allows for natural specification of what the >>> >> restraints >>> >> > act on >>> >> > S= IMP.atom.Selection >>> >> > sA=S(hierarchy=all, molecule="A") >>> >> > sB=S(hierarchy=all, molecule="B") >>> >> > sC=S(hierarchy=all, molecule="C") >>> >> > sD=S(hierarchy=all, molecule="D") >>> >> > add_connectivity_restraint([sA, sB, sC, sD]) >>> >> > >>> >> > >>> >> > # find acceptable conformations of the model >>> >> > def get_conformations(m): >>> >> > sampler= IMP.core.MCCGSampler(m) >>> >> > sampler.set_bounding_box(bb) >>> >> > # magic numbers, experiment with them and make them large >>> enough for >>> >> > things to work >>> >> > sampler.set_number_of_conjugate_gradient_steps(100) >>> >> > sampler.set_number_of_monte_carlo_steps(20) >>> >> > sampler.set_number_of_attempts(models) >>> >> > # We don't care to see the output from the sampler >>> >> > sampler.set_log_level(IMP.SILENT) >>> >> > # return the IMP.ConfigurationSet storing all the found >>> >> configurations >>> >> > that >>> >> > # meet the various restraint maximum scores. >>> >> > cs= sampler.create_sample() >>> >> > return cs >>> >> > >>> >> > >>> >> > # cluster the conformations and write them to a file >>> >> > def analyze_conformations(cs, all, gs): >>> >> > # we want to cluster the configurations to make them easier to >>> >> > understand >>> >> > # in the case, the clustering is pretty meaningless >>> >> > embed= IMP.statistics.ConfigurationSetXYZEmbedding(cs, >>> >> > >>> >> > IMP.container.ListSingletonContainer(IMP.atom.get_leaves(all)), >>> True) >>> >> > cluster= IMP.statistics.create_lloyds_kmeans(embed, 10, 10000) >>> >> > # dump each cluster center to a file so it can be viewed. >>> >> > for i in range(cluster.get_number_of_clusters()): >>> >> > center= cluster.get_cluster_center(i) >>> >> > cs.load_configuration(i) >>> >> > w= IMP.display.PymolWriter("cluster.%d.pym"%i) >>> >> > for g in gs: >>> >> > w.add_geometry(g) >>> >> > >>> >> > >>> >> > >>> >> > >>> >> >>> #****************************************************************************************** >>> >> > # now do the actual work >>> >> > >>> >> > (m,all)= create_representation() >>> >> > IMP.atom.show_molecular_hierarchy(all) >>> >> > create_restraints(m, all) >>> >> > >>> >> > # in order to display the results, we need something that maps the >>> >> > particles onto >>> >> > # geometric objets. The IMP.display.Geometry objects do this >>> mapping. >>> >> > # IMP.display.XYZRGeometry map an IMP.core.XYZR particle onto a >>> sphere >>> >> > gs=[] >>> >> > for i in range(all.get_number_of_children()): >>> >> > color= IMP.display.get_display_color(i) >>> >> > n= all.get_child(i) >>> >> > name= n.get_name() >>> >> > g= IMP.atom.HierarchyGeometry(n) >>> >> > g.set_color(color) >>> >> > gs.append(g) >>> >> > >>> >> > cs= get_conformations(m) >>> >> > >>> >> > print "found", cs.get_number_of_configurations(), "solutions" >>> >> > >>> >> > ListScores = [] >>> >> > for i in range(0, cs.get_number_of_configurations()): >>> >> > cs.load_configuration(i) >>> >> > # print the configuration >>> >> > print "solution number: ",i,"scored :", m.evaluate(False) >>> >> > ListScores.append(m.evaluate(False)) >>> >> > >>> >> > f1 = open("out_scores.csv", "w") >>> >> > f1.write("\n".join(map(lambda x: str(x), ListScores))) >>> >> > f1.close() >>> >> > >>> >> > # for each of the configuration, dump it to a file to view in pymol >>> >> > for i in range(0, cs.get_number_of_configurations()): >>> >> > JOSH = cs.load_configuration(i) >>> >> > S= IMP.atom.Selection >>> >> > h= IMP.atom.Hierarchy.get_children(cs) >>> >> > tfn = IMP.create_temporary_file_name("josh%d"%i, ".rmf") >>> >> > rh = RMF.create_rmf_file(tfn) >>> >> > >>> >> > # add the hierarchy to the file >>> >> > IMP.rmf.add_hierarchies(rh, h) >>> >> > >>> >> > # add the current configuration to the file as frame 0 >>> >> > IMP.rmf.save_frame(rh) >>> >> > >>> >> > for g in gs: >>> >> > w.add_geometry(g) >>> >> > >>> >> > analyze_conformations(cs, all, gs) >>> >> > >>> >> > >>> >> > _______________________________________________ >>> >> > IMP-users mailing list >>> >> > IMP-users@salilab.org >>> >> > https://salilab.org/mailman/listinfo/imp-users >>> >> > >>> >> > >>> >> >>> >> >>> >> -- >>> >> Barak >>> >>
participants (2)
-
Barak Raveh
-
Josh Bullock