Skip to content

Tool features required by GoliathOmics

GoliathOmics consumes GoliathAlign (formerly mojo-align) and MethylExtractor only through the features below. Both utilities are standalone: they do not reference GoliathApp or GoliathOmics. A change in either tool that removes or renames a listed feature breaks GoliathOmics, even when the platform (goliath-gateway, database goliath, GOLIATH_WORK_ROOT) is unchanged. Direction: architecture/dependencies.md.

Inherited platform pieces use the goliath prefix. These tools stay separate repositories. They are not part of GoliathApp.

GoliathAlign

Toolchain pin: Mojo 1.1 / Modular 26.6. Not Mojo 1.0.0b2.

Image: goliath/methylgrapher (tags stay *-mojo-*). In-image tree: /opt/goliath-align, with /opt/mojo-align as a symlink for one cycle.

Checkout: GOLIATH_ALIGN_ROOT, or the sibling ../GoliathAlign. MOJO_ALIGN_ROOT and ../mojo-align remain one-cycle aliases.

Consumer: workers/methyl_worker/methylgrapher_wgbs_runner.py (sample.methylgrapher_wgbs_align, sample.methylgrapher_wgbs_extract).

Feature What a break looks like
methylGrapher Align WGBS pangenome alignment cannot start. No silent fallback to stock Giraffe.
methylGrapher MethylCall Graph-aware methylation calls are not produced. Requires PrepareGenome artifacts ({index_prefix}.wl.gfa) on disk first.
methylGrapher MergeCpG CpG merge step of the WGBS extract path fails.
methylGrapher help The worker cannot probe the binary.
GPU target METHYLGRAPHER_TARGET_ACCELERATOR NVIDIA targets from sm_90 upward, or an AMD arch via METHYLGRAPHER_AMDGPU_ARCH. Hosts whose default GPU is older than sm_52 do not compile.
Outputs: GAF, QC BAM, graph-aware H5 Downstream QC and extraction have nothing to read.

MethylExtractor

Not used on the WGBS pangenome path. That path uses GoliathAlign MethylCall / MergeCpG.

Binary layout: the release tarball stays on the shared volume (/work/goliath/releases/<version>/methyl-extractor-linux-<arch>.tar.gz); each machine extracts it onto local disk at METHYL_EXTRACTOR_HOME (default /opt/goliath/methyl-extractor-<arch>/, override root with GOLIATH_LOCAL_ROOT; never under the work mount, which ignores exec bits). HDF5_PLUGIN_PATH points at the zstd plugin shipped beside the binary. MethylExtractor links libhts.so.3, which the worker image does not have: scripts/assemble_release.sh runs scripts/bundle_methyl_extractor_libs.sh on each downloaded tarball, which copies libhts.so.3 (real versioned file plus soname link), libdeflate.so.0 and libhtscodecs.so.2 from the Ubuntu jammy .debs for that arch into the tarball's lib/, sets the binary's RUNPATH to $ORIGIN/../lib with patchelf; the manifest sha256 is computed after this step (MethylExtractor 2026.10.1+ tarballs already bundle every non-glibc library with that RUNPATH). The binary must run with no LD_LIBRARY_PATH: the local installer refuses one that does not, and neither its env.sh nor worker.env puts METHYL_EXTRACTOR_HOME/lib on LD_LIBRARY_PATH, because the bundled Ubuntu 22.04 libraries (libcurl 7.81, libssl, libzstd, libhts 1.13) would then shadow the host's for every other program (/usr/bin/curl failed with undefined symbol: curl_global_trace). GOLIATH_WORK_ROOT (alias METHYL_WORK_ROOT) is the mount that holds the tarball. Workflows that never extract do not need the mount.

Consumer: workers/methyl_worker/extract_runner.py (sample.methyl_extract) and methylextractionqc.

Feature What a break looks like
MethylExtractor --help The worker cannot confirm the binary or which flags it supports.
--threads Thread count from resolved config is ignored.
--chrom-parallel Chromosome-parallel extract cannot be requested.
--max-rss-gb RSS cap from resolved config is ignored.
--min-mapq, --min-phred, --min-cov, --cap-cov Alignment and coverage filters no longer match the action config.
--CHG, --CHH Contexts other than CG are dropped. CG stays implicit.
--chrom-mapping Contig name mapping no longer matches the reference.
--compression, --chunk-size HDF5 layout written for downstream readers changes.
--read-level Pattern-level output is skipped and only marginal H5 is emitted.
{chrom}-{context}.json sidecars methylextractionqc cannot build the extraction manifest.
HDF5 output plus the zstd plugin Sample H5 files do not open under HDF5_PLUGIN_PATH.