abriplot
Publication-quality AMR and Virulence gene heatmap with phylogenetic tree from abricate output.
What it does
abriplot takes the TSV files produced by abricate (CARD and VFDB databases) and a Newick phylogenetic tree, and produces a single publication-ready figure with:
- Phylogenetic tree — branch lengths proportional, samples ordered by topology
- AMR gene heatmap — presence/absence matrix from CARD, genes sorted by prevalence
- Drug-class annotation strip — one row per resistance class above the AMR block; multi-class genes appear in all relevant rows; classes auto-detected from your data
- Virulence gene heatmap — presence/absence matrix from VFDB
- PDF + PNG exported automatically
Installation
pip install abriplot
No Biopython required — pure Python Newick parser included.
Quick start
abriplot \
--input_dir /path/to/abricate_results/ \
--tree /path/to/tree.nwk \
--output figure.pdf
This produces figure.pdf and figure.png in the current directory.
All options
usage: abriplot [-h] --input_dir DIR --tree FILE [--output FILE] [--title TEXT]
[--min_identity FLOAT] [--min_coverage FLOAT]
[--top_amr INT] [--top_vf INT]
required arguments:
--input_dir DIR Directory containing *__card.tsv and *__vfdb.tsv files
--tree FILE Newick tree file (.nwk / .tree)
output:
--output FILE Output path — pdf, png, or svg [default: abriplot_figure.pdf]
--title TEXT Figure title [default: 'Phylogenetic Distribution of AMR
and Virulence Genes']
filtering:
--min_identity FLOAT Minimum % identity threshold [default: 80]
--min_coverage FLOAT Minimum % coverage threshold [default: 80]
--top_amr INT Keep only the N most prevalent AMR genes [default: all]
--top_vf INT Keep only the N most prevalent virulence genes [default: all]
Examples
# Custom title for a publication
abriplot --input_dir results/ --tree tree.nwk --output fig1.pdf \
--title "AMR gene distribution in V. cholerae (2002–2019)"
# Tighter figure — top 40 AMR genes, top 25 VF genes
abriplot --input_dir results/ --tree tree.nwk --output fig1.pdf \
--top_amr 40 --top_vf 25
# Stricter filtering
abriplot --input_dir results/ --tree tree.nwk --output fig1.pdf \
--min_identity 95 --min_coverage 90
Input file format
abricate output files must follow the naming convention:
<sample>__card.tsv
<sample>__vfdb.tsv
These are produced automatically when you run abricate with the --db card and --db vfdb flags. Example abricate command:
abricate --db card assembly.fasta > sample__card.tsv
abricate --db vfdb assembly.fasta > sample__vfdb.tsv
Use as a library
from abriplot.io import load_all
from abriplot.newick import tip_order
from abriplot.plot import (build_matrix, order_by_tree,
sort_genes_by_prevalence, make_figure)
with open("tree.nwk") as f:
ordered_tips, root, leaves = tip_order(f.read())
amr_records, vf_records = load_all("results/", min_id=80, min_cov=80)
amr_mat, amr_meta = build_matrix(amr_records)
vf_mat, _ = build_matrix(vf_records)
amr_mat = order_by_tree(amr_mat, ordered_tips)
vf_mat = order_by_tree(vf_mat, ordered_tips).reindex(amr_mat.index, fill_value=0)
amr_mat = sort_genes_by_prevalence(amr_mat)
vf_mat = sort_genes_by_prevalence(vf_mat)
make_figure(amr_mat, vf_mat, amr_meta, root, leaves,
amr_mat.index.tolist(), "figure.pdf",
title="My custom title")
Requirements
- Python ≥ 3.8
- numpy ≥ 1.21
- pandas ≥ 1.3
- matplotlib ≥ 3.5
License
MIT © [Sushant Nimbhokar]
Metadata
Release files for abriplot 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| abriplot-0.1.4.tar.gz | 14.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| abriplot-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.6 kB
Release files / abriplot-0.1.4.tar.gz
| Download URL | abriplot-0.1.4.tar.gz |
|---|---|
| Size | 14.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34f86aa44e6e2a480a2fc12b3cc847ebeb32befe3a5c6b92ed506030ea6c7398
|
|
BLAKE2b-256 checksum How to use checksums |
8ba627f2820571d17d91fa6c0dc4ff34eee484118769c76cc09e406fd2a09059
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / abriplot-0.1.4-py3-none-any.whl
| Download URL | abriplot-0.1.4-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3db3167afb12abc22f25535e55960eed80375a31bed5b6e99629f694dde5fd50
|
|
BLAKE2b-256 checksum How to use checksums |
cf04a606fdc41a865b1ac6afd90e2b3fee5c59543b33cef191a27253d8db69f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for abriplot 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.