# filter data frame using vector of SampleId controls
df <- withr::with_seed(101, {
data.frame(
SampleType = rep(c("Sample", "Buffer"), each = 10),
SampleId = paste0("Sample_", 1:20),
seq.20.1.100 = runif(20, 1, 100),
seq.21.1.100 = runif(20, 1, 100),
seq.22.2.100 = runif(20, 1, 100)
)
})
sample_ids <- paste0("Sample_", 11:20)
selected_samples <- df |> filter(SampleId %in% sample_ids)
selected_elod <- calc_eLOD(selected_samples)
head(selected_elod)
if (FALSE) {
# filter `soma_adat` object to buffer samples
buffer_samples <- example_data |> filter(SampleType == "Buffer")
# calculate eLOD
buffer_elod <- calc_eLOD(buffer_samples)
head(buffer_elod)
# use eLOD to calculate signal to noise ratio of samples
samples_median <- example_data |> dplyr::filter(SampleType == "Sample") |>
dplyr::summarise(across(starts_with("seq"), median, .names = "median_{col}")) |>
tidyr::pivot_longer(starts_with("median_"), names_to = "SeqId",
values_to = "median_signal") |>
dplyr::mutate(SeqId = gsub("median_seq", "seq", SeqId))
# analytes with signal to noise > 2
ratios <- samples_median |>
dplyr::mutate(signal_to_noise = median_signal / buffer_elod$eLOD) |>
dplyr::filter(signal_to_noise > 2) |>
dplyr::arrange(desc(signal_to_noise))
head(ratios)
}
Run the code above in your browser using DataLab