#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TailSeverity {
Excellent,
Good,
Warning,
Critical,
}
impl TailSeverity {
pub fn from_ratio(ratio: f64) -> Self {
if ratio < 2.0 {
Self::Excellent
} else if ratio < 3.0 {
Self::Good
} else if ratio < 5.0 {
Self::Warning
} else {
Self::Critical
}
}
pub fn name(&self) -> &'static str {
match self {
Self::Excellent => "excellent",
Self::Good => "good",
Self::Warning => "warning",
Self::Critical => "critical",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DistributionShape {
Unimodal,
Bimodal,
Multimodal,
Uniform,
}
impl DistributionShape {
pub fn classify(bimodality_coeff: f64, entropy: f64) -> Self {
if entropy > 0.95 {
Self::Uniform
} else if bimodality_coeff > 0.555 {
Self::Bimodal
} else if bimodality_coeff > 0.7 {
Self::Multimodal
} else {
Self::Unimodal
}
}
pub fn name(&self) -> &'static str {
match self {
Self::Unimodal => "unimodal",
Self::Bimodal => "bimodal",
Self::Multimodal => "multimodal",
Self::Uniform => "uniform",
}
}
}