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 >