Installation#

pip install metalsinglecell

Requires Python ≥ 3.11. On Apple Silicon this also pulls in mlx (the Metal GPU backend); on other platforms it installs the pure-NumPy/SciPy core, so the package imports everywhere (mlx is a Darwin/arm64-only dependency). Heavy backends (mlx, scanpy, squidpy) are lazy-imported, so it imports cleanly in any environment.

Development install#

git clone https://github.com/gingerii/metal-SingleCell.git
cd metal-SingleCell
pip install -e .

Conda environment#

A reproducible environment (used for the benchmarks) is provided:

conda env create -f envs/metalsinglecell.yml
conda activate metalsinglecell
pip install -e .

uv users#

Run uv python install 3.11 before creating your venv. The system python.org 3.11 on macOS arm64 can hang indefinitely on first import scanpy (a numba/LLVM AOT-compile deadlock on framework Python builds); uv’s own managed 3.11 build avoids it.

uv python install 3.11
uv venv --python 3.11.13 .venv
uv pip install -e ".[oracle,metal,dev]"