Skip to main content

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

Project description

anndata-oom

PyPI Python License

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

Installation

Prebuilt wheels (recommended)

pip install anndataoom

Wheels are built for:

Platform Architectures Python
Linux x86_64, aarch64 3.9–3.13
macOS x86_64, arm64 3.9–3.13
Windows x86_64 3.9–3.13

Wheels bundle a statically-linked HDF5 — no system dependencies needed, no Rust toolchain 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)

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.0.tar.gz (1.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.0-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.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

anndataoom-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

anndataoom-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (24.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

anndataoom-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

anndataoom-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (24.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

anndataoom-0.1.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (24.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

anndataoom-0.1.0-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.0-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.0.tar.gz.

File metadata

  • Download URL: anndataoom-0.1.0.tar.gz
  • Upload date:
  • Size: 1.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.0.tar.gz
Algorithm Hash digest
SHA256 e402efd0adfe7e53f011c8ea3d247a2c9000f02524a66b7b1e4f109110c05836
MD5 a872f16026b16f3bf5d79ea18530df44
BLAKE2b-256 d2928836126d00415e660e1a01f172f6411d6652874c02ced6f72a39619204d3

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbe4df72c9cdf05b520be1f0b019c3f46cd4cca392ce271dff108cbc6cbe520d
MD5 e2f5e321c6b870e9d63fea704f5f8c60
BLAKE2b-256 9dce139d5ab53254e492f8b5a1463bfbdd5851fa05b5a5f3bcd2dd165f4ceb4a

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc896dddbe854d654146788c73e97d8e33909ce6aa2245b01a6d4e870fae59fb
MD5 d8e2c763c47f2c619116576354354659
BLAKE2b-256 2d83086ae809d524b15ab4b7090ea69b97904fef2eb410964305c20cd2fb6a21

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75500e48dd5663eb5dbd19f0173da5f7c3585ca10ef93034a6cadfe1f18d173f
MD5 588eabaa07bb594e5ef6a57b337a78b6
BLAKE2b-256 1b39819733a8d71c957baae27c8559bf0871b2255c775d05305061fecc86cb02

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 adbb2be35d630ba4b421ac36c64c472864be5095b026af43ab6822a19c52af2a
MD5 6f60d93610c9504f9cab7355aaceecf7
BLAKE2b-256 87566044add62dec224ea778c3a9d677766ac7fcbd7e3e83945fb9bff0670b3d

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 46dffd05a5e220b88eb47f73930608bfe635158efc10cdf16d8669c4a1a0e7f9
MD5 c1ff2a5398c4e71a2a019e486736dbb4
BLAKE2b-256 3ddfb0d9017c27f421af157a429d8e2efe3254b6940a0a90a7c4b50a8a901f06

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e131b3d5fa5e6654a2edc294dd1f747a5820cdcc561d139606ed090ec442710
MD5 e6c00e14c446c863784b32cd419590da
BLAKE2b-256 b9c8195b0f1efba591cfef080b11c34da558f90dab0b17147acdd1982308a784

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0817f08858b9cfe91734e2d1a36bc91784ce9e6be199c16f74ad25442f1a56c
MD5 c2de93526d3658fba04d4d4a66009112
BLAKE2b-256 d66783353a4979b6ba12fc5922415797b31b84e5d895c26cb87e12627f7992f0

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75429916c599c6423dde91805c5d154c34d708c8f8f4ef4366a88d8f86cf7e2a
MD5 e7a5e4ff00f17ae34539c0c89d1fb9f6
BLAKE2b-256 483c670a63ae8e1498c6c55638620f03acf086596ef49a36856ca2d1a8a26068

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a758cca1ee2e4baa4a0ee6cf28af18cd6996234adccb030f64c8a958532ae5b
MD5 347ebd617f8c633efc455e5faa331189
BLAKE2b-256 ec60794a9ecf954bb07d1c14c77660c34d756f76acb4d3262848a55918bb2d96

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1c05c4c8e9dbe228b6a9c4baf452e64e36b8f7ec9bbe89c4a81efe4a912c2c2c
MD5 b61a62361e0ec94a5a496b8f577f3a33
BLAKE2b-256 ff5f43e027bb9dd8b944afcc97d7d8ad5e5c645eb9338e79d65a3c0fac78e0cf

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b01ec7639ff0901145d79b69141d3b121f6f5ca9f0277bbc6e8a1f6f83c52123
MD5 bd4bfeecaf6cd884fc5a95608ac688d2
BLAKE2b-256 750e768cd02495b096c3a9576355ded2063c13a2de73ec5c2b0ad6c88381d17b

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23c2b2cd94a5d7663254c6a8bfa7dce83c5f57641bbd17a36abd64de72401015
MD5 44c0381674ac3093b863671d45aecd56
BLAKE2b-256 d6a0bbcab3b185bd656ee741e5d965930a21c48d6e2325e85a925493af82fe2d

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 55291000c45d92d4bc46fc3c8f2a70367b91dab9599ce2fec02995b4236cd7d0
MD5 0021691c1a21ed56457c2190436ee528
BLAKE2b-256 56d6487e6dca9f2e5c89895645eaf9f96e200370b52760fd132a3c286cacadfe

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db9c15e8920b5fda32242127b353959012e1e09df0ad459deaa2278a78c4def8
MD5 3bfdf3551b6a4728cf9098e68a9098ed
BLAKE2b-256 0590e20ea72205bed313ecf4e1bf1b7cd6318688c2ab85aa4a32a759085f2349

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for anndataoom-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce91e22a6f56b225e84e7b160496431475eee7f08e454f2c250a8a87ff64eee4
MD5 883dc9113e589211fba9c0e02f21aa35
BLAKE2b-256 d972ed264309816270fe30e040bd44a5aeaf922e7da6ff907cab99a38437ab64

See more details on using hashes here.

Provenance

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

Publisher: release.yml on Starlitnightly/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