thanks. looks exactly like what in need.

all the best for 2009

frido

On Wed, Dec 24, 2008 at 12:53 AM, Daniel Russel <drussel@gmail.com> wrote:
I just added support for multiple hierarchies, so each particle can be part of as many hierarchies as you want. So you can just make a new hierarchy type per particle.

To make a new herarchy type you do:
ht= IMP.core.HierarchyTraits("my new hierarchy type")
then to use it you do
hd= IMP.core.HierarchyDecorator.cast(p, ht)
hd= IMP.core.HierarchyDecorator.create(p, ht)
hd= IMP.core.HierarchyDecorator(p, ht)
hd.get_child(0)
etc.

I'll add example code shortly.

On Dec 23, 2008, at 12:40 PM, Friedrich Foerster wrote:

maybe that solution works for me.
to be explicit:
what happens to particles d,e,f, which have completely different restraints, which possibly require a different hierarchy?
more importantly, what happens if c is affected by another restraint, which requires a different hierarchy?

if i require a hierarchy that makes all restraints happy, that is my problem.
if not, that is an improvement for me



thanks

frido


On Fri, Dec 19, 2008 at 7:40 PM, Daniel Russel <drussel@gmail.com> wrote:
Frido:
I am not sure I entirely understand you message. Would you consider it an improvement to be able to do the following:

# a,b,c are Particles which are MolecularHierarchyDecorator roots for the proteins
# they can have arbitrary levels

# the identifier for the equivalence class hierarchy
traits= HiearchyDecoratorTraits("equivlanence_class")

abp= Particle()
m.add_particle(abp)
cp= Particle()
m.add_particle(cp)
# create a new hierarchy to define which proteins can be equivalently connected
abh= HierarchyDecorator.create(abp, traits)
abh.add_child(HierarchyDecorator.create(a, traits))
abh.add_child(HierarchyDecorator.create(b, traits))

# nothing else has the same type as c
ch= HierarchyDecorator.create(cp, traits)
ch.add_child(HierarchyDecorator.create(c, traits))


# create a refiner to get all residues irrespective of how far down they are in the hierarchy
refres= DescendentsOfTypeParticleRefiner(MolecularHierarchyDecorator.get_type_key(),
                                        MolecularHierarchyDecorator.RESIDUE)
rtres = RefineOncePairScore(SphereDistancePairScore(), refres)

# a refiner to produce the proteins in each equivalence class
cpr= ChildrenParticleRefiner(traits)
erops= RefineOncePairScore(rtres, cpr)

# make a list of the particles defining the equivalence classes
classes= IMP.Particles()
classes.append(abp)
classes.append(cp)
r= ConnectivtyRestraint(erops, classes)

The changes necessary to do the above are quite easy.



On Dec 19, 2008, at 6:36 AM, Friedrich Foerster wrote:

hi daniel,

the Model hierarchy is not particularly awkward by itself. for me the problem is more that dealing with a single hierarchy on the representation level is hard.
i just constantly run into the problem that i want to press all my restraints and representation into a single hierarchy - and i always need to change it. so my hierarchy is basically just protein -> fragment. whether a fragment is an atom, few residues, a domain, or an entire protein varies from case to case. of course, i could add another layer - but it'd be quite a bit of work to change it everywhere and probably i'd need to change it again very soon.
for me a convenient framework for restraints would probably look like that:
rest1 = upper_distance(particles_from_protein_A, articles_from_protein_B)
rest2 = upper_distance(particles_from_protein_A, articles_from_protein_C)
final_restraint = lower_scoring_one_of(rest1, rest2)
model.add_restraint(final_restraint)

(protein_B and protein_C are both of the same protein type, e.g., lysozyme ). for tricky cases one could use several instances of lower_scoring_one_of.
just a proposal....

cheers

frido

On Dec 19, 2008, at 2:02 PM, Daniel Russel wrote:

By the way, what exactly do you five cumbersome with the hierarchy as it stands? Why do you find you are changing it a lot? Just looking for ways to make things simpler.

--

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


_______________________________________________
IMP-dev mailing list
IMP-dev@salilab.org
https://salilab.org/mailman/listinfo/imp-dev