Nothing
params <-
list(EVAL = FALSE)
## ----setup, eval = TRUE, echo = FALSE, message=FALSE----------------------------------------------
library(knitr)
# create custom printing method
.print_df <- function(x, highlight = NULL, ...) {
kbl <- kableExtra::kable(
head(as.data.frame(x)),
align = "c",
row.names = F,
format = "html",
escape = F
)
if (!is.null(highlight))
kbl <- column_spec(kbl, column = which(names(x) %in% highlight), background = "#ccebff", bold = TRUE)
kbl <-
kableExtra::kable_styling(kbl, bootstrap_options = "striped", font_size = 14)
kbl <-
kableExtra::scroll_box(kbl, width = "100%", height = "300px")
asis_output(kbl)
}
# register data frame printing method
registerS3method("knit_print", "data.frame", .print_df)
# global option chunks
knitr::opts_chunk$set(
fig.width = 5,
fig.height = 3.5,
dpi = 40,
comment = "",
out.width = "80%",
fig.align = "center",
message = TRUE,
warning = TRUE
)
options(width = 100, max.print = 100)
## ----eval = TRUE----------------------------------------------------------------------------------
# load packages
library(viridis)
library(baRulho)
library(Rraven)
# synthesize
synth_est <- baRulho::synth_sounds(
mar = 0.1,
frequencies = c(0.5, 1:5),
durations = 0.1,
fm = FALSE,
am = FALSE,
sampling.rate = 12
)
# convert into a single wave object
synth_wav <- Rraven::exp_est(X = synth_est,
single.file = TRUE,
wave.object = TRUE)
# plot spectro
seewave::spectro(
wave = synth_wav,
scale = FALSE,
palette = viridis,
grid = FALSE,
collevels = seq(-20, 0, 1),
osc = TRUE,
colwave = "#31688EB3",
heights = c(2, 1),
wl = 100
)
## ----eval = TRUE, echo = TRUE---------------------------------------------------------------------
# synthesize
synth_est2 <- baRulho::synth_sounds(
mar = 0.01,
sig2 = 0.05,
frequencies = 2:4,
durations = c(0.1, 0.2),
fm = TRUE,
am = TRUE,
shuffle = TRUE,
seed = 123,
sampling.rate = 12
)
# convert into a single wave object
synth_wav2 <- Rraven::exp_est(
X = synth_est2,
single.file = TRUE,
path = tempdir(),
wave.object = TRUE
)
# plot spectro
seewave::spectro(
synth_wav2,
tlim = c(0, 2),
scale = FALSE,
palette = viridis,
grid = FALSE,
collevels = seq(-20, 0, 1),
osc = TRUE,
colwave = "#31688EB3",
heights = c(2, 1),
wl = 140
)
## ----eval = TRUE----------------------------------------------------------------------------------
# check first 6 rows
head(as.data.frame(synth_est2))
## ----eval = TRUE----------------------------------------------------------------------------------
# check name of wave objects
names(attributes(synth_est2)$wave.objects)
## ----master sound file, eval = TRUE, echo = TRUE, fig.show='hide'---------------------------------
# create master sound file
synth_master_annotations <- baRulho::master_sound_file(
X = synth_est,
file.name = "synthetic_master",
dest.path = tempdir(),
gap.duration = 0.15
)
## ----spectro master 1, eval = TRUE----------------------------------------------------------------
# read wave file
wave <-
tuneR::readWave(file.path(tempdir(), "synthetic_master.wav"))
# plot spectrogram
seewave::spectro(
wave,
scale = FALSE,
palette = viridis,
wl = 150,
grid = FALSE,
flim = c(0, 4.7)
)
## ----eval = TRUE, echo = TRUE, fig.show='hide'----------------------------------------------------
# load example data from warbleR
data(list = c(
"Phae.long1",
"Phae.long2",
"Phae.long3",
"Phae.long4",
"lbh_selec_table"
))
# save sound files to temporary folder
writeWave(Phae.long1, file.path(tempdir(), "Phae.long1.wav"))
writeWave(Phae.long2, file.path(tempdir(), "Phae.long2.wav"))
writeWave(Phae.long3, file.path(tempdir(), "Phae.long3.wav"))
writeWave(Phae.long4, file.path(tempdir(), "Phae.long4.wav"))
# make an extended selection table
est <- warbleR::selection_table(
X = lbh_selec_table,
extended = TRUE,
path = tempdir(),
pb = FALSE
)
# add sound_id column
est$sound.id <- paste0(abbreviate(est$sound.files), est$selec)
# create master sound file
master_annotations <- baRulho::master_sound_file(
X = est,
file.name = "example_master",
dest.path = tempdir(),
gap.duration = 0.3
)
## ----spectro master 2, eval = TRUE----------------------------------------------------------------
# read wave file
wave <-
tuneR::readWave(file.path(tempdir(), "example_master.wav"))
# plot spectrogram
seewave::spectro(
wave,
scale = FALSE,
palette = viridis,
collevels = seq(-120, 0, 5),
wl = 500,
grid = FALSE,
flim = c(0, 10)
)
## ----eval = TRUE----------------------------------------------------------------------------------
Rraven::exp_raven(master_annotations, path = tempdir(),
file.name = "example_master_selection_table")
## -------------------------------------------------------------------------------------------------
knitr::include_graphics("example_master_table.jpg")
## ----eval = TRUE----------------------------------------------------------------------------------
data("master_est")
data("test_sounds_est")
## ----eval = TRUE----------------------------------------------------------------------------------
unique(master_est$sound.files)
unique(test_sounds_est$sound.files)
## -------------------------------------------------------------------------------------------------
# first remove any other wave file in the temporary working directory (dont do it with your data!)
unlink(list.files(
path = tempdir(),
full.names = TRUE,
pattern = ".wav"
))
# save master sound file
writeWave(object = attr(master_est, "wave.objects")[[1]],
file.path(tempdir(), "master.wav"))
# save test sound files
for (i in unique(test_sounds_est$sound.files)) {
writeWave(object = attr(test_sounds_est, "wave.objects")[[i]], file.path(tempdir(), i))
}
# make annotations a data frame
master_annotations <- as.data.frame(master_est)
## -------------------------------------------------------------------------------------------------
master_annotations
## ----eval = TRUE----------------------------------------------------------------------------------
markers_position <-
baRulho::find_markers(X = master_annotations, path = tempdir())
markers_position
## ----eval = TRUE----------------------------------------------------------------------------------
# lower window length
markers_position <-
baRulho::find_markers(X = master_annotations,
hop.size = 4,
path = tempdir())
markers_position
## ----eval = TRUE----------------------------------------------------------------------------------
aligned_tests <-
baRulho::align_test_files(
X = master_annotations,
Y = markers_position,
by.song = TRUE,
remove.markers = FALSE,
path = tempdir()
)
## ----eval = TRUE----------------------------------------------------------------------------------
is.data.frame(aligned_tests)
aligned_tests
## ----eval = TRUE----------------------------------------------------------------------------------
aligned_imgs <- baRulho::plot_aligned_sounds(
X = aligned_tests,
path = tempdir(),
dest.path = tempdir(),
duration = 2.4,
ovlp = 0
)
aligned_imgs
## ----echo = FALSE---------------------------------------------------------------------------------
# try to copy files to man/figures
# fc <- file.copy(from = aligned_imgs[1:2],
# to = file.path("../man/figures", basename(aligned_imgs[c(1, 4)])))
fc <- file.copy(from = aligned_imgs[c(1, 4)],
to = file.path("../vignettes", basename(aligned_imgs[c(1, 4)])),overwrite = TRUE)
## ----echo=FALSE-----------------------------------------------------------------------------------
knitr::include_graphics(basename(aligned_imgs[1]))
knitr::include_graphics(basename(aligned_imgs[4]))
## ----eval = FALSE---------------------------------------------------------------------------------
#
# baRulho::manual_realign(
# X = aligned_tests,
# Y = master_annotations,
# duration = 2.4,
# path = tempdir()
# )
#
## ----eval = TRUE, echo=FALSE----------------------------------------------------------------------
knitr::include_graphics("manual_realign.gif")
## ----eval = TRUE----------------------------------------------------------------------------------
data("test_sounds_est")
data("master_est")
# create "unaligned_test_sounds_est" by
# adding error to "test_sounds_est" start and end
unaligned_test_sounds_est <- test_sounds_est
set.seed(123)
noise_time <- sample(c(0.009, -0.01, 0.03, -0.03, 0, 0.07, -0.007),
nrow(unaligned_test_sounds_est),
replace = TRUE)
attr(unaligned_test_sounds_est, "check.res")$start <-
unaligned_test_sounds_est$start <-
unaligned_test_sounds_est$start + noise_time
attr(unaligned_test_sounds_est, "check.res")$end <-
unaligned_test_sounds_est$end <-
unaligned_test_sounds_est$end + noise_time
## ----eval = TRUE----------------------------------------------------------------------------------
#re align
rts <- auto_realign(X = unaligned_test_sounds_est, Y = master_est)
## ----eval = FALSE, echo = FALSE-------------------------------------------------------------------
#
# # thsi code creates the images use to create the gif shown below
# # rename sound files so aligned and unaligned sounds are intercalated
# unalg <-
# warbleR::rename_waves_est(
# playback_est_unaligned,
# playback_est_unaligned$sound.files,
# new.selec = seq(1, 200, by = 2)[1:nrow(playback_est_unaligned)]
# )
# alg <-
# warbleR::rename_waves_est(playback_est_aligned,
# playback_est_aligned$sound.files,
# new.selec = seq(2, 200, by = 2)[1:nrow(playback_est_aligned)])
#
# # add label
# unalg$type <- "Before aligning"
# alg$type <- "After aligning"
#
# # put together in a single ext sel tab
# unalg.alg <- rbind(unalg, alg)
#
# # create spectrograms
# warbleR::spectrograms(
# unalg.alg[unalg.alg$sound.id != "ambient",],
# dest.path = tempdir(),
# res = 100,
# wl = 300,
# title.labels = "type",
# sel.labels = NULL
# )
## ----session info, echo=F-------------------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.