El paquete warbleR pretende facilitar el análisis de la estructura de la señal acústica animal en R. Los usuarios pueden recopilar grabaciones aviares de acceso abierto o ingresar sus propios datos en un flujo de trabajo que facilita la visualización espectrográfica y la medición de parámetros acústicos. warbleR hace uso de las herramientas fundamentales de análisis de sonido del paquete seewave , y ofrece nuevas herramientas para análisis de estructura acústica. Estas herramientas están disponibles para el análisis por lotes (“batch processing”) de señales acústicas.
Las principales características del paquete son:
El paquete ofrece funciones para:
La mayoría de las funciones permiten la paralelización de tareas, que distribuye las tareas entre varios procesadores para mejorar la eficiencia computacional. Las herramientas para evaluar el desempeño del análisis en cada paso también están disponibles. Todas estas herramientas se proporcionan en un flujo de trabajo estandarizado para el análisis de la estructura de la señal (Fig. 1), haciéndolas accesibles a una amplia gama de usuarios, incluidos aquellos sin mucho conocimiento de R. Además, warbleR satisface la necesidad de análisis bioacústicos de fuente abierta rigurosos, lo que facilita las oportunidades para su uso en investigación y la innovación de análisis personalizados adicionales.
warbleR es un paquete joven (publicado oficialmente en 2017) y se encuentra en una etapa de maduración:
Estos objetos se crean con la función selection_table()
. La función toma cuadros de datos que contienen datos de selección (nombre del archivo de sonido, selección, inicio, final …), verifica si la información es consistente (consulte la función checksels()
para obtener detalles) y guarda los metadatos de ‘diagnóstico’ como un atributo. Los cuadros de selección son básicamente cuadros de datos (data frames) donde se ha corroborado que la informacíón contenida y que esta puede ser leida por las funciones en warbleR. Los cuadros de datos deben contener (al menos) las siguientes columnas:
Los datos de ejemplo “lbh_selec_table” contienen estas columnas:
data("lbh_selec_table")
lbh_selec_table
sound.files | channel | selec | start | end | bottom.freq | top.freq | sel.comment | rec.comment |
---|---|---|---|---|---|---|---|---|
Phae.long1.wav | 1 | 1 | 1.1693549 | 1.3423884 | 2.220105 | 8.604378 | c24 | NA |
Phae.long1.wav | 1 | 2 | 2.1584085 | 2.3214565 | 2.169437 | 8.807053 | c25 | NA |
Phae.long1.wav | 1 | 3 | 0.3433366 | 0.5182553 | 2.218294 | 8.756604 | c26 | NA |
Phae.long2.wav | 1 | 1 | 0.1595983 | 0.2921692 | 2.316862 | 8.822316 | c27 | NA |
Phae.long2.wav | 1 | 2 | 1.4570585 | 1.5832087 | 2.284006 | 8.888027 | c28 | NA |
Phae.long3.wav | 1 | 1 | 0.6265520 | 0.7577715 | 3.006834 | 8.822316 | c29 | NA |
Phae.long3.wav | 1 | 2 | 1.9742132 | 2.1043921 | 2.776843 | 8.888027 | c30 | NA |
Phae.long3.wav | 1 | 3 | 0.1233643 | 0.2545812 | 2.316862 | 9.315153 | c31 | NA |
Phae.long4.wav | 1 | 1 | 1.5168116 | 1.6622365 | 2.513997 | 9.216586 | c32 | NA |
Phae.long4.wav | 1 | 2 | 2.9326920 | 3.0768784 | 2.579708 | 10.235116 | c33 | NA |
Phae.long4.wav | 1 | 3 | 0.1453977 | 0.2904966 | 2.579708 | 9.742279 | c34 | NA |
… y pueden ser convertidos al formato selection_table así:
# parametros globales
warbleR_options(wav.path = "PONER RUTA A 'ejemplos' AQUI")
st <- selection_table(X = lbh_selec_table, pb = FALSE)
st
all selections are OK
object of class 'selection_table'
contains a selection table data frame with 11 rows and 9 columns:
sound.files channel selec start end bottom.freq top.freq sel.comment rec.comment
1 Phae.long1.wav 1 1 1.1693549 1.3423884 2.220105 8.604378 c24 NA
2 Phae.long1.wav 1 2 2.1584085 2.3214565 2.169437 8.807053 c25 NA
3 Phae.long1.wav 1 3 0.3433366 0.5182553 2.218294 8.756604 c26 NA
4 Phae.long2.wav 1 1 0.1595983 0.2921692 2.316862 8.822316 c27 NA
5 Phae.long2.wav 1 2 1.4570585 1.5832087 2.284006 8.888027 c28 NA
6 Phae.long3.wav 1 1 0.6265520 0.7577715 3.006834 8.822316 c29 NA
... and 5 more rows
and a data frame (check.results) generated by checkres() (as attribute)
Nótese que se ha brindado la dirección a los archivos de sonido. Esto es necesario para verificar que los datos brindados se ajustan a las caracteristicas de los archivos de audio.
Los cuadros de selección tienen su propia clase en R:
class(st)
[1] "selection_table" "data.frame"
Cuando el argumento extended = TRUE
la función genera un objeto de la clase extended_selection_table que también contiene una lista de objetos ‘wave’ correspondientes a cada una de las selecciones en el cuadro de datos. Por lo tanto, la función transforma las cuadros de selección en objetos autocontenidos ya que ya no necesitan los archivos de sonido originales para ejecutar la mayoría del análisis acústico en warbleR. Esto puede facilitar mucho el almacenamiento y el intercambio de datos (bio) acústicos. Además, también acelera los procesos, ya que no es necesario leer los archivos de sonido cada vez que se analizan los datos.
Ahora, como se mencionó anteriormente, necesita la función selection_table(()
para crear un cuadro de selección extendido. También debe establecer el argumento extended = TRUE
(de lo contrario, la clase sería un cuadro de selección). El siguiente código convierte los datos de ejemplo en un cuadro de selección extendido:
# parametros globales
warbleR_options(wav.path = "PONER RUTA A 'ejemplos' AQUI")
ext_st <- selection_table(X = lbh_selec_table, pb = FALSE,
extended = TRUE, confirm.extended = FALSE)
all selections are OK
Y eso es. Ahora los datos acústicos y los datos de selección (así como los metadatos adicionales) están todos juntos en un solo objeto R.
& nbsp;
Se pueden usar varias funciones para tratar con objetos de esta clase. Puede probar si el objeto pertenece a la extended_selection_table:
is_extended_selection_table(ext_st)
[1] TRUE
Puede subcontratar la selección de la misma manera que cualquier otro cuadro de datos en ella mantendrá sus atributos:
ext_st2 <- ext_st[1:2, ]
is_extended_selection_table(ext_st2)
[1] TRUE
También hay una versión genérica de print()
para esta clase de objetos:
## print
print(ext_st)
object of class 'extended_selection_table'
contains a selection table data frame with 11 rows and 9 columns:
sound.files channel selec start end bottom.freq top.freq sel.comment rec.comment
1 Phae.long1.wav_1 1 1 0.1 0.2730334 2.220105 8.604378 c24 NA
2 Phae.long1.wav_2 1 1 0.1 0.2630480 2.169437 8.807053 c25 NA
3 Phae.long1.wav_3 1 1 0.1 0.2749187 2.218294 8.756604 c26 NA
4 Phae.long2.wav_1 1 1 0.1 0.2325709 2.316862 8.822316 c27 NA
5 Phae.long2.wav_2 1 1 0.1 0.2261502 2.284006 8.888027 c28 NA
6 Phae.long3.wav_1 1 1 0.1 0.2312195 3.006834 8.822316 c29 NA
... and 5 more rows
11 wave objects (as attributes):
[1] "Phae.long1.wav_1" "Phae.long1.wav_2" "Phae.long1.wav_3" "Phae.long2.wav_1" "Phae.long2.wav_2"
[6] "Phae.long3.wav_1"
... and 5 more
and a data frame (check.results) generated by checkres() (as attribute)
the selection table was created by element (see 'class_extended_selection_table')
… lo cual es equivalente a:
ext_st
object of class 'extended_selection_table'
contains a selection table data frame with 11 rows and 9 columns:
sound.files channel selec start end bottom.freq top.freq sel.comment rec.comment
1 Phae.long1.wav_1 1 1 0.1 0.2730334 2.220105 8.604378 c24 NA
2 Phae.long1.wav_2 1 1 0.1 0.2630480 2.169437 8.807053 c25 NA
3 Phae.long1.wav_3 1 1 0.1 0.2749187 2.218294 8.756604 c26 NA
4 Phae.long2.wav_1 1 1 0.1 0.2325709 2.316862 8.822316 c27 NA
5 Phae.long2.wav_2 1 1 0.1 0.2261502 2.284006 8.888027 c28 NA
6 Phae.long3.wav_1 1 1 0.1 0.2312195 3.006834 8.822316 c29 NA
... and 5 more rows
11 wave objects (as attributes):
[1] "Phae.long1.wav_1" "Phae.long1.wav_2" "Phae.long1.wav_3" "Phae.long2.wav_1" "Phae.long2.wav_2"
[6] "Phae.long3.wav_1"
... and 5 more
and a data frame (check.results) generated by checkres() (as attribute)
the selection table was created by element (see 'class_extended_selection_table')
También puedes unirlos en filas. Aquí el extended_selection_table original se divide en 2 y se enlaza nuevamente usando rbind()
:
ext_st3 <- ext_st[1:5, ]
ext_st4 <- ext_st[6:11, ]
ext_st5 <- rbind(ext_st3, ext_st4)
#print
ext_st5
object of class 'extended_selection_table'
contains a selection table data frame with 11 rows and 9 columns:
sound.files channel selec start end bottom.freq top.freq sel.comment rec.comment
1 Phae.long1.wav_1 1 1 0.1 0.2730334 2.220105 8.604378 c24 NA
2 Phae.long1.wav_2 1 1 0.1 0.2630480 2.169437 8.807053 c25 NA
3 Phae.long1.wav_3 1 1 0.1 0.2749187 2.218294 8.756604 c26 NA
4 Phae.long2.wav_1 1 1 0.1 0.2325709 2.316862 8.822316 c27 NA
5 Phae.long2.wav_2 1 1 0.1 0.2261502 2.284006 8.888027 c28 NA
6 Phae.long3.wav_1 1 1 0.1 0.2312195 3.006834 8.822316 c29 NA
... and 5 more rows
11 wave objects (as attributes):
[1] "Phae.long1.wav_1" "Phae.long1.wav_2" "Phae.long1.wav_3" "Phae.long2.wav_1" "Phae.long2.wav_2"
[6] "Phae.long3.wav_1"
... and 5 more
and a data frame (check.results) generated by checkres() (as attribute)
the selection table was created by element (see 'class_extended_selection_table')
# igual q el original
all.equal(ext_st, ext_st5)
[1] TRUE
Los objetos ‘wave’ se pueden leer individualmente usando read_wave()
, un contenedor en la función readWave()
de tuneR, que puede tomar cuadros de selección extendidos:
wv1 <- read_wave(X = ext_st, index = 3, from = 0, to = 0.37)
Estos son objetos ‘wave’ regulares:
class(wv1)
[1] "Wave"
attr(,"package")
[1] "tuneR"
wv1
Wave Object
Number of Samples: 8325
Duration (seconds): 0.37
Samplingrate (Hertz): 22500
Channels (Mono/Stereo): Mono
PCM (integer format): TRUE
Bit (8/16/24/32/64): 16
spectro(wv1, wl = 150, grid = FALSE, scale = FALSE, ovlp = 90)
par(mfrow = c(3, 2), mar = rep(0, 4))
for(i in 1:6){
wv <- read_wave(X = ext_st, index = i, from = 0.05, to = 0.32)
spectro(wv, wl = 150, grid = FALSE, scale = FALSE, axisX = FALSE,
axisY = FALSE, ovlp = 90)
}
La función read_wave()
require el cuadro de selección, así como el índice de la selección (por ejemplo, el número de fila) para poder leer los objetos ‘wave’.
Tenga en cuenta que es probable que otras funciones que modifican marcos de datos eliminen los atributos en los que se almacenan los objetos ‘wave’ y los metadatos. Por ejemplo, la fusión y el cuadro de selección extendido eliminarán sus atributos:
# crear nueva base de datos
Y <- data.frame(sound.files = ext_st$sound.files, site = "La Selva", lek = c(rep("SUR", 5), rep("CCL", 6)))
# combinar
mrg_ext_st <- merge(ext_st, Y, by = "sound.files")
# revisar clase
is_extended_selection_table(mrg_ext_st)
[1] FALSE
En este caso, podemos utilizar la función fix_extended_selection_table ()
para transferir los atributos del cuadro de selección extendido original:
# arreglar
mrg_ext_st <- fix_extended_selection_table(X = mrg_ext_st, Y = ext_st)
# revisar clase
is_extended_selection_table(mrg_ext_st)
[1] TRUE
Esto funciona siempre que se conserven algunos de los archivos de sonido originales y no se agreguen otras selecciones.
& nbsp;
El tamaño del cuadro de selección extendido dependerá del número de selecciones, la tasa de muestreo, la duración de la selección y la duración del margen (el margen es la cantidad de tiempo adicional que desea conservar a cada lado de la selección). En este ejemplo, se crea un cuadro de datos con 1000 selecciones simplemente repitiendo el cuadro de datos de ejemplo varias veces y luego se convierte en un cuadro de selección extendido:
lng.selec.table <- do.call(rbind, replicate(100, lbh_selec_table,
simplify = FALSE))[1:1000,]
lng.selec.table$selec <- 1:nrow(lng.selec.table)
nrow(lng.selec.table)
lng_ext_st <- selection_table(X = lng.selec.table, pb = FALSE,
extended = TRUE, confirm.extended = FALSE)
lng_ext_st
all selections are OK
object of class 'extended_selection_table'
contains a selection table data frame with 1000 rows and 9 columns:
sound.files channel selec start end bottom.freq top.freq sel.comment rec.comment
1 Phae.long1.wav_1 1 1 0.1 0.2730334 2.220105 8.604378 c24 NA
2 Phae.long1.wav_2 1 1 0.1 0.2630480 2.169437 8.807053 c25 NA
3 Phae.long1.wav_3 1 1 0.1 0.2749187 2.218294 8.756604 c26 NA
4 Phae.long2.wav_4 1 1 0.1 0.2325709 2.316862 8.822316 c27 NA
5 Phae.long2.wav_5 1 1 0.1 0.2261502 2.284006 8.888027 c28 NA
6 Phae.long3.wav_6 1 1 0.1 0.2312195 3.006834 8.822316 c29 NA
... and 994 more rows
1000 wave objects (as attributes):
[1] "Phae.long1.wav_1" "Phae.long1.wav_2" "Phae.long1.wav_3" "Phae.long2.wav_4" "Phae.long2.wav_5"
[6] "Phae.long3.wav_6"
... and 994 more
and a data frame (check.results) generated by checkres() (as attribute)
the selection table was created by element (see 'class_extended_selection_table')
format(object.size(lng_ext_st), units = "auto")
[1] "31.4 Mb"
Como se puede ver, el tamaño del objeto es de solo ~ 31 MB. Entonces, como guía, un cuadro de selección con 1000 selecciones similares a las de ‘lbh_selec_table’ (duración media de ~ 0.15 segundos) a una tasa de muestreo de 22.5 kHz y el margen predeterminado (mar = 0.1) generará un cuadro de selección extendido de ~ 31 MB o ~ 310 MB para un cuadro de selección de 10000 filas.
Estos objetos se pueden usar como entrada para la mayoría de las funciones warbleR. Aquí hay algunos ejemplos de funciones de warbleR usando extended_selection_table:
# parametros espectrales
sp <- specan(ext_st)
sp
sound.files | selec | top.freq | bottom.freq | duration | meanfreq | sd | freq.median | freq.Q25 | freq.Q75 | freq.IQR | time.median | time.Q25 | time.Q75 | time.IQR | skew | kurt | sp.ent | time.ent | entropy | sfm | meandom | mindom | maxdom | dfrange | modindx | startdom | enddom | dfslope | meanpeakf |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Phae.long1.wav_1 | 1 | 8.604378 | 2.220105 | 0.1730334 | 5.982409 | 1.399784 | 6.331716 | 5.296584 | 6.869521 | 1.572937 | 0.0798769 | 0.0532513 | 0.1198154 | 0.0665641 | 1.997847 | 7.021611 | 0.9434481 | 0.9493305 | 0.8956441 | 0.6510917 | 6.663993 | 5.251465 | 7.360840 | 2.109375 | 2.895833 | 7.316895 | 7.185059 | -0.7619101 | 7.108806 |
Phae.long1.wav_2 | 1 | 8.807053 | 2.169437 | 0.1630480 | 5.996627 | 1.424418 | 6.212125 | 5.328746 | 6.880795 | 1.552049 | 0.0815556 | 0.0407778 | 0.1223333 | 0.0815556 | 1.922889 | 7.349165 | 0.9467605 | 0.9536171 | 0.9028469 | 0.6693779 | 6.830116 | 5.295410 | 8.283691 | 2.988281 | 2.661765 | 7.185059 | 7.229004 | 0.2695238 | 6.931635 |
Phae.long1.wav_3 | 1 | 8.756604 | 2.218294 | 0.1749187 | 6.020840 | 1.516065 | 6.428439 | 5.152811 | 6.983309 | 1.830498 | 0.0942188 | 0.0538393 | 0.1345983 | 0.0807590 | 2.488671 | 11.088694 | 0.9448412 | 0.9516042 | 0.8991149 | 0.6688752 | 6.770717 | 4.899902 | 8.371582 | 3.471680 | 3.240506 | 7.185059 | 7.185059 | 0.0000000 | 6.798757 |
Phae.long2.wav_1 | 1 | 8.822316 | 2.316862 | 0.1325709 | 6.400285 | 1.340337 | 6.595971 | 5.607323 | 7.380852 | 1.773529 | 0.0736790 | 0.0589432 | 0.1031506 | 0.0442074 | 1.576807 | 6.067438 | 0.9429749 | 0.9433199 | 0.8895270 | 0.6113456 | 6.341309 | 5.075684 | 7.404785 | 2.329102 | 2.830189 | 5.075684 | 6.657715 | 11.9334722 | 7.463147 |
Phae.long2.wav_2 | 1 | 8.888027 | 2.284006 | 0.1261502 | 6.312574 | 1.370680 | 6.602020 | 5.609829 | 7.213209 | 1.603380 | 0.0841185 | 0.0560790 | 0.0981383 | 0.0420593 | 2.471692 | 10.897781 | 0.9361034 | 0.9436550 | 0.8833586 | 0.6202855 | 6.411621 | 5.075684 | 7.580566 | 2.504883 | 2.087719 | 5.075684 | 7.580566 | 19.8563528 | 6.710171 |
Phae.long3.wav_1 | 1 | 8.822316 | 3.006834 | 0.1312195 | 6.612029 | 1.093231 | 6.670130 | 6.067212 | 7.349366 | 1.282153 | 0.0583309 | 0.0437481 | 0.1020790 | 0.0583309 | 1.773862 | 6.626284 | 0.9302604 | 0.9460368 | 0.8800605 | 0.5703286 | 6.481934 | 4.899902 | 7.009277 | 2.109375 | 1.520833 | 4.899902 | 6.965332 | 15.7402610 | 6.710171 |
Phae.long3.wav_2 | 1 | 8.888027 | 2.776843 | 0.1301789 | 6.641352 | 1.117488 | 6.674164 | 6.105325 | 7.419806 | 1.314481 | 0.0723457 | 0.0434074 | 0.1012840 | 0.0578765 | 1.552445 | 5.072432 | 0.9234823 | 0.9490107 | 0.8763946 | 0.5323566 | 6.244629 | 5.031738 | 6.701660 | 1.669922 | 1.368421 | 5.031738 | 6.613770 | 12.1527447 | 6.665879 |
Phae.long3.wav_3 | 1 | 9.315153 | 2.316862 | 0.1312170 | 6.587994 | 1.253397 | 6.654583 | 6.037086 | 7.394054 | 1.356967 | 0.0583309 | 0.0437481 | 0.1020790 | 0.0583309 | 1.804727 | 5.989106 | 0.9198633 | 0.9533711 | 0.8769711 | 0.5311599 | 6.231445 | 5.427246 | 6.833496 | 1.406250 | 1.656250 | 5.471191 | 6.657715 | 9.0424551 | 6.710171 |
Phae.long4.wav_1 | 1 | 9.216586 | 2.513997 | 0.1454249 | 6.223265 | 1.478895 | 6.236892 | 5.459282 | 7.310408 | 1.851126 | 0.0872800 | 0.0436400 | 0.1163733 | 0.0727333 | 1.250661 | 4.286583 | 0.9641781 | 0.9520208 | 0.9179176 | 0.7580285 | 6.270197 | 5.119629 | 7.844238 | 2.724609 | 2.709677 | 5.383301 | 6.262207 | 6.0437118 | 6.222951 |
Phae.long4.wav_2 | 1 | 10.235116 | 2.579708 | 0.1441864 | 6.469164 | 1.592056 | 6.334537 | 5.633543 | 7.583833 | 1.950290 | 0.0865333 | 0.0432667 | 0.1153778 | 0.0721111 | 1.697660 | 6.403873 | 0.9583776 | 0.9526137 | 0.9129636 | 0.7212134 | 6.294167 | 4.108887 | 8.151855 | 4.042969 | 2.478261 | 5.427246 | 4.108887 | -9.1434347 | 6.222951 |
Phae.long4.wav_3 | 1 | 9.742279 | 2.579708 | 0.1450989 | 6.123725 | 1.543169 | 6.081716 | 5.178639 | 7.246754 | 2.068115 | 0.0870933 | 0.0435467 | 0.1161244 | 0.0725778 | 1.090784 | 4.106009 | 0.9643391 | 0.9536831 | 0.9196739 | 0.7370873 | 6.150346 | 4.943848 | 7.888184 | 2.944336 | 3.149254 | 5.339355 | 5.031738 | -2.1200514 | 5.912903 |
snr <- sig2noise(ext_st, mar = 0.05)
snr
sound.files | channel | selec | start | end | bottom.freq | top.freq | sel.comment | rec.comment | SNR |
---|---|---|---|---|---|---|---|---|---|
Phae.long1.wav_1 | 1 | 1 | 0.1 | 0.2730334 | 2.220105 | 8.604378 | c24 | NA | 21.18244 |
Phae.long1.wav_2 | 1 | 1 | 0.1 | 0.2630480 | 2.169437 | 8.807053 | c25 | NA | 20.35483 |
Phae.long1.wav_3 | 1 | 1 | 0.1 | 0.2749187 | 2.218294 | 8.756604 | c26 | NA | 19.16430 |
Phae.long2.wav_1 | 1 | 1 | 0.1 | 0.2325709 | 2.316862 | 8.822316 | c27 | NA | 23.27315 |
Phae.long2.wav_2 | 1 | 1 | 0.1 | 0.2261502 | 2.284006 | 8.888027 | c28 | NA | 26.20566 |
Phae.long3.wav_1 | 1 | 1 | 0.1 | 0.2312195 | 3.006834 | 8.822316 | c29 | NA | 25.32589 |
Phae.long3.wav_2 | 1 | 1 | 0.1 | 0.2301789 | 2.776843 | 8.888027 | c30 | NA | 25.50842 |
Phae.long3.wav_3 | 1 | 1 | 0.1 | 0.2312170 | 2.316862 | 9.315153 | c31 | NA | 24.66928 |
Phae.long4.wav_1 | 1 | 1 | 0.1 | 0.2454249 | 2.513997 | 9.216586 | c32 | NA | 27.62022 |
Phae.long4.wav_2 | 1 | 1 | 0.1 | 0.2441864 | 2.579708 | 10.235116 | c33 | NA | 28.85208 |
Phae.long4.wav_3 | 1 | 1 | 0.1 | 0.2450989 | 2.579708 | 9.742279 | c34 | NA | 24.29024 |
dtw.dist <- dfDTW(ext_st, img = FALSE)
dtw.dist
measuring dominant frequency contours (step 1 of 2):
measuring dominant frequency:calculating DTW distances (step 2 of 2, no progress bar):
Phae.long1.wav_1-1 | Phae.long1.wav_2-1 | Phae.long1.wav_3-1 | Phae.long2.wav_1-1 | Phae.long2.wav_2-1 | Phae.long3.wav_1-1 | Phae.long3.wav_2-1 | Phae.long3.wav_3-1 | Phae.long4.wav_1-1 | Phae.long4.wav_2-1 | Phae.long4.wav_3-1 | |
---|---|---|---|---|---|---|---|---|---|---|---|
Phae.long1.wav_1-1 | 0.000 | 8.631 | 4.343 | 16.633 | 16.611 | 13.813 | 15.675 | 15.516 | 18.661 | 20.886 | 21.527 |
Phae.long1.wav_2-1 | 8.631 | 0.000 | 6.981 | 22.115 | 29.123 | 16.735 | 22.374 | 23.024 | 15.824 | 16.635 | 19.549 |
Phae.long1.wav_3-1 | 4.343 | 6.981 | 0.000 | 18.252 | 20.535 | 15.206 | 18.451 | 16.468 | 17.262 | 19.147 | 21.057 |
Phae.long2.wav_1-1 | 16.633 | 22.115 | 18.252 | 0.000 | 12.159 | 10.369 | 11.213 | 12.043 | 12.446 | 13.535 | 15.345 |
Phae.long2.wav_2-1 | 16.611 | 29.123 | 20.535 | 12.159 | 0.000 | 6.762 | 5.341 | 8.698 | 17.521 | 20.599 | 19.272 |
Phae.long3.wav_1-1 | 13.813 | 16.735 | 15.206 | 10.369 | 6.762 | 0.000 | 3.639 | 4.422 | 13.252 | 15.629 | 15.818 |
Phae.long3.wav_2-1 | 15.675 | 22.374 | 18.451 | 11.213 | 5.341 | 3.639 | 0.000 | 3.644 | 13.655 | 15.946 | 14.627 |
Phae.long3.wav_3-1 | 15.516 | 23.024 | 16.468 | 12.043 | 8.698 | 4.422 | 3.644 | 0.000 | 11.029 | 13.718 | 12.458 |
Phae.long4.wav_1-1 | 18.661 | 15.824 | 17.262 | 12.446 | 17.521 | 13.252 | 13.655 | 11.029 | 0.000 | 5.381 | 5.686 |
Phae.long4.wav_2-1 | 20.886 | 16.635 | 19.147 | 13.535 | 20.599 | 15.629 | 15.946 | 13.718 | 5.381 | 0.000 | 6.102 |
Phae.long4.wav_3-1 | 21.527 | 19.549 | 21.057 | 15.345 | 19.272 | 15.818 | 14.627 | 12.458 | 5.686 | 6.102 | 0.000 |
El uso de objetos extended_selection_table puede mejorar el rendimiento (en nuestro caso, medido como tiempo). Aquí usamos microbenchmark para comparar el rendimiento de sig2noise()
y ggplot2 para trazar los resultados:
# cragar paquetes
library(microbenchmark)
library(ggplot2)
# usar las primeras 100 selecciones
mbmrk.snr <- microbenchmark(extended = sig2noise(lng_ext_st[1:100, ],
mar = 0.05), regular = sig2noise(lng.selec.table[1:100, ],
mar = 0.05), times = 50)
autoplot(mbmrk.snr) + ggtitle("sig2noise")
Coordinate system already present. Adding new coordinate system, which will replace the existing one.
La función se ejecuta mucho más rápido en los cuadros de selección extendidos. Es probable que la ganancia en el rendimiento mejore cuando se utilizan grabaciones y conjuntos de datos más largos (es decir, compensar la sobrecarga informática).
Los de selección ampliadas de arriba fueron hechas por elemento (by.element
). Esto es, cada archivo de sonido dentro del objeto contiene una sola selección (es decir, una correspondencia 1: 1 entre las selecciones y los objetos ‘wave’). Sin embargo, los cuadros de selección extendidos también se pueden crear utilizando un nivel jerárquico superior con el argumento by.song
. En este caso, “canción” representa un nivel superior que contiene una o más selecciones y que el usuario puede querer mantener juntos para algún análisis en particular (por ejemplo, la duración de los intervalos). El argumento by.song
toma el nombre de la columna de caracteres o factores con los ID de las diferentes “cantos” dentro de un archivo de sonido (tenga en cuenta que la función supone que un canto determinado solo se puede encontrar en un solo archivo de sonido, por lo que las selecciones con el mismo ID de canto, pero de diferentes archivos de sonido se toma como ‘cantos’ diferentes).
Para crear un cuadro de selección por canto, agreguemos una columna de canto artificial a nuestros datos de ejemplo en el que cada uno de los archivos de sonido tiene 2 cantos:
# add column
lbh_selec_table$song <- c(1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2)
El cuadro de datos se ve así:
sound.files | channel | selec | start | end | bottom.freq | top.freq | sel.comment | rec.comment | song |
---|---|---|---|---|---|---|---|---|---|
Phae.long1.wav | 1 | 1 | 1.16935 | 1.34239 | 2.2201 | 8.6044 | c24 | NA | 1 |
Phae.long1.wav | 1 | 2 | 2.15841 | 2.32146 | 2.1694 | 8.8071 | c25 | NA | 1 |
Phae.long1.wav | 1 | 3 | 0.34334 | 0.51826 | 2.2183 | 8.7566 | c26 | NA | 2 |
Phae.long2.wav | 1 | 1 | 0.15960 | 0.29217 | 2.3169 | 8.8223 | c27 | NA | 1 |
Phae.long2.wav | 1 | 2 | 1.45706 | 1.58321 | 2.2840 | 8.8880 | c28 | NA | 2 |
Phae.long3.wav | 1 | 1 | 0.62655 | 0.75777 | 3.0068 | 8.8223 | c29 | NA | 1 |
Phae.long3.wav | 1 | 2 | 1.97421 | 2.10439 | 2.7768 | 8.8880 | c30 | NA | 1 |
Phae.long3.wav | 1 | 3 | 0.12336 | 0.25458 | 2.3169 | 9.3151 | c31 | NA | 2 |
Phae.long4.wav | 1 | 1 | 1.51681 | 1.66224 | 2.5140 | 9.2166 | c32 | NA | 1 |
Phae.long4.wav | 1 | 2 | 2.93269 | 3.07688 | 2.5797 | 10.2351 | c33 | NA | 2 |
Phae.long4.wav | 1 | 3 | 0.14540 | 0.29050 | 2.5797 | 9.7423 | c34 | NA | 2 |
Ahora podemos crear un cuadro de selección extendido ‘por canto’ usando el nombre de la columna ‘canto’ (que en este ejemplo simple también es ‘canto’) como entrada para el argumento by.song
:
bs_ext_st <- selection_table(X = lbh_selec_table, extended = TRUE,
confirm.extended = FALSE, by.song = "song")
checking selections (step 1 of 2):
all selections are OK
saving wave objects into extended selection table (step 2 of 2):
En este caso, solo deberíamos tener 8 objetos ‘wave’ en lugar de 11 como cuando el objeto fue creado ‘por selección’:
# by element
length(attr(ext_st, "wave.objects"))
[1] 11
# by song
length(attr(bs_ext_st, "wave.objects"))
[1] 8
Nuevamente, estos objetos también pueden usarse en los análisis:
# proporcion señal ruido
bs_snr <- sig2noise(bs_ext_st, mar = 0.05)
sound.files | channel | selec | start | end | bottom.freq | top.freq | sel.comment | rec.comment | song | SNR |
---|---|---|---|---|---|---|---|---|---|---|
Phae.long1.wav-song_1 | 1 | 1 | 0.1000 | 0.27303 | 2.2201 | 8.6044 | c24 | NA | 1 | 21.182 |
Phae.long1.wav-song_1 | 1 | 2 | 1.0891 | 1.25210 | 2.1694 | 8.8071 | c25 | NA | 1 | 20.357 |
Phae.long1.wav-song_2 | 1 | 1 | 0.1000 | 0.27492 | 2.2183 | 8.7566 | c26 | NA | 2 | 19.164 |
Phae.long2.wav-song_1 | 1 | 1 | 0.1000 | 0.23257 | 2.3169 | 8.8223 | c27 | NA | 1 | 23.273 |
Phae.long2.wav-song_2 | 1 | 1 | 0.1000 | 0.22615 | 2.2840 | 8.8880 | c28 | NA | 2 | 26.206 |
Phae.long3.wav-song_1 | 1 | 1 | 0.1000 | 0.23122 | 3.0068 | 8.8223 | c29 | NA | 1 | 25.326 |
Phae.long3.wav-song_1 | 1 | 2 | 1.4477 | 1.57784 | 2.7768 | 8.8880 | c30 | NA | 1 | 25.512 |
Phae.long3.wav-song_2 | 1 | 1 | 0.1000 | 0.23122 | 2.3169 | 9.3151 | c31 | NA | 2 | 24.669 |
Phae.long4.wav-song_1 | 1 | 1 | 0.1000 | 0.24542 | 2.5140 | 9.2166 | c32 | NA | 1 | 27.620 |
Phae.long4.wav-song_2 | 1 | 1 | 2.8873 | 3.03148 | 2.5797 | 10.2351 | c33 | NA | 2 | 28.841 |
Phae.long4.wav-song_2 | 1 | 2 | 0.1000 | 0.24510 | 2.5797 | 9.7423 | c34 | NA | 2 | 24.290 |
Compare el tamaño de un cuadro extendido creado por elemento al de uno creado por canto usando los datos de ejemplo
La nueva clase de objetos permite compartir conjuntos de datos completos, incluidos los datos acústicos. Por ejemplo, con el siguiente código puede descargar un subconjunto de los datos utilizados en Araya-Salas et al (2017) (también se puede descargar aquí):
URL <- "https://marceloarayasalas.weebly.com/uploads/2/5/5/2/25524573/extended.selection.table.araya-salas.et.al.2017.bioacoustics.100.sels.rds"
dat <- readRDS(gzcon(url(URL)))
nrow(dat)
[1] 100
format(object.size(dat), units = "auto")
[1] "10.1 Mb"
El tamaño total de los 100 archivos de sonido de los que se tomaron estas selecciones suma hasta 1.1 GB. El tamaño del cuadro de selección extendido es de solo 10.1 MB.
Estos datos están listos para ser utilizados:
sp <- specan(dat, bp = c(2, 10))
head(sp)
sound.files | selec | duration | meanfreq | sd | freq.median | freq.Q25 | freq.Q75 | freq.IQR | time.median | time.Q25 | time.Q75 | time.IQR | skew | kurt | sp.ent | time.ent | entropy | sfm | meandom | mindom | maxdom | dfrange | modindx | startdom | enddom | dfslope | meanpeakf |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pyrrhura rupicola Macaulay Library 132 .wav_2 | 1 | 0.15048 | 4.6570 | 1.7692 | 4.2876 | 3.4364 | 5.6243 | 2.1879 | 0.06543 | 0.03926 | 0.10469 | 0.06543 | 2.6003 | 11.8598 | 0.92349 | 0.95082 | 0.87807 | 0.54127 | 3.7540 | 2.0241 | 6.8476 | 4.8234 | 5.3750 | 4.5220 | 2.0241 | -16.5996 | 4.0208 |
0.CCE.1971.4.4.ITM70863A-23.wav_1 | 1 | 0.16556 | 6.2556 | 1.6484 | 6.3505 | 5.6072 | 7.2024 | 1.5952 | 0.08279 | 0.03821 | 0.12100 | 0.08279 | 2.3775 | 10.1358 | 0.93975 | 0.94103 | 0.88434 | 0.63367 | 6.6434 | 3.5745 | 8.2257 | 4.6512 | 3.2037 | 8.2257 | 6.9337 | -7.8036 | 6.0961 |
0.SAT.1989.6.2.ITM70866A-32.wav_5 | 1 | 0.15425 | 6.0960 | 1.6472 | 5.8475 | 4.9067 | 7.3982 | 2.4915 | 0.08356 | 0.04499 | 0.11570 | 0.07070 | 1.9681 | 7.2878 | 0.93913 | 0.94322 | 0.88581 | 0.60968 | 6.3652 | 3.3161 | 8.1395 | 4.8234 | 3.1071 | 6.4169 | 3.3161 | -20.1021 | 7.0473 |
23.CCE.2011.7.21.7.42.wav_6 | 1 | 0.15496 | 5.4239 | 1.4632 | 5.1832 | 4.4278 | 6.4358 | 2.0081 | 0.06458 | 0.03875 | 0.10333 | 0.06458 | 2.1063 | 8.0438 | 0.92290 | 0.94473 | 0.87189 | 0.50696 | 5.0284 | 2.3687 | 7.7950 | 5.4264 | 2.1587 | 7.3644 | 2.3687 | -32.2397 | 4.3667 |
Cyanoliseus patagonus Macaulay Library 79 .wav_5 | 1 | 0.15989 | 3.1546 | 1.2261 | 2.5692 | 2.2439 | 3.6575 | 1.4136 | 0.06396 | 0.03838 | 0.09595 | 0.05757 | 4.5462 | 29.4729 | 0.82325 | 0.93564 | 0.77027 | 0.12652 | 2.5906 | 2.0241 | 4.4358 | 2.4117 | 3.0714 | 2.4548 | 2.2825 | -1.0774 | 2.2913 |
0.HC1.2011.8.7.9.20.wav_4 | 1 | 0.15380 | 6.0302 | 1.7597 | 6.4163 | 4.9203 | 7.1837 | 2.2634 | 0.07692 | 0.04487 | 0.10896 | 0.06410 | 4.1566 | 27.8331 | 0.92869 | 0.94595 | 0.87849 | 0.60299 | 6.1447 | 4.9526 | 8.5702 | 3.6176 | 4.0714 | 5.3833 | 4.9526 | -2.8002 | 4.9720 |
Y los espectrogramas se pueden visualizar:
par(mfrow = c(3, 2), mar = rep(0, 4))
for(i in 1:6){
wv <- read_wave(X = dat, index = i, from = 0.17, to = 0.4)
spectro(wv, wl = 250, grid = FALSE, scale = FALSE, axisX = FALSE,
axisY = FALSE, ovlp = 90, flim = c(0, 12),
palette = reverse.gray.colors.1)
}
el paquete NatureSounds contiene un cuadro de selección extendido con cantos de Phaethornis longirotris de 10 tipos de canto diferentes:
data("Phae.long.est")
Phae.long.est
object of class 'extended_selection_table'
contains a selection table data frame with 100 rows and 8 columns:
sound.files selec start end bottom.freq top.freq lek lek.song.type
31 0.BR1.2012.7.27.5.55.wav_3-4 1 0.1 0.25771 2.3227 11.673 BR1 BR1-D1
32 0.BR1.2012.7.27.5.55.wav_1 1 0.1 0.25480 2.3680 11.718 BR1 BR1-D1
33 0.BR1.2012.7.27.5.55.wav_3-3 1 0.1 0.25556 2.5492 11.900 BR1 BR1-D1
34 0.BR1.2012.7.27.5.55.wav_4 1 0.1 0.26021 2.6398 11.990 BR1 BR1-D1
35 0.BR1.2012.7.27.5.55.wav_2-2 1 0.1 0.26156 2.2774 11.628 BR1 BR1-D1
36 0.BR1.2012.7.27.5.55.wav_3 1 0.1 0.25803 2.6398 11.990 BR1 BR1-D1
... and 94 more rows
100 wave objects (as attributes):
[1] "0.BR1.2012.7.27.5.55.wav_3-4" "0.BR1.2012.7.27.5.55.wav_1" "0.BR1.2012.7.27.5.55.wav_3-3"
[4] "0.BR1.2012.7.27.5.55.wav_4" "0.BR1.2012.7.27.5.55.wav_2-2" "0.BR1.2012.7.27.5.55.wav_3"
... and 94 more
and a data frame (check.results) generated by checkres() (as attribute)
the selection table was created by element (see 'class_extended_selection_table')
table(Phae.long.est$lek.song.type)
BR1-D1 CCL-G1 CCL-K2 DAR-A1 HC2-E1 HC2-F2 SAT-G2 SJA-C3 SUR-E4 TR1-E1
10 10 10 10 10 10 10 10 10 10
La capacidad de comprimir grandes conjuntos de datos y la facilidad de realizar análisis que requieren un único objeto R puede simplificar el intercambio de datos y la reproducibilidad de los análisis bioacústicos.
Los análisis bioacústicos generalmente siguen una secuencia de procesamiento y análisis específica. Esta secuencia se puede representar en forma esquemática así:
Podemos agrupar las funciones en warbleR deacuerdo con las etapas de ánalisis bioacústico.
La función querxc()
permite hacer busquedas y descargar sonidos de la base de datos de acceso libre Xeno-Canto. Además se pueden convertir archivos .mp3 a .wav, cambiar la tasa de muestreo de los archivos y corregir archivos corruptos, entre otras funciones.
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
check_wavs | verifica archivos de audio pueden ser leidos | múltiples archivos wave | cuadro de datos |
consolidate | consolida archivos de audio en una sola carpeta | múltiples archivos wave | cuadro de datos y archivos wave |
fix_wavs | corrige archivos wave con errores de lectura | múltiples archivos wave | archivos wave |
mp32wav | convertir múltiples archivos mp3 a wave | múltiples archivos mp3 | archivos wave |
quer_xc | busca y descarga archivos mp3 de Xeno-Canto | nombres taxonómicos/cuadros de datos | archivos mp3 |
resample_est | remuestrea objetos wave | cuadro de selección ext | cuadro de selección extendidas |
rm_channels | remueve canales | múltiples archivos wave | archivos wave |
rm_sil | remueve silencios | múltiples archivos wave | archivos wave |
wav_dur | mide la duracion de archivos wave | múltiples archivos wave | cuadro de datos |
wav_info | registra información de parámetros de grabación | múltiples archivos wave | cuadro de datos |
Se recomienda hacer anotaciones en otros programas e importarlas luego a R (por ejemplo en Raven e importarlas con el paquete Rraven). Sin embargo, warbleR ofrece algunas funciones para facilitar la anotación manual o automática de archivos de sonido, asi como la posterior manipulación:
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
manual_loc | anotación manual de archivos de audio | múltiples archivos wave | cuadro de datos, archivo .csv |
auto_detec | anotación automatica de archivos de audio | múltiples archivos wave | cuadro de datos, imágenes |
freq_range | detecta rango de frecuencia | múltiples archivos wave | cuadro de datos |
sel_tailor | reajusta selecciones de forma interactiva | cuadros de selección | cuadros de selección |
Las anotaciones (o cuadros de selección) pueden ser manipulados y refinados con una variedad de funciones. Los cuadros de selección también sepueden convertir en el formato compacto de cuadros extendidos:
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
sel_tailor | reajusta selecciones de forma interactiva | cuadros de selección | cuadros de selección |
sort_colms | ordenar columnas en orden intuitivo | cuadros de selección | cuadros de selección |
cut_sels | guarda selecciones como archivos wave individuales | cuadros de selección | archivos wave |
filter_sels | filtra cuadros de selección con base en archivos de imagen | cuadros de selección, cuadros de selección ext., imágenes | cuadros de selección, cuadros de selección ext. |
fix_extended_selection_table | añade objetos wave a cuadros de seleccion | cuadros de selección | cuadro de selección ext. |
selection_table | crea cuadros de selección y cuadros de selección ext. | cuadros de selección | cuadros de selección, cuadros de selección ext. |
song_param | mide parámetros a otros niveles estructurales de las vocalizaciones | cuadros de selección, cuadros de selección ext. | cuadros de datos, cuadros de selección |
La mayoría de las funciones de warbleR están dedicadas a ćuantificar la estructura de señales acústicas enlistadas en cuadros de seleccion utilizando procesamiento en lotes (“batch processing”). Para esto se ofrecen 5 métodos principales de medición:
La mayoria de fuciones giran alrededor de estos métodos, o variaciones de estos:
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
freq_range | detecta rango de frecuencia | múltiples archivos wave | cuadro de datos |
song_param | mide parámetros a otros niveles estructurales de las vocalizaciones | cuadros de selección, cuadros de selección ext. | cuadros de datos, cuadros de selección |
compare_methods | compara desempeño de metodos para medir estructura acústica | cuadros de selección, cuadros de selección ext. | imágenes |
dfDTW | mide distorsión dinámica de tiempo (DTW) sobre contornos de frec dominante | cuadros de selección, cuadros de selección ext. | matriz de (di)similitud, imágenes |
dfts | mide contornos de frecuencia dominante | cuadros de selección, cuadros de selección ext. | cuadro de datos con contornos de frecuenica |
ffDTW | mide distorsión dinámica de tiempo (DTW) sobre contornos de frec fundamental | cuadros de selección, cuadros de selección ext. | matriz de (di)similitud, imágenes |
ffts | mide contornos de frecuencia fundamental | cuadros de selección, cuadros de selección ext. | cuadro de datos con contornos de frecuenica |
inflections | mide inflecciones en contornos de frecuencia | cuadro de datos con contornos de frecuenica | cuadros de datos |
mfcc_stats | mide descriptores estadísticos de los coeficientes cepstrales | cuadros de selección, cuadros de selección ext. | cuadros de datos |
multi_DTW | mide distorsión dinámica de tiempo (DTW) sobre múltiples contornos | cuadros de selección, cuadros de selección ext. | matriz de (di)similitud |
sig2noise | mide proporción señal-ruido | cuadros de selección, cuadros de selección ext. | cuadros de selección, cuadros de selección ext. |
se_ts | mide contornos de entropia espectral | cuadros de selección, cuadros de selección ext. | cuadro de datos con contornos de frecuenica |
spec_an | mide parámetros spectrográficos | cuadros de selección, cuadros de selección ext. | cuadros de datos |
x_corr | mide correlación-cruzada pareada | cuadros de selección, cuadros de selección ext. | matriz de (di)similitud |
Se proveen funciones para detectar inconsistencias en los cuadros de selección o modificar cuadros de selección. El paquete también ofrece varias funciones para generar espectrogramas mostrando las anotaciones, o organizar que son organizados por las categorías de anotación. Esto permite verificar si las anotaciones coinciden con las categorias previamente definidas. Esto es particularmente importante si las anotaciones fueron generas automáticamente.
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
check_sels | verifica cuadros de selecciones | cuadros de selección | cuadros de selección |
ovlp_sels | determinan selecciones que traslapan en tiempo | cuadros de selección, cuadros de selección ext. | cuadros de selección, cuadros de selección ext. |
catalog | crea catálogos de espectrogramas | cuadros de selección, cuadros de selección ext. | imágenes |
catalog2pdf | consolida catálogos en archivos .pdf | imágenes | imágenes |
spectrograms | crea imágenes de espectrogramas | cuadros de selección, cuadros de selección ext. | imágenes |
full_spec | crea imágenes de espectrogramas completos de archivos de audio | múltiples archivos wave, cuadros de selección, cuadros de selección ext. | imágenes |
full_spec2pdf | consolida espectrogramas completos en archivos .pdf | imágenes | imágenes |
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
snr_specs | crea imágenes de espectrogramas con areas dondese mide proporción señal-ruido | cuadros de selección, cuadros de selección ext. | imágenes |
spectrograms | crea imágenes de espectrogramas | cuadros de selección, cuadros de selección ext. | imágenes |
track_freqs | crea imágenes con contornos de frecuencia graficados sobre espectrogramas | cuadros de selección, cuadros de selección ext. | imágenes |
coor_graph | gráfica duetos esquemáticamente | cuadros de datos | imágenes |
full_spec | crea imágenes de espectrogramas completos de archivos de audio | múltiples archivos wave, cuadros de selección, cuadros de selección ext. | imágenes |
xcorr_graph | gráfica resultados de correlación-cruzada pareada | resultado de x_corr | imágenes |
Por último, warbleR ofrece funciones para simplificar el uso de cuadros de selección extendidos, para organizar gran cantidad de imagenes con espectrogramas y generar visualizaciones complejas con espectrogramas:
Función | Descripción | Trabaja sobre | Producto |
---|---|---|---|
is_extended_selection_table | revisa si objeto es un cuadro de selección ext. | cuadros de datos | TRUE/FALSE |
is_selection_table | revisa si objeto es un cuadro de selección | cuadros de datos | TRUE/FALSE |
catalog2pdf | consolida catálogos en archivos .pdf | imágenes | imágenes |
move_imgs | mueve archivos de imágenes entre carpetas | imágenes | imágenes |
track_harm | mide contornos de frecuencia de armónico con mayor energía | objeto wave | cuadro de datos con contornos de frecuenica |
xc_maps | produce mapas con localidad de grabaciones de Xeno-Canto | cuadros de datos | imágenes |
coor_test | prueba la significancia estadística de el patrón de coordinación en duetos | cuadros de datos | cuadros de datos |
full_spec2pdf | consolida espectrogramas completos en archivos .pdf | imágenes | imágenes |
color_spectro | colorea señales en un espectrograma | objeto wave | imagen en R |
freq_range_detec | detecta rango de frecuencia | objeto wave | cuadro de datos, imagen en R |
open_wd | abre carpeta de trabajo | ||
phylo_spectro | crea arboles filogenéticos con imágenes de espectrogramas | cuadros de selección | imagen en R |
read_wave | lee archivos u objetos wave | cuadros de selección, cuadros de selección ext. | objeto wave |
sim_songs | simula cantos | objeto wave, archivo wave y cuadro de selección | |
spec_param | produce mosaico de espetrogramas con diferentes parámetros de visualización | cuadros de selección, cuadros de selección ext. | imágenes |
warbleR_options | define parámetros globales para funciones de warbleR |
Corra los ejemplos de las funciones phylo_spectro()
y color_spectro()
Utilice las funciones querxc()
y xcmaps()
para explorar la distribución geográfica de las grabaciones en Xeno-Canto de una especie (de ave) de su interés
Información de la sesión
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=es_CR.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=es_CR.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=es_CR.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=es_CR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_3.1.1 microbenchmark_1.4-6 kableExtra_1.1.0 knitr_1.22
[5] warbleR_1.1.16 NatureSounds_1.0.1 seewave_2.1.3 tuneR_1.3.3
[9] maps_3.3.0
loaded via a namespace (and not attached):
[1] tidyselect_0.2.5 xfun_0.6 purrr_0.3.2 pbapply_1.4-0 colorspace_1.4-1
[6] htmltools_0.3.6 viridisLite_0.3.0 yaml_2.2.0 rlang_0.3.4 pracma_2.2.5
[11] pillar_1.3.1 withr_2.1.2 glue_1.3.1 jpeg_0.1-8 plyr_1.8.4
[16] stringr_1.4.0 munsell_0.5.0 gtable_0.3.0 rvest_0.3.3 evaluate_0.13
[21] fftw_1.0-5 parallel_3.5.3 highr_0.8 Rcpp_1.0.1 readr_1.3.1
[26] scales_1.0.0 webshot_0.5.1 soundgen_1.4.0 Sim.DiffProc_4.3 Deriv_3.8.5
[31] rjson_0.2.20 hms_0.4.2 digest_0.6.18 stringi_1.4.3 dplyr_0.8.0.1
[36] dtw_1.20-1 grid_3.5.3 tools_3.5.3 bitops_1.0-6 magrittr_1.5
[41] RCurl_1.95-4.12 lazyeval_0.2.2 proxy_0.4-23 tibble_2.1.1 crayon_1.3.4
[46] pkgconfig_2.0.2 MASS_7.3-51.1 xml2_1.2.0 assertthat_0.2.1 rmarkdown_1.12
[51] httr_1.4.0 rstudioapi_0.10 iterators_1.0.10 R6_2.4.0 signal_0.7-6
[56] compiler_3.5.3