Skip to main content

flow_clustering/clustering/
mod.rs

1//! Clustering algorithms module
2//!
3//! Provides K-means, DBSCAN, Gaussian Mixture Model clustering, and silhouette scoring.
4
5mod dbscan;
6mod gmm;
7mod kmeans;
8pub mod silhouette;
9
10pub use dbscan::{Dbscan, DbscanConfig, DbscanResult};
11pub use gmm::{Gmm, GmmConfig, GmmResult};
12pub use kmeans::{KMeans, KMeansConfig, KMeansResult};
13pub use silhouette::{SilhouetteResult, silhouette_scores, silhouette_scores_sampled};
14
15use thiserror::Error;
16
17/// Error type for clustering operations
18#[derive(Error, Debug)]
19pub enum ClusteringError {
20    #[error("Empty data")]
21    EmptyData,
22    #[error("Insufficient data: need at least {min} points, got {actual}")]
23    InsufficientData { min: usize, actual: usize },
24    #[error("Invalid configuration: {0}")]
25    InvalidConfig(String),
26    #[error("Parameter validation failed: {0}")]
27    ValidationFailed(String),
28    #[error("Clustering failed: {0}")]
29    ClusteringFailed(String),
30}
31
32pub type ClusteringResult<T> = Result<T, ClusteringError>;