RCSB Viewers:MBT Libs:Fragment (Secondary Structure) Definition
Notes
IfderiveFragments()throws an exception, it tries a
loadFragments(), again. Might be just to
clear everything out?
In the loaders, conformation information is ignored. Fragments arealwaysderived.
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.