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.COOfor straightforward coordinate-based ingestion.AnnEx.CSRfor compressed row-oriented storage.AnnEx.CSCfor 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.
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.