RCSB Viewers:MBT Libs:Fragment (Secondary Structure) Definition
Notes
If
deriveFragments()
throws an exception, it tries a
loadFragments()
, again. Might be just to
clear everything out?
In the loaders, conformation information is ignored. Fragments are
always
derived.
Relevent Classes
- Structure
- StructureMap
- Conformation* - intermediate container for various conformation types (COIL, HELIX, etc.)
- StructureComponent* - primarily Fragment, in this discussion.
- RangeMap
- Range
- DerivedInformation
- Fragment
Explanation
Look in the
RCSB MBT Libs
project, in the source dir
Structure Model
, package
org.rcsb.mbt.model
for most
of this (unless otherwise specified).
Structure
is an abstract class. The loaders derive a helper class from it, and use it to push off all their
discovered records, without analysis.
StructureMap
is the real core of the structure model. The information kept here is what is actually contains
the atom/bond/fragment relationships (The raw types have been moved to
org.rcsb.mbt.model.interim
).
First, any definitions that are picked up in the file are kept in a list along with all of the other
StructureComponent
-derived items defined there (Atoms, Residues, Chains, Bonds). This list is kept in the
Structure
class (abstract class derived by loader into a loader-specific implementation). They simply consist
of raw information as they were collected from the file. These classes (
Coil
,
Helix
,
Strand
,
Turn
),
derive from
Conformation
(which is derived from
StructureComponent
).
If they exist, these records are examined (in
StructureMap
- look for
generateFragments()
and
loadFragments()
). An intermediate type called
RangeMap
is used to store residue ranges for each Conformation
type found.
If they don't exist, then
deriveFragments()
is called, which creates a
org.rcsb.mbt.model.util.DerivedInformation
object used to synthesize the ranges through a heuristic
Kabsch-Sander
is the algorithm cited in the comments.) Basically, it consists of subdividing ranges until the
conformation is determined. Note the 'Ss'-prefix helper classes. ('Ss' stands for 'SecondaryStructure').
Finally, the completed
Range
objects are traversed and turned into
Fragment
types, which is the destination
type and is what ultimately ends up in the
StructureMap lists. Each fragment has a
ConformationType
(which is
just another
ComponentType
) set to indicate what conformation it is,
and a list of residues that make it up.