PlinkingDuck: a DuckDB extension for reading PLINK 2 genomics file formats and running common genetic analyses directly in SQL.
Documentation · Getting Started · Tutorial
What's Included
File readers:
read_pvar— variant metadata (.pvar/.bim)read_psam— sample metadata (.psam/.fam)read_pgen— binary genotypes (.pgen)read_pfile— unified fileset reader with tidy mode
Analysis functions:
plink_freq— per-variant allele frequenciesplink_hardy— Hardy-Weinberg equilibrium exact testplink_missing— per-variant and per-sample missingness ratesplink_ld— pairwise linkage disequilibrium (r², D, D')plink_score— polygenic risk scoring
Features
- Projection pushdown (skip genotype decompression for metadata queries)
- Parallel scan with atomic batch claiming
- Sample subsetting (by IID or index)
- Region filtering (
chr:start-end) - Variant filtering (by ID or index)
- Legacy PLINK 1 format support (.bim/.fam auto-detection)
Platform Support
- Linux amd64
- Linux arm64
Building
git clone --recurse-submodules https://github.com/teaguesterling/plinking_duck
cd plinking_duck
make