data-beans 0.6.21

Sparse genomics data backends, QC, algorithms, and simulation
Documentation
[package]
name = "data-beans"
license = "MIT"
authors = ["Yongjin Park <ypp@stat.ubc.ca>"]
description = "Sparse genomics data backends, QC, algorithms, and simulation"
repository = "https://github.com/causalpathlab/data-beans"
homepage = "https://github.com/causalpathlab/data-beans"
edition = "2021"
readme = "README.md"
# Own version (decoupled from workspace.version): data-beans evolves its CLI /
# QC API independently of the shared utility crates.
version = "0.6.21"
rust-version = "1.91"
# Ship only the sources, README and license: nothing else in the working tree
# (data stores, saved name lists, scratch files) can end up on crates.io.
include = ["src/**/*.rs", "tests/**/*.rs", "README.md", "LICENSE"]

[[bin]]
name = "data-beans"
path = "src/main.rs"
# The CLI's interactive views need the terminal UI.
required-features = ["tui"]

[[bin]]
name = "data-beans-sim"
path = "src/sim_main.rs"
required-features = ["sim"]

[features]
default = ["aux", "tui", "tensor", "ndarray"]
# Read sparse data into dense candle `Tensor`s (`read_*_tensor`). Off, no
# candle is linked: for crates that only need matrices.
tensor = ["legume-numeric/tensor"]
# ndarray `Array2` variants of the readers, importers and batch matching
# (`*_ndarray`), and zarrs' ndarray API and transpose codec. The codec only
# matters for multi-dimensional arrays stored column-major; this crate's
# own backends store 1-D arrays. Off, ndarray is not linked.
ndarray = ["dep:ndarray", "legume-numeric/ndarray", "zarrs/ndarray", "zarrs/transpose"]
aux = []
# Full-screen terminal views (ratatui): the CLI's interactive sessions, and
# `data_beans::interactive` for downstream crates building their own.
tui = ["dep:ratatui"]
alg = ["aux"]
sim = ["alg"]
cuda = ["legume-numeric/cuda"]
metal = ["legume-numeric/metal"]
# Pulls in libhdf5 — opt-in so installs on hosts without HDF5 headers still
# build. When off, the HDF5 sparse backend and all H5/H5AD readers compile
# out; .zarr / .zarr.zip remain the supported formats.
hdf5 = ["dep:hdf5", "ndarray"]

[dependencies]
legume-numeric = { version = "0.8.14", default-features = false, features = ["matrix", "param"] }

anyhow = "1.0"
clap = { version = "4.5.20", features = ["derive"] }
flate2 = "1.0.34"
rayon = "1.10.0"
regex = "1"

hdf5 = { package = "hdf5-metno", version = "0.14.1", features = ["blosc"], optional = true }
libz-sys = { version = "1.1", features = ["libc"], default-features = false }
zarrs = { version = "0.23", default-features = false, features = ["filesystem", "blosc", "crc32c", "gzip", "sharding", "zstd"] }

tempfile = "3.2"
rand = "0.10.1"
ndarray = { version = "0.17", features = ["rayon", "serde", "approx", "blas"], optional = true }
rand_distr = "0.6"
approx = "0.5.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

nalgebra = "0.34"
nalgebra-sparse = "0.11"

indicatif = { version = "^0.18", features = ["rayon"] }
indicatif-log-bridge = "0.2"
env_logger = "0.11"
log = "0.4"
dashmap = { version = "6.1.0", features = ["rayon"] }
rustc-hash = "2.1"
zip = "8"
zarrs_zip = "0.5"
petgraph = "0.8"
fastobo = "0.15"
special = "0.13"
num_cpus = "1.16.0"
statrs = { version = "0.18", default-features = false }
ratatui = { version = "0.30", default-features = false, features = ["crossterm"], optional = true }