Skip to content

Install

Requirements

SCIMAP Pro requires Python 3.12, 3.13, or 3.14. It is built on NumPy 2, Pandas 3, AnnData 0.13, and Zarr 3, and does not support older interpreters.

From PyPI

pip install scimappro

We recommend an isolated environment:

uv venv --python 3.12
source .venv/bin/activate
uv pip install scimappro
python3.12 -m venv .venv
source .venv/bin/activate
pip install scimappro
conda create -n scimappro python=3.12
conda activate scimappro
pip install scimappro

Optional extras

Two capabilities need dependencies that are not installed by default:

pip install "scimappro[roi]"   # shapely — required by helpers.addROI_omero
pip install "scimappro[qt]"    # PyQt6  — required to actually open pl.image_viewer
pip install "scimappro[roi,qt]"

napari itself is a core dependency, but napari needs a Qt binding at runtime and does not choose one for you. Without the qt extra, pl.image_viewer raises an ImportError that names the missing binding; every other function works normally.

Jupyter

The tutorials are Jupyter notebooks. Install a kernel alongside scimappro:

pip install scimappro jupyterlab

Verify the install

import scimappro as sp

print(sp.pp.rescale, sp.tl.phenotype, sp.pl.heatmap)

Development install

Dependencies are managed with uv and pinned in uv.lock.

git clone https://github.com/nirmallab/scimappro.git
cd scimappro
uv sync --all-extras          # create the environment
uv run pytest                 # run the test suite
uv sync --all-extras -p 3.13  # or 3.14, to test another interpreter
uv lock --upgrade             # re-resolve every dependency to its latest version

Cloud-synced checkouts

If the checkout lives on a cloud-synced folder (Dropbox, OneDrive, Google Drive), sync locks can break virtualenv writes mid-install. Build the environment outside the synced tree:

UV_PROJECT_ENVIRONMENT=~/.venvs/scimappro uv sync --all-extras

Building the documentation

The documentation toolchain is a separate dependency group, so it is never installed by pip install scimappro:

uv sync --group docs
uv run mkdocs serve          # http://127.0.0.1:8000
uv run mkdocs build --strict # what CI runs

mkdocstrings reads the source statically through griffe, so building the docs does not import scimappro and needs neither napari nor Qt.