A possible fatal blow for objects came up when talking with Jeremy.
Lets say we load a PDB file. It creates a bunch of Particles, some of which are AtomParticles, some ResidueParticles etc. Now it happens I am doing coarse grained modeling, so I only care about the Residues and want to approximate them by a sphere. I have no way of adding a radius attribute to the already existing particle. I have to copy the particle to a new ResidueWithRadiusParticle (and delete the old one) or add a new particle linked to the existing one. Deleting the old residue would break all existing restraints which use the particle.
there's got to be a way around that retaining objects? andrej
On Nov 6, 2007, at 5:26 PM, Daniel Russel wrote:
> A possible fatal blow for objects came up when talking with Jeremy. > > Lets say we load a PDB file. It creates a bunch of Particles, some of > which are AtomParticles, some ResidueParticles etc. Now it happens I > am > doing coarse grained modeling, so I only care about the Residues and > want to approximate them by a sphere. I have no way of adding a radius > attribute to the already existing particle. I have to copy the > particle > to a new ResidueWithRadiusParticle (and delete the old one) or add a > new > particle linked to the existing one. Deleting the old residue would > break all existing restraints which use the particle. > > > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev
-- Andrej Sali, Ph.D. Professor and Vice Chair, Department of Biopharmaceutical Sciences Department of Pharmaceutical Chemistry California Institute for Quantitative Biosciences University of California at San Francisco UCSF MC 2552 Byers Hall Room 503B 1700 4th Street San Francisco, CA 94158-2330, USA Tel +1 (415) 514-4227; Fax +1 (415) 514-4231 Assistant, Ms. Karin Asensio, Tel +1 (415)514-4228; Lab +1 (415) 514-4232, 4233, 4258 Email sali@salilab.org; Web http://salilab.org
Andrej Sali wrote: > there's got to be a way around that retaining objects? andrej Well, we can fake it by wrapping the helper functions into a class. To do this: - leave Particles as they are now (with the addition of vector of int attributes and possibly vector of float attributes since I think coordinates should be a vector) - When you what a new particle type, for example a HierarchyParticle you write a class which wraps a Particle*. It can check that the Particle* has the necessary fields to be a HierarchyParticle. It also defines a static method "initialize" which sets up the required fields. - When a user or restraint wants to make a given Particle*, p, into a HierarchyParticle he/she calls HierarchyParticle::initialize(p) which returns a protected pointer (for now auto_ptr) to a HierarchyParticle. The user can then use that HierarchyParticle::Pointer - When a user or restraint wants to use a given Particle as a HierarchyParticle, they then call particle_cast<HierarchyParticle*>(p) to create a wrapper. The name is chosen since if it were a normal object you would have called dynamic_cast<HiearchyParticle*>. This object can then be used as desired. The return value should be ref counted pointer or something to avoid issues with deallocation (anyway, it would be called HierarchyParticle::Pointer). - The HierarchyParticle can keep all its field names internally so they don't even have to be documented. - In python you can simply call HieararchyParticle(p) (you could do that in C++ too).
This is my favorite proposal so far. And now I run.
> > On Nov 6, 2007, at 5:26 PM, Daniel Russel wrote: > >> A possible fatal blow for objects came up when talking with Jeremy. >> >> Lets say we load a PDB file. It creates a bunch of Particles, some of >> which are AtomParticles, some ResidueParticles etc. Now it happens I am >> doing coarse grained modeling, so I only care about the Residues and >> want to approximate them by a sphere. I have no way of adding a radius >> attribute to the already existing particle. I have to copy the particle >> to a new ResidueWithRadiusParticle (and delete the old one) or add a new >> particle linked to the existing one. Deleting the old residue would >> break all existing restraints which use the particle. >> >> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev > > -- > Andrej Sali, Ph.D. > Professor and Vice Chair, Department of Biopharmaceutical Sciences > Department of Pharmaceutical Chemistry > California Institute for Quantitative Biosciences > University of California at San Francisco > UCSF MC 2552 > Byers Hall Room 503B > 1700 4th Street > San Francisco, CA 94158-2330, USA > Tel +1 (415) 514-4227; Fax +1 (415) 514-4231 > Assistant, Ms. Karin Asensio, Tel +1 (415)514-4228; Lab +1 (415) > 514-4232, 4233, 4258 > Email sali@salilab.org; Web http://salilab.org >
participants (2)
-
Andrej Sali
-
Daniel Russel