Sequence Bloom Tree, supporting determined/how split filters
- Jellyfish (Version 2.2.0 or later)
- SDSL-lite (Has to be cloned from github.com/simongog/sdsl-lite after April 2017; earlier versions had a problem with RRR in certain configurations)
- CRoaring (https://github.com/RoaringBitmap/CRoaring)
- The tutorial makes use of ntCard (https://github.com/bcgsc/ntCard)
To install HowDeSBT from the source:
git clone https://github.com/medvedevgroup/HowDeSBT
If you have installed the dependencies somewhere other than
${HOME}
, you need to modify the Makefile. Specifically, in
both the CXXFLAGS
and LDFLAGS
definitions
$${HOME}
should be changed to your install path.
(There are other ways to accomplish this, see the note at the end of this step.)
Jellyfish installation requires an extra step for its include directory. After you have installed Jellyfish, do
cd ${HOME}/include
ls | grep jellyfish
You should see something like
jellyfish-2.2.6
where 2.2.6 is the version of Jellyfish you've installed. Then make a symbolic link named 'jellyfish' that points to the includes directory for the version you've installed:
cd ${HOME}/include
ln -s jellyfish-2.2.6/jellyfish jellyfish
Note: the symbolic link is a workaround for the way that Jellyfish installs its files. That install expects the user to have the program pkg-config installed and an environment variable PKG_CONFIG_PATH defined. The Makefile here woud then use pkg-config to get the path to the include files. While that paradigm is apparently widespread it isn't universal. The symbolic link workaround seems less of a burden than requiring that users install another package and set up an environment variable. See gmarcais/Jellyfish#139 for more details.
cd HowDeSBT
make
cd HowDeSBT
cp howdesbt ${HOME}/bin
Another alternative is to make sure the path to the HowDeSBT directory is in your PATH environment variable.
The quick start tutorial shows expected results which can be compared against your tutorial results.
A usage tutorial can be found at https://github.com/medvedevgroup/HowDeSBT/tree/master/tutorial
The command howdesbt ?
will show a list of subcommands with brief
descriptions. As of this writing, that will look like this:
$ howdesbt ?
makebf-- convert a sequence file to a bloom filter
cluster-- determine a tree topology by clustering bloom filters
build-- build a sequence bloom tree from a topology file and leaves
query-- query a sequence bloom tree
version-- report this program's version
The command howdesbt ?<subcommand>
will give a more detailed
description of a subcommand. For example, howdesbt ?makebf
gives details for how to convert a sequence file to a bloom filter.
If you use HowDeSBT, please cite
- Robert S Harris and Paul Medvedev, Improved representation of sequence bloom trees, Bioinformatics, btz662