Skip to content

Sparse multidimensional arrays using a DOK format, with support for TensorOperations.jl

License

Notifications You must be signed in to change notification settings

Jutho/SparseArrayKit.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SparseArrayKit.jl

Build Status Coverage Quality assurance Downloads
CI Codecov Aqua QA SparseArrayKit Downloads

A Julia package for sparse multidimensional arrays, aimed particularly at the setting of very sparse and higher-dimensional arrays (e.g. tensor algebra). This is not a replacement nor a competitor to Julia's SparseArrays standard library and the SparseMatrixCSC format.

The current interface, which is subject to breaking changes, exports a type SparseArray{T,N} <: AbstractArray{T,N}. This type uses a hash table (Dict from Julia's Base, could change) to store keys (of type CartesianIndex{N}) and values (of type T) of the non-zero data (i.e. a dictionary-of-keys storage format), and is thus supposed to have O(1) access time for getting and setting individual values. Other storage formats for sparse arrays could in the future be experimented with.

SparseArray instances have a number of method definitions, mostly indexing, basic arithmetic and methods from the LinearAlgebra standard library. Aside from matrix multiplication, there are no specific matrix methods (such as matrix factorizations) and you are probably better off with SparseMatrixCSC from SparseArrays if your problem can be cast in terms of matrices and vectors. There is a fast conversion path from SparseMatrixCSC to SparseArray (but not yet the other way around).

Objects of type SparseArray are fully compatible with the interface from TensorOperations.jl, and thus with the @tensor macro for multidimensional tensor contractions.

There are only three new methods exported by this package, which are nonzero_keys, nonzero_values and nonzero_pairs which export iterators (not necessarily editable or indexable vectors) over the keys, values and key-value pairs of the nonzero entries of the array. These can be used to define new optimized methods.

About

Sparse multidimensional arrays using a DOK format, with support for TensorOperations.jl

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages