--- title: "methscope-cli" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{methscope-cli} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Overview MethScope is the R package interface for MRMP-based sparse methylome analysis. For users who prefer a standalone command-line workflow, we also provide **methscope-cli**, a pure-C implementation: methscope-cli implements the main command-line path: ```text query .cg + MRMP reference -> cell-by-pattern matrix -> prediction/deconvolution/upscaling ``` It uses YAME for `.cg/.cm` input/output and summary computation, and links `libxgboost` for model inference. It does not require an R runtime. ## When to Use methscope-cli Use the R package when you want an interactive analysis workflow inside R, including plotting, training, and integration with R objects. Use methscope-cli when you want: - command-line batch processing - integration into shell/HPC workflows - a no-R-runtime implementation - direct CLI prediction, matrix generation, deconvolution, or upscaling ## Build methscope-cli methscope-cli depends on YAME, vendored as a git submodule, and `libxgboost` from conda-forge. ```{bash, eval=FALSE} # Clone with the YAME submodule git clone --recurse-submodules https://github.com/zhou-lab/methscope-cli.git cd methscope-cli # Install libxgboost conda create -n methscope -c conda-forge libxgboost conda activate methscope # Build the CLI make ``` If `libxgboost` is installed outside the active conda environment, pass its prefix explicitly: ```{bash, eval=FALSE} make XGB_PREFIX=/path/to/conda/env ``` The built binary is named `methscope`. ## Example Commands The exact model and fixture files are documented in the methscope-cli repository. The commands below show the main usage pattern. ### Cell-Type Prediction ```{bash, eval=FALSE} methscope predict query.cg model.ubjx > prediction.tsv ``` Here, `query.cg` is a YAME `.cg` file and `model.ubjx` is a bundled methscope-cli XGBoost classifier. Model bundles can carry their own MRMP reference, so users do not need to pass a separate `.cm` file when using a self-contained bundle. ### Generate a Feature Matrix ```{bash, eval=FALSE} methscope matrix query.cg model_or_mrmp > input_pattern.tsv ``` This generates a sample-by-MRMP feature matrix analogous to `GenerateInput()` in the R package. ### Deconvolution ```{bash, eval=FALSE} methscope deconv mixture.cg reference.refx > deconv.tsv ``` The `.refx` file is a methscope-cli deconvolution reference bundle (a signature + its MRMP, built with `matrix --refx`). Deconvolution uses all patterns in the reference. ### Upscaling ```{bash, eval=FALSE} methscope upscale -o reconstructed.cg upscale_model.updecx sparse_input.cg ``` This reconstructs CpG-level methylation calls from sparse input using an upscaling decoder bundle. ## Runnable example A complete, copy-pasteable example. It downloads a pretrained classifier and a small test `.cg` from the [methscope_data](https://github.com/zhou-lab/methscope_data) repository and runs cell-type prediction (assumes the `methscope` binary is on your `PATH`). ```{bash, eval=FALSE} # fetch a classifier bundle + 4 typed test cells from methscope_data MD=https://raw.githubusercontent.com/zhou-lab/methscope_data/main wget -q $MD/models/hg38_celltype.ubjx wget -q $MD/test/human_hg38_celltypes.cg $MD/test/human_hg38_celltypes.cg.idx # predict cell types — the .ubjx bundle carries its own MRMP reference methscope predict human_hg38_celltypes.cg hg38_celltype.ubjx ``` Expected output — each query cell (named by its Loyfer 2023 ground truth) gets the concordant Zhou2025 label and a confidence score: ```text cell prediction_label confidence Oligodendrocyte ODC 0.915 Pancreas-Beta Beta 0.931 Blood-NK NK CD16 0.813 Blood-Monocytes Mono 0.836 ``` For deconvolution, fetch the whole-body reference and a simulated mixture, then run `deconv`: ```{bash, eval=FALSE} wget -q $MD/models/hg38_65celltypes.refx wget -q $MD/test/human_hg38_immune_mixture.cg methscope deconv human_hg38_immune_mixture.cg hg38_65celltypes.refx # -> Macrophage ~70%, Mono ~30% (the other ~63 cell types ~0) ``` ## Relationship to the R Package The two implementations are intended to be complementary: - **MethScope R package**: interactive R analysis, plotting, training, visualization, and R-based downstream workflows. - **methscope-cli**: standalone command-line processing for production, batch, and HPC workflows. For the complete methscope-cli build instructions, model bundle formats, and test examples, see: ## Notes on Input Order methscope-cli emits one row per query record in query-file order. When supplying labels for training or evaluation, make sure the labels follow the same query record order. In the MethScope R package tutorial, the example labels follow the `.cg.idx` sample order.