cytoGateR Python
This is the Python implementation of cytoGateR. It uses an AnnData object
and keeps the R function names, parameter names, and defaults where Python
syntax permits.
Implemented modules include:
- marker GMMs, soft gating, and tree gating;
- hierarchical reference construction and recursive hierarchical kNN;
- weighted kNN consensus cleaning and prediction;
- random-forest consensus cleaning and prediction;
- optional PyTorch training and prediction;
- confidence labels, cutoffs, F1, confusion, and agreement metrics;
- probability and spatial uncertainty;
- Matplotlib spatial, marker, label, metric, and tree plots.
Installation
Install the latest release from PyPI:
pip install cytogater
Plotting, neural-network, and notebook support are available as optional extras:
pip install 'cytogater[plot]'
pip install 'cytogater[torch]'
pip install 'cytogater[notebook]'
To install from source for development, clone the repository and create the provided Conda environment:
git clone https://github.com/SydneyBioX/cytoGateR.git
cd cytoGateR/python
conda env create -f environment.yml
conda activate cytogater-python
pytest
Data layout
Python AnnData stores cells in rows and markers in columns. Put the expression
matrix used by the R assay_name = "exprs" default in:
adata.layers["exprs"]
The lineage table is a pandas data frame with cell_type, pos_markers, and
neg_markers columns. The marker columns contain Python lists.
Example
import pandas as pd
import cytogater
lineage_table = pd.DataFrame({
"cell_type": ["Tcell", "Bcell"],
"pos_markers": [["CD3e"], ["CD20"]],
"neg_markers": [["CD20"], ["CD3e"]],
})
result = cytogater.run_tree_gating(
adata,
lineage_table,
assay_name="exprs",
max_depth=1,
min_cells=100,
min_score=0.1,
workers=1,
)
result["hard_label"]
result["prob_mat"]
Results are returned with the same main keys as R. Labels and P_* columns are
also stored in adata.obs; probability matrices are stored in adata.obsm.
The package is intentionally flat at its public surface:
cytogater.run_soft_gating(...)
cytogater.run_tree_gating(...)
cytogater.train_custom_knn(...)
cytogater.train_custom_randomforest(...)
cytogater.calculate_uncertainty(...)
The implementations are also grouped under cytogater.gating,
cytogater.models, cytogater.metrics, cytogater.uncertainty, and
cytogater.plotting.
R compatibility note
The Python implementation uses a deterministic two-component Gaussian-mixture
fit. R uses mclust, so fitted cutoffs can differ slightly even though the
pipeline, parameters, defaults, scoring, and output structure are aligned.
The Python lambda_ argument corresponds to the R lambda argument because
lambda is reserved syntax in Python. num_trees corresponds to R's
num.trees; train_custom_randomforest() also accepts **{"num.trees": 200}.
Run tests with:
cd cytoGateR/python
pytest
Metadata
Release files for cytogater 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cytogater-0.1.1.tar.gz | 33.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cytogater-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.1 kB
Release files / cytogater-0.1.1.tar.gz
| Download URL | cytogater-0.1.1.tar.gz |
|---|---|
| Size | 33.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f82c5f488bb8076fe58160235298629d77ac449e9db92f2f38a943bcdcb0cfe
|
|
BLAKE2b-256 checksum How to use checksums |
92019a787bcc4a76fa06a4aae9dd296b85db6ccb991d6bfd9c8071ec312b4655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / cytogater-0.1.1-py3-none-any.whl
| Download URL | cytogater-0.1.1-py3-none-any.whl |
|---|---|
| Size | 29.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc97543df92a83e2f7ad678e1a088bc8bee711a43a9e5552af1d134c48f835e8
|
|
BLAKE2b-256 checksum How to use checksums |
0c2f38c6ba17c79ff3832a3151d7bcb771efed61218e0d7450bb3c324cb020de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|