#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[derive(Default)]
pub enum SecondaryStructure {
Helix(HelixType),
Sheet,
#[default]
Coil,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[derive(Default)]
pub enum HelixType {
#[default]
Alpha,
ThreeTen,
Pi,
}
#[derive(Debug, Clone)]
pub struct SecondaryStructureAssignment {
pub chain_id: char,
pub start_seq: i32,
pub end_seq: i32,
pub ss_type: SecondaryStructure,
}
impl SecondaryStructureAssignment {
pub fn helix(chain_id: char, start_seq: i32, end_seq: i32, helix_type: HelixType) -> Self {
Self {
chain_id,
start_seq,
end_seq,
ss_type: SecondaryStructure::Helix(helix_type),
}
}
pub fn sheet(chain_id: char, start_seq: i32, end_seq: i32) -> Self {
Self {
chain_id,
start_seq,
end_seq,
ss_type: SecondaryStructure::Sheet,
}
}
pub fn contains(&self, chain_id: char, residue_seq: i32) -> bool {
self.chain_id == chain_id && residue_seq >= self.start_seq && residue_seq <= self.end_seq
}
}