MICS-Lab / scyan

Biology-driven deep generative model for cell-type annotation in cytometry. Scyan is an interpretable model that also corrects batch-effect and can be used for debarcoding or population discovery.
https://mics-lab.github.io/scyan/
BSD 3-Clause "New" or "Revised" License
33 stars 1 forks source link
cytometry deep-learning generative-model normalizing-flows single-cell-omics

scyan_logo

PyPI Downloads Docs Build Code Style License Imports: isort

Scyan stands for Single-cell Cytometry Annotation Network. Based on biological knowledge prior, it provides a fast cell population annotation without requiring any training label. Scyan is an interpretable model that also corrects batch-effect and can be used for debarcoding, cell sampling, and population discovery.

Documentation

The complete documentation can be found here. It contains installation guidelines, tutorials, a description of the API, etc.

Overview

Scyan is a Bayesian probabilistic model composed of a deep invertible neural network called a normalizing flow (the function $f_{\phi}$). It maps a latent distribution of cell expressions into the empirical distribution of cell expressions. This cell distribution is a mixture of gaussian-like distributions representing the sum of a cell-specific and a population-specific term. Also, interpretability and batch effect correction are based on the model latent space — more details in the article's Methods section.

overview_image

Getting started

Scyan can be installed on every OS with pip or poetry.

On macOS / Linux, python>=3.8,<3.11 is required, while python>=3.8,<3.10 is required on Windows. The preferred Python version is 3.9.

Install from PyPI (recommended)

pip install scyan

Install locally (if you want to contribute)

Advice (optional): We advise creating a new environment via a package manager (except if you use Poetry, which will automatically create the environment). For instance, you can create a new conda environment:

conda create --name scyan python=3.9
conda activate scyan

Clone the repository and move to its root:

git clone https://github.com/MICS-Lab/scyan.git
cd scyan

Choose one of the following, depending on your needs (it should take at most a few minutes):

pip install .                            # pip minimal installation (library only)
pip install -e .                         # pip installation in editable mode
pip install -e '.[dev,hydra,discovery]'  # pip installation with all the extras
poetry install -E 'dev hydra discovery'  # poetry installation with all the extras

Basic usage / Demo

import scyan

adata, table = scyan.data.load("aml") # Automatic loading

model = scyan.Scyan(adata, table)
model.fit()
model.predict()

This code should run in approximately 40 seconds (once the dataset is loaded). For more usage demo, read the tutorials or the complete documentation.

Technical description

Scyan is a Python library based on:

Optionally, it also supports:

Cite us

Our paper is published in Briefings in Bioinformatics and is available here.

@article{10.1093/bib/bbad260,
    author = {Blampey, Quentin and Bercovici, Nadège and Dutertre, Charles-Antoine and Pic, Isabelle and Ribeiro, Joana Mourato and André, Fabrice and Cournède, Paul-Henry},
    title = "{A biology-driven deep generative model for cell-type annotation in cytometry}",
    journal = {Briefings in Bioinformatics},
    pages = {bbad260},
    year = {2023},
    month = {07},
    issn = {1477-4054},
    doi = {10.1093/bib/bbad260},
    url = {https://doi.org/10.1093/bib/bbad260},
    eprint = {https://academic.oup.com/bib/advance-article-pdf/doi/10.1093/bib/bbad260/50973199/bbad260.pdf},
}