Structure model (Chemistry) - singa-bio/singa GitHub Wiki
Molecules are three-dimensional structures that consist of atoms connected by covalent bonds. The application and development of algorithms to analyze their structure on a geometrical level as well as their biological implications is the focal point of structural bioinformatics. Commonly libraries store those structures as list representations of atoms. From a different point of view, the nature of molecules suggests the their modeling as graph structures. This could allow for a more efficient traversal from macro to atomic scale.
The SiNGA Framework that uses graph motivated data structures to store and represent an assembly of molecules. SiNGA implements commonly used features to retrieve, investigate and work with macromolecular structures, that can be accessed using a convenient method chaining API for most features.
The Structure class is the topmost container of any molecular data. Any Structure Object my contain a number of BranchSubstructures such as Chains or StructuralModels. In general BranchSubstructures are containers that allow the grouping of any actual atom data points. Commonly this grouping is predefined by the parsed structural data. Since no actual atomic data is stored in branches, additional groupings such as StructuralMotifs is possible. BranchSubstructures are able to store other BranchSubstructures, allowing for hierarchical grouping. Additionally, they may contain LeafSubstructures with the actual Atom data.
Atoms are considered Nodes, that my be connected by Bonds. Bonds may be covalent bonds or interactions such as hydrogen bonds, salt bridges, or pi stacking. Each LeafSubstructure represents a graph that contains those atoms and edges. Interactions between different LeafSubstructures (e.g. peptide backbone) are also represented as Bonds between Atoms but are registered at the next higher BranchSubstructure containing both LeafSubstructure.
images/structure_representation.png
Implementations of Leafs include AminoAcids, Nucleotides and plain AtomContainers. The concrete entity of a Leaf can be obtained by their assigned StructuralFamily.