|
From: Chris S. <ctsa@u.washington.edu> - 2002-11-13 22:04:24
|
Guys,
Just wanted to put you on notice that I'm getting ready to check in some
major rearrangements in peptide as well as btk-wide atom storage, you'll
want to stay away from this stuff for a little bit if you can. Since sf
cvs is broken right now, I'll go ahead and give you the brief explanation
and the issues that have come up before I tag and ci.
The current atom storage system relies on an atom's type (topological
type, CB, CG, etc.) being determined by its place in the atom array of
each residue. I've changed atoms so that they store their own type and
only get thrown into the central atom array if you actually want them
there. This has lots of upside:
-Missing atoms can actually be missing
-Centroid mode works again w/o lots of hackery
-adding termini becomes trivial (I already threw on the N H's)
-tautomer states and water rotamers should be easier to code in.
-the default iterators for proteins and residues shouldn't require any
if's (assuming we assert that everything has built)
-Most important: all the peptide types can dissolve back into one peptide
(still as a monomer template) with very few if's thrown into the code, and
the user could recover the old modes something like this : (this is only
one possible design for the library interface)
//allh
Protein p("foo.pdb")
p.add_all_missing();
//basic
Protein p("foo.pdb")
p.remove_h();
p.add_all_heavy_missing();
//centroid
Protein p("foo.pdb")
p.remove_h();
p.remove_sidechains();
p.add_centroids();
Note that any of these type of functions could iterate over
monomer_begin() and monomer_end(), to customize the detail throughout
a large protein if desired.
The major downside is that I've trashed some of the pointer safety and
hidden implementations. specifically:
-The primary atom array is now a vector of pointers to atoms, this means
that all atom iterator functions require an ugly double deref,
and some safety issues come up. I'm using the pointers right now to be
able to look up atoms by type from the residue structure, and I was
planing to link them to the nodes of the topology graph later on.
Hopefuly these can be implemented in a cleaner way once more eyes look
at the code.
-Tetrad is back in atom, polluting the user interface. There are a couple
known ways to solve this problem.
-The details of this change are still being worked on and other major
architectural changes are required (monomer-polymer, the topology graph),
so I haven't spent a lot of time plinking on details, like
destructors, or fixing the torsion angle controls, which will be fixed
with the graph change.
I'll try to check in soon, If you guys know what's up with cvs right now,
lemme know.
-c
|