From e5bf0dcee20981b0eebaf3b25802670d70b540b7 Mon Sep 17 00:00:00 2001 From: Kemal Yaylali Date: Tue, 29 Sep 2026 00:29:25 +0100 Subject: [PATCH] sesame oracle: compare without bead-count masking on both sides --- scripts/v2/methyl_oracle_compare.py | 3 ++- scripts/v2/sesame_oracle.R | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/v2/methyl_oracle_compare.py b/scripts/v2/methyl_oracle_compare.py index f9bdddb..28d616d 100644 --- a/scripts/v2/methyl_oracle_compare.py +++ b/scripts/v2/methyl_oracle_compare.py @@ -36,7 +36,8 @@ def main() -> int: pos = {p: i for i, p in enumerate(man.probe_ids)} res = {} for prefix in a.prefixes: - s = sig.assemble(read_idat(prefix + "_Grn.idat"), read_idat(prefix + "_Red.idat"), man) + # min_beads=0: the oracle runs without bead-count masking (see sesame_oracle.R) + s = sig.assemble(read_idat(prefix + "_Grn.idat"), read_idat(prefix + "_Red.idat"), man, min_beads=0) p = sig.detection_p(s) n, fg, fr = sig.noob(s) b = sig.beta_values(n) diff --git a/scripts/v2/sesame_oracle.R b/scripts/v2/sesame_oracle.R index 7b998a7..daec1af 100644 --- a/scripts/v2/sesame_oracle.R +++ b/scripts/v2/sesame_oracle.R @@ -24,7 +24,9 @@ inband <- function(s) { list(m = m, u = u) } for (prefix in args[-(1:3)]) { - read <- function() readIDATpair(prefix, platform = "EPIC", manifest = mft, controls = controls, min_beads = 3) + # no bead-count masking here (sesame's min_beads also masks every Infinium II probe, whose M address is NA); + # the comparison script runs simurg with the same setting + read <- function() readIDATpair(prefix, platform = "EPIC", manifest = mft, controls = controls) sdf <- tryCatch(read(), error = function(e) { message("first read failed (", conditionMessage(e), "); caching idatSignature and retrying") sesameDataCache("idatSignature")