Measuring degradation
LBH song type prevalence and degradation
Source code and data found at https://github.com/maRce10/lbh_songtype_prevalence_and_degradation
1 Purpose
- Time-sync re-recorded sounds
- Measure degradation features
2 Report overview
3 Load packages
4 Time sync all replicates
4.1 Read master sound file
Code
wav_path <- "/media/m/Expansion/recordings GN MQO"
wavs <- list.files(path = wav_path, pattern = ".wav")
prev_wavs <- grep("PRV", wavs, value = TRUE)
metadata <- data.frame(sound.files = prev_wavs)
metadata$lek <- sapply(strsplit(prev_wavs, "_"), "[[", 1)
metadata$date <- sapply(strsplit(prev_wavs, "_"), "[[", 2)
metadata$perch <- gsub("prch", "", sapply(strsplit(prev_wavs, "_"),
"[[", 3))
metadata$transect <- gsub("trnsc", "", sapply(strsplit(prev_wavs,
"_"), "[[", 4))
metadata$distance <- as.numeric(gsub("dist", "", sapply(strsplit(prev_wavs,
"_"), "[[", 5)))
metadata$height <- as.numeric(gsub("hght", "", sapply(strsplit(prev_wavs,
"_"), "[[", 6)))
metadata$replicate <- as.numeric(gsub("rep|\\.wav", "", sapply(strsplit(prev_wavs,
"_"), "[[", 8)))
master.sf <- imp_raven(path = "./data/processed", files = "prevalence_master.txt",
warbler.format = TRUE, all.data = TRUE)
master.sf$sound.id <- paste(master.sf$song.type.lek, master.sf$selec,
sep = "-")
master.sf$sound.id[1] <- "start_marker"
master.sf$sound.id[nrow(master.sf)] <- "end_marker"
5 Find position of start and end markers
Code
found.fourier <- find_markers(X = master.sf, path = wav_path, test.files = prev_wavs,
parallel = 20)
found.fourier$time.match[is.na(found.fourier$time.match)] <- 0
found.fourier$test.files[(found.fourier$time.match > 0.02)]
mean(found.fourier$time.match)
found.mfcc <- find_markers(X = master.sf, path = wav_path, test.files = prev_wavs,
cores = 20, type = "mfcc", wl = 700)
found.mfcc$time.match[is.na(found.mfcc$time.match)] <- 0
found.mfcc$test.files[(found.mfcc$time.match > 0.02)]
mean(found.mfcc$time.match)
write.csv(found.mfcc, "./data/processed/mfcc_xcorr_marker_position_prevalence_files.csv",
row.names = FALSE)
write.csv(found.fourier, "./data/processed/fourier_xcorr_marker_position_prevalence_files.csv",
row.names = FALSE)
5.1 Spot not-well sync files
Those in which annotations exceeded sound file length
Code
found.markers <- read.csv("./data/processed/fourier_xcorr_marker_position_prevalence_files.csv")
# found.markers <-
# read.csv('./data/processed/mfcc_xcorr_marker_position_prevalence_files.csv')
alg.tests <- align_test_files(X = master.sf, Y = found.markers, path = wav_path,
by.song = FALSE, output = "data.frame", pb = FALSE)
saveRDS(.Options$baRulho$files_to_check_align_test_files, "./data/processed/files_to_check_align_tests.RDS")
Code
files.to.check |
---|
LOC_2023.06.19_prch9_trnsc4_dist10_hght2.3_PRV_rep1.wav |
LOC_2023.06.19_prch9_trnsc4_dist20_hght2.3_PRV_rep1.wav |
LOC_2023.06.19_prch9_trnsc4_dist40_hght2.3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc3_dist10_hght3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc3_dist20_hght3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc3_dist40_hght3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc4_dist10_hght2.3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc4_dist20_hght2.3_PRV_rep1.wav |
LOC_2023.06.22_prch9_trnsc4_dist40_hght2.3_PRV_rep1.wav |
Code
found.starts <- read.csv("./data/processed/start_marker_position_prevalence_files.csv")
alg.tests <- align_test_files(X = master.sf, Y = found.starts, path = wav_path,
by.song = FALSE, output = "data.frame")
alg.tests <- check_sels(alg.tests, path = wav_path)
exp_raven(alg.tests, path = "./data/raw", file.name = "align_rerecorded",
sound.file.path = wav_path)
alg.tests$distance <- as.numeric(gsub("dist", "", sapply(strsplit(alg.tests$sound.files,
"_"), "[[", 5)))
br <- blur_ratio(alg.tests, path = wav_path, method = 1, cores = 20)
# add metadata
alg.tests.est$trail <- substr(alg.tests.est$sound.files, start = 0,
stop = 3)
alg.tests.est$transect <- substr(alg.tests.est$sound.files, start = 5,
stop = 6)
alg.tests.est$distance <- substr(alg.tests.est$sound.files, start = 8,
stop = 10)
alg.tests.est <- alg.tests.est[order(alg.tests.est$sound.files, alg.tests.est$sound.id,
alg.tests.est$distance), ]
alg.tests.est <- alg.tests.est[grep("marker", alg.tests.est$sound.id,
invert = TRUE), ]
alg.tests.est <- alg.tests.est[alg.tests.est$distance != 1, ]
saveRDS(alg.tests.est, "./data/raw/extended_selection_table_rerecorded_sounds.RDS")
Takeaways
Session information
R version 4.1.0 (2021-05-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3
locale:
[1] LC_CTYPE=pt_BR.UTF-8 LC_NUMERIC=C
[3] LC_TIME=es_CR.UTF-8 LC_COLLATE=pt_BR.UTF-8
[5] LC_MONETARY=es_CR.UTF-8 LC_MESSAGES=pt_BR.UTF-8
[7] LC_PAPER=es_CR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=es_CR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] Rraven_1.0.13 readxl_1.3.1 baRulho_1.1.0 ohun_1.0.0
[5] warbleR_1.1.28 NatureSounds_1.0.4 seewave_2.2.1 tuneR_1.4.4
[9] rprojroot_2.0.3 formatR_1.11 knitr_1.43
loaded via a namespace (and not attached):
[1] Rcpp_1.0.11 png_0.1-7 class_7.3-22
[4] fftw_1.0-7 assertthat_0.2.1 digest_0.6.33
[7] packrat_0.9.0 utf8_1.2.3 cellranger_1.1.0
[10] R6_2.5.1 Sim.DiffProc_4.8 backports_1.4.1
[13] signal_0.7-7 evaluate_0.21 e1071_1.7-13
[16] ggplot2_3.4.2 pillar_1.9.0 rlang_1.1.1
[19] rstudioapi_0.14 checkmate_2.2.0 rmarkdown_2.23
[22] sketchy_1.0.2 xaringanExtra_0.7.0 htmlwidgets_1.5.4
[25] igraph_1.5.0.1 RCurl_1.98-1.12 munsell_0.5.0
[28] proxy_0.4-27 Deriv_4.1.3 compiler_4.1.0
[31] xfun_0.39 pkgconfig_2.0.3 htmltools_0.5.5
[34] tidyselect_1.2.0 gridExtra_2.3 tibble_3.2.1
[37] dtw_1.23-1 viridisLite_0.4.2 fansi_1.0.4
[40] crayon_1.5.2 dplyr_1.0.10 sf_1.0-14
[43] MASS_7.3-60 bitops_1.0-7 brio_1.1.3
[46] grid_4.1.0 jsonlite_1.8.7 gtable_0.3.3
[49] lifecycle_1.0.3 DBI_1.1.3 vdiffr_1.0.5
[52] magrittr_2.0.3 units_0.8-2 scales_1.2.1
[55] KernSmooth_2.23-21 cli_3.6.1 stringi_1.7.12
[58] pbapply_1.7-2 viridis_0.6.3 remotes_2.4.2
[61] testthat_3.1.10 vctrs_0.6.3 generics_0.1.3
[64] rjson_0.2.21 tools_4.1.0 glue_1.6.2
[67] parallel_4.1.0 fastmap_1.1.1 yaml_2.3.7
[70] colorspace_2.1-0 classInt_0.4-9