protein_core/
structure.rs

1//! Structure
2
3// The major complexity arises from non-standard/modified amino acid and nucleotide residues and hetero-residues (non-amino-acid and non-nucleotide  molecules).
4
5pub mod anisou;
6pub use anisou::Anisou;
7pub mod atom;
8pub use atom::{Atom, AtomName}; // NucleotideAtomName, AminoAcidAtomName};
9pub mod element;
10pub use element::Element;
11pub mod model;
12pub use model::Model;
13pub mod secondary_structure;
14pub use secondary_structure::{Helix, HelixClass, Registration, Sense, Sheet, Strand};
15pub mod serial;
16pub use serial::*;
17pub mod residue;
18pub use residue::{
19    AminoAcid, ModifiedAminoAcid, ModifiedNucleotide, Molecule, Monomer, Nucleotide, Residue,
20    StandardAminoAcid, StandardNucleotide,
21};
22pub mod chain;
23pub use chain::Chain;
24
25pub type Connect = [AtomSerial; 2];
26
27use serde::Serialize;
28use std::collections::HashMap;
29
30use crate::metadata::Metadata;
31
32#[derive(Debug, Clone, Serialize)]
33pub struct Ssbond {
34    pub a: (char, ResidueSerial),
35    pub b: (char, ResidueSerial),
36}
37
38#[derive(Debug, Clone, Serialize, Default)]
39pub struct Structure {
40    pub chains_aa: Vec<Chain<AminoAcid>>,
41    pub chains_nuc: Vec<Chain<Nucleotide>>,
42    pub helices: Vec<Helix>,
43    pub sheets: Vec<Sheet>,
44    pub ssbonds: Vec<Ssbond>,
45    pub modified_aa: HashMap<String, ModifiedAminoAcid>,
46    pub modified_nuc: HashMap<String, ModifiedNucleotide>,
47    pub connect: Vec<Connect>,
48    // pub link: Vec<Link>
49    pub models: Vec<Model>,
50    pub metadata: Option<Metadata>,
51}