Email updates

Keep up to date with the latest news and content from BMC Bioinformatics and BioMed Central.

Open Access Highly Accessed Open Badges Methodology article

Efficient counting of k -mers in DNA sequences using a bloom filter

Páll Melsted1 and Jonathan K Pritchard12

Author Affiliations

1 Department of Human Genetics, The University of Chicago, Chicago IL, 60637, USA

2 Howard Hughes Medical Institute, The University of Chicago, Chicago IL, 60637, USA

BMC Bioinformatics 2011, 12:333  doi:10.1186/1471-2105-12-333

Published: 10 August 2011



Counting k-mers (substrings of length k in DNA sequence data) is an essential component of many methods in bioinformatics, including for genome and transcriptome assembly, for metagenomic sequencing, and for error correction of sequence reads. Although simple in principle, counting k-mers in large modern sequence data sets can easily overwhelm the memory capacity of standard computers. In current data sets, a large fraction-often more than 50%-of the storage capacity may be spent on storing k-mers that contain sequencing errors and which are typically observed only a single time in the data. These singleton k-mers are uninformative for many algorithms without some kind of error correction.


We present a new method that identifies all the k-mers that occur more than once in a DNA sequence data set. Our method does this using a Bloom filter, a probabilistic data structure that stores all the observed k-mers implicitly in memory with greatly reduced memory requirements. We then make a second sweep through the data to provide exact counts of all nonunique k-mers. For example data sets, we report up to 50% savings in memory usage compared to current software, with modest costs in computational speed. This approach may reduce memory requirements for any algorithm that starts by counting k-mers in sequence data with errors.


A reference implementation for this methodology, BFCounter, is written in C++ and is GPL licensed. It is available for free download at webcite