sevensense_analysis/
lib.rs

1//! # sevensense-analysis
2//!
3//! Analysis bounded context for 7sense bioacoustic analysis platform.
4//!
5//! This crate provides clustering, motif detection, sequence analysis, and anomaly
6//! detection capabilities for bioacoustic embeddings.
7//!
8//! ## Features
9//!
10//! - **Clustering**: HDBSCAN and K-means clustering for grouping similar vocalizations
11//! - **Prototype Extraction**: Identify representative embeddings (exemplars) for each cluster
12//! - **Motif Detection**: Discover recurring patterns in vocalization sequences
13//! - **Sequence Analysis**: Markov chain analysis, transition matrices, entropy computation
14//! - **Anomaly Detection**: Identify unusual or novel vocalizations
15//!
16//! ## Architecture
17//!
18//! This crate follows Domain-Driven Design (DDD) with hexagonal architecture:
19//!
20//! - `domain/` - Core domain entities, value objects, and repository traits
21//! - `application/` - Application services orchestrating domain operations
22//! - `infrastructure/` - Concrete implementations (HDBSCAN, Markov chains, etc.)
23//!
24//! ## Example
25//!
26//! ```rust,ignore
27//! use sevensense_analysis::{
28//!     application::ClusteringService,
29//!     domain::{ClusteringConfig, ClusteringMethod},
30//! };
31//!
32//! let service = ClusteringService::new(ClusteringConfig::default());
33//! let embeddings = vec![/* ... */];
34//! let clusters = service.run_hdbscan(&embeddings).await?;
35//! ```
36
37#![warn(missing_docs)]
38#![warn(clippy::all)]
39#![allow(clippy::module_name_repetitions)]
40
41pub mod domain;
42pub mod application;
43pub mod infrastructure;
44pub mod metrics;
45
46// Re-export primary types for convenience
47pub use domain::entities::{
48    Anomaly, AnomalyType, Cluster, ClusterId, EmbeddingId, Motif, MotifOccurrence, Prototype,
49    RecordingId, SegmentId, SequenceAnalysis,
50};
51pub use domain::repository::{ClusterRepository, MotifRepository, SequenceRepository};
52pub use domain::events::{
53    AnalysisEvent, ClusterAssigned, ClustersDiscovered, MotifDetected, SequenceAnalyzed,
54};
55pub use domain::value_objects::{
56    ClusteringConfig, ClusteringMethod, ClusteringParameters, MotifConfig, SequenceMetrics,
57    TransitionMatrix,
58};
59
60pub use application::services::{
61    AnomalyDetectionService, ClusteringService, MotifDetectionService, SequenceAnalysisService,
62};
63
64pub use metrics::{
65    ClusteringMetrics, SequenceEntropy, SilhouetteScore, VMeasure,
66};
67
68/// Crate version information
69pub const VERSION: &str = env!("CARGO_PKG_VERSION");
70
71/// Prelude module for convenient imports
72pub mod prelude {
73    pub use crate::domain::entities::*;
74    pub use crate::domain::repository::*;
75    pub use crate::domain::value_objects::*;
76    pub use crate::application::services::*;
77    pub use crate::metrics::*;
78}