Counting ancestry streams with qpWave: steppe, farmers and the Corded Ware
Six qpWave rank tests on ancient genomes show how to read a rank: Yamnaya and Afanasievo are one stream, Yamnaya and Corded Ware are not, and the count for Corded Ware depends on which group is tested and on the threshold.
qpWave counts how many independent streams of ancestry link a set of populations to a set of reference populations. Here it is applied to ancient genomes from the Allen Ancient DNA Resource, with one fixed set of reference populations. Yamnaya from Samara and Afanasievo from the Altai cannot be told apart (rank 0, p = 0.093). Yamnaya and Czech Corded Ware can (rank 0 rejected, χ² = 1121 on 11 degrees of freedom). With Globular Amphora added, three groups need two streams at a threshold of 0.01, but the fit is marginal (p = 0.014 and 0.016) and would be rejected at 0.05. A test of four groups shows how much the count depends on the group chosen: Czech Corded Ware needs three streams (rank 2, p = 0.012), and Corded Ware from Esperstedt needs four. The runs are used to show how to read a rank, and where a rank misleads.
Introduction
Before a qpAdm model estimates how much ancestry comes from each source, a simpler question can be asked: how many distinct streams of ancestry does the data need? That question is qpWave's. The rank test was introduced by Reich et al. in 2012 to show that Native Americans descend from at least three streams of gene flow from Asia1, and it was formalised by Haak et al. in 2015, in the supplement where qpAdm was introduced2.
qpWave takes a set of left populations and a set of right populations. It builds a matrix of f4-statistics from them and tests its rank. If the left populations descend from N streams that relate differently to the right populations, the rank is at most N − 11. The lowest rank that is not rejected, plus one, is therefore the minimum number of streams that the right populations can detect. The word minimum matters. A stream that the right populations cannot separate does not raise the rank3, and a low rank can reflect low power as well as a true match4.
Three questions about Bronze Age steppe and European groups show how the test is read.
Results
1 stream of ancestry explain these 2 populations against the references.
Figure 1 | Samara Yamnaya and Altai Afanasievo. qpWave rank test for Yamnaya from Samara and Afanasievo from the Altai. Rank 0 is not rejected: χ² = 17.5 on 11 degrees of freedom, p = 0.093, at a threshold of 0.01.
Yamnaya from Samara (46 genomes) and Afanasievo from the Altai (20 genomes) lived far apart. qpWave finds no sign of a second stream between them (Fig. 1). This agrees with the genetic homogeneity of the two groups that Mathieson et al. reported in 20155. Rank 0 is not rejected at 0.01 or at 0.05. With 11 degrees of freedom, this means that these twelve right populations do not tell the groups apart. It does not mean that the groups are identical.
Even 1 streams of ancestry don’t explain these populations against the references.
Figure 2 | Samara Yamnaya and Czech Corded Ware. qpWave rank test for Yamnaya from Samara and Corded Ware from Czechia. Rank 0 is rejected: χ² = 1120.8 on 11 degrees of freedom.
Corded Ware people from Czechia (48 genomes) are not a clade with Yamnaya (Fig. 2). The rejection is not marginal: χ² is about 100 times its degrees of freedom. Haak et al. estimated that Corded Ware people traced about three quarters of their ancestry to Yamnaya, and that the rest came from earlier European farmers2. A mixture of that kind predicts a second stream, and qpWave finds one.
2 streams of ancestry explain these 3 populations against the references.
Figure 3 | Czech Corded Ware, Yamnaya and Globular Amphora. qpWave rank test for three groups: Corded Ware from Czechia, Yamnaya from Samara and Globular Amphora from Poland. Rank 0 is rejected (χ² = 4125 on 22 degrees of freedom). Rank 1 is not rejected at 0.01 (χ² = 22.3 on 10 degrees of freedom, p = 0.014).
2 streams of ancestry explain these 3 populations against the references.
Figure 4 | Esperstedt Corded Ware, Yamnaya and Globular Amphora. The same test with Corded Ware from Esperstedt, Germany, in place of the Czech group. Rank 1 is not rejected at 0.01 (χ² = 21.9 on 10 degrees of freedom, p = 0.016).
Globular Amphora is a farming group of the Late Neolithic from Poland (33 genomes). Adding it asks whether three groups need two streams (Fig. 3). Rank 0 is rejected, and rank 1 is not rejected at 0.01 (p = 0.014), so two streams are enough. The result is marginal. At a threshold of 0.05, rank 1 would also be rejected, and three streams would be needed. The threshold of 0.01 was fixed before the runs, and the result is reported as it came out. Corded Ware from Esperstedt (13 genomes) gives the same answer (p = 0.016; Fig. 4).
3 streams of ancestry explain these 4 populations against the references.
Figure 5 | Four groups: Czech Corded Ware, Yamnaya, Anatolian Neolithic and Loschbour. qpWave rank test for Corded Ware from Czechia, Yamnaya from Samara, Anatolian Neolithic farmers and Loschbour, a western hunter-gatherer. Ranks 0 and 1 are rejected. Rank 2 is not rejected at 0.01 (χ² = 19.6 on 8 degrees of freedom, p = 0.012).
Even 3 streams of ancestry don’t explain these populations against the references.
Figure 6 | Four groups with Esperstedt Corded Ware. The same test with Corded Ware from Esperstedt. Ranks 0, 1 and 2 are all rejected; rank 2 has χ² = 22.6 on 8 degrees of freedom, p = 0.004.
If Corded Ware is a mixture of steppe, farmer and hunter-gatherer ancestry, three distinct sources should account for it. Yamnaya, Anatolian Neolithic farmers (68 genomes) and Loschbour (2 genomes) stand for those sources. Early European farmers were mainly of Near Eastern origin and also carried some hunter-gatherer ancestry6. For Czech Corded Ware, rank 2 is not rejected at 0.01 (p = 0.012; Fig. 5). The four groups need three streams, and Corded Ware adds none. At 0.05 this result would also be rejected.
Replacing the Czech group with Esperstedt changes the answer. Rank 2 is rejected (p = 0.004; Fig. 6), so the test finds four streams: rank 3, the highest possible for four groups, has no degrees of freedom and is never rejected. A fourth stream means that the German group carries ancestry that Yamnaya, Anatolian Neolithic and Loschbour do not account for. One possibility is the farmers of the German Middle Neolithic, whom Haak et al. gave as the source of the remaining Corded Ware ancestry2. qpWave does not name the stream, and these runs do not test that possibility.
Discussion
The six runs show three things about reading a rank.
A rank counts the streams that the right set can separate. Yamnaya and Afanasievo form one stream here, and a different right set could split them.
The count depends on the group tested. Corded Ware from Czechia and from Esperstedt gave different answers with the same left and right sets, apart from the group itself. A population label pools people, and a pooled group can hide individuals with different ancestry.
A result near the threshold is not a clear result. The p-values of 0.012 to 0.016 pass at 0.01 and fail at 0.05. Papers use both thresholds: Harney et al. call 0.05 typical3, and Patterson et al. accept models at p > 0.017. The threshold should be fixed before the fit, and a result between the two should be reported as such.
The same logic applies before a qpAdm model. The sources must have full rank among themselves, so that the right populations can tell them apart, and adding the target must not raise the rank2. A target that raises the rank cannot be a mixture of those sources, as seen from that right set.
These runs have clear limits. The right set was chosen once and not varied, and other right sets could change a rank. The groups are published AADR labels, with no removal of outliers or close relatives. High-throughput qpAdm screens can have high false discovery rates4, and a non-rejection can come from low power. A qpWave rank is a first check, and it does not replace a model that is tested against alternatives.
Data and methods. All runs used the AADR v66 1240K data with Nexju's supplements (dataset aadr-v66-ext-3), with published population labels and no aliases. Each run used 714,138 to 720,467 SNPs that all of its populations share, and the standard errors come from a block jackknife. The threshold was 0.01. Figs 1 to 4 used twelve right populations: Mbuti, Russia_UstIshim_IUP, Russia_Kostenki_UP, Luxembourg_Loschbour_Mesolithic, Georgia_KotiasKlde_Mesolithic, Iran_GanjDareh_N, Israel_Natufian, Turkey_N, Han, Papuan, Karitiana and Morocco_Iberomaurusian. Figs 5 and 6 moved Turkey_N and Luxembourg_Loschbour_Mesolithic to the left set and added Russia_Samara_EN_Mesolithic to the right set, which then had eleven populations. The left populations were Russia_Samara_EBA_Yamnaya, Russia_Altai_Afanasievo, Czechia_EBA_CordedWare, Germany_Esperstedt_CordedWare and Poland_GlobularAmphora, with Turkey_N and Luxembourg_Loschbour_Mesolithic in Figs 5 and 6. The highest rank of each test has no degrees of freedom and is not tested.
1.
Reich, D. et al. Reconstructing Native American population history. Nature 488, 370-374 (2012). doi:10.1038/nature11258
2.
Haak, W. et al. Massive migration from the steppe was a source for Indo-European languages in Europe. Nature 522, 207-211 (2015). doi:10.1038/nature14317
3.
Harney, É., Patterson, N., Reich, D. & Wakeley, J. Assessing the performance of qpAdm: a statistical tool for studying population admixture. Genetics 217, iyaa045 (2021). doi:10.1093/genetics/iyaa045
4.
Flegontova, O. et al. Performance of qpAdm-based screens for genetic admixture on graph-shaped histories and stepping stone landscapes. Genetics 230, iyaf047 (2025). doi:10.1093/genetics/iyaf047
5.
Mathieson, I. et al. Genome-wide patterns of selection in 230 ancient Eurasians. Nature 528, 499-503 (2015). doi:10.1038/nature16152
6.
Lazaridis, I. et al. Ancient human genomes suggest three ancestral populations for present-day Europeans. Nature 513, 409-413 (2014). doi:10.1038/nature13673
7.
Patterson, N. et al. Large-scale migration into Britain during the Middle to Late Bronze Age. Nature 601, 588-594 (2022). doi:10.1038/s41586-021-04287-4
The same PCA axes and individuals read on the plain map and on the entropy-rescaled maps of Taleb et al.: which statements about the nearest group, the side and the position between two groups change, and which do not.
Where modern English groups sit among ancient British, continental Germanic and neighbouring modern groups on a conventional and two entropy-rescaled PCA maps, and which distance statements hold across three reference panels.
How entropy-rescaled PCA turns map positions into distances between groups: the rescaling curve, the four steps, a worked example with two individuals, and a plain versus rescaled comparison on a Southeast Balkans series.
MAMvagnus Albertus ·
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