Skip to main content

ADAMIXTURE logo

Fast Biobank-Scale Population Genetics Clustering

Python Version PyPI Version License Status Downloads


ADAMIXTURE is a fast CPU/GPU implementation of ADMIXTURE for biobank-scale genetic clustering. .P and .Q outputs remain compatible with ADMIXTURE.

System requirements

Hardware & Platform compatibility

ADAMIXTURE runs cross-platform on Linux, macOS, and Windows, supporting CPU computation as well as GPU acceleration on NVIDIA GPUs (CUDA) and Apple Silicon (MPS).

Software requirements

We recommend creating a fresh Python 3.10+ virtual environment. For a faster installation experience, we highly recommend using uv.

As an example, using uv (recommended):

$ uv venv --python 3.10
$ source .venv/bin/activate
$ uv pip install adamixture

Installation Guide

The package can be installed using pip:

Basic Installation (CPU default)

Uses the pre-compiled C/Cython wheel and does not install PyTorch:

$ pip install adamixture

GPU Installation (NVIDIA CUDA / Apple Silicon MPS)

Includes PyTorch and Ninja for hardware-accelerated execution:

$ pip install "adamixture[gpu]"

The commands above use the binary wheel when one is available for the Python version and platform. Installing directly from a source checkout (for example, with pip install -e .) requires a local C/Cython build toolchain.

Running ADAMIXTURE

To train a model, simply invoke the following commands from the root directory of the project. For more info about all the arguments, please run adamixture --help. Note that BED, VCF, PGEN and BCF are supported.

Supported input files include:

  • PLINK BED: .bed, .bed.gz, .bed.zst, with .bim/.fam sidecars that may also be plain, .gz or .zst.
  • PLINK PGEN: .pgen or .pgen.zst, with .pvar/.psam sidecars that may be plain, .gz or .zst.
  • VCF: .vcf, .vcf.gz and .vcf.zst.
  • BCF: .bcf, .bcf.gz and .bcf.zst.

As an example, the following ADMIXTURE call

$ ./admixture snps_data.bed 8 -s 42

would be equivalent in ADAMIXTURE by running

$ adamixture -k 8 --data_path snps_data.bed --save_dir SAVE_PATH --name snps_data -s 42

By default, the following files will be output to the SAVE_PATH directory (the name parameter will be used to create the full filenames):

  • A .P file, similar to ADMIXTURE.
  • A .Q file, similar to ADMIXTURE.
  • A .png plot file containing the visualization of the inferred ancestry proportions (Q matrix).

Logs are printed to the stdout channel by default. If you want to save them to a file, you can use the command tee along with a pipe:

$ adamixture -k 8 ... | tee run.log

Running with multi-threading

To run ADAMIXTURE using multiple CPU threads, use the -t flag:

$ adamixture -k 8 --data_path data.bed --save_dir out/ --name test -t 8

Running with GPU acceleration

To leverage GPU acceleration (highly recommended for large datasets), use the --device flag:

  • NVIDIA GPU (CUDA):
    $ adamixture -k 8 --data_path data.bed --save_dir out/ --name test --device gpu
    
  • macOS Apple Silicon (MPS):
    $ adamixture -k 8 --data_path data.bed --save_dir out/ --name test --device mps
    

For a step-by-step guide on how to run a complete analysis workflow, see the 1000 Genomes Tutorial.

Multi-K Sweep

Instead of running ADAMIXTURE for a single K, you can automatically sweep over a range of K values using --min_k and --max_k. The data is loaded once, and each K is trained sequentially. K=1 is the no-structure null model and is a valid start for a sweep or a CV baseline:

$ adamixture --min_k 1 --max_k 10 --data_path snps_data.bed --save_dir SAVE_PATH --name snps_sweep

Cross-validation

Use --cv to estimate the optimal K by masking a fraction of genotype entries and measuring prediction error. → Full documentation

$ adamixture -k 8 --cv --data_path data.bed --save_dir out/ --name test

Plotting

By default, ADAMIXTURE automatically generates a png plot at 300 DPI without needing any additional flags. Following the method of Clumppling, it automatically aligns clusters across runs and K values. → Full documentation

Plots can include hierarchical population labels if you provide the arguments (--labels, --labels2, --labels3).

If you want to customize the format and resolution (e.g., to generate a PDF), use --plot (or --plot_single for individual per-K plots in multi-K sweeps):

  • Single K runs (-k): Use --plot.

    $ adamixture -k 8 --data_path data.bed --save_dir out/ --name test --plot pdf 300
    
  • Multi-K sweeps (--min_k and --max_k): Use --plot to configure the combined sweep plot (or --plot_single for individual plots per K).

    $ adamixture --min_k 2 --max_k 10 --data_path data.bed --save_dir out/ --name test --plot pdf 300
    

Projection Mode

Estimate ancestry proportions for new samples using a pre-trained, fixed P matrix (Q-only optimisation). K is detected automatically from P. → Full documentation

$ adamixture-project \
    --data_path new_samples.bed \
    --p_path trained_model/results.8.P \
    --save_dir projection_out/ \
    --name projected

Supervised Mode

Anchor the model with known population labels for a subset of samples while estimating Q freely for unlabeled ones. Labels use the same format as --labels (population name or -). → Full documentation

$ adamixture-supervised \
    --data_path all_samples.bed \
    --labels labels.txt \
    --save_dir supervised_out/ \
    --name supervised_run \
    -k 8

Other options

All hyperparameters and flags can be explored with:

$ adamixture --help

Key arguments:

Argument                                          Default Description
--init als Initialization method: SVD+ALS (als) or random EM priming (em).
--tol 0.1 Convergence tolerance for log-likelihood changes.
--max_iter 10000 Maximum optimization iterations.
-t 1 Number of CPU threads.
-s 42 Random seed.
--device cpu Device to use: cpu, gpu, or mps.
--chunk_size 8192 Number of SNPs in chunk operations.
--n_inits 1 Number of independent initializations (keeps run with best log-likelihood).
--chrom_mode autosomes Chromosome filter: autosomes keeps autosomes 1 to --autosomes; all keeps every chromosome.
--autosomes 22 Number of autosomes kept when --chrom_mode autosomes (equivalent to --specific_chrom 1 2 ... 22).
--specific_chrom None List of specific chromosomes to analyze when --chrom_mode autosomes (overrides --autosomes).
--no_freqs False Do not save the .P allele-frequency matrix.

Algorithm note

The ADAMIXTURE paper introduced Adam-EM as an adaptive first-order optimizer for admixture inference. The package still includes this solver via --algorithm adamem.

In the current implementation, the default is --algorithm brqn. Empirical benchmarking showed that block relaxation with ZAL quasi-Newton acceleration, when paired with our improved SVD+ALS initialization, reaches high-quality solutions in fewer iterations and better wall-clock time. For that reason, BR-QN is the default solver, while Adam-EM remains available for experimentation and reproducibility. Adam-EM tuning parameters are documented in Troubleshooting and Tips.

Troubleshooting and Tips

Common issues and platform notes:

  • macOS: Install libomp via Homebrew (brew install libomp) before compiling.
  • Windows: Pre-compiled wheels are provided on PyPI (pip install adamixture). If compiling from source (pip install -e .), install Build Tools for Visual Studio with Desktop development with C++.
  • CUDA: Set CUDA_HOME or install nvcc via Conda (conda install -c nvidia nvcc).

→ Full documentation

License

This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.

Cite

When using this software, please cite the following paper:

@article{saurina2026adamixture,
  title={ADAMIXTURE: adaptive first-order optimization for biobank-scale genetic clustering},
  author={Saurina-i-Ricos, Joan and Mas Montserrat, Daniel and Ioannidis, Alexander G.},
  journal={Bioinformatics},
  volume={42},
  number={Supplement\_1},
  pages={btag236},
  year={2026},
  doi={10.1093/bioinformatics/btag236},
  url={https://doi.org/10.1093/bioinformatics/btag236}
}

Metadata

Release files for adamixture 1.8.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adamixture 1.8.7
File Size Uploaded
adamixture-1.8.7.tar.gz 21.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for adamixture 1.8.7
File
adamixture-1.8.7-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
adamixture-1.8.7-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
adamixture-1.8.7-cp312-cp312-macosx_14_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 14.0+ x86-64 Details
adamixture-1.8.7-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
adamixture-1.8.7-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
adamixture-1.8.7-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
adamixture-1.8.7-cp311-cp311-macosx_14_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 14.0+ x86-64 Details
adamixture-1.8.7-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
adamixture-1.8.7-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
adamixture-1.8.7-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
adamixture-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 14.0+ x86-64 Details
adamixture-1.8.7-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 170.9 MB

Release files / adamixture-1.8.7.tar.gz

Download URL adamixture-1.8.7.tar.gz
Size 21.7 MB
Tags Source
SHA-256 checksum
How to use checksums
fbd93a171310c9c47f09fff1e6c008bb9d989378a2a62cb333ad6a2ee6d2f309
BLAKE2b-256 checksum
How to use checksums
2133b863a0de8771835d9a37d69e621535eb580d45f0b47e729489921d8924fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp312-cp312-win_amd64.whl

Download URL adamixture-1.8.7-cp312-cp312-win_amd64.whl
Size 12.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3606a368bcd257683526866485046db8049a665f8c45a134a879527e01adea58
BLAKE2b-256 checksum
How to use checksums
efc575edc86a571206f1a6cd661d12a39b59462db5db5a8d356ea09386bbaa32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL adamixture-1.8.7-cp312-cp312-manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6fd85cbffb4480a601a385b87d71fb0424a35c107b896ba4b221227f6fcca1ec
BLAKE2b-256 checksum
How to use checksums
1f84d1feabbacab15b48e10458ee85b25931d281411401a8dd1ecb279f8ee4e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp312-cp312-macosx_14_0_x86_64.whl

Download URL adamixture-1.8.7-cp312-cp312-macosx_14_0_x86_64.whl
Size 12.3 MB
Tags CPython 3.12 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
2af7f79e00d3409574df65f855c693adbca3ddbc869f437e35b5b4736e46b616
BLAKE2b-256 checksum
How to use checksums
a49b2376acd9df0530f3801dcd62c5b170dbd4cbf369a420fca714acde6a9b00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp312-cp312-macosx_14_0_arm64.whl

Download URL adamixture-1.8.7-cp312-cp312-macosx_14_0_arm64.whl
Size 12.5 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
ae8f68baaad2397731a956a38462990046064bdc9468badad069d750c0d1787a
BLAKE2b-256 checksum
How to use checksums
acb7f42cd92e84c1080e43df9079b0deb6f86564e4dd5745d5eb8d64f47e1295
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp311-cp311-win_amd64.whl

Download URL adamixture-1.8.7-cp311-cp311-win_amd64.whl
Size 12.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ee7f744a7c95555d4cf6cec9a7914289489eb2b20a1615f660e570ec73a055a6
BLAKE2b-256 checksum
How to use checksums
fffec23f20c2199f07b587e9ccfa40fc4107cc23bdde3839181deb2fbf1a8586
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL adamixture-1.8.7-cp311-cp311-manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3b3cca90f5d6aa8c556e85373f3bcfd7df9a1811a0abf265b4357a988dfcd0f1
BLAKE2b-256 checksum
How to use checksums
ba96ea4041b6a1819228686aa1c69c4d60dcb7ba0f33cc3c69789dfe28f007ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp311-cp311-macosx_14_0_x86_64.whl

Download URL adamixture-1.8.7-cp311-cp311-macosx_14_0_x86_64.whl
Size 12.3 MB
Tags CPython 3.11 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
1551d88cef6d960aa4262fbba753fa3e4a09884d13f0d4b3c40a509f46604726
BLAKE2b-256 checksum
How to use checksums
10ba76d6ddccee02867f76f8fbd09b24cc05f5e3e8f549c1da5d97583bfedb29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp311-cp311-macosx_14_0_arm64.whl

Download URL adamixture-1.8.7-cp311-cp311-macosx_14_0_arm64.whl
Size 12.5 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
3496402aabb909571a9b69960c7b1bd46efec1bfbb95a09a0d9ea15e440fca85
BLAKE2b-256 checksum
How to use checksums
7d821deae6a52474aba5067da3255870cb4df9c64bc4cc99a1eef3c6b27b80d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp310-cp310-win_amd64.whl

Download URL adamixture-1.8.7-cp310-cp310-win_amd64.whl
Size 12.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
663716db1798e9db1fb0e2b0692ace125a45c732ac3c7230005d8b2cd58dc2a5
BLAKE2b-256 checksum
How to use checksums
ab32f0ecb0b8b2cc0d8c1396dbcd63ea09fbaa42b77a14ce99ab17f844eb051b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL adamixture-1.8.7-cp310-cp310-manylinux_2_28_x86_64.whl
Size 12.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9478d503adae32c18bd27539f7c77f37cde542501502384c67a3e1fc50aa4576
BLAKE2b-256 checksum
How to use checksums
2cf79d7f3403a7ea3e2a395d588316af90d464ab34aa582abcd1839bf6fd1ea5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl

Download URL adamixture-1.8.7-cp310-cp310-macosx_14_0_x86_64.whl
Size 12.3 MB
Tags CPython 3.10 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
1f5f8b8dde6938af031c95a79a77aed8305593f3bc3bbe5c8e6f4eb88740711f
BLAKE2b-256 checksum
How to use checksums
8e130d0c54fedd1a733956853dd05e076f54606efff32d378fbe3797e3efb2ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / adamixture-1.8.7-cp310-cp310-macosx_14_0_arm64.whl

Download URL adamixture-1.8.7-cp310-cp310-macosx_14_0_arm64.whl
Size 12.5 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
6a75b9ba87c1e70c8eeaf9fb6540e18e60b0e5e51043adfafe1b018f5bcf18f2
BLAKE2b-256 checksum
How to use checksums
cacd2fd8f2a562a480d42d40197d018e507bc478a728d8a5445e07102cd49546
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.8.7 This release

13 release files

1.8.6

13 release files

1.8.5

13 release files

1.8.4

13 release files

1.8.2

13 release files

1.8.1

13 release files

1.8.0

13 release files

1.6.2

10 release files

1.6.1

10 release files

1.6.0

10 release files

1.5.5

10 release files

1.5.4

10 release files

1.5.3

10 release files

1.5.2

10 release files

1.5.1

10 release files

1.5.0

10 release files

1.0.2

10 release files

1.0.1

10 release files

1.0.0

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page