github teaguesterling/plinking_duck v0.6.0
v0.6.0 — include_genotypes filter + fast carrier queries

latest releases: v0.14.2, v0.14.1, v0.14.0...
3 months ago

Highlights

include_genotypes — named-category genotype filter

Filter by hardcall category: include_genotypes := ['het','hom_alt'] over hom_ref/het/hom_alt/missing (case-insensitive; any subset, including non-contiguous like ['hom_ref','hom_alt']; missing is first-class). genotype_range := {min,max,include_missing} remains as the numeric alias.

Fast carrier lookups at biobank scale

Listing the subjects matching a genotype at a variant is now a first-class fast path. On a 10M-sample fixture, a single-variant carrier query dropped from ~6s to ~0.85s:

  • orient := 'sample' + a genotype filter emits only matching subjects (row-skip), not one row per sample.
  • The .psam.parquet companion is now preferred when present, and its columns are read natively (no per-row std::string materialization).

Correctness fixes

  • Sample-orient counts/stats no longer miscount out-of-range hardcalls as missing.
  • Sample orient now skips non-matching rows under a genotype filter.
  • Genotype-orient genotype filtering now applies regardless of column projection (previously SELECT IID …/COUNT(*) could return unfiltered rows).

See the documentation and PR #41 for details.

Don't miss a new plinking_duck release

NewReleases is sending notifications on new releases.