single_algebra/
lib.rs

1//! # Single Algebra
2//!
3//! A high-performance linear algebra library optimized for sparse matrices and 
4//! dimensionality reduction algorithms. Designed for machine learning, data analysis,
5//! and scientific computing applications where efficiency with sparse data is crucial.
6//!
7//! ## Core Modules
8//!
9//! ### Matrix Operations
10//! - [`sparse`]: Sparse matrix implementations (CSR, CSC) with efficient operations
11//! - [`dense`]: Dense matrix utilities and operations
12//!
13//! ### Dimensionality Reduction
14//! - [`dimred`]: Principal Component Analysis (PCA) and planned manifold learning algorithms
15//!
16//! ### Utilities
17//! - [`Normalize`]: Data normalization transformations
18//! - [`Log1P`]: Logarithmic transformations for numerical stability
19//!
20//! ## Key Features
21//!
22//! - **Sparse matrix efficiency**: Optimized CSR/CSC formats for memory and computational efficiency
23//! - **Dimensionality reduction**: PCA with both Lanczos and randomized SVD algorithms
24//! - **Feature masking**: Selective analysis of feature subsets
25//! - **Parallel processing**: Multi-threaded operations for large datasets
26//! - **Type flexibility**: Generic implementations supporting `f32` and `f64`
27//!
28//! ## Typical Workflow
29//!
30//! 1. Load or create sparse matrices using the [`sparse`] module
31//! 2. Apply preprocessing with [`Normalize`] or [`Log1P`] utilities
32//! 3. Perform dimensionality reduction using [`dimred::pca`] algorithms
33//! 4. Analyze results with variance explanations and feature importance
34//!
35//! ## Performance Focus
36//!
37//! This library is optimized for scenarios involving:
38//! - Large, sparse datasets (e.g., text analysis, genomics, recommendation systems)
39//! - Memory-constrained environments
40//! - High-dimensional data requiring dimensionality reduction
41//! - Scientific computing workflows requiring numerical precision
42
43pub mod dense;
44pub mod sparse;
45
46pub mod dimred;
47
48mod utils;
49
50pub use utils::Normalize;
51pub use utils::Log1P;
52