The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Rclade automatically detects and parses four taxonomy label formats:
| Format | Separator | Prefix | Example |
|---|---|---|---|
| GTDB | ; |
__ |
d__Bacteria;p__Proteobacteria |
| Silva | ; |
none | Bacteria;Proteobacteria |
| NCBI | ; |
none | cellular organisms;Bacteria |
| Custom rank | _ + code |
none | species_d_Bacteria_p_Proteobacteria |
library(Rclade)
# Load example data
data(example_tree)
# Auto-detection works in most cases
p <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "auto",
add_timescale = FALSE)
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:28.155+08:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-16T00:09:28.155+08:00 | INFO | Tree input : phylo object
#> 2026-09-16T00:09:28.155+08:00 | INFO | Rank : phylum
#> 2026-09-16T00:09:28.155+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:28.155+08:00 | INFO | Unit : auto
#> 2026-09-16T00:09:28.155+08:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-16T00:09:28.156+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:28.156+08:00 | INFO | Internal nodes : 49
#> 2026-09-16T00:09:28.156+08:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-16T00:09:28.156+08:00 | INFO | Input validation passed
#> 2026-09-16T00:09:28.157+08:00 | INFO | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:28.157+08:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:28.157+08:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:28.160+08:00 | INFO | Detected format : GTDB
#> 2026-09-16T00:09:28.161+08:00 | INFO | Groups found : 5
#> 2026-09-16T00:09:28.161+08:00 | INFO | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:28.161+08:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:28.161+08:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:28.162+08:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:28.162+08:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-16T00:09:28.163+08:00 | INFO | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:28.163+08:00 | INFO | Step 4/7: Color generation
#> 2026-09-16T00:09:28.163+08:00 | INFO | Color palette : viridis
#> 2026-09-16T00:09:28.163+08:00 | INFO | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:28.205+08:00 | INFO | Collapsing 5 clades...
#> 2026-09-16T00:09:28.216+08:00 | INFO | Clade collapse complete
#> 2026-09-16T00:09:28.216+08:00 | INFO | Timer 'tree_rendering': 53 ms
#> 2026-09-16T00:09:28.217+08:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:28.245+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:28.245+08:00 | INFO | Groups parsed : 5
#> 2026-09-16T00:09:28.245+08:00 | INFO | Groups collapsed : 5
#> 2026-09-16T00:09:28.246+08:00 | INFO | Singleton groups : 0
#> 2026-09-16T00:09:28.246+08:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-16T00:09:28.246+08:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-16T00:09:28.246+08:00 | INFO | Taxonomy format : GTDB
#> 2026-09-16T00:09:28.246+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:28.246+08:00 | INFO | Timescale : disabled
#> 2026-09-16T00:09:28.246+08:00 | INFO | plot_timetree completed successfullyDetection applies conservative “clear majority” rules: GTDB requires
a [dpcofgsk]__ prefix-match score >= 0.6
and a semicolon-delimiter majority; embedded requires a
_[dpcofgsk]_ match score >= 0.6; NCBI/Silva first
require a semicolon majority and then compare prefix scores. Ambiguous
labels fall back to "unknown". Note that accession-prefixed
embedded labels with double-underscore separators
(e.g. GCA_xxx_d__Archaea_p__Nanoarchaeota) are correctly
detected as embedded (not GTDB) and are parsed by all three
delimiter modes; for label schemes with extra intermediate ranks (e.g. a
superphylum field), use
taxonomy_format = "custom_regex" with explicit per-rank
patterns.
Check how well your labels can be parsed before visualization:
labels <- example_tree$tip.label
summarize_taxonomy_quality(labels, format = "GTDB")
#> === Taxonomy Label Parsing Quality Report ===
#> Total labels: 50
#> Detected format: GTDB
#>
#> Per-rank parse rates:
#> kingdom 0.0% (0/50)
#> domain 100.0% (50/50) ====================
#> phylum 100.0% (50/50) ====================
#> class 100.0% (50/50) ====================
#> order 0.0% (0/50)
#> family 0.0% (0/50)
#> genus 0.0% (0/50)
#> species 0.0% (0/50)
#> subspecies 0.0% (0/50)
#>
#> All labels parsed successfully.If auto-detection fails, specify the format explicitly:
# GTDB format
p <- plot_timetree(example_tree, rank = "phylum",
taxonomy_format = "GTDB",
add_timescale = FALSE)
#>
#> ============================================================
#> Rclade: Phylogenetic Tree Visualization
#> ============================================================
#> 2026-09-16T00:09:28.309+08:00 | INFO | Starting plot_timetree pipeline
#> 2026-09-16T00:09:28.309+08:00 | INFO | Tree input : phylo object
#> 2026-09-16T00:09:28.309+08:00 | INFO | Rank : phylum
#> 2026-09-16T00:09:28.309+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:28.309+08:00 | INFO | Unit : auto
#> 2026-09-16T00:09:28.310+08:00 | INFO | Step 1/7: Input validation and reading
#>
#> --------------------------------------------------
#> >> Input Validation
#> --------------------------------------------------
#> 2026-09-16T00:09:28.310+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:28.310+08:00 | INFO | Internal nodes : 49
#> 2026-09-16T00:09:28.310+08:00 | INFO | Edge lengths range : 40.1579 to 2758.4006
#> 2026-09-16T00:09:28.310+08:00 | INFO | Input validation passed
#> 2026-09-16T00:09:28.311+08:00 | INFO | Timer 'input_reading': 1 ms
#> 2026-09-16T00:09:28.311+08:00 | INFO | Step 2/7: Taxonomy parsing
#> 2026-09-16T00:09:28.311+08:00 | INFO | Using rank-based taxonomy: phylum
#> 2026-09-16T00:09:28.315+08:00 | INFO | Detected format : GTDB
#> 2026-09-16T00:09:28.315+08:00 | INFO | Groups found : 5
#> 2026-09-16T00:09:28.315+08:00 | INFO | Timer 'taxonomy_parsing': 4 ms
#> 2026-09-16T00:09:28.315+08:00 | INFO | Step 3/7: MRCA computation and monophyly check
#> 2026-09-16T00:09:28.315+08:00 | INFO | Checking monophyly and computing MRCA for each group...
#> 2026-09-16T00:09:28.316+08:00 | INFO | Valid groups for collapse: 5 out of 5 total groups
#> 2026-09-16T00:09:28.316+08:00 | INFO | Valid MRCA nodes : 5
#> 2026-09-16T00:09:28.317+08:00 | INFO | Timer 'mrca_computation': 1 ms
#> 2026-09-16T00:09:28.317+08:00 | INFO | Step 4/7: Color generation
#> 2026-09-16T00:09:28.317+08:00 | INFO | Color palette : viridis
#> 2026-09-16T00:09:28.317+08:00 | INFO | Step 5/7: Tree rendering
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> ! # Invaild edge matrix for <phylo>. A <tbl_df> is returned.
#> 2026-09-16T00:09:28.358+08:00 | INFO | Collapsing 5 clades...
#> 2026-09-16T00:09:28.370+08:00 | INFO | Clade collapse complete
#> 2026-09-16T00:09:28.370+08:00 | INFO | Timer 'tree_rendering': 53 ms
#> 2026-09-16T00:09:28.370+08:00 | INFO | Step 6/7: Timescale integration
#>
#> ============================================================
#> Pipeline Complete
#> ============================================================
#> 2026-09-16T00:09:28.400+08:00 | INFO | Tips : 50
#> 2026-09-16T00:09:28.400+08:00 | INFO | Groups parsed : 5
#> 2026-09-16T00:09:28.400+08:00 | INFO | Groups collapsed : 5
#> 2026-09-16T00:09:28.400+08:00 | INFO | Singleton groups : 0
#> 2026-09-16T00:09:28.400+08:00 | INFO | Skipped (non-monophyletic) : 0
#> 2026-09-16T00:09:28.401+08:00 | INFO | Skipped (root/zero-tip) : 0
#> 2026-09-16T00:09:28.401+08:00 | INFO | Taxonomy format : GTDB
#> 2026-09-16T00:09:28.401+08:00 | INFO | Layout : rectangular
#> 2026-09-16T00:09:28.401+08:00 | INFO | Timescale : disabled
#> 2026-09-16T00:09:28.401+08:00 | INFO | plot_timetree completed successfully
print(p)NCBI taxonomy uses position-based rank mapping. Note that this may produce systematic rank offsets in non-standard lineages (e.g., viruses where Riboviria is a realm, not a domain). For critical applications, consider using GTDB or Silva format, or providing custom_patterns.
For non-standard formats:
For embedded (Format A) labels, Rclade supports three delimiter matching strategies:
| Mode | Description | Best for |
|---|---|---|
reverse (default) |
Match ranks from right to left | Labels where taxon names contain underscores |
greedy |
Match ranks from left to right using character-class boundaries | Simple labels with no underscores in names |
segment |
Extract content between delimiters | Preserving underscores within values |
# Default reverse mode
p <- plot_timetree(tree, rank = "phylum",
add_timescale = FALSE,
taxonomy_format = "custom_rank",
taxonomy_delimiter_mode = "reverse")
# Segment mode for labels with underscores in taxon names
p <- plot_timetree(tree, rank = "phylum",
add_timescale = FALSE,
taxonomy_format = "custom_rank",
taxonomy_delimiter_mode = "segment")You can extend or override the default rank codes and delimiters with
taxonomy_levels. This is useful for non-standard ranks such
as kingdom (k) or subspecies (ss).
For embedded (Format A) labels, provide a list of rank codes and their prefixes:
p <- plot_timetree(tree, rank = "phylum",
add_timescale = FALSE,
taxonomy_format = "custom_rank",
taxonomy_levels = list(
codes = c("k", "d", "p", "c", "o", "f", "g", "s", "ss"),
names = c("_k_", "_d_", "_p_", "_c_",
"_o_", "_f_", "_g_", "_s_", "_ss_")
))The codes vector defines the short rank codes, and
names defines the delimiters used in the labels. The same
taxonomy_levels object is propagated through highlighting,
monophyly checks, special identifier resolution, and external taxonomy
file merging.
Rclade supports taxonomy formats from several databases. If you use data from these sources in published research, please cite them appropriately:
Rclade also builds on the ggtree and deeptime R packages:
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.