Infinium DNA-methylation analysis as a single C binary
IDAT → betas → QC, differential methylation, copy number, SNP
genotyping. No R, no Bioconductor, no network.
📖 Documentation · 🔬 Fidelity & numerics · 🔍 Where we differ from R
SeSAMe2 is the second implementation of
sesame / openSesame, validated against the
R package as a permanent oracle.
SeSAMe2 (2.x, this command line) and sesame (1.x, the R/Bioconductor package) are parallel, not sequential — one method, two implementations. R:
BiocManager::install("sesame"); shell:conda install -c zhou-lab sesame.
conda install -c zhou-lab -c conda-forge sesame yameOr from source — a C compiler, make, zlib, libcurl, and the bundled YAME
submodule:
git clone --recurse-submodules https://github.com/zhou-lab/sesame
cd sesame && makeThe binary is sesame. Keep yame on
PATH too: sesame has no network code, so yame fetch is how the annotation it
reads gets there, into a store the whole tool suite shares. sesame version
names the yame release this build expects and the store it reads.
yame fetch -y EPICv2 # once, per platform
sesame preprocess --out out/ idats/ # -> beta.cg intensity.cg pval.cg qc.tsvsesame help lists every command, and sesame <command> -h is the authority on
its flags. Worked examples for each — preprocessing, DML, CNV, SNP genotyping,
region views, custom arrays, and reading the outputs back — are on the
documentation site.
R is the permanent oracle. Raw betas are bit-identical; every prep step is gated against R to a tolerance recorded in NUMERICS.md, and the handful of places where the two genuinely answer different questions — all of them annotation-lineage differences, none a tolerance — are written up in DIVERGENCES.md.
make # build ./sesame
make test # the golden ladder vs the R oracle
make test-docs # run every documented example against this binary
make test-docs-check # versions/subcommands/flags vs the binary (no oracle needed)
scripts/coverage.sh # gcov line coverage
make asan # rebuild under ASan + UBSanmake test needs Rscript with the sesame R package and test IDATs at
$SESAME_TEST_IDATS; CI runs neither, so the numeric gates are the release
manager's job. Layout: cli/ the command, src/ the library, include/sesame.h
the public API, tests/ shell drivers with R oracles, docs/ the Pages site,
YAME/ the submodule. Read NUMERICS.md before changing a prep
step. Releases follow 20210109_sesame_cli_RELEASE_SOP.md in the lab journal.
2-Clause BSD for academic and non-profit research use; for commercial use or
transfer, inquire with Dr. Wanding Zhou at zhouw3@chop.edu. © 2026-present The
Children's Hospital of Philadelphia — see LICENSE. The bundled
YAME carries the same terms. The R package
sesame is a separate program distributed through Bioconductor under AGPL-3.