
Analyzing TALEs in Xanthomonas genomes (mostly) typically means coordinating several concurrent and complementary tools running on different platforms (Java, Perl), which is cumbersome to script and automate. Making sense of the output is harder still, since there is no easy way to graphically represent the various objects of the analysis.
With tantale, we compiled and extended our previous code wrapping TALE analysis tools into an integrated R interface that further provides an extensive list of utilities for easy plotting. This enables a moderately proficient R programmer to perform entire analysis pipelines directly in R and access result objects for custom manipulations.
The package covers:
tales/tales_msa S3 classes, with subsetting, coercion, and plotting methods – see the tales class article and the tales_msa class article
tales objectThe three steps below install tantale and the programs it runs; “Also
needed” lists what they assume. The reference page of
tantale_setup()
describes the conda environment and the release archives in more detail.
# install.packages("pak") # if you don't already have it
pak::pkg_install("scunnac/tantale", dependencies = TRUE, upgrade = FALSE)
MAFFT, HMMER, mmseqs2 and the Perl dependencies of the target predictors come from a conda environment the package builds for itself, so conda (or mamba, or micromamba) is a prerequisite of the main workflow.
You do not have to install it by hand or know anything about it. If you have
no conda at all, reticulate will install one from inside R:
install.packages("reticulate")
reticulate::install_miniconda()
Note this installs miniconda, not mamba. If you already have conda, mamba
or micromamba, tantale finds it through reticulate::conda_binary() and uses
that instead, with nothing else to do.
tantale::tantale_setup()
This reports what is present and what is missing, and changes nothing.
tantale_setup(install = TRUE) then builds or repairs the environment and
downloads the Java programs and example genomes described below.
Run it once with install = TRUE after installing tantale:
tantale_setup() only.If you have both conda and micromamba,
tantale_setup()prints the binary, the default root and the environment actually in use, precisely so this is visible.
Java on the PATH. AnnoTALE, PrediTALE and TALE correction are Java
programs. tantale_setup() checks for Java too.
Linux, or macOS on an Intel processor. The versions of MAFFT, HMMER and MMseqs2 that tantale pins (later MAFFT versions align TALE repeat strings differently) are built by bioconda for Linux and Intel macOS only. Windows and Apple Silicon are therefore not supported. Continuous integration checks the package on Linux at every change, and on Intel macOS.
The Java programs and example genomes are downloaded once.
AnnoTALE, PrediTALE and TALE correction (about 60 MB, with no conda
package) and the four example genomes of the articles (about 20 MB) are
attached to releases of
this repository. tantale_setup(install = TRUE) downloads them, checks
them against checksums recorded in the package, and keeps them in your R
data directory; set the environment variable TANTALE_DATA_DIR to use
another one. On a machine without internet access, download the two
archives yourself and pass their folder as
tantale_setup(install = TRUE, archive_dir = ...).
library(tantale)
# Find the TALE genes of a genome and load them as a `tales` object.
# tell_tales() writes to a temporary directory unless given `output_dir`.
mai1 <- tales_from_telltales(tell_tales(tantale_genome("MAI1")))
mai1
#> <tales> 9 arrays, 198 parts
#> layers: rvd | 6 other columns
#> rvd
#> ROI_00001 NTERM NS NG NS HD NI NG NN NG HD NI NN N* NI NN HD NG NI NN N ...
#> ROI_00002 NTERM NN N* NN HD HD NI N* NG HD NI NG NN HD NS NG NI NG NN N ...
#> ... ...
#> ROI_00009 NTERM NI HD NN NS NN NG HD NG HD NG NN NG HD NS HD NI NG HD H ...
#> ROI_00010 NTERM NN HD NN HD NG HD HD NG HD NI NI NN HD HD N* NG HD NI CTERM
plot(mai1) # the repeat structure of each array

# Predict their target sites in a set of promoters
promoters <- system.file("extdata", "cladeIII_sweet_promoters.fasta",
package = "tantale")
tales_predict_targets(mai1, subj_file = promoters)
#> # A tibble: 31 × 10
#> tale_id rvds subj_seq_id start end strand ebe_seq score method rank
#> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <dbl> <chr> <dbl>
#> 1 ROI_00001 NS-NG-NS… SWEET14p_B… 346 368 + CATGCA… 15.0 talvez 1
#> 2 ROI_00001 NS-NG-NS… SWEET14p_N… 342 364 + CATGCA… 15.0 talvez 2
#> 3 ROI_00001 NS-NG-NS… SWEET11p_9… 262 284 - TCTACA… 8.56 talvez 3
#> 4 ROI_00001 NS-NG-NS… SWEET11p_9… 505 527 - TATAAC… 7.97 talvez 4
#> 5 ROI_00001 NS-NG-NS… SWEET14p_B… 622 644 + CTCTCA… 7.02 talvez 5
#> 6 ROI_00002 NN-N*-NN… SWEET11p_9… 980 1006 - TGTACC… 9.22 talvez 1
#> 7 ROI_00003 NN-HD-NI… SWEET11p_I… 135 149 + TGCATC… 9.00 talvez 1
#> 8 ROI_00003 NN-HD-NI… SWEET11p_B… 130 144 + TGCATC… 9.00 talvez 2
#> 9 ROI_00003 NN-HD-NI… SWEET11p_9… 1690 1704 + TGCATC… 9.00 talvez 3
#> 10 ROI_00003 NN-HD-NI… SWEET11p_N… 128 142 + TGCATC… 9.00 talvez 4
#> # ℹ 21 more rows
The Get started page walks through this, and the articles cover classification, multiple alignment and frameshift correction.
We know of no other R package for TALE analysis. The field relies on stand-alone programs and web servers, which tantale wraps (AnnoTALE, TALEcorrection, PrediTALE, TALVEZ) or reimplements in R (the DisTAL and FuncTAL comparisons of the QueTAL suite).
Run citation("tantale") for a reference to the package and to the
papers of the methods it wraps or reimplements.
NOTE :
tantale’s own code is under the MIT licence. The programs and data it
bundles or downloads from other projects keep their own terms, listed file by file,
with upstream sources, in
inst/COPYRIGHTS:
LICENSES/COPYING.GPL-3).rvd_dna_specificity
carry no licence and are redistributed by permission of their author,
Alvaro L. Pérez-Quintero. TALVEZ runs Java classes from PlantTFBS, by
Molly Megraw and Artemis G. Hatzigeorgiou, which its authors describe
as free software under the GNU GPL.The authors used large language models (Claude, Anthropic – including Claude Sonnet 5) to assist with code development, debugging, and documentation writing throughout this package. The authors affirm that they are fully responsible for the content of the codebase and its documentation.