The kfs program reads in multiline FASTA records, counts canonical kmers using the Abseil C++ container:flat_hash_map.
Integration of the Abseil C++ kit requires use of bazel, e.g., on OS X:
$ brew cask install homebrew/cask-versions/java8
$ brew install bazel
Clone the Abseil C++ Github repository:
$ make abseil-cpp
Edit the WORKSPACE file in this directory to specify the correct path for the Abseil C++ installation.
Then complete the build:
$ make abseil-cpp-build
This can take a few minutes.
$ make kfs
$ make msl
$ make generate_fasta
These targets build binaries bazel-bin/src/kfs, bazel-bin/src/msl, and bazel-bin/src/generate_fasta, respectively.
$ bazel-bin/src/generate_fasta > test.fa
(Or build the generate_test_data target.)
Specify variables K (integer) and FASTA (path to FASTA sequences), before running tests with those variables, e.g.:
$ export K=29
$ export FASTA=test.fa
$ /usr/bin/time -l bazel-bin/src/kfs -k ${K} -i ${FASTA}
...
Etc.