mixture of experts single cell malignancy classifier
Project description
pip install aeacus
from source:
git clone https://github.com/pandey-ps/aeacus.git
cd aeacus
pip install -e .
Usage
from aeacus import Profiler
result = Profiler(test_input="query.h5ad").load().profile()
result.obs["malignancy_call"].value_counts()
Input
| Format | Notes |
|---|---|
.h5ad |
genes in var_names, cells in obs_names |
.txt / .tsv |
rows = genes, columns = cells |
.csv |
rows = genes, columns = cells |
AnnData object |
passed directly |
Parameters
| Parameter | Default | Description |
|---|---|---|
test_input |
required | path to data or AnnData object |
pretrain_dir |
auto | path to folder with moe.pt, geneorder.tsv, train_mean.npy, train_std.npy, config.json. |
norm_type |
False |
normalization to apply before inference (see below) |
use_raw |
False |
if True, reads from adata.raw.X instead of adata.X |
batch_size |
8192 |
cells per batch, lower if out of memory |
device |
auto | "cuda" or "cpu" |
norm_type
model was trained on CPM + log1p normalized data, choose norm_type based on your input:
| Input | norm_type |
|---|---|
raw UMI counts (10x, etc.) |
"cpm_log1p" (or True) |
CPM + log1p normalized |
False (default) or "already_normalized" |
TPM data (smart-seq, etc.) |
"tpm_log1p" |
Examples:
# raw counts - normalize
Profiler(test_input="raw_counts.h5ad", norm_type="cpm_log1p")
# normalized - skip
Profiler(test_input="normalized.h5ad", norm_type=False)
# TPM - log1p
Profiler(test_input="tpm_data.h5ad", norm_type="tpm_log1p")
use_raw
use_raw chooses which data slot to read from:
| Input | use_raw |
norm_type |
|---|---|---|
raw counts in .X, no .raw |
False |
"cpm_log1p" |
raw counts in .raw, normalized in .X |
True |
"cpm_log1p" |
normalized in .X |
False |
False |
Example - AnnData with raw counts stored in .raw:
Profiler(
test_input="adata.h5ad",
use_raw=True, # read from adata.raw.X
norm_type="cpm_log1p", # then normalize
)
Inference
result = Profiler(test_input="data.h5ad", norm_type="cpm_log1p").load().profile()
Output
all predictions are added to result.obs:
| Column | Description |
|---|---|
malignancy_call |
"Malignant" or "Normal" |
malignancy_score |
probability per cell |
normal_expert_weight |
weight assigned to the normal expert |
malignant_expert_weight |
weight assigned to the malignant expert |
result.obs[["malignancy_call", "malignancy_score"]].head()
Note
- missing genes are filled with zeros after aligning to
geneorder.tsv; warning showed if >20% of model genes are missing.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aeacus-0.6.0.tar.gz
(16.0 MB
view details)
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
aeacus-0.6.0-py3-none-any.whl
(15.9 MB
view details)
File details
Details for the file aeacus-0.6.0.tar.gz.
File metadata
- Download URL: aeacus-0.6.0.tar.gz
- Upload date:
- Size: 16.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2308db023b3709e1859c86ccf065979c1050974bc09d305af23c913136ffa1a8
|
|
| MD5 |
882305aaa8f53185845c012d09d8ac47
|
|
| BLAKE2b-256 |
a513447a99293dbcce4cb37feeed5313d35a73efce75d52870021e8e08783f0c
|
File details
Details for the file aeacus-0.6.0-py3-none-any.whl.
File metadata
- Download URL: aeacus-0.6.0-py3-none-any.whl
- Upload date:
- Size: 15.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dda498db84160f5eaea299e2ac49339664f0acbcb7441a5618d121ad8f65ce7
|
|
| MD5 |
19ef82d33c4a9c94b61b09acc8bad5ce
|
|
| BLAKE2b-256 |
62823f4bb000c4e3202efc3862d3d2753fd8005050e4c73857287025e713cb65
|