Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AnnEx

A library for handling annotated data matrices in Elixir.

Based on Python's Anndata library (https://anndata.readthedocs.io/en/latest/)

AnnEx provides three sparse matrix representations:

  • AnnEx.COO for straightforward coordinate-based ingestion.
  • AnnEx.CSR for compressed row-oriented storage.
  • AnnEx.CSC for compressed column-oriented storage.

Each representation has a chunked builder.

Common operations dispatch on the matrix struct through AnnEx, including AnnEx.shape/1, AnnEx.nnz/1, AnnEx.coverage/1, AnnEx.to_dense/1, and AnnEx.filter/2.

Run mix docs to generate documentation.

Benchmarks

Run mix run bench/sparse_formats.exs to compare COO, CSR, and CSC construction, retained tensor storage, dense conversion, and row- and column-oriented reads.

Run mix run bench/matrix_market_parser.exs to compare the notebook's string parser with direct binary pattern matching over an in-memory batch of Matrix Market entries.

Run mix run bench/remote_csc_import.exs to time the first million entries of the E-MTAB-5061 remote gzip-to-CSC path. Set ANN_EX_REMOTE_BENCH_ENTRIES to 22061270 for the complete matrix, or set ANN_EX_REMOTE_BENCH_MODE to lines or parse to isolate earlier stages of the pipeline.

About

A library for handling annotated data matrices in Elixir.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages