citesperu es un paquete de R para consultar, estructurar y contrastar de manera reproducible los listados oficiales de fauna y flora silvestres del Perú incluidas en los Apéndices de la Convención sobre el Comercio Internacional de Especies Amenazadas de Fauna y Flora Silvestres (CITES), publicados por el Ministerio del Ambiente (MINAM) como Autoridad Científica CITES del país.
Incorpora los 4 listados oficiales nacionales (Fauna 2018, 2019, 2023 y Flora 2018), un backbone histórico unificado de más de 8,500 registros con procedencia por fila, resolución de sinónimos y un motor de concordancia secuencial en 6 etapas (cites_match()).
Instalación
Puedes instalar la versión de desarrollo de citesperu desde GitHub mediante pak o remotes:
# Usando pak (recomendado)
pak::pak("PaulESantos/citesperu")
# O usando remotes
# remotes::install_github("PaulESantos/citesperu")Al cargar la librería, citesperu despliega un banner informativo al estilo de tidyverse resumiendo las bases oficiales disponibles y herramientas activas:
library(citesperu)
#> ── citesperu ───────────────────────────────────────────────────────── v0.1.0 ──
#> ✔ cites_fauna_peru_2018 496 spp. ✔ codigos_departamentos_pe 24 depts.
#> ✔ cites_flora_peru_2018 2506 taxa ✔ cites_fauna_peru_2023 568 spp.
#> ✔ cites_fauna_peru_2019 523 spp. ✔ cites_match() matching engine
#> ℹ Autoridad Científica: MINAM | Autoridades Administrativas: SERFOR / PRODUCE
#> ℹ Usa cites_match() para concordancia o revisa la documentación (<https://paulesantos.github.io/citesperu/>)Marco Institucional CITES en el Perú
El Perú es Estado signatario de la Convención CITES desde 1975 (Decreto Ley N.° 21080). La gobernanza nacional se articula a través de tres niveles institucionales:
- Autoridad Científica: Ministerio del Ambiente (MINAM), a través de la Dirección General de Diversidad Biológica (DGDB). Asesora científicamente, emite los Dictámenes de Extracción No Perjudicial (DENP) y elabora los listados oficiales nacionales.
- Autoridades Administrativas: SERFOR (flora y fauna silvestre terrestre) y PRODUCE / SANIPES (recursos hidrobiológicos marinos y continentales). Emiten los permisos y certificados de exportación, importación y reexportación CITES.
- Entidades de Observancia: SUNAT (Aduanas), Policía Nacional del Perú (DIRMEAMB), DICAPI (Autoridad Marítima / Guardacostas) y FEMA (Fiscalías Especializadas en Materia Ambiental).
Para mayor detalle sobre las competencias institucionales, el marco normativo (D.S. 030-2005-AG, D.S. 004-2014-MINAGRI, D.S. 043-2006-AG), los Apéndices CITES y los códigos departamentales de Lamas & Encarnación, consulta la viñeta del paquete mediante vignette("contexto-cites-peru").
Fuentes Oficiales y Cobertura (MINAM Colección 609)
Los datos empaquetados proceden del compendio oficial del MINAM, conservando estrictamente su integridad documental y alcance temporal:
| Dataset | Edición / Título Oficial | Grupo | Cobertura Oficial | Registros | Formato de Origen |
|---|---|---|---|---|---|
cites_fauna_peru_2018 |
Listado Fauna CITES Perú - 2018 | Fauna | 496 especies oficiales (48 Ap. I, 448 Ap. II, más 16 en Ap. III*) | 512 | PDF / Excel oficial |
cites_fauna_peru_2019 |
Listado de Fauna CITES Perú 2019 | Fauna | 523 registros (con ámbito ecológico y género) | 523 | Excel oficial |
cites_fauna_peru_2023 |
Listado de Fauna CITES Perú 2023 | Fauna | 568 especies (48 Ap. I, 503 Ap. II, 17 Ap. III; CoP19 Panamá) | 568 | Excel oficial |
cites_flora_peru_2018 |
Listado Flora CITES Perú - 2018 | Flora | 2506 taxa en 9 familias botánicas (12 Ap. I, 2493 Ap. II, 1 Ap. III) | 2506 | PDF / Excel oficial |
codigos_departamentos_pe |
Acrónimos Biogeográficos de Lamas & Encarnación (1976) | Geografía | 24 acrónimos estándar departamentales y códigos UBIGEO del INEI | 24 | Referencia técnica |
* En fauna 2018, las 16 especies registradas en el Apéndice III fueron incluidas a propuesta de otros países Parte. Como el Perú no ha solicitado inclusiones en dicho apéndice, el MINAM no las contabiliza en el balance oficial nacional.
Backbone taxonómico y flujo de concordancia
cites_match() no consulta los archivos fuente en cada llamada. Trabaja con un backbone interno preindexado (cites_backbone) construido a partir de la fauna 2023 y la flora 2018: la combinación que representa edition = "latest". También conserva las ediciones de fauna 2018 y 2019. El índice reúne nombres aceptados y sinonimias registradas en las fuentes del MINAM; cada coincidencia conserva el Apéndice CITES, la edición efectiva y la referencia de origen (source_dataset, source_row_id, source_title y source_url).
El flujo es secuencial: una etapa solo recibe los nombres que no fueron resueltos por la anterior.
Entrada → clasificación del nombre
→ exact → synonym → suffix → fuzzy → genus → unmatched
| Etapa | match_type |
Qué resuelve |
|---|---|---|
| Coincidencia exacta | exact |
Un nombre aceptado del backbone. |
| Sinonimia | synonym |
Un sinónimo del backbone y su accepted_name. |
| Sufijo latino | suffix |
Variaciones permitidas de desinencia dentro del mismo género; requiere validación taxonómica. |
| Coincidencia difusa | fuzzy |
Errores de escritura mediante distancia de edición, limitada por max_dist; requiere validación taxonómica. |
| Género | genus |
Entradas a nivel de género, sp. o spp.; un binomio solo llega aquí con genus_fallback = TRUE. Se marca como requires_species_validation. |
| Sin resolución | unmatched |
No hubo coincidencia en el alcance consultado. |
| Ambigua | ambiguous_match |
Hay más de un candidato con la misma regla o distancia; no se asigna Apéndice. |
La clasificación inicial (cites_classify_names()) separa género, epíteto, rango infraespecífico, autoría y marcadores como cf., aff., sp. y spp.. La etapa genus usa un índice de géneros presentes en el backbone. Por ello, una coincidencia de género indica que hay registros CITES para ese género en el alcance elegido; no identifica una especie ni por sí sola prueba que toda especie del género esté incluida. El resultado conserva is_cites = TRUE para indicar la presencia del género en el listado y asigna match_assessment = "requires_species_validation". Para decisiones regulatorias, se debe confirmar el taxón determinado y la fuente oficial aplicable.
match_assessment expresa la certeza operativa del resultado: matched para un nombre aceptado o sinónimo sin calificadores; requires_taxonomic_validation para suffix, fuzzy, cf., aff., híbridos o rangos infraespecíficos; requires_species_validation para género; ambiguous_match para empates y not_listed cuando no hubo coincidencia. Los resultados ambiguos no reciben Apéndice y exponen candidate_names y candidate_count.
El paquete incluye dos viñetas oficiales de acceso público: * Flujo de Trabajo y Resolución Taxonómica (vignette("flujo-matching-cites")): procedimiento paso a paso, parámetros y ejemplos reproducibles de matching. * Marco Institucional, Legal y Contexto CITES en el Perú (vignette("contexto-cites-peru")): arquitectura institucional (MINAM / SERFOR / PRODUCE), marco legal, apéndices I, II y III, y códigos geográficos.
Parámetros de Control en cites_match()
| Parámetro | Valores | Descripción |
|---|---|---|
splist |
character o data.frame
|
Vector de nombres científicos o data frame que contenga nombres. |
taxon |
"all" (default), "fauna", "flora"
|
Permite restringir la búsqueda a un reino específico (evita ambigüedades homónimas). |
edition |
"latest" (default), "all", "2023", "2019", "2018"
|
Edición oficial a consultar. Por defecto combina Fauna 2023 + Flora 2018. |
max_dist |
integer (default 1) |
Distancia máxima de edición permitida en la fase fuzzy. |
allow_synonyms |
TRUE (default) / FALSE
|
Permite o desactiva la resolución automática de sinónimos oficiales. |
genus_fallback |
FALSE (default) / TRUE
|
Si es TRUE, binomios sin coincidencia específica se comparan también con el índice de géneros. |
output |
"standard" (default) / "full"
|
"standard" devuelve las columnas esenciales, incluida match_assessment; "full" incluye además parsing y flags. |
is_cites() es deliberadamente más estricto: solo devuelve TRUE para coincidencias exactas o sinónimos oficiales sin calificadores de incertidumbre. Para resultados genus, suffix, fuzzy, ambiguos o con cf., aff. e híbridos, usa cites_match() y revisa match_assessment.
Ejemplos de Uso
1. Verificación booleana ultrarrápida (is_cites())
Ideal para filtros lógicos inmediatos en pipelines de datos:
## ── citesperu ───────────────────────────────────────────────────────── v0.1.0 ──
## ✔ cites_flora_peru_2018 2506 taxa ✔ cites_fauna_peru_2023 568 spp.
## ✔ cites_fauna_peru_2018 496 spp. ✔ cites_match() matching engine
## ✔ cites_fauna_peru_2019 523 spp.
## ℹ Listado de Especies de Flora y Fauna Silvestre CITES - Perú.
## Autoridad Científica: MINAM / Dirección General de Diversidad Biológica2. Motor de concordancia taxonómica (cites_match())
Demostración de los diferentes tipos de coincidencia en una sola consulta:
res <- cites_match(c(
"Tremarctos ornatus", # 1. Exacto: Fauna Ap. I (Oso de anteojos)
"Epipedobates femoralis", # 2. Sinónimo: Fauna Ap. II -> Allobates femoralis
"Paphiopedilum besseae", # 3. Sinónimo: Flora Ap. I -> Phragmipedium besseae
"Cedrela odoratus", # 4. Sufijo latino: Flora Ap. III -> Cedrela odorata
"Tremarctos ornatu", # 5. Fuzzy (dist = 1): Falta 's' final
"Swietenia macrophyla", # 6. Fuzzy (dist = 1): Falta 'l'
"Touit sp.", # 7. Género: Psitácidos regulados en Ap. II
"Homo sapiens" # 8. Unmatched: No CITES
), max_dist = 1)
# Seleccionar columnas clave para visualización
res[, c("input_name", "accepted_name", "match_type", "match_assessment",
"is_cites", "apendice", "edition_used", "source_dataset")]## # A tibble: 8 × 8
## input_name accepted_name match_type match_assessment is_cites apendice
## <chr> <chr> <chr> <chr> <lgl> <chr>
## 1 Tremarctos ornatus Tremarctos o… exact matched TRUE I
## 2 Epipedobates femo… Allobates fe… synonym matched TRUE II
## 3 Paphiopedilum bes… Phragmipediu… synonym matched TRUE I
## 4 Cedrela odoratus Cedrela odor… suffix requires_taxono… TRUE III
## 5 Tremarctos ornatu Tremarctos o… fuzzy requires_taxono… TRUE I
## 6 Swietenia macroph… Swietenia ma… fuzzy requires_taxono… TRUE II
## 7 Touit sp. Touit spp. genus requires_specie… TRUE II
## 8 Homo sapiens <NA> unmatched not_listed FALSE <NA>
## # ℹ 2 more variables: edition_used <chr>, source_dataset <chr>3. Clasificación taxonómica y extracción de componentes (cites_classify_names())
Descompone nombres científicos extrayendo rangos infraespecíficos, autores y marcadores de indeterminación:
cites_classify_names(c(
"Swietenia macrophylla King",
"Phragmipedium boissierianum var. czerwiakowianum",
"Cedrela cf. odorata",
"Touit sp."
))## # A tibble: 4 × 14
## input_index input_name canonical_name orig_genus orig_species infra_rank
## <int> <chr> <chr> <chr> <chr> <chr>
## 1 1 Swietenia macro… Swietenia mac… Swietenia macrophylla <NA>
## 2 2 Phragmipedium b… Phragmipedium… Phragmipe… boissierian… var.
## 3 3 Cedrela cf. odo… Cedrela odora… Cedrela odorata <NA>
## 4 4 Touit sp. Touit Touit <NA> <NA>
## # ℹ 8 more variables: orig_infraspecies <chr>, author <chr>, rank <dbl>,
## # has_cf <lgl>, has_aff <lgl>, is_sp <lgl>, is_spp <lgl>, had_hybrid <lgl>4. Integración en flujos tabulares con {dplyr}
cites_match() acepta directamente data.frame o tibble, facilitando la limpieza de inventarios biológicos o registros aduaneros:
library(dplyr)
inventario <- tibble(
id = 1:4,
nombre_campo = c("Tremarctos ornatus", "Epipedobates femoralis", "Cedrela odoratus", "Zea mays"),
cantidad_individuos = c(2, 15, 1, 100)
)
# Evaluar con cites_match() e integrar resultados al inventario
eval_cites <- cites_match(inventario$nombre_campo)
inventario_evaluado <- bind_cols(
inventario,
eval_cites %>% select(accepted_name, apendice, match_type, match_assessment,
edition_used, source_dataset, source_row_id, is_cites)
)
inventario_evaluado## # A tibble: 4 × 11
## id nombre_campo cantidad_individuos accepted_name apendice match_type
## <int> <chr> <dbl> <chr> <chr> <chr>
## 1 1 Tremarctos ornatus 2 Tremarctos o… I exact
## 2 2 Epipedobates femo… 15 Allobates fe… II synonym
## 3 3 Cedrela odoratus 1 Cedrela odor… III suffix
## 4 4 Zea mays 100 <NA> <NA> unmatched
## # ℹ 5 more variables: match_assessment <chr>, edition_used <chr>,
## # source_dataset <chr>, source_row_id <chr>, is_cites <lgl>Viñeta Técnica de Consulta
Para un desglose metodológico exhaustivo, fundamentos biológicos y comparativas de rendimiento, consulta la viñeta incluida en el paquete:
vignette("flujo-matching-cites", package = "citesperu")Licencia y Atribución
El software y código fuente de citesperu se distribuyen bajo la licencia de código abierto MIT.
La información original de los listados pertenece al Ministerio del Ambiente del Perú (MINAM). Los datasets empaquetados preservan íntegramente la cita a las publicaciones oficiales de origen y a sus respectivos autores técnicos.