GROOT is a tool to type Antibiotic Resistance Genes (ARGs) in metagenomic samples (a.k.a. Resistome Profiling). It combines variation graph representation of gene sets with an LSH indexing scheme to allow for fast classification of metagenomic reads. Subsequent hierarchical local alignment of classified reads against graph traversals facilitates accurate reconstruction of full-length gene sequences using a simple scoring scheme.
GROOT will output an ARG alignment file (in BAM format) that contains the graph traversals possible for each query read; the alignment file is then used by GROOT to generate a resistome profile.
Since version 0.4, GROOT will also output the variation graphs which had reads align. These graphs are in GFA format, allowing you to visualise graph alignments using Bandage and determine which variants of a given ARG type are dominant in your metagenomes. Read the documentation for more info.
Since version 0.8.0, GROOT can now optionally use an LSH Ensemble index to enable containment searching. This is thanks to the excellent method and implementation of Erkang Zhu. This new index allows the reads of varying read length to be queried against groot graphs.
Check out the releases to download a binary. Alternatively, install using Bioconda or compile the software from source.
conda install groot
note: if using Conda make sure you have added the Bioconda channel first
GROOT is written in Go (v1.10) - to compile from source you will first need the Go tool chain. Once you have it, try something like this to compile:
# Clone this repository
git clone https://github.com/will-rowe/groot.git
# Go into the repository and get the package dependencies
cd groot
go get -d -t -v ./...
# Run the unit tests
go test -v ./...
# Compile the program
go build ./
# Call the program
./groot --helpGROOT is called by typing groot, followed by the subcommand you wish to run. There are three main subcommands: index, align and report. This quick start will show you how to get things running but it is recommended to follow the documentation.
# Get a pre-clustered ARG database
groot get -d arg-annot
# Create graphs and index
groot index -i arg-annot.90 -o groot-index -l 100
# Align reads and report
groot align -i groot-index -f reads.fq | groot reportnote: index the graph using a window size <= your maximum expected read length, so for 100bp reads, use
-l 100
If you anticipate variable read lengths, index the graphs for containment searching:
# Create graphs and index for containment searching
groot index -i arg-annot.90 -o groot-index -l 100 --containment -j 0.5note: the above command will allow you to align reads of any length (up to
-l 100) to the graphs, within a containment threshold of 0.5 (-j 0.5)
Please readthedocs for more extensive documentation and a tutorial.
GROOT has now been published in Bioinformatics:
