mod bfactor;
mod composition;
mod distance;
mod geometry;
#[cfg(feature = "dssp")]
mod dihedrals;
#[cfg(feature = "dssp")]
mod hbonds;
mod alphafold;
mod interactions;
pub use composition::HYDROPHOBIC_RESIDUES;
pub use distance::{DEFAULT_ATOM_CONTACT_THRESHOLD, DEFAULT_CA_CONTACT_THRESHOLD};
#[cfg(feature = "dssp")]
pub use dihedrals::{RamachandranRegion, RamachandranStats, ResidueDihedrals, ResidueRef};
#[cfg(feature = "dssp")]
pub use hbonds::{HBondStats, HBondType, MainchainHBond, ResidueHBonds};
pub use alphafold::{ConfidenceCategory, ResiduePlddt};
pub use interactions::{
BindingSite, ContactResidue, HydrophobicContact, LigandInteractionProfile, ProteinLigandHBond,
SaltBridge,
};
use std::collections::HashMap;
#[derive(Debug, Clone, PartialEq)]
pub struct ResidueBFactor {
pub chain_id: String,
pub residue_seq: i32,
pub ins_code: Option<char>,
pub residue_name: String,
pub b_factor_mean: f64,
pub b_factor_min: f64,
pub b_factor_max: f64,
pub atom_count: usize,
}
#[derive(Debug, Clone)]
pub struct StructureDescriptors {
pub num_residues: usize,
pub num_atoms: usize,
pub aa_composition: HashMap<String, f64>,
pub glycine_ratio: f64,
pub hydrophobic_ratio: f64,
pub radius_of_gyration: f64,
pub max_ca_distance: f64,
pub missing_residue_ratio: f64,
pub secondary_structure_ratio: f64,
pub compactness_index: f64,
pub ca_density: f64,
pub b_factor_mean: f64,
pub b_factor_mean_ca: f64,
pub b_factor_min: f64,
pub b_factor_max: f64,
pub b_factor_std: f64,
}
impl Default for StructureDescriptors {
fn default() -> Self {
Self {
num_residues: 0,
num_atoms: 0,
aa_composition: HashMap::new(),
glycine_ratio: 0.0,
hydrophobic_ratio: 0.0,
radius_of_gyration: 0.0,
max_ca_distance: 0.0,
missing_residue_ratio: 0.0,
secondary_structure_ratio: 0.0,
compactness_index: 0.0,
ca_density: 0.0,
b_factor_mean: 0.0,
b_factor_mean_ca: 0.0,
b_factor_min: 0.0,
b_factor_max: 0.0,
b_factor_std: 0.0,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_structure_descriptors_default() {
let desc = StructureDescriptors::default();
assert_eq!(desc.num_residues, 0);
assert_eq!(desc.num_atoms, 0);
assert!(desc.aa_composition.is_empty());
}
}