#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy)]
#[repr(C)]
pub struct NeighborData {
pub threshold_squared: f32,
pub idx: u32,
}
#[derive(Clone)]
#[repr(C)]
pub struct Atom {
pub position: [f32; 3],
pub radius: f32,
pub id: usize,
pub parent_id: Option<isize>,
}
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ChainResult {
pub name: String,
pub value: f32,
}
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ResidueResult {
pub serial_number: isize,
pub insertion_code: String,
pub value: f32,
pub name: String,
pub is_polar: bool,
pub chain_id: String,
}
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ProteinResult {
pub global_total: f32,
pub polar_total: f32,
pub non_polar_total: f32,
}
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum SASAResult {
Atom(Vec<f32>),
Residue(Vec<ResidueResult>),
Chain(Vec<ChainResult>),
Protein(ProteinResult),
}