1 minute read

We have just released version 4.0.0 of our distributed k-mer counter Discount. It is available on GitHub, BioConda, and Maven Central.

The long wait has been mostly due to Slacken having higher priority in recent years. However, as Slacken and Discount share substantial amounts of code (such as the k-mer and minimizer engine), improvements to Slacken sometimes feed through to Discount.

As always, we welcome comments and feedback.

Release notes

This is the long overdue Discount 4.0.0, featuring the following changes among many others:

  • Support for compressed input files (bz2 and gz), except for indexed FASTA (.fai), which does not yet support it.

  • New output format: added the ability to print super-mers as FASTA files, optionally annotated with individual k-mer counts.

  • K-mer counting is more memory efficient.

  • Much more efficient counting with normalized k-mer orientation, by sending forward and reverse k-mers to the same minimizer bin, using canonical minimizers. This halves the amount of shuffle data required for counting with normalization.

  • The “signature” minimizer ordering is no longer supported.

  • Removed most of Fastdoop. FASTA and FASTQ reading are now based on Spark’s text input format, which is easier to maintain and supports compression transparently.

  • Improved performance for indexed FASTA file reading.

  • Java 17 is now the minimum required Java version. This is also the final major version of Discount on Scala 2.12. The next version will be for Scala 2.13 by default (cross-compilation from the same source tree is already possible).

Updated: