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.
Metadata
Release files for aeacus 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aeacus-0.6.0.tar.gz | 16.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aeacus-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.9 MB
Release files / aeacus-0.6.0.tar.gz
| Download URL | aeacus-0.6.0.tar.gz |
|---|---|
| Size | 16.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2308db023b3709e1859c86ccf065979c1050974bc09d305af23c913136ffa1a8
|
|
BLAKE2b-256 checksum How to use checksums |
a513447a99293dbcce4cb37feeed5313d35a73efce75d52870021e8e08783f0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / aeacus-0.6.0-py3-none-any.whl
| Download URL | aeacus-0.6.0-py3-none-any.whl |
|---|---|
| Size | 15.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6dda498db84160f5eaea299e2ac49339664f0acbcb7441a5618d121ad8f65ce7
|
|
BLAKE2b-256 checksum How to use checksums |
62823f4bb000c4e3202efc3862d3d2753fd8005050e4c73857287025e713cb65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|