# Teresa updated April 19th 2018
#' @importFrom assertthat assert_that
#' @importFrom magrittr %>%
#'
library("magrittr")
library("purrr")
library("assertthat")
#' Search for Q wave in ECG signals based on wavelet transform
#' Return a vector of index (based on processed ECG signal)
#'
#' TODO: Add details, perhaps better description
#'
#' @param R_peaks An index vector of R peaks
#' @param wavelets The n * 5 wavelet transform matrix of ECG signal
#' @param alignments An index vector for aligning indexes
#' @param sampling_frequency signal alignmentsling rate, in alignmentsles per second
#'
#' @export
#'
wavelet_Q_detection <-
function(R_peaks, wavelets, alignments, sampling_frequency = 250) {
scale1_wavelets <- wavelets[, 1]
scale2_wavelets <- wavelets[, 2]
R_peaks <-
R_peaks - alignments[1] + 1
Q <- c()
qrs_window <- round(0.1 * sampling_frequency)
off_set <- ceiling(0.02 * sampling_frequency)
# to avoid the infulence of wavelets peaks before R peak
alt_offset <- ceiling(0.03 * sampling_frequency)
for (i in 1:length(R_peaks)) {
r <- R_peaks[i]
before_r <- slice_before(r, qrs_window)
peak_before_r <- scale2_wavelets[before_r:r] %>% peak_before(r)
# amp_peak_before_r <- scale2_wavelets[peak_before_r]
# before_peak_r <- slice_before(peak_before_r, qrs_window)
alt_before_r <- slice_before((r-off_set), qrs_window)
alternative_q <- scale1_wavelets[alt_before_r:(r-off_set)] %>% peak_before(r-off_set)
# temporary solution to deal with NAs -- Teresa April 11th 2019 ------>
alternative_q <- ifelse(is.na(alternative_q), r - alt_offset, alternative_q)
Q[i] <-
scale1_wavelets %>%
zerocross_search_before_(peak_before_r) %>%
maybe_default(alternative_q)
}
Q + alignments[1] - 1
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.