github teaguesterling/plinking_duck v0.12.0
v0.12.0 — read_howard_manifest (plinking_duck reads .howard)

3 hours ago

plinking_duck reads .howard — read_howard_manifest

plinking_duck already wrote .howard (sharded FORMAT pfile); v0.12.0 adds the reader, making it the single owner of the format.

  • read_howard_manifest(path [, region:=, variant_index:=, sample_index:=, verify_all:=]) — parses a .howard.json catalog (vendored yyjson), eagerly verifies it (per-shard .pgen-header vs companion counts, and declared partition width vs real row count — so a bogus width can't silently corrupt a prune), prunes shards at bind time (half-open partition + inclusive range POS, §6/§10), and returns one row per surviving shard: dataset, concat_dim, prefix, pvar, psam, partition_start, partition_stop, source_ordinal, chrom, pos_min, pos_max, verified, chunk_size. Single-fileset and multi-file catalogs both supported; paths returned absolute + normalized.
  • Shared src/include/howard_catalog.hpp — ShardEntry + overlap predicates, now used by both the writer and the reader.
  • yyjson compiled into the extension (no new external dependency, no autoload assumption).

Behaviorally conformant to howard's Python loader (catalog.py), verified against it case-by-case — this is the foundation for the Python howard library to retire its own parse/verify and consume plinking_duck as the single .howard reader. (The pure-SQL read_howard scan and ATTACH … (TYPE plink) remain deferred.)

Adversarially reviewed and conformance-fixed; full suite 10976 assertions / 180 test cases.

🤖 Generated with Claude Code

https://claude.ai/code/session_011csELQ5cVyHrxMbvgBfC6o

Don't miss a new plinking_duck release

NewReleases is sending notifications on new releases.