Ancestrify
All stories

qpadm

By Andi Thomaj
4 min read

qpAdm best practices: the current checklist, with the numbers behind every rule

The definitive working checklist for qpAdm in 2026 — temporal stratification, right-set construction, lowest-rank-first search, composite feasibility and reporting standards — each rule carrying its measured justification from the 2021–2025 audit literature.

qpadmmethodologyguide

  1. Before any model: the data rules
  2. Building the model: the structural rules
  3. Judging results: the acceptance rules
  4. Reporting: what a checkable model states
  5. The one-page version
  6. References

"qpAdm best practices" used to mean folklore plus one 2020 blog post. It does not have to anymore: between 2021 and 2025 the method was audited to its edges — Harney and colleagues validated the machinery and mapped its limits, Williams and colleagues measured its resolution, Flegontova and colleagues measured how often whole protocols are wrong — and the practices that survive that literature are specific, quantified and short enough to hold while working. This is the checklist, with the number behind every rule. It is also, not coincidentally, how our own published models are built.

Before any model: the data rules#

  • Know your intersection, not your marker count. Standard errors are set by the SNPs that survive the merge per statistic — the budget arithmetic. Rule of thumb floor for any included sample: ~50k overlapping SNPs; below that, nothing deserves the word estimate.
  • Use allsnps on sparse data. The measured stakes: at 85% missingness, mean SE 0.020 with it versus 0.066 without; at 90%, 0.035 versus a meaningless 9.99 (the parameters guide).
  • Never mix capture classes carelessly. Ancient and present-day samples — and by extension shotgun and capture ancients — carry different damage and bias profiles, and differential artefacts bias f-statistics where uniform ones mostly cancel. The AADR's suffixes exist for exactly this.
  • Hold processing constant across compared models. allsnps, fudge_twice, block size, f2 versus genotype input — each changes numbers; comparisons are only valid inside one regime.

Building the model: the structural rules#

  • Temporal stratification is not optional. No source may postdate the target. The measured difference is the largest in the whole literature: distal protocols run 16–31% false-discovery rates; proximal rotating screens run 72–100% — and get worse with more data (the full tables).
  • Right sets: floor, band, ceiling. At least one more outgroup than sources (degrees of freedom = |right| − |sources|); the published sets run 9–13; and by ~30 added references qpAdm starts rejecting true models. Build on the O9 spine with era contrasts, and remember the direction of power: an outgroup differentially related to your sources is worth more than five generic ones — the published example cut standard errors threefold.
  • Nothing entangled on the right. No population cladal with a source, none descended from the target, none that received gene flow from the left after separation (the prohibition list). Bad right sets are how bad models pass.
  • Lowest rank first. One-stream explanations before two, two before three — the auditors' own emphasis — with qpWave and the rank test as referee, and a third source admitted only when every two-way model over the pool is rejected.

Judging results: the acceptance rules#

  • Never rank surviving models by p-value. The measured fact that should end the habit forever: the true model has the best p-value in only 48% of cases. p answers "is this model compatible", never "is this model best".
  • Use composite feasibility, not p alone. p ≥ 0.05 alone as a filter carries an 84% false-discovery rate; requiring weights inside (0,1) within two standard errors cuts the false-positive rate from 27.5% to 6%. The standard composite: model p over threshold, every weight bounded away from 0 and 1 within error, and every trailing simpler model rejected (the p_nested column in the record).
  • Respect the resolution floor. Sources separated by FST under roughly 0.002 cannot be told apart by any right set; at Iron-Age-scale differentiation the true model is only ~22% of the plausible set. When candidates are that close, report the family, not a winner.
  • Read weights through their errors. A weight within two SEs of zero is a source the data cannot certify; within two SEs of one, the other sources are not established. |Z| above 3 is the conventional line, and our publish bar holds every source to it, every era, every tier.

Reporting: what a checkable model states#

A qpAdm claim that cannot be re-run is a vibe with a table. The reporting floor — what we publish in every model record, and what any forum post or paper should carry: the full right set in run order with sample counts; every source's panel label, weight, SE, z and confidence interval; the model p with chi-square and degrees of freedom; SNP counts per statistic; the nested-model table; the software, version and parameter regime; and which alternative models also passed. The last item is the one most often omitted and most informative — screening survivors are cheap; a stated family of passing models is what honesty looks like at this resolution.

The one-page version#

Stratify temporally. Build the right set for the specific contrast, 9–15 strong, nothing entangled. Search lowest rank first. Accept on the composite, never on p rank. Read weights through errors. Hold processing constant. Report everything a stranger needs to re-run you. And treat every rejection as the method working — a test that cannot fail you cannot vouch for you either.

From €29.99 · one-time
The tested version of this question
A qpAdm model composed, run and checked by hand against AADR v66, published with its p-value, every source's standard error and z-score, and the full right set, so the result can be argued with.
See the qpAdm analysis

Terms used here are defined in the glossary.

References#

  • Harney, É., Patterson, N., Reich, D. & Wakeley, J. (2021). Assessing the performance of qpAdm. Genetics, 217(4), iyaa045.
  • Williams, M. P. et al. (2024). Testing times: disentangling admixture histories in recent and complex demographies using ancient DNA. Genetics, 228(1), iyae110.
  • Flegontova, O. et al. (2025). Performance of qpAdm-based screens for genetic admixture. Genetics, 230(1), iyaf047.
  • Lazaridis, I. et al. (2016). Genomic insights into the origin of farming in the ancient Near East. Nature, 536, 419–424. (The O9 outgroup set.)
  • Agranat-Tamir, L. et al. (2020). The genomic history of the Bronze Age Southern Levant. Cell, 181(5), 1146–1157. (The o9a extension and the threefold SE reduction.)
  • Maier, R. et al. (2023). On the limits of fitting complex models of population history to f-statistics. eLife, 12, e85492.

Related posts

Learn qpAdm: the complete guide, from zero to defensible models
Learn qpAdm: the complete guide, from zero to defensible models

A structured learning path through everything qpAdm — what to read in what order, from the f4-statistics underneath to running models in R, choosing outgroups, reading results and knowing the method's measured limits.

3 min read
Classic ADMIXTOOLS vs ADMIXTOOLS 2: why your qpAdm numbers differ, and how to match them
Classic ADMIXTOOLS vs ADMIXTOOLS 2: why your qpAdm numbers differ, and how to match them

Same model, different p-value: the real differences between original qpAdm and ADMIXTOOLS 2 — allsnps semantics, fudge_twice, f2 precomputation — and the settings that reproduce classic behaviour when you need to.

3 min read
AADR sample labels explained: .SG, .DG, .HO and how to choose samples safely
AADR sample labels explained: .SG, .DG, .HO and how to choose samples safely

The suffixes on AADR population labels encode how each genome was produced — capture, shotgun, diploid, array — and mixing them carelessly biases f-statistics. What each label means and the selection rules that keep models honest.

3 min read
Back to all stories
Ancestrify

Combining cutting-edge genomic science with rich historical records to map your ancestry across generations and continents.


© 2026 Ancestrify. All rights reserved. · Ancestrify is a trading name of Andi Thomaj, a sole trader registered in Tiranë, Albania · NUIS M61725001N
Card payments processed by POK Payments (RPay Ltd)VISAMASTERCARD