DOI: 10.1093/bioadv/vbag281 ISSN: 2635-0041

pycmplot: fast, low-memory multi-track circular and linear Manhattan plotting in Python

Kevin Esoh, Fujr Osman, Cesar Fortes-Lima, Gordon A Awandare, Ambroise Wonkam

Abstract

Motivation

Manhattan plots remain the standard visual summary for genome-wide association studies and other per-variant scans (iHS, FST, XP-EHH). Existing Manhattan visualization tools either lack multi-track support (gwaslab, qmplot, and qqman) or do not provide a Circos-style multi-track circular Manhattan view. CMplot (R) does, but its memory and runtime costs on multi-million-variant inputs are substantial.

Results

We present pycmplot, a Python package for generating multi-track linear and Circos-style circular Manhattan plots from one or more GWAS summary statistics. On a 10-million-variant scan, pycmplot is 5.5× faster and uses ∼5× less memory than CMplot for linear Manhattan plotting, 1.6× faster (and 3× faster with optional pre-filtering) for circular Manhattan, and 7.7× faster for qq rendering. Multi-track comparisons of two summary statistics are 4.5× faster (linear) and 3.5× faster (circular) than CMplot's equivalent mode. Transparent hg18 / hg19 → hg38 liftover lets users mix coordinate systems within a single plot, and a lightweight bundle of Ensembl GFF3 gene information files (hg19 and hg38) enables nearest gene annotation.

Availability and implementation

pycmplot is freely available under the MIT license at https://github.com/esohkevin/pycmplot; and from PyPI (pip install pycmplot). Documentation is at https://pycmplot.readthedocs.io.