From 5f70a04ae5c3ceb269aad1f530212f1c83b20e7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Todor=20Kondi=C4=87?= <kontrapunkt@uclmail.net> Date: Thu, 9 Mar 2023 16:50:41 +0100 Subject: [PATCH] data-model: make_db_catalogue: Calculation of rt interval. --- R/data-model.R | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/R/data-model.R b/R/data-model.R index cf82e7d..cd99df8 100644 --- a/R/data-model.R +++ b/R/data-model.R @@ -21,15 +21,25 @@ make_db_catalogue <- function(m) { make_db_precursors <- function(m) { ## Generate masses and label isobars. - ## Get tolerance. - tmp = get_val_unit(m$conf$tolerance[['ms1 fine']]) - ms1tol = as.numeric(tmp[['val']]) - ms1unit = tmp[['unit']] cat = m$db$cat - masses = m$out$tab$comp[cat,.(catid=catid,mz=mz),on=key(cat)] + masses = m$out$tab$comp[cat,.(catid=catid,mz=mz,rt=rt),on=key(cat)] setkey(masses,mz) + + ## Retention time. + tmp = get_val_unit(m$conf$tolerance[['rt']]) + rttol = as.numeric(tmp[['val']]) + rtunit = tmp[['unit']] + if (rtunit == "s") { + rttol = rttol/60. + } else if (rtunit != "min") { + stop('make_db_precursors: Unknown retention time unit.') + } + masses[!is.na(rt),`:=`(rt_min=rt-rttol,rt_max=rt+rttol)] ## Fine error. + tmp = get_val_unit(m$conf$tolerance[['ms1 fine']]) + ms1tol = as.numeric(tmp[['val']]) + ms1unit = tmp[['unit']] if (ms1unit == "ppm") { masses[,`:=`(mz_fine_min=mz-ms1tol*mz*1e-6,mz_fine_max=mz+ms1tol*mz*1e-6)] } else if (ms1unit == "Da") { -- GitLab