Software

Software Development

Open-source packages I have written or co-written.

paperpush

Total PyPI downloads for paperpush GitHub stars for paperpush

paperpush

Automates manuscript submission. Point it at a manuscript directory and a target venue and it generates a submission file, validates it against the venue's pre-submission checks, and fills out the submission portal for you — stopping short of clicking submit. Supports arXiv, bioRxiv, and medRxiv along with a growing list of journals.

fastQpick

Total PyPI downloads for fastQpick GitHub stars for fastQpick

Fast, memory-efficient sampling of FASTQ reads with or without replacement — for generating bootstrap replicates that quantify technical variance at the level of raw reads, and for subsampling large libraries for testing and benchmarking. Streaming I/O and ISA-L-accelerated gzip bootstrap a 500-million-read library in roughly 26 minutes.

Manuscript (bioRxiv): doi.org/10.64898/2026.06.23.734068

wompwomp

GitHub stars for wompwomp

wompwomp

R package (on CRAN) that untangles k-partite graphs by heuristically optimizing node order, layer order, and node grouping to nearly minimize edge crossings. Its main use is making alluvial plots legible when the raw category ordering leaves the flows in a knot.

Manuscript (arXiv): doi.org/10.48550/arXiv.2509.03761

cellsweep

Total PyPI downloads for cellsweep GitHub stars for cellsweep

cellsweep

Python package and CLI that sweeps noisy, ambient counts out of single-cell RNA-seq data. A single call to denoise_count_matrix takes a raw AnnData count matrix with cell-type labels and returns a denoised one, plus utilities for the downstream processing, plotting, and analysis.

Manuscript (bioRxiv): doi.org/10.64898/2026.03.04.709349

varseek

Total PyPI downloads for varseek GitHub stars for varseek

varseek

Command-line tool and Python package for variant screening of DNA-seq, bulk RNA-seq, and single-cell RNA-seq data. vk ref turns a variant database (COSMIC, ClinVar, dbSNP, or custom) plus its reference genome/transcriptome into a variant-containing reference sequence (VCRS) index; vk count pseudoaligns reads against that index and returns a samples × variants count matrix in AnnData format, ready for clustering, differential expression, or pathway analysis.

Manuscript (bioRxiv): doi.org/10.1101/2025.09.03.674039

Conference Agent

Total visits to conferenceagent.vercel.app

Conference Agent

AI agent that compiles major conferences across medicine, genomics/bioinformatics, and data science into one searchable table, with website links and color-coded submission deadlines and meeting dates, refreshed biweekly. Any row can be exported as a subscribable calendar feed (.ics).

Manimble

GitHub stars for Manimble

Co-developed macOS app that gives Manim animations a graphical slideshow editor: a deck is a folder of Manim scene classes, played back as slides, with Keynote import/export, BioCartoon icon search, and a manimbler CLI that converts portable .manimble projects to MP4 or PDF.

BioCartoon

All-time app.biocartoon.com visits All-time www.biocartoon.com visits Total PyPI downloads for BioCartoon GitHub stars for josephrich98/biocartoon GitHub stars for josephrich98/biocartoon-app

BioCartoon

Free, open-source tool for making biology figures: a searchable database of 15,000+ open-licensed scientific illustrations with a web and desktop figure editor, plus a CLI and MCP server.

probability_distributions

GitHub stars for probability_distributions

probability_distributions

Python package for visualizing and learning probability distributions. A single Distribution object covers 29 discrete, continuous, and multivariate distributions and carries everything you need to know about each one: its story, parameter space, support, PMF/PDF, CDF, mean, variance, MGF, use cases, and special facts. It also draws PMF/PDF/CDF plots, with sliders for the parameters in Jupyter, and samples from the distribution.

ctkit

Total PyPI downloads for ctkit GitHub stars for ctkit

ctkit

Protocol and Python package for turning TCGA/TCIA radiology studies into AI-ready arrays: download and filtering, DICOM → NIfTI conversion, reorientation, segmentation, Hounsfield-unit clipping, resampling, mask-and-crop, and intensity normalization, with Jupyter notebooks walking through each step.

Manuscript (medRxiv): doi.org/10.64898/2026.06.15.26354651

Software Contributions

Established open-source packages I have contributed to.

gget

Total PyPI downloads for gget GitHub stars for gget

Command-line tool and Python package for efficient querying of genomic reference databases (Ensembl, UniProt, NCBI, PDB, cBioPortal, COSMIC, and more), where each module answers a single question in a single line of code.

Contributions:

  • gget mutate: builds mutated sequences from a reference genome or transcriptome and a list of mutations.
  • gget cbio: queries cBioPortal and plots cancer genomics heatmaps for a set of genes.
  • gget cosmic: searches and downloads the COSMIC (Catalogue of Somatic Mutations in Cancer) databases.
  • gget opentargets: queries Open Targets for the diseases, drugs, and other annotations associated with a gene.

kb-python

Total PyPI downloads for kb-python GitHub stars for kb-python

Python wrapper around the kallisto | bustools workflow that preprocesses single-cell RNA-seq data, going from raw FASTQ files to a count matrix in a single command across a wide range of technologies.

Contributions:

  • Reduced peak memory usage when writing count matrices to AnnData (.h5ad), removing the RAM spike on datasets with a large number of genes.
  • Added the new kb sweep module, which runs cellsweep ambient-RNA denoising on kb count output.

Voyager (Python)

Total PyPI downloads for Voyager (Python) GitHub stars for Voyager (Python)

Python implementation of Voyager, a package for exploratory spatial data analysis of spatial transcriptomics data: univariate and bivariate spatial statistics (such as Moran's I and Geary's C) computed over spatial neighborhood graphs, built on AnnData and scanpy.

Contributions:

  • Visium tutorials: Python vignettes for analyzing 10x Genomics Visium spatial gene expression data.
  • Xenium tutorials: Python vignettes for analyzing 10x Genomics Xenium single-cell-resolution in situ data.