flow-utils
Shared algorithms and utilities for flow cytometry crates.
This crate provides high-performance implementations of common algorithms used across multiple flow cytometry crates.
Features
- Kernel Density Estimation (KDE): FFT-accelerated KDE with automatic bandwidth selection
- Clustering: K-means, DBSCAN (pending), and Gaussian Mixture Model clustering
- PCA: Principal Component Analysis for dimensionality reduction
Usage
Kernel Density Estimation
use KernelDensity;
let data = vec!;
let kde = estimate?;
// Find peaks in the density
let peaks = kde.find_peaks;
K-means Clustering
use ;
use Array2;
let data = from_shape_vec?;
let config = KMeansConfig ;
let result = fit?;
println!;
PCA
use Pca;
use Array2;
let data = from_shape_vec?;
let mut pca = new; // Keep 2 components
let pca = pca.fit?;
let transformed = pca.transform?;
Performance
- KDE: Uses FFT acceleration for O(n log n) performance
- Clustering: Uses linfa-clustering for optimized implementations
- PCA: Uses linfa-linalg SVD for efficient decomposition
Known Limitations
- DBSCAN: Temporarily disabled due to linfa-clustering API limitations (ParamGuard trait bound issue)
- Use K-means or GMM as alternatives for density-based clustering needs
Dependencies
ndarray0.16 (for linfa compatibility)linfa-clustering0.8linfa-linalg0.2 (for SVD)realfft3.5.0 (for FFT-accelerated KDE)