Skip to main content

Out-of-memory AnnData powered by Rust (anndata-rs)

Project description

anndata-oom

PyPI Python License CI

Out-of-memory AnnData powered by Rust — a drop-in replacement for anndata.AnnData that keeps the expression matrix on disk and runs entire preprocessing pipelines (normalize, log1p, scale, PCA, neighbors, UMAP, Leiden) as lazy transforms or chunked operations. The full matrix is never loaded into memory.

Built on top of scverse/anndata-rs, the Rust implementation of AnnData.


Why?

Standard anndata.AnnData loads the entire expression matrix into RAM. For a million-cell atlas this can mean 100+ GB of memory — beyond what most workstations have.

anndataoom keeps X on disk (HDF5) and streams it through the preprocessing pipeline in chunks. Peak RAM is independent of dataset size.

Memory comparison

Dataset anndata.AnnData anndataoom Savings
PBMC 8k (7.7k × 21k) 1.5 GB 54 MB 27.8x
100k cells × 30k genes ~12 GB ~700 MB 17x
1M cells × 30k genes ~120 GB (OOM) ~700 MB 170x

How?

Each preprocessing step adds a small "transform descriptor" (a vector or flag) to a lazy computation chain. Data is computed on-the-fly during chunked reads from the HDF5 file:

X (HDF5 on disk, Rust I/O via anndata-rs)
  → TransformedBackedArray      (normalize: ÷ per-cell size factors)
    → TransformedBackedArray    (log1p: on-the-fly)
      → _SubsetBackedArray      (HVG: select 2,000 gene columns)
        → ScaledBackedArray     (z-score: stores only mean/std vectors)
          → Randomized SVD      (chunked matrix products)
            → X_pca             (n_obs × 50, in memory)
              → Neighbors / UMAP / Leiden (operate on X_pca only)
Step What's stored Peak memory
Read File handle ~0
Normalize Per-cell factor vector n_obs × 8 B
log1p Flag only 0
HVG subset Column index ~8 KB
Scale Mean + std vectors ~32 KB
PCA (working set) Y, Q matrices (k=60) n_obs × 60 × 8 B
X_pca Final embedding n_obs × 50 × 4 B

For a deeper look at the lazy operator model behind this — how nodes compose, how data flows through the chain, and why subsetting stays O(1) — see docs/transform-chain.md.


Documentation

  • The Transform Chain — design walkthrough with ASCII diagrams of the lazy operator model (BackedArray, _SubsetBackedArray, TransformedBackedArray, ScaledBackedArray) and how chunked reads flow through it.

Installation

Prebuilt wheels (recommended)

pip install anndataoom

Platform support (verified end-to-end by the CI matrix — builds the Rust extension from source and runs the full test suite on each cell):

Platform Python Status
Linux x86_64 3.10, 3.12 ✅ tested + wheels
macOS arm64 (Apple Si) 3.10, 3.12 ✅ tested + wheels
macOS x86_64 (Intel) 3.10, 3.12 ✅ tested + wheels
Windows x86_64 3.10, 3.12 ✅ tested + wheels (since 0.1.8)

Windows support landed in 0.1.8. anndata-rs is now vendored in-tree (vendor/anndata-rs/) and its anndata-hdf5 gates the HDF5 threadsafe feature off on Windows — HDF5's CMake refuses thread-safety with a static library there, which previously broke the build. The vendored static HDF5 now compiles and the full test suite passes on Windows in CI. Linux aarch64 wheels are still pending (the ring crate fails to cross-compile).

Wheels bundle a statically-linked HDF5 — on the supported platforms no system dependencies are needed and no Rust toolchain is required.

Build from source

If no prebuilt wheel matches your system, pip falls back to source. You'll need a Rust toolchain:

# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

# Build + install
pip install anndataoom

Or for development:

git clone https://github.com/Starlitnightly/anndata-oom
cd anndata-oom
pip install maturin
maturin develop --release

Quick start

import anndataoom as oom

# Read an h5ad file — matrix stays on disk
adata = oom.read("large_dataset.h5ad")
print(adata)
AnnDataOOM                                 [Rust · out-of-memory · backed]
Dimensions:  n_obs: 100,000    n_vars: 30,000

┌───────────┬──────────────────────────────────────┐
│ File      │ large_dataset.h5ad  (1.2 GB on disk) │
│ X         │ csr_matrix · float32 · 5.3% density   │
│ Chunk I/O │ ~20 MB per 1,000-row chunk            │
└───────────┴──────────────────────────────────────┘

▸ obs     (8)    batch · cell_type · n_counts · ...
▸ var     (3)    gene_name · highly_variable · ...
▸ obsm    (–)
▸ layers  (–)
▸ raw     (–)

Chunked operations

# Sum over all cells — streams the matrix in 1000-row chunks
row_sums = adata.X.sum(axis=1)       # ndarray of shape (n_obs,)

# Per-gene means — one-pass chunked Welford's
mean, var = oom.chunked_mean_var(adata)

# Iterate chunks manually
for start, end, chunk in adata.X.chunked(5000):
    # chunk is a csr_matrix (or ndarray) of shape (≤5000, n_vars)
    ...

Subsetting

# All forms of indexing work
sub = adata[0:1000]                          # first 1000 cells
sub = adata[adata.obs["cell_type"] == "B"]   # boolean mask
sub = adata[:, ["GENE1", "GENE2"]]           # by gene name
sub = adata[:, adata.var["highly_variable"]] # after HVG selection

# Returns a new AnnDataOOM — still lazy
print(sub.shape)   # e.g. (17003, 2000)

Single-gene access

# obs_vector reads exactly one column from disk
expr = adata.obs_vector("CD3D")   # ndarray of shape (n_obs,)

Integration with omicverse

omicverse automatically detects anndataoom and uses it as the backend for ov.read(..., backend="rust"):

import omicverse as ov

# Read — returns AnnDataOOM if anndataoom is installed
adata = ov.read("data.h5ad", backend="rust")

# Full preprocessing pipeline — all chunked/lazy
adata = ov.pp.qc(adata,
                 tresh={"mito_perc": 0.2, "nUMIs": 500, "detected_genes": 250},
                 doublets=False)
adata = ov.pp.preprocess(adata, mode="shiftlog|pearson",
                         n_HVGs=2000, target_sum=50 * 1e4)

# HVG subset — returns a new AnnDataOOM
adata.raw = adata
adata = adata[:, adata.var.highly_variable_features]

# Scale + PCA — lazy z-score + chunked randomized SVD
ov.pp.scale(adata)
ov.pp.pca(adata, layer="scaled", n_pcs=50)

# Neighbors / UMAP / Leiden — operate on obsm['X_pca'], no matrix touch
ov.pp.neighbors(adata, n_neighbors=15, n_pcs=50,
                use_rep="scaled|original|X_pca")
ov.pp.umap(adata)
ov.pp.leiden(adata, resolution=1)

# Plotting — all ov.pl.* functions work directly, incl. use_raw=True
ov.pl.embedding(adata, basis="X_umap", color="leiden")
ov.pl.dotplot(adata, marker_genes, groupby="leiden")
ov.pl.violin(adata, keys="CD3D", groupby="leiden", use_raw=True)

CPU–GPU mixed mode

anndataoom (storage backend) is orthogonal to omicverse's execution mode (compute), so you can flip on GPU acceleration with an OOM-backed AnnData and pay no penalty:

import omicverse as ov
ov.settings.cpu_gpu_mixed_init()       # route PCA/neighbors/UMAP to torch-GPU
adata = oom.read("data.h5ad")          # still out-of-memory
# … identical qc → preprocess → scale → pca → neighbors → umap pipeline …

What changes (measured on the Tabula Sapiens benchmark, H100):

  • Memory-bound preprocessing is mode-invariant. qc → preprocess → scale → pca run at the same wall-clock and RSS in cpu and cpu-gpu-mixed, with zero GPU memory used. This is by design: anndataoom's chunked operators are pure-CPU, and omicverse routes the OOM PCA through anndataoom.chunked_pca (never the torch-GPU solver). Peak RSS stays flat and bounded by chunk size regardless of mode.
  • Downstream embedding gets the GPU. Steps that operate on the small (n_obs × 50) PCA embedding do offload: ov.pp.neighbors runs on a CUDA PyG-kNN backend (device memory allocated) and ov.pp.umap, ov.pp.mde run on the GPU. The kNN itself is sub-second on a warm GPU; the exact wall-clock gain at small scale is measurement-sensitive, so we just note the offload is real. PCA results are bit-identical between modes (|cos| = 1.0).
  • In-memory backend, by contrast, gets a big PCA win. With a plain anndata.AnnData (not OOM), ov.pp.pca dispatches to the GPU torch_pca solver: PCA dropped 13× (13.9 s → 1.1 s on TS-5k), ~1.6× on the whole pipeline. anndataoom forgoes this by design — it routes through CPU chunked_pca to keep peak RSS flat.

omicverse function compatibility

Compatibility of ov.pp.* against an AnnDataOOM backend — 14 of 24 probed functions run on the OOM path (probed in both cpu and cpu-gpu-mixed; = offloads to GPU in mixed mode):

function OOM notes
qc, preprocess, normalize_total, log1p, identify_robust_genes core pipeline
scale, pca lazy / chunked, CPU
neighborsᴳ, umapᴳ, leiden, louvain operate on X_pca only
tsne, mdeᴳ, sude embeddings on X_pca (sude errors in mixed)
highly_variable_genes, highly_variable_features (standalone) use the fused HVG inside preprocess
normalize_pearson_residuals not yet OOM-adapted
regress forwards to scanpy regress_out (densifies)
filter_cells, filter_genes not yet OOM-adapted
scrublet, score_genes_cell_cycle backed var lookup
anndata_to_GPU / anndata_to_CPU require optional rapids_singlecell

Failures raise a clear exception at the call site — they never silently mis-compute. Reproduce with benchmark/scripts/compat_matrix.py.


Full API reference

Top-level

Function / Class Description
oom.read(path, backed='r') Read an .h5ad file → AnnDataOOM
oom.AnnDataOOM Out-of-memory AnnData (full anndata.AnnData API)
oom.BackedArray Lazy row-chunked wrapper over anndata-rs X
oom.TransformedBackedArray Lazy normalize / log1p transform chain node
oom.ScaledBackedArray Lazy z-score transform
oom.is_oom(obj) Check if obj is an AnnDataOOM
oom.oom_guard(...) Decorator: auto-materialise for in-memory functions
oom.concat(adatas) Concatenate multiple AnnData

Chunked preprocessing

Function Description
chunked_qc_metrics(adata) nUMIs, detected_genes, n_cells per gene
chunked_gene_group_pct(adata, mask) Per-cell fraction of counts in a gene group
chunked_normalize_total(adata, target_sum) Lazy normalize-total
chunked_log1p(adata) Lazy log1p
chunked_mean_var(adata) Welford's mean + var per gene
chunked_identify_robust_genes(adata) Filter low-expression genes
chunked_highly_variable_genes_pearson(...) Pearson residuals HVG selection (2 passes)
chunked_scale(adata) Lazy z-score
chunked_pca(adata) Randomized SVD with chunked matrix products

AnnDataOOM methods

All anndata.AnnData methods and properties are supported. Key ones:

Property / method Behaviour
.shape, .n_obs, .n_vars Dimensions
.obs, .var Pandas DataFrames (eagerly loaded; small)
.X Lazy BackedArray (never loaded)
.obsm, .varm, .obsp, .varp Dict-of-ndarray (loaded; typically small)
.layers BackedLayers dict (sidecar HDF5)
.raw _FrozenRaw snapshot (shares backing file)
.obs_vector(key) One column from disk (no full load)
.chunked_X(chunk_size=1000) Row-chunked iterator
adata[idx] Subsetting (returns new AnnDataOOM)
adata.copy() Shallow copy (shares backing file, no RAM cost)
adata.to_adata() Materialize to standard anndata.AnnData
adata.write(path) Chunked write — doesn't materialize
adata.close() Release file handle
repr(adata) / _repr_html_() Pretty text / Jupyter display

Benchmark: PBMC 8k (7,750 cells × 20,939 genes)

Full preprocessing pipeline (QC → normalize → HVG → scale → PCA → neighbors → UMAP → Leiden):

Step Python (MB) anndataoom (MB)
read 148 37
qc 280 54
preprocess 328 24
hvg_subset 450 24
scale 382 54
pca 846 33
neighbors 1195 33
umap 1500 34
leiden 1502 33
Peak 1502 54

27.8× memory savings on this small dataset; ratio grows with scale.


Supported h5ad formats

X format Reading Lazy ops Notes
Dense ndarray float32 / float64
CSR sparse Most common scRNA-seq format
CSC sparse Column-oriented

anndataoom automatically preserves sparsity through normalize and log1p (sparse → sparse), and materializes to dense only where algorithmically necessary (z-score, PCA).


Architecture

anndataoom is a thin Python wrapper over scverse/anndata-rs:

┌──────────────────────────────────────────────┐
│  anndataoom (Python package)                 │
│  ┌────────────────────────────────────────┐  │
│  │  AnnDataOOM                            │  │
│  │  ├─ obs, var (pandas.DataFrame)        │  │
│  │  ├─ obsm, varm (dict of ndarray)       │  │
│  │  ├─ layers (BackedLayers — sidecar H5) │  │
│  │  └─ X (BackedArray — wraps ↓)          │  │
│  └────────────────────────────────────────┘  │
│            │                                  │
│            ▼                                  │
│  ┌────────────────────────────────────────┐  │
│  │  anndataoom._backend  (Rust extension)│  │
│  │  ├─ AnnData (pyanndata)                │  │
│  │  ├─ PyArrayElem (chunked() iterator)   │  │
│  │  └─ Statically linked:                 │  │
│  │     ├─ anndata (Rust crate)            │  │
│  │     ├─ anndata-hdf5                    │  │
│  │     └─ HDF5 C library                  │  │
│  └────────────────────────────────────────┘  │
└──────────────────────────────────────────────┘

The Rust extension (anndataoom._backend) is pinned to a specific commit of scverse/anndata-rs for reproducible builds (the same commit used by SnapATAC2).


Limitations and caveats

  • Writing back to X is lazy — modifications via adata[mask] = value materialize X in memory. Use adata.obs, adata.obsm, or adata.write(path) to persist changes.
  • PCA accuracy: chunked_pca uses randomized SVD with 4 power iterations — top ~20 PCs are nearly identical to standard PCA; PCs 30+ start to deviate. For publication-quality analyses, consider adata.to_adata() + standard PCA.
  • Some ops require materialization: score_genes_cell_cycle, find_markers, non-Harmony batch correction, etc. These auto-materialize with a warning.
  • File mode: Default backed='r' (read-only) protects the source file. Use backed='r+' if you need to write back (advanced).
  • Concurrent access: HDF5 files default to exclusive locking. Set HDF5_USE_FILE_LOCKING=FALSE in the environment if multiple processes need to read the same file.

Comparison with alternatives

Feature anndata anndata (backed='r') anndataoom
Read without loading matrix
Subset (lazy view) ✅ (view) ✅ (view) ✅ (new AnnDataOOM)
Chunked iteration ❌ (manual)
normalize / log1p In-memory ❌ (read-only) ✅ (lazy transform)
scale In-memory ✅ (lazy z-score)
PCA Full SVD ✅ (chunked rSVD)
Plotting (scanpy/omicverse) Limited ✅ (via omicverse)
Modify obs/var
Peak RAM (1M × 30k) ~120 GB — (can't process) ~700 MB

Development

git clone https://github.com/Starlitnightly/anndata-oom
cd anndata-oom

# Install Rust (first time)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env

# Build in editable mode
pip install maturin
maturin develop --release

# Run tests
pip install pytest
pytest tests/

Contributing

Contributions welcome! Areas of interest:

  • More lazy transforms: regress-out, harmony, scVI integration
  • Zarr backend: currently only HDF5 supported
  • Dask interop: expose BackedArray as a dask.array
  • Query engine: SQL-like filtering over chunks

Release process

  1. Bump version in pyproject.toml and Cargo.toml
  2. Update CHANGELOG.md
  3. Commit, tag, push:
    git commit -am "Release v0.x.0"
    git tag v0.x.0
    git push && git push --tags
    
  4. GitHub Actions builds wheels for all platforms and publishes to PyPI (via trusted publishing)

License

MIT License — see LICENSE.

Built on scverse/anndata-rs (MIT, © Kai Zhang).


Citation

If you use anndataoom in published research, please cite:

@software{omicverse,
  title  = {OmicVerse: A framework for multi-omic data analysis},
  author = {Zeng, Z. et al.},
  url    = {https://github.com/Starlitnightly/omicverse},
  year   = {2024},
}

@software{anndata_rs,
  title  = {anndata-rs: Rust implementation of AnnData},
  author = {Zhang, Kai},
  url    = {https://github.com/scverse/anndata-rs},
  year   = {2022},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anndataoom-0.1.8.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

anndataoom-0.1.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp314-cp314-win_amd64.whl (26.1 MB view details)

Uploaded CPython 3.14Windows x86-64

anndataoom-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp314-cp314-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

anndataoom-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

anndataoom-0.1.8-cp313-cp313-win_amd64.whl (26.1 MB view details)

Uploaded CPython 3.13Windows x86-64

anndataoom-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

anndataoom-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

anndataoom-0.1.8-cp312-cp312-win_amd64.whl (26.2 MB view details)

Uploaded CPython 3.12Windows x86-64

anndataoom-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

anndataoom-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

anndataoom-0.1.8-cp311-cp311-win_amd64.whl (26.2 MB view details)

Uploaded CPython 3.11Windows x86-64

anndataoom-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (24.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

anndataoom-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl (25.6 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

anndataoom-0.1.8-cp310-cp310-win_amd64.whl (26.2 MB view details)

Uploaded CPython 3.10Windows x86-64

anndataoom-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

anndataoom-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file anndataoom-0.1.8.tar.gz.

File metadata

  • Download URL: anndataoom-0.1.8.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8.tar.gz
Algorithm Hash digest
SHA256 65f5c1a8a4842eaf93dfd24d2762cde2add1a0deb66bcd9e9d92b00b883d8a22
MD5 0817e0787fda4e23bd059d5e04c66f91
BLAKE2b-256 738c14645b2458cf4bcd3b1f70b1fbbe73f3c0ed78ff3e2c2d5ecd1fc848366b

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8.tar.gz:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c93e4e1f2b5d8f6f8b199833177dfa85928defce098c0ab26b05907bbf393cd
MD5 ad5568cd17098c54898e6a76f6db0460
BLAKE2b-256 2098545a6344ea5f382deb6cf3132114df4ae0b722092c1926f5246dcaa642ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: anndataoom-0.1.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 26.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f7a11ef8e073ef76c995b38e6f82dcbaf36d5b0ea36bc6c875f16fe941dcc66f
MD5 6429cb120b7b10a22adf29af535a9beb
BLAKE2b-256 d629f05a4b33f11a929ba908eb90552d2a51733be97804fa79c992ea7f4f0806

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp314-cp314-win_amd64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7ef6203be875c79b05ad04b0712f23def7ba775e80f6912a032f09b861b2b73
MD5 6adafc68195fab03e68d0437c1a04f92
BLAKE2b-256 29b65994fe250514000f8d3de681b486c61d55f8cb675a3146f56939c7a99fa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5bdb8b180734d6eb2ca132dd058dbd0fb6e4d20aa6cc4b8fb38cf71389887166
MD5 74ebb2940f71726bb5b5dd243e90e02c
BLAKE2b-256 f6ac12efb1abe68b407fc9a545f427ccf139771503680e9b8475fa9f879e585c

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cb36c5dbb279696f43410d37fdd189b06ad79beae6d0b562197478974657f596
MD5 ecbf31575a8df4220cd521ac5960b95c
BLAKE2b-256 8dff72605212a74522df18f6478c5f0a2316cf07facf8b2ccc6ccb2728b34937

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: anndataoom-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 26.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dbe2a40d7c12cc4ed59a2585fac13da825f7d379ebdb9a94d74f6066373e41db
MD5 beef2d4802ff757fc70a7bf925ca339e
BLAKE2b-256 64801aa2dba7235092a8beb6e87e5ab72acd371eeb155158902046ff02be5954

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp313-cp313-win_amd64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 158ced9611ca327089253ead24209f2fb8894686cea23a9764cc512e03a6cf30
MD5 73b642bb68d1677e41a8a5ef1f008b8b
BLAKE2b-256 6f4e6b05d2380bb31e8fb9ea482d7d28f9ea0bc87e8fad0f36f2e41b9818dddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e8fb8fd65c870585ee8b03d934c2fee37e9f4e5f852aba77a9a4026400e4fbb
MD5 3dfb878b37d10dccbee2e29b0ec202b3
BLAKE2b-256 ed4bbdd1fa4b7fec2ff468a8883917725199ae201d42c471df884550d1391dfe

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 221e03721acba8d7afcd151c72f6b7ba667561e14fcd1cbc3471e67fd96e01b0
MD5 75b77cd83c1a1c56c9ed403a00ac16db
BLAKE2b-256 a881d2a14c50905e4a0c46b0063438212b7f762eb666b01c706c712377f9879c

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: anndataoom-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 26.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9966ba5bdb771b806afbdd72972da0feb77195f8031a1fd5f3d8403cb1ec7a48
MD5 d72eebb3bdafaba1de7313c1657525b8
BLAKE2b-256 5ff4311637942f599f9e91ee16a2d1707880e02435e79ae9d6afdd66e333a921

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp312-cp312-win_amd64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bbe02f1ebb386f16006bca20fcb9dc28f2ff68ab236cbb7bcc6a9b1ce666cc06
MD5 e2158469f423fc211a03cd77aee23081
BLAKE2b-256 0f1569c2b4cff2f68e132001d0c939d54a1116cafa36b63d97cf2f97758a5583

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9453ef9d7483542a3a04d20382e30d1af03514dd82f166ba7a61b6757e10747
MD5 1f354c5809164a5ab7ea6b5fc9e4d7a3
BLAKE2b-256 6289ee6172f278dd9c20f5c72c0a2ed8bf15b668d41af9e0ccaaacfe73e03591

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 adce3114fa04776d64cc67c7cec5431d4d27388de8aa96472991002f27e5d2e7
MD5 081505da2a000865097298cb97c381b9
BLAKE2b-256 bf5905e382677314b94b3766dafe8aa432f66e8037882e16200dc1d0669b52ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: anndataoom-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 26.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 99e4a1a639db57a9e88c189339ec14640669890f295d3e8e26ad75731add6d0b
MD5 3c048a9614b2bf70c57ea4344ec547aa
BLAKE2b-256 1b84f0bfb7bf3dc5f359752bd0a24c49579deaccd99cc5f9a3531e92dcf8443e

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp311-cp311-win_amd64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d53b6273546b8f7e05d90e3f62dff5b636a3f4ba506f70a62d2187bd31c69bc0
MD5 ac35fef457aa22de1c26783362f6212b
BLAKE2b-256 abcc3147c5edc18d756b5e46675a9fc67f5c1c91e25f4daafedbcbc7f0e0cf30

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c31c5fae9a10faf673937fb438b68a4052f1c610408ba0d934279faf334a5178
MD5 9bf7247f232f9075baedd7dc4d6f8730
BLAKE2b-256 8db111934d39f9fc2bf1b748736293a448fcd721461508611258de9cb8e50157

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 861b8a9ea31c0bde2cdf073602b2d64c926085f92f47d42edd09220643867cc0
MD5 2d9ebcb108ce2bb660a311be7de1adf4
BLAKE2b-256 79216eb7247398eb84d8a2c608b65b569652d550c2c3839315ac04436d344014

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: anndataoom-0.1.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 26.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anndataoom-0.1.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a918b52a0eea6db9fb396b8092cf50249c93c26552efdc5b75525c9a0ebed19f
MD5 6b8f9eb5aae3d6ac2bb82f99c12e8c46
BLAKE2b-256 c1375b0bc2d5be1af925a9b042102175754c296cfae6169bb723ea51b6e18511

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp310-cp310-win_amd64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 440c031cbacdd4fc580a87411d349d38b191deed1b5f6f4e716b9d15ed21ebeb
MD5 3309ee335e0c6f8e286910d3b2d27bc8
BLAKE2b-256 cbdf9e80b3abb5d9282ceff263e767f4d7ce2e515a0cdaa2e2aef88bff861779

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anndataoom-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 47af811b94f7b1a904eae47cf650e0ccae73174058f52dc639151e93dac1bb67
MD5 9ebb219e5afec397d0bca9824e75b931
BLAKE2b-256 edcc5cb0bbffa25c0ee3adccc8099f32e21aa59850bb8a21483db80c932a82ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for anndataoom-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on omicverse/anndata-oom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page