A fast, python based app for viewing sequencing coverage (from BAM alignments) along a reference genome, with gene annotations and publication-quality figure export. Supports export to vector graphics formats: EPS, SVG and PDF to further polish the plots.
- Load one or more BAM files and see per-base coverage as area / line / bar tracks. Stack several samples, or overlay them on shared axes.
- Navigate instantly — jump by locus (
PfIT_02:69,470-81,075), pick a chromosome, or search a gene by name/description. Pan and zoom stay smooth even on large BAMs because the full coverage of a contig is computed once and cached in memory. - Show gene annotations from any GFF3/GTF file — exon/CDS boxes, directional arrows and gene labels under the coverage tracks.
- Style everything — colours, line widths, fill opacity, linear/log Y-scale, fixed or shared Y-axis, smoothing, fonts, track heights.
- Export figures in SVG, PDF, PNG, JPEG, TIFF or EPS (true vector for SVG/PDF) at a chosen size and DPI — for the current view or the whole chromosome. Hold Preview to see the exact exported image before saving.
- Go to the Releases page and download
Covplot.app.zipfrom the latest release. - Unzip it and drag Covplot.app into your
Applicationsfolder. - The app is not signed with an Apple Developer ID, so the first launch is
blocked by Gatekeeper. To open it, right-click the app → Open, then
confirm. (Alternatively, run once in Terminal:
xattr -dr com.apple.quarantine /Applications/Covplot.app.)
No need to install libraries or packages.
Requires Python 3.10+.
git clone https://github.com/johannesall/Covplot.git
cd Covplot
python3 -m pip install -r requirements.txt
python run.pyYou can also open files directly from the command line:
python run.py sample.bam annotation.gff- Add a BAM with + BAM (or File → Open BAM). BAM files must be indexed
— create the index once with
samtools index your.bam(produces a.bai). - Load an annotation (optional) with Load GFF/GTF…. Covplot checks that the annotation's chromosome names match your BAM and warns if they don't.
- Go to a region — type a locus or chromosome in the top bar and press Go, or search for a gene. Use the + / − buttons or the arrow keys to zoom, and drag on a track to pan.
- Style the selected track and the figure in the Style tab on the right (colour, mode, Y-scale, gene boxes, fonts, …). Drag the thin divider between tracks to resize them.
- Export from the Export tab: choose format, size and DPI, hold Preview to check the layout, then Export… to save.
When you load several BAMs, Covplot confirms they were mapped to the same reference genome (matching chromosome names and lengths) so overlaid tracks share a meaningful coordinate axis.
The interactive tracks are drawn with pyqtgraph on top of PySide6 (Qt); figure export is a separate matplotlib re-render so you get real vector output. Coverage is read from BAMs with pysam, and the entire per-base depth of a contig is computed once and kept as a NumPy array — every later pan/zoom is just fast array slicing, so navigation stays instant. Gene annotations are indexed into a small on-disk gffutils database the first time you open a GFF, and reused afterwards. All file loading and computation runs on background threads so the window never freezes.
The packaged app is built with Nuitka:
python3 -m pip install nuitka ordered-set zstandard
./build_macos.sh # → build/Covplot.appNuitka compiles for the host OS only, so run this on macOS to get a macOS app.
Covplot © Johannes Allweier (verb49_hearts@icloud.com).
The application code is released under the MIT License (see LICENSE).
Covplot bundles third-party open-source components — notably Qt/PySide6
under the LGPL-3.0 — whose own terms apply to those components; their full
notices are in THIRD_PARTY_LICENSES.md and are also
shown in the app under Help → About Covplot.

