Home
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.