Acia: Automated single-cell image analysis
Accio 🪄 - and your single-cell insights appear - Not quite but - acia - and your single-cell insights appear to become much easier 😉
acia turns a 2D+t time-lapse microscopy file into quantitative single-cell
results. One API reads ND2, CZI, OME-TIFF and folders of TIFFs; physical units
travel with the data from load to result; eight state-of-the-art segmentation and
tracking backends plug in behind one call.
Built for microfluidic live-cell imaging, but nothing in it assumes cells — it works for any objects you can detect in images.
The first five minutes
from acia import ureg
from acia.segm.open import open_sequence
from acia.segm.processor.omnipose import OmniposeSegmenter
from acia.analysis import extract_growth
src = open_sequence("experiment.nd2").position(0) # ND2, CZI, TIFF, folders
src = src[::10, 256:768, 256:768] # lazy: subsample + crop
src = src.with_pixel_size(0.072 * ureg.micrometer) # calibration travels along
overlay = OmniposeSegmenter()(src) # -> detections
table, growth, figure = extract_growth(overlay, src) # -> µm², hours, 1/hour
That is a complete pipeline. growth.doubling_time comes back as a pint
quantity, not a bare float.
What you get
- One reader for every format.
open_sequence()dispatches ND2, CZI, TIFF stacks and folders of per-timepoint TIFFs to a lazy handle that reads metadata without touching pixels — so opening a 100 GB acquisition costs nothing. OMERO, SMB/SAMBA shares and S3 work through the same interface. - numpy-style slicing that never copies.
src[::2, 100:200, 50:150, 0]composes subsampling, cropping and channel selection into a lazy view. - Units that do not get lost. Declare pixel size and frame interval once; they survive slicing, flow into detections as timestamps, and are picked up automatically by the property extractors. Results come out in µm² and hours.
- Segmentation and tracking, swappable. Cellpose, Cellpose-SAM, Omnipose, Contour Proposal Network, YOLO — and trackastra, ultrack, PyUAT, laptrack — behind a uniform call signature, with lazy model loading and GPU autorelease.
- Visualization all the way to publication. Segmentation and tracking overlays, scale bars, timestamps, annotated videos, lineage trees, and an interactive viewer that appears when you put a source at the end of a Jupyter cell.
Installation
pip install acia
Optional readers and backends live behind extras — acia[nd2], acia[czi],
acia[omero], acia[remote], acia[widget].
Note: the segmentation backends are mutually exclusive —
cellpose,cellpose-samandomniposepin conflicting versions, so install exactly one per environment. See the installation guide.
Documentation
Full documentation: https://smlci.github.io/acia-core
New here? The getting-started tutorials are runnable notebooks — open them on Colab and nothing needs installing:
- Open your first file — one API for every format
- The sequence model — THWC and lazy slicing
- Look at your data — viewers, scale bars, videos
- Calibration and units — µm² instead of px²
- Segment and quantify — the full pipeline to a growth rate
For complete published analyses built on acia — growth-rate quantification,
fluorescence co-culture characterization, single-cell oxygen response, and
scaling those across hundreds of sequences — see the companion
acia-workflows
collection.
Developers
git clone https://github.com/SMLCI/acia-core.git
cd acia-core
pip install -e ".[dev]"
pytest
ruff check acia tests
To build the documentation locally (the first build downloads a ~20 MB sample dataset and executes the tutorials):
pip install -e ".[docs,omnipose]" --use-pep517
make docs
Contributions are welcome — see CONTRIBUTING.rst.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file acia-0.4.0.tar.gz.
File metadata
- Download URL: acia-0.4.0.tar.gz
- Upload date:
- Size: 529.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e359ec1bdce26eac66a91cb74aaee12f934faf146ca6bdf7739b066e95dc6253
|
|
| MD5 |
890c42af6bb645254299a3a85c0634e3
|
|
| BLAKE2b-256 |
b90facc262d2a0083363dcff729a67e4e291d50435f953ebe29b5e2e7232e216
|
Provenance
The following attestation bundles were made for acia-0.4.0.tar.gz:
Publisher:
release.yml on SMLCI/acia-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acia-0.4.0.tar.gz -
Subject digest:
e359ec1bdce26eac66a91cb74aaee12f934faf146ca6bdf7739b066e95dc6253 - Sigstore transparency entry: 2674125840
- Sigstore integration time:
-
Permalink:
SMLCI/acia-core@b1d98ef6ddd1cf269f13810aafbb1adef6aab4f5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SMLCI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1d98ef6ddd1cf269f13810aafbb1adef6aab4f5 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file acia-0.4.0-py3-none-any.whl.
File metadata
- Download URL: acia-0.4.0-py3-none-any.whl
- Upload date:
- Size: 322.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3277a2c3313c1f66435c347021be6396f271bf4ce84e493b2e00112afba7628d
|
|
| MD5 |
7d707d9fbbeca346337180391322bb5d
|
|
| BLAKE2b-256 |
28c19b2df80996a5c5f15d5ea25ed31338a956d1bf9a952fd43674625516e257
|
Provenance
The following attestation bundles were made for acia-0.4.0-py3-none-any.whl:
Publisher:
release.yml on SMLCI/acia-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acia-0.4.0-py3-none-any.whl -
Subject digest:
3277a2c3313c1f66435c347021be6396f271bf4ce84e493b2e00112afba7628d - Sigstore transparency entry: 2674125922
- Sigstore integration time:
-
Permalink:
SMLCI/acia-core@b1d98ef6ddd1cf269f13810aafbb1adef6aab4f5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SMLCI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1d98ef6ddd1cf269f13810aafbb1adef6aab4f5 -
Trigger Event:
workflow_dispatch
-
Statement type: