260
27
167
526.332
217
42
18
Capacitaciones
Realizamos talleres presenciales con los anfitriones en Choco, Cauca, Putumayo Valle del Cauca, Meta, y Casanare.
Realizamos capacitaciones virtuales con los anfitriones para resolver dudas y hacer sueguimiento al proceso de programación, configuración y subida de informacion a la plataforma Arbimon.
Visitas de campo a los 27 anfitriones.
Grabadoras
Instalamos 100 grabadoras del tipo Audiomoth, de la mano de 27 anfitriones de Awake.
Las grabadoras capturaron mas de medio millon de archivos de audio que corresponden a 1.5 Teras de información.
Se desarrolló e implementó un protocolo de monitoreo, que puede ser replicado en cualquier otro proyecto de turismo de naturaleza.
Detalles adicionales
Grabaciones
Instalamos 100 grabadoras del tipo Audiomoth, de la mano de 27 anfitriones de Awake.
Cada anfitrión instaló de una a cuatro grabadoras en su reserva.
Las grabadoras estuvieron activas de una semana a un mes en cada sitio de instalación.
En cada región un especialista identifico acústicamente algunas especies.
Las especies identificadas se usaron para construir patrones de reconocimiento con algoritmos de inteligencia artificial.
El tamaño del circulo en el mapa representa el número de grabaciones de cada reserva que se lograron identificar hasta especie.
Detalles adicionales
Se seleccionaron 18 especies con muy buenos patrones de reconocimiento en Arbimon y se buscaron con algoritmos de inteligencia artificial en todas las grabaciones.
En la grafica se muestra cuales especies se encuentran en la reserva de cual anfitrion.
El ancho de la banda gris representa el número de grabaciones de esa especie en la reserva.
Detalles adicionales
| Nombre comun | Nombre cientifico | familia | orden | cantos |
|---|---|---|---|---|
| Yellow-throated Toucan | Ramphastos ambiguus | Ramphastidae | Piciformes | 909 |
| Breñero garganta pálida | Automolus ochrolaemus | Furnariidae | Passeriformes | 513 |
| Andean Solitaire | Myadestes ralloides | Turdidae | Passeriformes | 510 |
| Yellow-rumped Cacique | Cacicus cela | Icteridae | Passeriformes | 510 |
| Chestnut-backed Antbird | Myrmeciza exsul | Thamnophilidae | Passeriformes | 505 |
| Black-crested Antshrike | Sakesphorus canadensis | Thamnophilidae | Passeriformes | 504 |
| Scrub Greenlet | Hylophilus flavipes | Vireonidae | Passeriformes | 504 |
| Undulated Tinamou | Crypturellus undulatus | Tinamidae | Tinamiformes | 504 |
| Sharp-tailed Ibis | Cercibis oxycerca | Threskiornithidae | Pelecaniformes | 503 |
| Chotacabras pauraque | Nyctidromus albicollis | Caprimulgidae | Caprimulgiformes | 502 |
| Blue-crowned Motmot | Momotus momota | Momotidae | Coraciiformes | 501 |
| Buff-breasted Wren | Cantorchilus leucotis | Troglodytidae | Passeriformes | 501 |
| Great Kiskadee | Pitangus sulphuratus | Tyrannidae | Passeriformes | 501 |
| Thamnophilus atrinucha | Thamnophilus atrinucha | Thamnophilidae | Passeriformes | 501 |
| Violaceous Jay | Cyanocorax violaceus | Corvidae | Passeriformes | 500 |
| Tucan silvador | Ramphastos tucanus | Ramphastidae | Piciformes | 279 |
| Roadside Hawk | Rupornis magnirostris | Accipitridae | Accipitriformes | 213 |
| Grey-crowned Flatbill | Tolmomyias poliocephalus | Tyrannidae | Passeriformes | 184 |
---
title: "Resultados del Monitoreo Acústico Awake"
output:
flexdashboard::flex_dashboard:
orientation: columns
# storyboard: true
social: menu
source: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
```
Hitos
=======================================================================
Column {data-width=300}
-----------------------------------------------------------------------
### chart1
```{r}
valueBox(260, caption = "Horas de capacitación", icon="fa-graduation-cap")
```
### Chart 2
```{r}
valueBox(27, caption = "Anfitriones participando",
icon="fa-users", color= "warning")
```
### Chart 3
```{r}
valueBox(167, caption = "Sitios instalados",
icon="fa-map-marker", color= "info")
```
### Chart 3
```{r}
valueBox(526.332, caption = "Archivos de Audio",
icon="fa-file-audio-o", color= "success")
```
### Chart 3
```{r}
valueBox(217, caption = "Especies validadas",
icon="fa-check-square-o", color= "info")
```
Column {data-width=300}
-----------------------------------------------------------------------
### Anfitriones subiendo información a la plataforma
```{r}
gauge(95, min = 0, max = 100, symbol = '%',
#label="Anfitriones subiendo información a la plataforma",
gaugeSectors(
success = c(70, 100), warning = c(40, 69), danger = c(0, 39)
))
```
### Participación de mujeres
```{r}
gauge(45, min = 0, max = 100, symbol = '%',
#label="Anfitriones subiendo información a la plataforma",
gaugeSectors(
success = c(70, 100), warning = c(40, 69), danger = c(0, 39)
))
```
### Chart 3
```{r}
valueBox(42, caption = "Patrones de reconocimiento",
icon="fa fa-cog fa-spin fa-3x fa-fw", color= "success")
```
### Chart 3
```{r}
valueBox(18, caption = "Especies priorizadas",
icon="fa-list-alt", color= "success")
```
Column {data-width=400}
-----------------------------------------------------------------------
### Resumen de metodos y resultados
Capacitaciones
- Realizamos talleres presenciales con los anfitriones en Choco, Cauca, Putumayo Valle del Cauca, Meta, y Casanare.
- Realizamos capacitaciones virtuales con los anfitriones para resolver dudas y hacer sueguimiento al proceso de programación, configuración y subida de informacion a la plataforma Arbimon.
- Visitas de campo a los 27 anfitriones.
Grabadoras
- Instalamos 100 grabadoras del tipo Audiomoth, de la mano de 27 anfitriones de Awake.
- Las grabadoras capturaron mas de medio millon de archivos de audio que corresponden a 1.5 Teras de información.
- Se desarrolló e implementó un protocolo de monitoreo, que puede ser replicado en cualquier otro proyecto de turismo de naturaleza.
Detalles adicionales
- [Monitoreo Acústico](https://monitoreo-acustico.netlify.app)
- [AwakeBIO](https://awake.travel/awakebio)
Mapa
=======================================================================
Column {data-width=650}
-----------------------------------------------------------------------
### Localizacion de especies identificadas
```{r}
#### Codigo mapa
library(readxl)
library(tidyverse)
library(viridis)
library(patchwork)
library(hrbrthemes)
library(circlize)
library(sf)
library(mapview)
library(networkD3)
awake <- read_excel("D:/BoxFiles/Box Sync/CodigoR/Awake_datos/data/Plantilla_de_registros_3.5_aves_cleaned_AnfitrionFixed.xlsx")
awake_sf = st_as_sf(awake, coords = c("decimalLongitude", "decimalLatitude"), crs = 4326)
# df %>% group_by(id) %>% mutate(csum = cumsum(value))
awake_2 <- awake_sf %>%
group_by(verbatimLocality) %>%
# mutate(csum = cumsum(occurrenceID))
summarise(recording = n_distinct(occurrenceID ))
mapview(awake_2, cex = "recording", alpha = 0.1,
zcol = "verbatimLocality", map.types
="CartoDB.DarkMatter" ) #zcol = "verbatimLocality
```
Column {.tabset data-width=350}
-----------------------------------------------------------------------
### Metodología
Grabaciones
- Instalamos 100 grabadoras del tipo Audiomoth, de la mano de 27 anfitriones de Awake.
- Cada anfitrión instaló de una a cuatro grabadoras en su reserva.
- Las grabadoras estuvieron activas de una semana a un mes en cada sitio de instalación.
- En cada región un especialista identifico acústicamente algunas especies.
- Las especies identificadas se usaron para construir patrones de reconocimiento con algoritmos de inteligencia artificial.
- El tamaño del circulo en el mapa representa el número de grabaciones de cada reserva que se lograron identificar hasta especie.
Detalles adicionales
- [Monitoreo Acústico](https://monitoreo-acustico.netlify.app)
- [AwakeBIO](https://awake.travel/awakebio)
Especies y anfitriones
=======================================================================
Column {data-width=650}
-----------------------------------------------------------------------
### Red de especies y anfitriones
```{r}
#Codigo para red bipartita
awake_3 <- awake_sf %>%
select(scientificName, eventDate, stateProvince,
order, family, genus, occurrenceID, verbatimLocality) %>%
count(scientificName, verbatimLocality, sort = TRUE)
#filter(stateProvince=="Cauca") %>%
#group_by(verbatimLocality) %>%
#mutate(csum = sum(scientificName))
#summarise(recording = n_distinct(occurrenceID ))
#### put italica
#awake_3$scientificName <- paste("_",awake_3$scientificName, "_", sep="")
# From these flows we need to create a node data frame: it lists every entities involved in the flow
nodes <- data.frame(name=c(
as.character(awake_3$scientificName),
as.character(awake_3$verbatimLocality)) %>%
unique())
awake_3$scientificName=match(awake_3$scientificName, nodes$name)-1
awake_3$verbatimLocality=match(awake_3$verbatimLocality, nodes$name)-1
# prepare colour scale
ColourScal ='d3.scaleOrdinal() .range(["#FDE725FF","#B4DE2CFF","#6DCD59FF","#35B779FF","#1F9E89FF","#26828EFF","#31688EFF","#3E4A89FF","#482878FF","#440154FF"])'
# Make the Network
sankeyNetwork(Links = awake_3, Nodes = nodes,
Source = "scientificName",
Target = "verbatimLocality",
Value = "n", NodeID = "name",
sinksRight=FALSE, colourScale=ColourScal, nodeWidth=40, fontSize=10, nodePadding=4, width=1000)
# ="CartoDB.DarkMatter" ) #zcol = "verbatimLocality
#library(dygraphs)
#dygraph(nhtemp, main = "New Haven Temperatures") %>%
# dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
```
Column {data-width=350}
-----------------------------------------------------------------------
### Metodología
- Se seleccionaron 18 especies con muy buenos patrones de reconocimiento en Arbimon y se buscaron con algoritmos de inteligencia artificial en todas las grabaciones.
- En la grafica se muestra cuales especies se encuentran en la reserva de cual anfitrion.
- El ancho de la banda gris representa el número de grabaciones de esa especie en la reserva.
Detalles adicionales
- [Monitoreo Acústico](https://monitoreo-acustico.netlify.app)
- [AwakeBIO](https://awake.travel/awakebio)
Taxonomia
=======================================================================
Column {data-width=600}
-----------------------------------------------------------------------
### Especies monitoreadas y sus cantos en porcentajes
```{r}
library(plotly)
#p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
# geom_bar(position = "dodge")
#ggplotly(p)
awake_circular <- awake %>%
select(scientificName,vernacularName,
order, family, genus, verbatimLocality) %>%
count(scientificName, order, family, vernacularName, sort = TRUE)
#arrange(family)
#dplyr::summarize ()
# awake_circular$id <- 1:18
# make smaller n to 100
awake_circular$n <- awake_circular$n *.1
# Set a number of 'empty bar' to add at the end of each order
empty_bar <- 2
to_add <- data.frame( matrix(NA, empty_bar*nlevels(factor(awake_circular$order)), ncol(awake_circular)) )
colnames(to_add) <- colnames(awake_circular)
to_add$order <- rep(levels(factor(awake_circular$order)), each=empty_bar)
awake_circular <- rbind(awake_circular, to_add)
awake_circular <- awake_circular %>% arrange(order)
awake_circular$id <- seq(1, nrow(awake_circular))
# Get the name and the y position of each label
label_data <- awake_circular
number_of_bar <- nrow(label_data)
angle <- 90 - 360 * (label_data$id-0.5) /number_of_bar # I substract 0.5 because the letter must have the angle of the center of the bars. Not extreme right(1) or extreme left (0)
label_data$hjust <- ifelse( angle < -90, 1, 0)
label_data$angle <- ifelse(angle < -90, angle+180, angle)
# prepare a data frame for base lines
base_data <- awake_circular %>%
dplyr::group_by(order) %>%
dplyr::summarize (start=min(id), end=max(id) - empty_bar) %>%
rowwise() %>%
dplyr::mutate(title=mean(c(start, end)))
# prepare a data frame for grid (scales)
grid_data <- base_data
grid_data$end <- grid_data$end[ c( nrow(grid_data), 1:nrow(grid_data)-1)] + 1
grid_data$start <- grid_data$start - 1
grid_data <- grid_data[-1,]
# Make the plot
p <- ggplot(awake_circular, aes(x=as.factor(id), y=as.numeric(n), fill=order)) + # Note that id is a factor. If x is numeric, there is some space between the first bar
geom_bar(aes(x=as.factor(id), y=as.numeric(n), fill=order), stat="identity", alpha=0.5) +
# Add a val=100/75/50/25 lines. I do it at the beginning to make sur barplots are OVER it.
geom_segment(data=grid_data, aes(x = end, y = 80, xend = start, yend = 80), colour = "grey", alpha=1, size=0.3 , inherit.aes = FALSE ) +
geom_segment(data=grid_data, aes(x = end, y = 60, xend = start, yend = 60), colour = "grey", alpha=1, size=0.3 , inherit.aes = FALSE ) +
geom_segment(data=grid_data, aes(x = end, y = 40, xend = start, yend = 40), colour = "grey", alpha=1, size=0.3 , inherit.aes = FALSE ) +
geom_segment(data=grid_data, aes(x = end, y = 20, xend = start, yend = 20), colour = "grey", alpha=1, size=0.3 , inherit.aes = FALSE ) +
geom_segment(data=grid_data, aes(x = end, y = 100, xend = start, yend = 100), colour = "grey", alpha=1, size=0.3 , inherit.aes = FALSE ) +
# Add text showing the value (n) of each 100/75/50/25 lines
annotate("text", x = rep(max(awake_circular$id),5), y = c(20, 40, 60, 80, 100), label = c("20", "40", "60", "80", "100") , color="grey", size=3 , angle=0, fontface="bold", hjust=1) +
geom_bar(aes(x=as.factor(id), y=as.numeric(n), fill=order), stat="identity", alpha=0.5) +
ylim(-100,120) +
theme_minimal() +
theme(
legend.position = "none",
axis.text = element_blank(),
axis.title = element_blank(),
panel.grid = element_blank(),
plot.margin = unit(rep(-1,4), "cm")
) +
coord_polar() +
geom_text(data=label_data, aes(x=id, y=as.numeric(n)-10, label=scientificName, hjust=hjust), color="black", fontface="italic",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE ) +
# Add base line information
geom_segment(data=base_data, aes(x = start, y = -7, xend = end, yend = -5), colour = "black", alpha=0.7, size=0.6 , inherit.aes = FALSE ) +
geom_text(data=base_data, aes(x = as.numeric(title), y = -18, label=order), hjust=c(0,0,1,0,0,0,0), colour = "black", alpha=0.8, size=2, fontface="bold", inherit.aes = FALSE)
p
q <- ggplot(awake_circular, aes(x=scientificName, y=as.numeric(n), fill=order)) + # Note that id is a factor. If x is numeric, there is some space between the first bar
geom_bar(aes(x=scientificName, y=as.numeric(n), fill=order), stat="identity", alpha=0.5) +
geom_text(data=awake_circular, aes(x=scientificName, y=-4, label=vernacularName), color="black", fontface="italic",alpha=0.6, size=3, angle= 90, inherit.aes = FALSE )
```
Column {data-width=400}
-----------------------------------------------------------------------
### Nombres de las especies
```{r}
library(kableExtra)
sp_table <- awake %>%
select(scientificName,vernacularName,
order, family, genus) %>%
count(vernacularName, scientificName, family, order, sort = TRUE)
names(sp_table) <- c("Nombre comun", "Nombre cientifico",
"familia", "orden", "cantos")
sp_table %>%
kbl() %>%
kable_paper("hover", full_width = T, font_size = 9)
#kable_styling(bootstrap_options = "striped", font_size = 8)
```