MixMapper: Admixture parameter and topology inference using allele frequency divergences


Current release: MixMapper v2.0 (May 29, 2014)

The MixMapper software performs admixture inference from allele frequency moment statistics as described in:

Abstract: The recent explosion in available genetic data has led to significant advances in understanding the demographic histories of and relationships among human populations. It is still a challenge, however, to infer reliable parameter values for complicated models involving many populations. Here we present MixMapper, an efficient, interactive method for constructing phylogenetic trees including admixture events using single nucleotide polymorphism (SNP) genotype data. MixMapper implements a novel two-phase approach to admixture inference using moment statistics, first building an unadmixed scaffold tree and then adding admixed populations by solving systems of equations that express allele frequency divergences in terms of mixture parameters. Importantly, all features of the tree, including topology, sources of gene flow, branch lengths, and mixture proportions, are optimized automatically from the data and include estimates of statistical uncertainty. MixMapper also uses a new method to express branch lengths in easily interpretable drift units. We apply MixMapper to recently published data for HGDP individuals genotyped on a SNP array designed especially for use in population genetics studies, obtaining confident results for 30 populations, 20 of them admixed. Notably, we confirm a signal of ancient admixture in European populations---including previously undetected admixture in Sardinians and Basques---involving a proportion of 20-40% ancient northern Eurasian ancestry.

Related Work

MixMapper can be thought of as a generalization of the qpgraph software of Patterson et al. (Genetics, 2012), which takes as input genotype data, along with a proposed arrangement of admixed and unadmixed populations, and returns branch lengths and mixture fractions that produce the best fit to allele frequency moment statistics measured on the data. MixMapper, by contrast, performs the fitting in two stages, first constructing an unadmixed scaffold tree via neighbor-joining and then automatically optimizing the placement of admixed populations onto this initial tree. Thus, no topological relationships among populations need to be specified in advance.

MixMapper is also similar in spirit to the independently developed TreeMix method of Pickrell et al. (PLoS Genetics, 2012). Like MixMapper, TreeMix builds admixture trees from second moments of allele frequency divergences, although it does so via a composite likelihood maximization approach made tractable with a multivariate normal approximation. Procedurally, TreeMix is structured in a "top-down" fashion, whereby a full set of populations is initially fit as an unadmixed tree, and gene flow edges are added sequentially to account for the greatest errors in the fit. This format makes TreeMix well-suited to handling very large trees: the entire fitting process is automated and can include arbitrarily many admixture events simultaneously. In contrast, MixMapper is designed as an interactive tool to maximize flexibility and precision with a "bottom-up" approach, beginning with a carefully screened unadmixed scaffold tree to which admixed populations are added with best-fitting parameter solutions.

Source Code and Executable (updated 5/29/14)

Our source code, written in C++ and MATLAB, is available for academic and non-profit use. Additionally, for users who do not have access to MATLAB, we provide a compiled executable that can be run with an install of the (free) MATLAB Compiler Runtime. (The MCR version is more cumbersome to use, however.)

The package contains a detailed README explaining how to install and use the software. Note that the MATLAB code for mixture fitting requires a MATLAB installation with the Bioinformatics Toolbox and Optimization Toolbox. If the Parallel Computing Toolbox is also installed, fitting of bootstrap replicates can be performed in parallel. We have tested the code on MATLAB versions 7.14 (R2012a) and 8.0 (R2012b).

Change Log


We welcome feedback, questions and suggestions. Contact information is available at the primary authors' websites: