How many SNPs does qpAdm need? Coverage, missing data and allsnps
Why low-coverage genomes shrink a qpAdm run, how many shared SNPs give a usable test, when to turn on allsnps, and how 1240K and Human Origins differ.
Updated 4 min read
qpAdm has no fixed minimum number of SNPs. What matters is how many SNPs the populations of the model share, because that sets the standard errors and the power of the test. As a rough guide, a run on fewer than about 100,000 shared SNPs gives large standard errors and a weak test. One low-coverage genome in the model can cut that number more than any other choice.
Why one genome can shrink the whole run
By default, qpAdm uses a SNP only when every population of the model has data there: the target, every source and every right population. A population of many genomes almost always has a call. A population of one low-coverage genome often does not, and each SNP it misses is lost for every statistic of the run.
Most ancient genomes in the AADR are pseudohaploid: one read was sampled at each SNP, so a genome has one allele or none. A genome with 30,000 SNPs on the 1240K set leaves at most 30,000 SNPs to a model it is in, whatever the other populations cover.
1240K or Human Origins
The AADR comes in two SNP sets:
1240K, about 1.2 million SNPs. Most ancient genomes were captured on these SNPs, so ancient-only models keep the most data here.
Human Origins, about 600,000 SNPs. It holds many more present-day populations, but an ancient genome keeps only the part of its SNPs that falls on this set.
Use 1240K unless the model needs present-day populations that are only on Human Origins. A model that mixes both kinds of data needs care; see Is qpAdm reliable?
What allsnps does
allsnps changes which SNPs each statistic uses:
allsnps off (the default): every f4-statistic uses only the SNPs that all populations of the model share. The statistics are directly comparable.
allsnps on: each f4-statistic uses every SNP that its own four populations share. A sparse genome then costs SNPs only in the statistics it is part of.
The trade-off is that the statistics no longer share one SNP set. Harney et al. (2021) tested qpAdm on simulated data with high missingness and found that allsnps: YES improved its ability to tell right models from wrong ones. Use it when coverage is the problem, and say so when you report the result.
In classic ADMIXTOOLS, it is the line allsnps: YES in the parameter file. In ADMIXTOOLS 2, it is qpadm(prefix, left, right, target, allsnps = TRUE), which reads the genotype files instead of precomputed f2-statistics. ADMIXTOOLS 2's extract_f2() also has maxmiss, the share of populations allowed to miss a SNP; 0 keeps only SNPs called in every population.
How to raise the SNP count
Find the sparse population. Check the SNP count of each genome in the model. The AADR annotation gives it as SNPs hit on autosomal targets.
Drop or replace the weakest genomes. A population of ten genomes rarely needs its two with 8,000 SNPs. Build a group from the better genomes instead.
Pick a better-covered right population. A right population of one sparse genome adds noise and costs SNPs everywhere. Swap it for a related population with more data.
Turn on allsnps if the sparse genome is the target or a source you cannot replace.
Transversions-only runs, which drop the C↔T and G↔A SNPs where ancient DNA damage shows, cut the count by about two thirds. Use them as a robustness check, not as the main run.
SNPs in Nexju
Every qpAdm result in Nexju shows SNPs analyzed. When the populations share too few SNPs to estimate standard errors, the run stops and says: "The populations share too few SNPs to estimate standard errors by block jackknife. Drop low-coverage populations or samples, or run with allSnps, then run again."
The Parameters… button of a model holds the
allsnpsswitch and the SNP set: All SNPs or Transversions only.Genome lists show each genome's 1240K SNPs and flag genomes under 5,000.
In a workflow, a Curate group step drops the genomes under a SNP count you set (Fewest 1240K SNPs).
An uploaded consumer DNA file shares a few hundred thousand SNPs with the 1240K set, depending on the chip; see Compare your raw data with ancient DNA.
References
Harney É. et al. 2021. Assessing the performance of qpAdm: a statistical tool for studying population admixture. Genetics 217. doi:10.1093/genetics/iyaa045
Patterson N. et al. 2012. Ancient admixture in human history. Genetics 192. doi:10.1534/genetics.112.145037
Maier R. et al. 2023. On the limits of fitting complex models of population history to f-statistics. eLife 12. doi:10.7554/eLife.85492
Mallick S. et al. 2024. The Allen Ancient DNA Resource (AADR): a curated compendium of ancient human genomes. Scientific Data 11. doi:10.1038/s41597-024-03031-7