Skip to main content

A massively parallel GPU read mapper using OpenCL.

Project description

PEANUT is a read mapper for DNA or RNA sequence reads. Read mapping is the process of aligning biological DNA or RNA sequencing reads to a known reference genome.

By exploiting the massive parallelism of modern graphics processors and a novel index datastructure, PEANUT achieves supreme sensitivity and speed compared to current state of the art read mappers like BWA MEM, Bowtie2 and RazerS3. PEANUT thereby allows to report both only the best hits or all hits.

For details about PEANUT, please refer to our scientific paper “Massively Parallel Read Mapping on GPUs with PEANUT” (under review). A preprint is available at


  • A POSIX compatible OS (e.g. Linux, MacOS X, FreeBSD)
  • an NVIDIA GPU with up-to-date proprietary drivers (this may change in the future as the AMD drivers become more mature)
  • Cython >= 0.19
  • Pyopencl >= 2013.1
  • Numpy >= 1.7
  • Python >= 3.2


Using easy_install, all dependencies will be installed automatically if missing:

$ easy_install3 peanut

When installing manually from, just execute:

$ python3 install


PEANUT will be available as a command line tool. To index a reference genome genome.fasta, issue the following:

$ peanut index genome.fasta genome.index.hdf5

To map paired end reads reads.1.fastq and reads.2.fastq onto the indexed reference, use the following invocation:

$ peanut map --threads 8 genome.index.hdf5 reads.1.fastq reads.2.fastq | samtools view -Sb - > mapped.bam

As can be seen, PEANUT outputs hits in the SAM format. Hence, output has to be piped into samtools to obtain a BAM file. PEANUT buffers reads and hits in GPU and CPU memory. The default buffer settings of PEANUT are optimized for a GPU with at least 2.5GB memory and a CPU with 16GB memory (but 8GB should do, too). You can lower both buffer sizes to adapt for weaker systems, e.g.:

$ peanut map --read-buffer 100000 --hits-buffer 500000 ...

This however can reduce performance since the amount of possible parallelelism on the GPU is affected. For further help, invoke:

$ peanut --help

or visit


  • 26 May 2014: Release 1.1 of PEANUT. Reduced memory usage (at most 1/2 if you are lucky).
  • 16 May 2014: Release 1.0.3 of PEANUT. Changed the argument order for the map subcommand to agree with other mappers.
  • 7 May 2014: Release 1.0.2 of PEANUT. More fixes for alignment selection in case of paired end reads. Fixed missing import and –query-buffer not being considered.
  • 30 Apr 2014: Release 1.0.1 of PEANUT. Improved flag usage in SAM output. Rescaled mapping quality in accordance with the paper. Fixed rare cases of where the wrong mate alignment was chosen as the best aligment.


If you use PEANUT in your publication, please cite the following preprint for now:

Köster, J., Rahmann, S., 2014. Massively parallel read mapping on GPUs with PEANUT. arXiv:1403.1706.

Project details

Release history Release notifications

History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


This version
History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
peanut-1.1.tar.gz (587.4 kB) Copy SHA256 hash SHA256 Source None May 26, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page