Skip to content

What is qpWave? Counting streams of ancestry

qpWave counts the streams of ancestry that link populations to a set of references. How its rank test works and how to read rank 0 and rank 1.

Updated 2 min read

qpWave counts the streams of ancestry that separate one set of populations (the left) as seen from another set (the right). If two populations are rank 0, they are a clade with respect to the right populations: no right population can tell them apart.

qpWave is part of ADMIXTOOLS. Reich et al. 2012 used it to show that Native Americans descend from at least three streams of migration from Asia. qpAdm is built on the same test.

Left and right populations

  • Left: the populations you want to compare, for example two ancient groups from neighbouring sites.
  • Right: references that relate in different ways to the left populations, with a distant base first. Choosing right populations applies here as well.

The rank test

qpWave builds a matrix of f4-statistics, f4(L0, Li; R0, Rj), for every left population Li and right population Rj. The rank of this matrix is the number of independent ancestry streams, minus one, that the right populations can detect in the left set.

qpWave tests rank 0, then rank 1, and so on. For each rank it reports a p-value: the chance of the observed misfit if the matrix really had that rank.

  • Rank 0 not rejected (p above 0.05): all left populations derive from one stream, as seen from the right. They form a clade.
  • Rank 0 rejected, rank 1 not rejected: two streams. With two left populations, they differ; with three, one may be a mixture of the other two.
  • Each further rank is one more stream.

qpWave and qpAdm

qpAdm with a target and n sources is a qpWave test of rank n − 1 on the left set {target, sources}, plus an estimate of the weights. If the rank of {target, sources} is the same as the rank of {sources} alone, the target adds no new stream, and qpAdm can express it as a mixture of the sources.

Typical uses

  • Grouping genomes. Before pooling ancient genomes from one site as a population, test pairs with qpWave. Pairs that are rank 0 can be pooled; an individual who rejects rank 0 against the rest is an outlier.
  • Testing continuity. Is an Iron Age group a clade with the Bronze Age group from the same region, or did new ancestry arrive?
  • Counting sources. How many source populations does a qpAdm model need?

Running qpWave

ADMIXTOOLS runs qpWave from the command line, and ADMIXTOOLS 2 with qpwave. Nexju runs qpWave rank tests on every plan, on the AADR or on your uploaded genome.

References

QQuestions

Frequently asked questions

Short answers to the questions people ask most about this topic.

What does rank 0 mean in qpWave?

Rank 0 means a single stream of ancestry: the left populations are a clade with respect to the right populations. No right population is closer to one left population than to another.

What is the difference between qpWave and qpAdm?

qpWave tests how many ancestry streams relate a set of left populations to the right populations. qpAdm runs the same test on a target and its sources and adds weights, the share of each source in the target.

Can I use qpWave to decide whether to group ancient genomes?

Yes. Test each pair, or each genome against the rest, for rank 0 with a fixed right panel. Genomes that pass can be pooled into one population; a genome that rejects rank 0 is a candidate outlier.

Every help article

Allow analytics cookies? They help us see how the site is used so we can improve it. Your DNA and results are never included. Details