R2DT Version 2.3
We are pleased to announce the release of R2DT version 2.3! This release makes R2DT easier to run outside Docker, improves diagram quality for custom templates, clarifies how pseudoknots and tRNA numbering are drawn, and updates key dependencies.
Highlights
Better support for running R2DT outside Docker
R2DT no longer relies on hardcoded Docker paths to find the Traveler utility scripts (infernal2mapping.py, enrich_json.py, and json2svg.py). The scripts are now located automatically using the new R2DT_TRAVELER_UTILS environment variable, the standard Docker location, or the Traveler installation found in PATH:
export R2DT_TRAVELER_UTILS=/path/to/traveler/utils
Previously, running R2DT outside Docker caused a silent fallback to traveler --all, which could produce different layouts and skipped the enriched JSON/SVG outputs. R2DT now prints a clear warning whenever the fallback is used.
In addition, the documentation now describes a minimal installation for drawing sequences with known templates using r2dt.py draw --force_template, which requires only Traveler, Infernal, Bio-Easel, the jiffy Infernal scripts, and a few Python packages. This makes it easier to embed R2DT in other pipelines, such as VADR-based genome annotation workflows.
Thanks to Eric Nawrocki for reporting the issue and testing the fixes.
Improved font sizes for custom templates
Nucleotide font sizes are now adjusted based on the spacing of the layout for all template sources, including custom templates. Previously the adjustment only applied to Rfam and GtRNAdb templates, so diagrams generated with local_data templates could render with very small fonts.
Clearer pseudoknot rendering

Pseudoknot base pairs are now drawn with one connection line per base pair, matching the rendering convention used for nested base pairs. Previously each pseudoknot was summarised with a single diagonal line, which showed that two regions paired but not which nucleotides paired with which. The example above shows the pseudoknot of a ZMP/ZTP riboswitch (RF01750). Thanks to Eric Nawrocki for contributing this improvement to Traveler (cusbg/traveler#20), and to David Hoksza for reviewing and merging it, extending it to json2svg.py, and adding a --pseudoknot-single-line opt-out for anyone who prefers the previous rendering.
Correct numbering labels on tRNA diagrams
tRNA diagrams drawn from GtRNAdb templates use the standard tRNA numbering from the template. Because of a bug in Traveler, the rule that hides the sequential (per-sequence) numbering was never applied, so both label sets were drawn on top of each other at every numbering position, making them unreadable. Diagrams now show a single, legible set of template numbers. Thanks again to Eric Nawrocki for the fix.
Covariation shown with base-pair rectangles
Covariation from R-scape annotations is now displayed with rectangles behind base pairs instead of circles, making covarying base pairs easier to see. See Covariation visualisation for details.
Other improvements
Template-free mode now uses the automatic layout engine picker to select the best layout
FASTA index validation —
.ssiindex files are checked for both existence and validity, and stale indexes are regenerated automatically (thanks to @afg1)Fixed
nancoordinates produced by ViennaRNA for small hairpin loops in template-free modeImproved gap character processing in Stockholm RF lines
Pillow updated to versions 11+ for Python 3.13 compatibility (thanks to Eric Nawrocki)
Traveler updated to 4b4abd2, which brings in the pseudoknot and numbering improvements above along with a fix for
--numberingdropping the last requested positionViennaRNA updated to 2.7.2, which provides pre-built wheels for Python 3.12 and 3.13. Version 2.6.4 had wheels only up to Python 3.11, so newer versions fell back to compiling ViennaRNA from source, which needs a full build toolchain and often fails. This matters when installing R2DT outside Docker (thanks to Eric Nawrocki)
Documentation
New minimal installation guide for drawing with known templates
New iCn3D example in the PDB documentation
XRNA-React has been renamed to Exornata
Getting started
Pull the latest Docker image:
docker pull rnacentral/r2dt:latest
Or visit r2dt.bio to try R2DT online.
Links
Acknowledgements
A big thank you to everyone who helped make this release possible, especially:
David Hoksza for maintaining the Traveler software that R2DT is built on, and for reviewing and releasing the pseudoknot and numbering label changes in this release,
Eric Nawrocki for detailed bug reports, dependency updates, and the pseudoknot rendering and numbering label contributions to Traveler,
@afg1 for the FASTA index improvements,
and everyone else from the R2DT team.