graphblas_sparse_linear_algebra

Crates.iographblas_sparse_linear_algebra
lib.rsgraphblas_sparse_linear_algebra
version0.44.0
sourcesrc
created_at2021-07-01 20:34:33.080687
updated_at2024-04-02 19:43:24.469916
descriptionWrapper for SuiteSparse:GraphBLAS
homepage
repositoryhttps://github.com/code-sam/graphblas_sparse_linear_algebra
max_upload_size
id417589
size807,047
(code-sam)

documentation

README

![test](https://github.com/code-sam/graphblas_sparse_linear_algebra/actions/workflows/test_main.yml/badge.svg?branch=main) # graphblas_sparse_linear_algebra Rust wrapper for SuiteSparse:GraphBLAS ## Minimum example ```rust use graphblas_sparse_linear_algebra::collections::sparse_matrix::operations::{ FromMatrixElementList, GetSparseMatrixElementValue, }; use graphblas_sparse_linear_algebra::collections::sparse_matrix::{ MatrixElementList, Size, SparseMatrix, }; use graphblas_sparse_linear_algebra::collections::Collection; use graphblas_sparse_linear_algebra::context::Context; use graphblas_sparse_linear_algebra::operators::apply::{ ApplyBinaryOperator, BinaryOperatorApplier, }; use graphblas_sparse_linear_algebra::operators::binary_operator::{Assignment, First}; use graphblas_sparse_linear_algebra::operators::mask::SelectEntireMatrix; use graphblas_sparse_linear_algebra::operators::options::{ OptionsForOperatorWithMatrixAsFirstArgument, OptionsForOperatorWithMatrixAsSecondArgument, }; fn main() { let context = Context::init_default().unwrap(); let element_list = MatrixElementList::::from_element_vector(vec![ (1, 1, 1).into(), (2, 1, 2).into(), (4, 2, 4).into(), (5, 2, 5).into(), ]); let matrix_size: Size = (10, 15).into(); let matrix = SparseMatrix::::from_element_list( &context.to_owned(), &matrix_size, &element_list, &First::::new(), ) .unwrap(); let mut product_matrix = SparseMatrix::::new(&context, &matrix_size).unwrap(); let operator = BinaryOperatorApplier::new(); let first_argument = 10; operator .apply_with_matrix_as_left_argument( &matrix, &First::::new(), &first_argument, &Assignment::new(), &mut product_matrix, &SelectEntireMatrix::new(&context), &OptionsForOperatorWithMatrixAsFirstArgument::new_default(), ) .unwrap(); println!("{}", product_matrix); assert_eq!(product_matrix.number_of_stored_elements().unwrap(), 4); assert_eq!(product_matrix.element_value(&2, &1).unwrap(), Some(2)); assert_eq!(product_matrix.element_value(&9, &1).unwrap(), None); let operator = BinaryOperatorApplier::new(); let second_argument = 10; operator .apply_with_matrix_as_right_argument( &second_argument, &First::::new(), &matrix, &Assignment::new(), &mut product_matrix, &SelectEntireMatrix::new(&context), &OptionsForOperatorWithMatrixAsSecondArgument::new_default(), ) .unwrap(); println!("{}", matrix); println!("{}", product_matrix); assert_eq!(product_matrix.number_of_stored_elements().unwrap(), 4); assert_eq!(product_matrix.element_value(&2, &1).unwrap(), Some(10)); assert_eq!(product_matrix.element_value(&9, &1).unwrap(), None); } ``` ## Dependencies graphblas_sparse_linear_algebra uses the [SuiteSparse:GraphBLAS](https://github.com/DrTimothyAldenDavis/GraphBLAS) implementation developed by Timothy A. Davis. ## Building from source Please make sure to meet the requirements for building [suitesparse_graphblas_sys](https://crates.io/crates/suitesparse_graphblas_sys). ## Compatibility graphblas_sparse_linear_algebra is mostly compatible with the GraphBLAS specification version 2.0 and uses SuiteSparse:GraphBLAS v8.2.0. ## Contributing Awesome, contributions are welcome. Graphblas_sparse_linear_algebra and your contribution may be relicensed and integrated into commercial software in the future. Therefore, you will be asked to agree to the [Contributor License Agreement](https://github.com/code-sam/graphblas_sparse_linear_algebra/blob/main/Contributor_License_Agreement.md) when you make a pull request. ## Licensing graphblas_sparse_linear_algebra is licensed under [Creative Commons Attribution Non Commercial 4.0 International](https://creativecommons.org/licenses/by-nc/4.0/legalcode). For other licensing options, please contact Sam Dekker.
Commit count: 405

cargo fmt