⚠️ This release is a major revision of the package with breaking changes to the previous interface. Extensive refactoring, bug fixes, and performance improvements bring the package to its first stable release. The previous release (prototypical version) remains available as a release asset:tantale-full-history-2026-09-22.bundle.

An integrated collection of functions for TALE mining and analysis with the R language

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:

Installation

The 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.

1. Install the R package

# install.packages("pak")  # if you don't already have it
pak::pkg_install("scunnac/tantale", dependencies = TRUE, upgrade = FALSE)

2. Make sure conda is available

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.

3. Check everything is in place

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:

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.

Also needed

Usage

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.

Related software

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).

Citation

Run citation("tantale") for a reference to the package and to the papers of the methods it wraps or reimplements.


NOTE :


Licence

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:

Use of large language models

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.