Expand description
Sparse module
This module provides implementations of various sparse matrix and array formats and operations,
similar to SciPy’s sparse
module.
§Overview
- Sparse formats (CSR, CSC, COO, DOK, LIL, DIA, BSR, etc.)
- Specialized sparse formats (Symmetric CSR, Symmetric COO)
- Basic operations (addition, multiplication, etc.)
- Sparse linear system solvers
- Sparse eigenvalue computation
- Conversion between different formats
§Matrix vs. Array API
This module provides both a matrix-based API and an array-based API, following SciPy’s transition to a more NumPy-compatible array interface.
When using the array interface (e.g., CsrArray
), please note that:
*
performs element-wise multiplication, not matrix multiplication- Use
dot()
method for matrix multiplication - Operations like
sum
produce arrays, not matrices - Array-style slicing operations return scalars, 1D, or 2D arrays
For new code, we recommend using the array interface, which is more consistent with the rest of the numerical ecosystem.
§Examples
§Matrix API (Legacy)
use scirs2_sparse::csr::CsrMatrix;
// Create a sparse matrix in CSR format
let rows = vec![0, 0, 1, 2, 2];
let cols = vec![0, 2, 2, 0, 1];
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let shape = (3, 3);
let matrix = CsrMatrix::new(data, rows, cols, shape).unwrap();
§Array API (Recommended)
use scirs2_sparse::csr_array::CsrArray;
// Create a sparse array in CSR format
let rows = vec![0, 0, 1, 2, 2];
let cols = vec![0, 2, 2, 0, 1];
let data = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let shape = (3, 3);
// From triplets (COO-like construction)
let array = CsrArray::from_triplets(&rows, &cols, &data, shape, false).unwrap();
// Or directly from CSR components
// let array = CsrArray::new(...);
Re-exports§
pub use error::SparseError;
pub use error::SparseResult;
pub use sparray::is_sparse;
pub use sparray::SparseArray;
pub use sparray::SparseSum;
pub use sym_sparray::SymSparseArray;
pub use csr_array::CsrArray;
pub use csc_array::CscArray;
pub use coo_array::CooArray;
pub use dok_array::DokArray;
pub use lil_array::LilArray;
pub use dia_array::DiaArray;
pub use bsr_array::BsrArray;
pub use banded_array::BandedArray;
pub use sym_csr::SymCsrArray;
pub use sym_csr::SymCsrMatrix;
pub use sym_coo::SymCooArray;
pub use sym_coo::SymCooMatrix;
pub use csr::CsrMatrix;
pub use csc::CscMatrix;
pub use coo::CooMatrix;
pub use dok::DokMatrix;
pub use lil::LilMatrix;
pub use dia::DiaMatrix;
pub use bsr::BsrMatrix;
pub use banded::BandedMatrix;
pub use linalg::add;
pub use linalg::bicg;
pub use linalg::bicgstab;
pub use linalg::cg;
pub use linalg::cholesky_decomposition;
pub use linalg::convolution_operator;
pub use linalg::diag_matrix;
pub use linalg::eigs;
pub use linalg::eigsh;
pub use linalg::enhanced_add;
pub use linalg::enhanced_diagonal;
pub use linalg::enhanced_scale;
pub use linalg::enhanced_subtract;
pub use linalg::expm;
pub use linalg::expm_multiply;
pub use linalg::eye;
pub use linalg::finite_difference_operator;
pub use linalg::gcrot;
pub use linalg::gmres;
pub use linalg::incomplete_cholesky;
pub use linalg::incomplete_lu;
pub use linalg::inv;
pub use linalg::lanczos;
pub use linalg::lanczos;
pub use linalg::lu_decomposition;
pub use linalg::matmul;
pub use linalg::matrix_power;
pub use linalg::multiply;
pub use linalg::norm;
pub use linalg::onenormest;
pub use linalg::power_iteration;
pub use linalg::power_iteration;
pub use linalg::qr_decomposition;
pub use linalg::sparse_direct_solve;
pub use linalg::sparse_lstsq;
pub use linalg::spsolve;
pub use linalg::svd_truncated;
pub use linalg::svds;
pub use linalg::tfqmr;
pub use linalg::ArpackOptions;
pub use linalg::AsLinearOperator;
pub use linalg::BiCGOptions;
pub use linalg::BiCGSTABOptions;
pub use linalg::BiCGSTABResult;
pub use linalg::BoundaryCondition;
pub use linalg::CGOptions;
pub use linalg::CGSOptions;
pub use linalg::CGSResult;
pub use linalg::CholeskyResult;
pub use linalg::ConvolutionMode;
pub use linalg::ConvolutionOperator;
pub use linalg::DiagonalOperator;
pub use linalg::EigenResult;
pub use linalg::EigenvalueMethod;
pub use linalg::EnhancedDiagonalOperator;
pub use linalg::EnhancedDifferenceOperator;
pub use linalg::EnhancedOperatorOptions;
pub use linalg::EnhancedScaledOperator;
pub use linalg::EnhancedSumOperator;
pub use linalg::FiniteDifferenceOperator;
pub use linalg::GCROTOptions;
pub use linalg::GCROTResult;
pub use linalg::GMRESOptions;
pub use linalg::ICOptions;
pub use linalg::ILU0Preconditioner;
pub use linalg::ILUOptions;
pub use linalg::IdentityOperator;
pub use linalg::IterationResult;
pub use linalg::JacobiPreconditioner;
pub use linalg::LUResult;
pub use linalg::LanczosOptions;
pub use linalg::LinearOperator;
pub use linalg::PowerIterationOptions;
pub use linalg::QRResult;
pub use linalg::SSORPreconditioner;
pub use linalg::SVDOptions;
pub use linalg::SVDResult;
pub use linalg::ScaledIdentityOperator;
pub use linalg::TFQMROptions;
pub use linalg::TFQMRResult;
pub use combine::block_diag;
pub use combine::bmat;
pub use combine::hstack;
pub use combine::kron;
pub use combine::kronsum;
pub use combine::tril;
pub use combine::triu;
pub use combine::vstack;
pub use index_dtype::can_cast_safely;
pub use index_dtype::get_index_dtype;
pub use index_dtype::safely_cast_index_arrays;
pub use sym_ops::sym_coo_matvec;
pub use sym_ops::sym_csr_matvec;
pub use sym_ops::sym_csr_quadratic_form;
pub use sym_ops::sym_csr_rank1_update;
pub use sym_ops::sym_csr_trace;
pub use gpu_kernel_execution::calculate_adaptive_workgroup_size;
pub use gpu_kernel_execution::execute_spmv_kernel;
pub use gpu_kernel_execution::execute_symmetric_spmv_kernel;
pub use gpu_kernel_execution::execute_triangular_solve_kernel;
pub use gpu_kernel_execution::GpuKernelConfig;
pub use gpu_kernel_execution::GpuMemoryManager as GpuKernelMemoryManager;
pub use gpu_kernel_execution::GpuPerformanceProfiler;
pub use gpu_kernel_execution::MemoryStrategy;
pub use gpu_ops::gpu_sparse_matvec;
pub use gpu_ops::gpu_sym_sparse_matvec;
pub use gpu_ops::AdvancedGpuOps;
pub use gpu_ops::GpuKernelScheduler;
pub use gpu_ops::GpuMemoryManager;
pub use gpu_ops::GpuOptions;
pub use gpu_ops::GpuProfiler;
pub use gpu_ops::OptimizedGpuOps;
pub use gpu_spmv_implementation::GpuSpMV;
pub use memory_efficient::streaming_sparse_matvec;
pub use memory_efficient::CacheAwareOps;
pub use memory_efficient::MemoryPool;
pub use memory_efficient::MemoryTracker;
pub use memory_efficient::OutOfCoreProcessor;
pub use simd_ops::simd_csr_matvec;
pub use simd_ops::simd_sparse_elementwise;
pub use simd_ops::simd_sparse_linear_combination;
pub use simd_ops::simd_sparse_matmul;
pub use simd_ops::simd_sparse_norm;
pub use simd_ops::simd_sparse_scale;
pub use simd_ops::simd_sparse_transpose;
pub use simd_ops::ElementwiseOp;
pub use simd_ops::SimdOptions;
pub use parallel_vector_ops::advanced_sparse_matvec_csr;
pub use parallel_vector_ops::parallel_axpy;
pub use parallel_vector_ops::parallel_dot;
pub use parallel_vector_ops::parallel_linear_combination;
pub use parallel_vector_ops::parallel_norm2;
pub use parallel_vector_ops::parallel_sparse_matvec_csr;
pub use parallel_vector_ops::parallel_vector_add;
pub use parallel_vector_ops::parallel_vector_copy;
pub use parallel_vector_ops::parallel_vector_scale;
pub use parallel_vector_ops::parallel_vector_sub;
pub use parallel_vector_ops::ParallelVectorOptions;
pub use quantum_inspired_sparse::QuantumProcessorStats;
pub use quantum_inspired_sparse::QuantumSparseConfig;
pub use quantum_inspired_sparse::QuantumSparseProcessor;
pub use quantum_inspired_sparse::QuantumStrategy;
pub use neural_adaptive_sparse::NeuralAdaptiveConfig;
pub use neural_adaptive_sparse::NeuralAdaptiveSparseProcessor;
pub use neural_adaptive_sparse::NeuralProcessorStats;
pub use neural_adaptive_sparse::OptimizationStrategy;
pub use quantum_neural_hybrid::HybridStrategy;
pub use quantum_neural_hybrid::QuantumNeuralConfig;
pub use quantum_neural_hybrid::QuantumNeuralHybridProcessor;
pub use quantum_neural_hybrid::QuantumNeuralHybridStats;
pub use adaptive_memory_compression::AdaptiveCompressionConfig;
pub use adaptive_memory_compression::AdaptiveMemoryCompressor;
pub use adaptive_memory_compression::CompressedMatrix;
pub use adaptive_memory_compression::CompressionAlgorithm;
pub use adaptive_memory_compression::MemoryStats;
pub use realtime_performance_monitor::Alert;
pub use realtime_performance_monitor::AlertSeverity;
pub use realtime_performance_monitor::Forecast;
pub use realtime_performance_monitor::PerformanceMetrics;
pub use realtime_performance_monitor::PerformanceMonitorConfig;
pub use realtime_performance_monitor::PerformanceSample;
pub use realtime_performance_monitor::ProcessorType;
pub use realtime_performance_monitor::RealTimePerformanceMonitor;
pub use csgraph::all_pairs_shortest_path;
pub use csgraph::bellman_ford_single_source;
pub use csgraph::bfs_distances;
pub use csgraph::breadth_first_search;
pub use csgraph::compute_laplacianmatrix;
pub use csgraph::connected_components;
pub use csgraph::connected_components;
pub use csgraph::degree_matrix;
pub use csgraph::depth_first_search;
pub use csgraph::dijkstra_single_source;
pub use csgraph::floyd_warshall;
pub use csgraph::has_path;
pub use csgraph::is_connected;
pub use csgraph::is_laplacian;
pub use csgraph::is_spanning_tree;
pub use csgraph::kruskal_mst;
pub use csgraph::laplacian;
pub use csgraph::laplacian;
pub use csgraph::largest_component;
pub use csgraph::minimum_spanning_tree;
pub use csgraph::minimum_spanning_tree;
pub use csgraph::num_edges;
pub use csgraph::num_vertices;
pub use csgraph::prim_mst;
pub use csgraph::reachable_vertices;
pub use csgraph::reconstruct_path;
pub use csgraph::shortest_path;
pub use csgraph::shortest_path;
pub use csgraph::single_source_shortest_path;
pub use csgraph::spanning_tree_weight;
pub use csgraph::strongly_connected_components;
pub use csgraph::to_adjacency_list;
pub use csgraph::topological_sort;
pub use csgraph::traversegraph;
pub use csgraph::undirected_connected_components;
pub use csgraph::validate_graph;
pub use csgraph::weakly_connected_components;
pub use csgraph::LaplacianType;
pub use csgraph::MSTAlgorithm;
pub use csgraph::ShortestPathMethod;
pub use csgraph::TraversalOrder;
Modules§
- adaptive_
memory_ compression - Adaptive Memory Compression for Advanced-Large Sparse Matrices
- banded
- Banded matrix format (legacy matrix API)
- banded_
array - Banded matrix format for sparse matrices
- bsr
- Block Sparse Row (BSR) matrix format
- bsr_
array - combine
- construct
- construct_
sym - Construction utilities for symmetric sparse matrices
- convert
- Conversion utilities for sparse matrices
- coo
- Coordinate (COO) matrix format
- coo_
array - csc
- Compressed Sparse Column (CSC) matrix format
- csc_
array - csgraph
- Compressed sparse graph algorithms module
- csr
- Compressed Sparse Row (CSR) matrix format
- csr_
array - dia
- Diagonal (DIA) matrix format
- dia_
array - dok
- Dictionary of Keys (DOK) matrix format
- dok_
array - error
- Error types for the SciRS2 sparse module
- gpu
- GPU acceleration for sparse matrix operations
- gpu_
kernel_ execution - GPU kernel execution implementations for sparse matrix operations
- gpu_ops
- GPU-accelerated operations for sparse matrices
- gpu_
spmv_ implementation - Enhanced GPU SpMV Implementation for scirs2-sparse
- index_
dtype - lil
- List of Lists (LIL) matrix format
- lil_
array - linalg
- Linear algebra operations for sparse matrices
- memory_
efficient - Memory-efficient algorithms and patterns for sparse matrices
- neural_
adaptive_ sparse - Neural-Adaptive Sparse Matrix Operations for Advanced Mode
- parallel_
vector_ ops - Parallel implementations of vector operations for iterative solvers
- quantum_
inspired_ sparse - Quantum-Inspired Sparse Matrix Operations for Advanced Mode
- quantum_
neural_ hybrid - Quantum-Neural Hybrid Optimization for Advanced Mode
- realtime_
performance_ monitor - Real-Time Performance Monitoring and Adaptation for Advanced Processors
- simd_
ops - SIMD-accelerated operations for sparse matrices
- sparray
- sym_coo
- Symmetric Coordinate (SymCOO) module
- sym_csr
- Symmetric Compressed Sparse Row (SymCSR) module
- sym_ops
- sym_
sparray - Symmetric Sparse Array trait
- utils
- Utility functions for sparse matrices
Structs§
Functions§
- is_
sparse_ array - Check if an object is a sparse array
- is_
sparse_ matrix - Check if an object is a sparse matrix (legacy API)
- is_
sym_ sparse_ array - Check if an object is a symmetric sparse array