Skip to content

Home

Docker Release Release Docs PyPI

A lightweight, high-performance dotplot visualiser for large dynamic-programming matrices.

fastdpplot is built around a Rust core (fastdpplot-core) exposed to Python via a PyO3 extension (fastdpplot._rs). Matrices with hundreds of millions of points are loaded, binned, and rendered in seconds.


✨ Highlights

Feature Detail
Rust speed I/O, binning, and sparse conversion run fully in Rust with rayon parallelism.
GPU optional cuDF detected at runtime; falls back to pandas silently.
Multiple inputs .bin binary matrices, Parquet, tab-/space-separated text, FASTA-paired pipelines.
Three render modes Static PNG/SVG, interactive Panel/Bokeh server, Jupyter inline.
Streaming Parquet reads Parquet batches are projected and streamed without loading the whole file.

🗂️ Repository layout

fastdpplot/
├── crates/
│   ├── fastdpplot-core/   ← pure-Rust library (I/O, binning, sparse, FASTA …)
│   └── fastdpplot-py/     ← PyO3 extension that wraps fastdpplot-core
├── fastdpplot/            ← Python package (thin wrappers + rendering)
│   ├── __init__.py
│   ├── io.py
│   ├── plot.py
│   ├── server.py
│   └── sparse_convert.py
├── cli/
│   └── main.py            ← CLI entry point
├── data/                  ← put your .bin and .fasta files here
├── examples/
│   └── visualize_100k.py
├── mkdocs.yml
└── pyproject.toml

🚀 Getting started

# 1. Build the Rust extension
maturin develop

# 2. Render a dotplot from binary DP matrix + two FASTA files
fastdpplot \
    --matrix data/dp_matrix.bin \
    --fasta-a data/query.fasta \
    --fasta-b data/subject.fasta \
    --output plot.png

See Installation and Quick Start for full step-by-step guides.