
Newsletter
newsletter.RmdCafriplotsR Newsletter
Updates on major milestones for the CafriplotsR package
May 2026
New capabilities
Switch between the internal taxonomic backbone and WCVP
CafriplotsR now ships with a second taxonomic backbone: the World Checklist of Vascular Plants (WCVP). The internal CafriplotsR backbone remains the default but it is now possible to work following the WCVP nomenclature.
The motivation is the same as for citation tracking: transparency about taxonomic provenance. Whenever data leave the database, the user knows exactly which reference system was used to interpret each name, and can switch backbones.
The backbone is selected at query time via a single argument:
con <- connect_cafri()$main
query_plots(country = "GABON", backbone = "wcvp", extract_individuals = T)
query_taxa(species = "Dacryodes edulis", backbone = "wcvp", check_synonymy = F)When backbone = "wcvp", the standard taxonomy columns
are replaced with the WCVP data. Two extra columns make the substitution
transparent:
-
name_source—"wcvp"if the taxon resolved to a WCVP name,"internal"if it fell back silently to the Cafriplots backbone (no WCVP match) -
alt_taxon_name— the original internal name preserved alongside, so you can always trace back to the Cafriplots reference
The current version of the WCVP can be checked using the following code line (this is the most recent one from early January 2026):
con.taxa <- connect_cafri()$taxa
get_wcvp_status(con_taxa = con.taxa)Internal IDs (idtax_n, the taxon identifier,
idtax_good_n, the identifier of the accepted name) are
preserved; the WCVP analogues (wcvp_plant_name_id,
wcvp_accepted_plant_name_id) are added as separate columns.
Each row thus remains anchored to both reference systems
simultaneously.
The same toggle is available in the interactive apps:
-
launch_taxonomic_match_app()— the backbone-selection modal now offers WCVP as an alternative whenever WCVP data are present in the taxa database. -
launch_query_plots()— extraction can be run in WCVP space; the source of every taxonomic name is documented in the output tables vianame_source.
Aggregated taxa-level traits from individual measurements
Individual measurements (e.g. DBH, height, etc.) associated with forest inventories can be aggregated by taxon and exposed as taxa-level traits, ready to be grafted onto any future query — exactly like wood density traits or other taxa-level traits coming from external compilations.
Aggregation is declarative: a small configuration
table (trait_aggregation_config) holds rules such as
“take the 95th percentile of stem diameter, restricted to
individuals identified at species level or below, with at least 5
measurements”. The pipeline reads the rules, computes the
aggregated value per taxon, and writes the result into
taxa_traits_measures:
Once generated, these aggregated traits behave exactly like
any other taxa-level trait: query_taxa_traits()
returns them transparently, and query_individual_features()
/ query_plots() graft them onto inventory individuals
through the taxonomic link. From the user’s perspective, there is no
second pipeline to run.
Public access and data sovereignty. Aggregated traits are tagged with a dedicated, non-public citation (
CafriplotsR_aggregated) and the row-level security policy ontaxa_traits_measuresisRESTRICTIVE: the public connection cannot see them. They are visible only to authenticated users.
This taxa-level trait aggregation system enables a two-way exchange: when data are imported, users contribute to better documenting the traits of the species they have inventoried, while simultaneously benefiting from trait data already included.
Simpler database connection
Connecting to the database is now a one-line affair. The new
connect_cafri() replaces the previous two-step pattern of
calling call.mydb() and call.mydb.taxa()
separately — a single credential prompt opens both
databases at once and stashes the connections so any subsequent package
function reuses them transparently:
cons <- connect_cafri()
cons$main # main database
cons$taxa # taxa databaseThree additional improvements come with this change:
-
.Renvironcredentials are now detected automatically. If you previously ransetup_db_credentials()to persistMYDB_USERandMYDB_PASS, you no longer need theuse_env_credentials = TRUEargument — the package detects them and connects automatically. - Username is now asked before password, as in any standard login form.
-
A wrong password no longer stays cached. Previously
a typo was stored in memory and every subsequent connection attempt
reused it until users discovered
reset = TRUE. Authentication failures now clear the cache and re-prompt automatically in interactive mode.
The existing call.mydb() and
call.mydb.taxa() functions are unchanged for backward
compatibility. See the Database
Connections Guide for the full reference.
March 2026
New data
Tervuren xylarium Wood Density Database (TWDD) integrated
A large wood density dataset — the TWDD — has been added to the database. It contains 13,332 samples spanning 2,994 species, 1,022 genera, and 156 plant families across six continents, with 72% of records from Africa.
The TWDD adds 1,164 species, 160 genera, and 8 plant families not previously documented.
Before integration, the taxonomy of the TWDD was standardized against the CafriplotsR taxonomic backbone to ensure consistency with the rest of the database. A total of 12,970 values from the TWDD were added.
Citation requirement: Any use of this dataset must cite the original publication:
Verbiest W.W.M., Hicter P., Beeckman H. et al. (2026). The Tervuren xylarium Wood Density Database (TWDD). Scientific Data, 13, 243. https://doi.org/10.1038/s41597-026-06563-2
New capabilities
Citation tracking for taxa-level traits
Taxa-level trait measurements stored in the database are now linked
to their original sources — published studies or trait databases from
which values were extracted. When you enrich a species dataset or
explore traits through the interactive apps
(launch_taxo_backbone_app() and
launch_taxonomic_match_app()), a dedicated Data
Sources panel lists the citations involved and the number of
measurements/observations from each source.
This makes proper attribution straightforward and unambiguous: the panel lists the full reference for each source so that users know exactly what to cite when using these data. This new development reinforces one of the core goals of this package, which is to facilitate the integration and reuse of diverse datasets. Achieving that requires being as transparent as possible about this integration and therefore respecting the data-sharing requirements of the underlying publications and databases.
For R users: The
query_taxa_traits()function now acceptsinclude_citation = TRUEto attach citation information directly to the returned data frame. Both wide and long output formats are supported.
Public access mode for two interactive Shiny apps
Two apps in the CafriplotsR toolkit can now be launched without database credentials — useful for collaborators, reviewers, or anyone who wants to explore the data without requesting a personal account:
Taxonomic backbone browser (
launch_taxo_backbone_app()): Browse the full taxonomic reference, search by name or identifier, explore the taxonomic hierarchy, and extract taxa-level traits as wide or long tables with associated citations.Taxonomic harmonisation & trait enrichment app (
launch_taxonomic_match_app()): Upload a species list, standardise names against the CafriplotsR backbone, and enrich with traits from the database — all in a guided, step-by-step interface.
In public mode the apps connect automatically using read-only credentials, so no login is required. Both apps display a clear banner indicating that you are operating in public mode with read-only access.