title: Disk-based k-mer counting on a PC.
abstract: BACKGROUND
  The k-mer counting problem, which is to build the histogram of occurrences of every k-symbol long substring in a given text, is important for many bioinformatics applications. They include developing de Bruijn graph genome assemblers, fast multiple sequence alignment and repeat detection.
  
  
  RESULTS
  We propose a simple, yet efficient, parallel disk-based algorithm for counting k-mers. Experiments show that it usually offers the fastest solution to the considered problem, while demanding a relatively small amount of memory. In particular, it is capable of counting the statistics for short-read human genome data, in input gzipped FASTQ file, in less than 40 minutes on a PC with 16 GB of RAM and 6 CPU cores, and for long-read human genome data in less than 70 minutes. On a more powerful machine, using 32 GB of RAM and 32 CPU cores, the tasks are accomplished in less than half the time. No other algorithm for most tested settings of this problem and mammalian-size data can accomplish this task in comparable time. Our solution also belongs to memory-frugal ones; most competitive algorithms cannot efficiently work on a PC with 16 GB of memory for such massive data.
  
  
  CONCLUSIONS
  By making use of cheap disk space and exploiting CPU and I/O parallelism we propose a very competitive k-mer counting procedure, called KMC. Our results suggest that judicious resource management may allow to solve at least some bioinformatics problems with massive data on a commodity personal computer.
authors.affiliation: Institute of Informatics, Silesian University of Technology, Akademicka 16, 44-100 Gliwice, Poland. sebastian.deorowicz@polsl.pl
authors.forename: Sebastian
authors.initials: S
authors.lastname: Deorowicz
authors.forename: Agnieszka
authors.initials: A
authors.lastname: Debudaj-Grabysz
authors.forename: Szymon
authors.initials: S
authors.lastname: Grabowski
mesh_terms: D000465:Algorithms; D000818:Animals; D017173:Caenorhabditis elegans / Q000235:genetics; D015894:Genome, Human; D023281:Genomics / Q000379:methods*; D006801:Humans; D008838:Microcomputers; D016415:Sequence Alignment; D017422:Sequence Analysis, DNA; D012984:Software