scPRINT is a large transformer model built for the inference of gene network (connections between genes explaining the cell's expression profile) from scRNAseq data.
It uses novel encoding and decoding of the cell expression profile as well as new pre-training methodologies to learn a cell model.
scPRINT can do lots of things:
expression denoising: increase the resolution of your scRNAseq data
cell embedding: generate a low-dimensional representation of your dataset
label prediction: predict the cell type, disease, sequencer, sex, and ethnicity of your cells
gene network inference: generate a gene network from any cell or cell cluster in your scRNAseq dataset
If you want to be using flashattention2, know that it only supports triton 2.0 MLIR's version and torch==2.0.0 for now.
👷 WIP ...
Install it in dev mode
For the moment scPRINT has been tested on MacOS and Linux (Ubuntu 20.04) with Python 3.10.
If you want to be using flashattention2, know that it only supports triton 2.0 MLIR's version and torch==2.0.0 for now.
python
1conda create -n "[whatever]" python==3.102git clone https://github.com/jkcobject/scPRINT
3git clone https://github.com/jkobject/GRnnData
4git clone https://github.com/jkobject/benGRN
5cd scPRINT
6git submodule init
7git submodule update
8pip install 'lamindb[jupyter,bionty]'9pip install -e scDataloader
10pip install -e ../GRnnData/11pip install -e ../benGRN/12pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.113# install the dev tooling if you need it too14pip install -e ".[dev]"15pip install -r requirements-dev.txt
16pip install triton==2.0.0.dev20221202 --no-deps # only if you have a compatible gpu (e.g. not available for apple GPUs for now, see https://github.com/triton-lang/triton?tab=readme-ov-file#compatibility)17# install triton as mentioned in .toml if you want to18mkdocs serve # to view the dev documentation
We use additional packages we developped, refer to their documentation for more information:
scDataLoader: a dataloader for training large cell models.
GRnnData: a package to work with gene networks from single cell data.
benGRN: a package to benchmark gene network inference methods from single cell data.
lamin.ai
⚠️ if you want to use the scDataloader's multi dataset mode or if you want to preprocess datasets and other functions of the model, you will need to use lamin.ai.
In that case connect with google or github to lamin.ai, then be sure to connect before running anything (or before starting a notebook): lamin login <email> --key <API-key>. Follow the instructions on their website.
Usage
scPRINT's basic commands
This is the most minimal example of how scprint gets used:
If you do not have triton installed you will not be able to take advantage of gpu acceleration, but you can still use the model on the cpu.
In that case, if loading from a checkpoint that was trained with flashattention, you will need to specify transformer="normal" in the load_from_checkpoint function like so: