Skip to content
Snippets Groups Projects
Commit 7b1aad34 authored by Todor Kondić's avatar Todor Kondić
Browse files

data-model: make_db_precursors: Group "fine" and "coarse" isobars.

parent a3a6adf7
No related branches found
No related tags found
No related merge requests found
...@@ -28,28 +28,69 @@ make_db_precursors <- function(m) { ...@@ -28,28 +28,69 @@ make_db_precursors <- function(m) {
cat = m$db$cat 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),on=key(cat)]
setkey(masses,mz) setkey(masses,mz)
## Fine error.
if (ms1unit == "ppm") { if (ms1unit == "ppm") {
masses[,`:=`(mz_min=mz-ms1tol*mz*1e-6,mz_max=mz+ms1tol*mz*1e-6)] masses[,`:=`(mz_fine_min=mz-ms1tol*mz*1e-6,mz_fine_max=mz+ms1tol*mz*1e-6)]
} else if (ms1unit == "Da") { } else if (ms1unit == "Da") {
masses[,`:=`(mz_min=mz-ms1tol,mz_max=mz+ms1tol)] masses[,`:=`(mz_fine_min=mz-ms1tol,mz_fine_max=mz+ms1tol)]
} else { } else {
stop('make_db_precursors: Unknown mass unit.') stop('make_db_precursors: Unknown mass unit (fine).')
} }
masses$isobar = -1L
## masses[,isobar := fifelse(isobar==-1L & mz_min < themz & themz < mz_max,..id,catid)]
## Coarse error.
tmp = get_val_unit(m$conf$tolerance[['ms1 coarse']])
ms1tol = as.numeric(tmp[['val']])
ms1unit = tmp[['unit']]
if (ms1unit == "ppm") {
masses[,`:=`(mz_coarse_min=mz-ms1tol*mz*1e-6,mz_coarse_max=mz+ms1tol*mz*1e-6)]
} else if (ms1unit == "Da") {
masses[,`:=`(mz_coarse_min=mz-ms1tol,mz_coarse_max=mz+ms1tol)]
} else {
stop('make_db_precursors: Unknown mass unit (coarse).')
}
masses$isofine = -1L
start = 1L start = 1L
while (start <= NROW(masses)) { while (start <= NROW(masses)) {
sel = masses[start:.N] sel = masses[start:.N]
themz = sel[1L,mz] themz = sel[1L,mz]
id = sel[1L,catid] id = sel[1L,catid]
upmz = sel[1L,mz_max] upmz = sel[1L,mz_fine_max]
x = sel[mz<(upmz)] x = sel[mz<(upmz)]
stop = start + NROW(x) - 1L stop = start + NROW(x) - 1L
message('a',start,'o',stop) masses[(start):(stop),`:=`(isofine=..id,degfine=(1L+stop-start))]
masses[(start):(stop),`:=`(isobar=..id,deg=(1L+stop-start))]
start = stop + 1L start = stop + 1L
} }
masses$isocoarse = -1L
start = 1L
while (start <= NROW(masses)) {
sel = masses[start:.N]
themz = sel[1L,mz]
id = sel[1L,catid]
upmz = sel[1L,mz_coarse_max]
x = sel[mz<(upmz)]
stop = start + NROW(x) - 1L
masses[(start):(stop),`:=`(isocoarse=..id,degcoarse=(1L+stop-start))]
start = stop + 1L
}
masses[,`:=`(iso_coarse_min=min(mz_coarse_min),
iso_coarse_max=max(mz_coarse_max)),
by=isocoarse]
masses[,`:=`(iso_fine_min=min(mz_fine_min),
iso_fine_max=max(mz_fine_max)),
by=isofine]
setindex(masses,isocoarse,isofine)
m$db$precursors = masses m$db$precursors = masses
m m
} }
...@@ -607,3 +607,7 @@ gen_ms2_spec_blk <- function(spectra) { ...@@ -607,3 +607,7 @@ gen_ms2_spec_blk <- function(spectra) {
CE = row[["CE"]], CE = row[["CE"]],
an = row[["an"]]))) an = row[["an"]])))
} }
## NEW FUNCTIONS.
...@@ -10,5 +10,8 @@ test_that("Extraction returns what is needed.",{ ...@@ -10,5 +10,8 @@ test_that("Extraction returns what is needed.",{
phase=c("setup","comptab","db")) phase=c("setup","comptab","db"))
cat = m$db$cat cat = m$db$cat
m = run(envopts=eo,m=m,phase="extract")
expect_true(1==1) expect_true(1==1)
}) })
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment