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.
Las tablas ppendemic_tab14, ppendemic_tab15
y ppendemic_tab16 representan extracciones sucesivas de
WCVP. Compararlas permite identificar:
Una inclusion o exclusion observada no implica necesariamente que una especie haya sido descubierta o dejado de ser endemica. Tambien puede reflejar cambios taxonomicos, nomenclaturales o de los criterios de distribucion usados por WCVP. Por eso, esta viñeta distingue los cambios observados de su posible interpretacion.
La unidad de comparacion es taxon_name. Los nombres
presentes solo en la version nueva son inclusiones observadas y los
presentes solo en la version anterior son exclusiones observadas.
Para detectar posibles reemplazos se calcula una puntuacion conservadora entre cada nombre retirado y cada nombre añadido. La puntuacion combina similitud textual y coincidencias en epitetos, autoria, familia y año de publicacion. Estos vinculos son candidatos para revision, no sinonimias confirmadas.
candidate_replacements <- function(removed, added) {
if (nrow(removed) == 0L || nrow(added) == 0L) {
return(tibble::tibble())
}
same_val <- function(x, y) {
!is.na(x) & !is.na(y) & x != "" & y != "" & x == y
}
name_sim <- function(x, y) {
distance <- diag(adist(tolower(x), tolower(y)))
lengths <- pmax(nchar(x), nchar(y))
1 - distance / lengths
}
pairs <- dplyr::cross_join(
removed %>% dplyr::rename_with(~ paste0(.x, "_old")),
added %>% dplyr::rename_with(~ paste0(.x, "_new"))
)
candidates <- pairs %>%
dplyr::mutate(
similarity = name_sim(taxon_name_old, taxon_name_new),
same_species = same_val(Species_old, Species_new),
same_infraspecies = same_val(infraspecies_old, infraspecies_new),
same_author = same_val(taxon_authors_old, taxon_authors_new),
same_family = same_val(family_old, family_new),
same_year = same_val(year_actual_old, year_actual_new),
score = 0.40 * similarity +
0.25 * same_species +
0.10 * same_infraspecies +
0.15 * same_author +
0.05 * same_family +
0.05 * same_year
) %>%
dplyr::filter(score >= 0.50)
if (nrow(candidates) == 0L) {
return(tibble::tibble())
}
candidates %>%
dplyr::mutate(
interpretacion = dplyr::case_when(
same_species & same_infraspecies & coalesce(infraspecific_rank_old != infraspecific_rank_new, FALSE) ~ "Posible cambio de rango",
same_species & coalesce(Genus_old != Genus_new, FALSE) ~ "Posible transferencia de genero",
similarity >= 0.85 & (same_author | same_year) ~ "Posible correccion ortografica",
TRUE ~ "Posible reemplazo taxonomico"
),
puntuacion = round(score, 3)
) %>%
dplyr::select(
exclusion_observada = taxon_name_old,
inclusion_observada = taxon_name_new,
familia = family_new,
interpretacion,
puntuacion
) %>%
dplyr::arrange(dplyr::desc(puntuacion))
}
compare_versions <- function(old, new) {
removed <- dplyr::anti_join(old, new, by = "taxon_name")
added <- dplyr::anti_join(new, old, by = "taxon_name")
candidates <- candidate_replacements(removed, added)
linked_removed <- unique(candidates$exclusion_observada)
linked_added <- unique(candidates$inclusion_observada)
list(
summary = tibble::tibble(
version_anterior = unique(old$version),
version_nueva = unique(new$version),
registros_anteriores = nrow(old),
registros_nuevos = nrow(new),
inclusiones_observadas = nrow(added),
exclusiones_observadas = nrow(removed),
cambio_neto = registros_nuevos - registros_anteriores,
posibles_reemplazos = nrow(candidates)
),
candidates = candidates,
probable_inclusions = added %>%
dplyr::filter(!taxon_name %in% linked_added) %>%
dplyr::select(taxon_name, family, year_actual),
probable_exclusions = removed %>%
dplyr::filter(!taxon_name %in% linked_removed) %>%
dplyr::select(taxon_name, family, year_actual)
)
}
comparison_14_15 <- compare_versions(ppendemic_tab14, ppendemic_tab15)
comparison_15_16 <- compare_versions(ppendemic_tab15, ppendemic_tab16)change_summary <- dplyr::bind_rows(
comparison_14_15$summary,
comparison_15_16$summary
)
knitr::kable(
change_summary,
caption = "Cambios observados y posibles reemplazos entre versiones."
)| version_anterior | version_nueva | registros_anteriores | registros_nuevos | inclusiones_observadas | exclusiones_observadas | cambio_neto | posibles_reemplazos |
|---|---|---|---|---|---|---|---|
| V-14 | V-15 | 7898 | 7892 | 18 | 24 | -6 | 8 |
| V-15 | V-16 | 7892 | 8030 | 169 | 31 | 138 | 14 |
El cambio neto debe interpretarse junto con las inclusiones y exclusiones brutas. Por ejemplo, una correccion ortografica genera simultaneamente una salida y una entrada aunque represente al mismo taxon.
plot_values <- rbind(
inclusiones = change_summary$inclusiones_observadas,
exclusiones = -change_summary$exclusiones_observadas,
cambio_neto = change_summary$cambio_neto
)
barplot(
plot_values,
beside = TRUE,
names.arg = paste(
change_summary$version_anterior,
change_summary$version_nueva,
sep = " a "
),
col = c("#2E8B57", "#B22222", "#4169E1"),
ylab = "Numero de registros",
legend.text = rownames(plot_values),
args.legend = list(x = "topleft", bty = "n")
)
abline(h = 0, col = "grey40")Los siguientes pares no deben contarse automaticamente como nuevas especies o perdidas de endemicidad. Comparten suficiente informacion para considerarlos posibles reemplazos entre versiones.
| exclusion_observada | inclusion_observada | familia | interpretacion | puntuacion |
|---|---|---|---|---|
| Lobivia backebergii subsp. wrightiana | Echinopsis backebergii subsp. wrightiana | Cactaceae | Posible transferencia de genero | 0.720 |
| Lobivia maximiliana subsp. westii | Echinopsis maximiliana subsp. westii | Cactaceae | Posible transferencia de genero | 0.711 |
| Pinguicula rosmariae | Pinguicula rosmarieae | Lentibulariaceae | Posible correccion ortografica | 0.631 |
| Gentianella waygecha | Gentianella wayqecha | Gentianaceae | Posible correccion ortografica | 0.630 |
| Lobivia hertrichiana | Echinopsis hertrichiana | Cactaceae | Posible transferencia de genero | 0.561 |
| Lobivia tegeleriana | Echinopsis tegeleriana | Cactaceae | Posible transferencia de genero | 0.555 |
| Soehrensia sandiensis | Echinopsis sandiensis | Cactaceae | Posible transferencia de genero | 0.548 |
| Lobivia pampana | Echinopsis pampana | Cactaceae | Posible transferencia de genero | 0.522 |
| exclusion_observada | inclusion_observada | familia | interpretacion | puntuacion |
|---|---|---|---|---|
| Peperomia nivalis var. nivalis | Peperomia nivalis f. nivalis | Piperaceae | Posible cambio de rango | 0.760 |
| Senecio danal | Senecio danai | Asteraceae | Posible correccion ortografica | 0.619 |
| Eudema chacasensis | Eudema chacasense | Brassicaceae | Posible correccion ortografica | 0.606 |
| Tovomita chachapoyasensis | Clusia chachapoyasensis | Clusiaceae | Posible transferencia de genero | 0.604 |
| Eudema cuscoensis | Eudema cuscoense | Brassicaceae | Posible correccion ortografica | 0.603 |
| Eudema peruviana | Eudema peruvianum | Brassicaceae | Posible correccion ortografica | 0.603 |
| Eudema limensis | Eudema limense | Brassicaceae | Posible correccion ortografica | 0.597 |
| Eudema incurva | Eudema incurvum | Brassicaceae | Posible correccion ortografica | 0.597 |
| Peperomia nivalis var. compacta | Peperomia nivalis f. nivalis | Piperaceae | Posible reemplazo taxonomico | 0.571 |
| Peperomia nivalis var. sanmarcensis | Peperomia nivalis f. nivalis | Piperaceae | Posible reemplazo taxonomico | 0.563 |
| Peperomia nivalis var. lepadiphylla | Peperomia nivalis f. nivalis | Piperaceae | Posible reemplazo taxonomico | 0.551 |
| Tessmanniacanthus chlamydocardioides | Justicia chlamydocardioides | Acanthaceae | Posible transferencia de genero | 0.544 |
| Cuatrecasanthus sandemanii | Critoniopsis sandemanii | Asteraceae | Posible transferencia de genero | 0.515 |
| Hibiscus chancoae | Sabdariffa chancoae | Malvaceae | Posible transferencia de genero | 0.511 |
Entre los patrones detectables se encuentran:
Eudema chacasensis a
Eudema chacasense;Senecio danal a
Senecio danai;Peperomia nivalis var. nivalis a
Peperomia nivalis f. nivalis; yLobivia que aparecen posteriormente bajo
Echinopsis.Estos casos requieren validacion contra sinonimos, identificadores taxonomicos estables o la historia nomenclatural de WCVP.
Despues de retirar los candidatos a reemplazo, los nombres restantes son las inclusiones con mayor probabilidad de representar incorporaciones a la lista. La version V-16 concentra numerosas inclusiones publicadas recientemente.
inclusions_15_16 <- comparison_15_16$probable_inclusions
inclusion_families <- inclusions_15_16 %>%
dplyr::count(family, name = "posibles_inclusiones") %>%
dplyr::arrange(dplyr::desc(posibles_inclusiones)) %>%
dplyr::slice_head(n = 15) %>%
dplyr::rename(familia = family)
knitr::kable(
inclusion_families,
caption = "Familias con mas posibles inclusiones entre V-15 y V-16."
)| familia | posibles_inclusiones |
|---|---|
| Acanthaceae | 28 |
| Araceae | 28 |
| Piperaceae | 22 |
| Orchidaceae | 17 |
| Passifloraceae | 9 |
| Bromeliaceae | 6 |
| Asteraceae | 5 |
| Malvaceae | 5 |
| Gesneriaceae | 4 |
| Annonaceae | 2 |
| Crassulaceae | 2 |
| Lauraceae | 2 |
| Moraceae | 2 |
| Poaceae | 2 |
| Solanaceae | 2 |
recent_inclusions <- inclusions_15_16 %>%
dplyr::filter(!is.na(year_actual), year_actual >= 2024) %>%
dplyr::arrange(dplyr::desc(year_actual)) %>%
dplyr::slice_head(n = 25)
knitr::kable(
recent_inclusions,
caption = "Ejemplos de posibles inclusiones publicadas desde 2024."
)| taxon_name | family | year_actual |
|---|---|---|
| Anthurium aldavei | Araceae | 2025 |
| Aristolochia guillermoi | Aristolochiaceae | 2025 |
| Gynoxys yasgolgensis | Asteraceae | 2025 |
| Justicia huallagensis | Acanthaceae | 2025 |
| Justicia oxapampensis | Acanthaceae | 2025 |
| Anthurium castilloae | Araceae | 2025 |
| Justicia rojasiae | Acanthaceae | 2025 |
| Agarista eugeniifolia | Ericaceae | 2025 |
| Anthurium divisoriense | Araceae | 2025 |
| Aphelandra floribunda | Acanthaceae | 2025 |
| Ayapana sprucei | Asteraceae | 2025 |
| Justicia werffii | Acanthaceae | 2025 |
| Justicia schunkei | Acanthaceae | 2025 |
| Justicia spathuliformis | Acanthaceae | 2025 |
| Justicia cajamarcensis | Acanthaceae | 2025 |
| Justicia lallanii | Acanthaceae | 2025 |
| Jungia alba | Asteraceae | 2025 |
| Justicia lactiflora | Acanthaceae | 2025 |
| Justicia baguensis | Acanthaceae | 2025 |
| Justicia saccata | Acanthaceae | 2025 |
| Nototriche chambii | Malvaceae | 2025 |
| Aniba taftii | Lauraceae | 2025 |
| Anthurium bongarense | Araceae | 2025 |
| Anthurium sandanielense | Araceae | 2025 |
| Aphelandra calciferi | Acanthaceae | 2025 |
Los nombres retirados que no tienen un reemplazo candidato son posibles exclusiones. Una exclusion puede deberse a que el taxon dejo de considerarse aceptado o exclusivamente peruano, pero esa causa no puede determinarse solo con estas tablas.
exclusions_15_16 <- comparison_15_16$probable_exclusions
exclusion_families <- exclusions_15_16 %>%
dplyr::count(family, name = "posibles_exclusiones") %>%
dplyr::arrange(dplyr::desc(posibles_exclusiones)) %>%
dplyr::rename(familia = family)
knitr::kable(
exclusion_families,
caption = "Familias de las posibles exclusiones entre V-15 y V-16."
)| familia | posibles_exclusiones |
|---|---|
| Piperaceae | 6 |
| Apocynaceae | 3 |
| Orchidaceae | 2 |
| Acanthaceae | 1 |
| Aspleniaceae | 1 |
| Clusiaceae | 1 |
| Gentianaceae | 1 |
| Myristicaceae | 1 |
| Rubiaceae | 1 |
knitr::kable(
exclusions_15_16 %>% dplyr::arrange(family),
caption = "Posibles exclusiones entre V-15 y V-16."
)| taxon_name | family | year_actual |
|---|---|---|
| Dyschoriste ciliata | Acanthaceae | 1891 |
| Mandevilla polyantha | Apocynaceae | 1932 |
| Mandevilla horrida | Apocynaceae | 2007 |
| Mandevilla pristina | Apocynaceae | 2007 |
| Thelypteris rosei | Aspleniaceae | 1967 |
| Tovomita weberbaueri | Clusiaceae | 1923 |
| Gentianella poculifera | Gentianaceae | 1993 |
| Virola weberbaueri | Myristicaceae | 1926 |
| Epidendrum echinatiantherum | Orchidaceae | 2023 |
| Fernandezia pastorelliae | Orchidaceae | 2014 |
| Peperomia foliiflora | Piperaceae | 1798 |
| Peperomia cereoides var. cereoides | Piperaceae | NA |
| Peperomia cereoides var. reducta | Piperaceae | 2004 |
| Peperomia cymbifolia var. goodspeedii | Piperaceae | 2005 |
| Peperomia cymbifolia var. occidentalis | Piperaceae | 2023 |
| Peperomia cymbifolia var. cymbifolia | Piperaceae | NA |
| Exostema bicolor | Rubiaceae | 1841 |
El balance por familia ayuda a identificar grupos que requieren una revision prioritaria. Este balance incluye tanto cambios taxonomicos como posibles incorporaciones o exclusiones reales.
family_change <- dplyr::full_join(
ppendemic_tab15 %>% dplyr::count(family, name = "v15"),
ppendemic_tab16 %>% dplyr::count(family, name = "v16"),
by = "family"
) %>%
dplyr::mutate(
v15 = tidyr::replace_na(v15, 0L),
v16 = tidyr::replace_na(v16, 0L),
change = v16 - v15
) %>%
dplyr::arrange(dplyr::desc(abs(change)), family)
knitr::kable(
head(family_change, 20),
caption = "Mayores cambios absolutos por familia entre V-15 y V-16."
)| family | v15 | v16 | change |
|---|---|---|---|
| Araceae | 186 | 214 | 28 |
| Acanthaceae | 147 | 174 | 27 |
| Orchidaceae | 1153 | 1168 | 15 |
| Piperaceae | 667 | 680 | 13 |
| Passifloraceae | 66 | 75 | 9 |
| Bromeliaceae | 313 | 319 | 6 |
| Asteraceae | 878 | 883 | 5 |
| Malvaceae | 126 | 131 | 5 |
| Gesneriaceae | 54 | 58 | 4 |
| Annonaceae | 43 | 45 | 2 |
| Apocynaceae | 75 | 73 | -2 |
| Crassulaceae | 44 | 46 | 2 |
| Lauraceae | 89 | 91 | 2 |
| Moraceae | 5 | 7 | 2 |
| Poaceae | 131 | 133 | 2 |
| Solanaceae | 312 | 314 | 2 |
| Aristolochiaceae | 14 | 15 | 1 |
| Asparagaceae | 4 | 5 | 1 |
| Brassicaceae | 74 | 75 | 1 |
| Cactaceae | 187 | 188 | 1 |
taxon_name para describir entradas y salidas
observadas.El procedimiento presentado es reproducible y sirve como filtro inicial. Una evaluacion taxonomica definitiva requiere fuentes externas que documenten sinonimias, cambios de distribucion y decisiones nomenclaturales.
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.