14. beta_impute
14.1. Overview
beta_impute provides a unified command-line interface for inspecting,
simulating, and imputing missing values in DNA methylation matrices.
The input matrix is expected to have CpGs in rows and samples in columns. Common delimiters and compressed input files are detected automatically.
Most imputation commands can optionally evaluate imputed values against a truth matrix using MAE, RMSE, and \(R^2\).
14.2. Commands
Command |
Description |
|---|---|
|
Generate a synthetic methylation matrix with missing values. |
|
Insert missing values until a requested total is reached. |
|
Report missing-value counts by CpG and sample. |
|
Remove rows or columns containing missing values. |
|
Replace missing values with a fixed value. |
|
Impute using row- or column-wise means. |
|
Impute using row- or column-wise medians. |
|
Impute using row- or column-wise minima or maxima. |
|
Impute using randomly selected observed values from the same row or column. |
|
KNN imputation using an external complete reference matrix. |
|
Impute from neighboring values in a moving window. |
|
KNN imputation within the input matrix. |
|
Iterative linear-regression imputation based on Buck’s method. |
|
Iterative Random Forest regression. |
|
Low-rank matrix completion using SoftImpute. |
|
Impute systematic block-wise missingness using Random Forest or a dense neural network, with KNN for sporadic missingness. |
|
Impute using genomically neighboring CpGs. |
14.3. General Usage
Display all subcommands:
beta_impute -h
Display options for a specific method:
beta_impute knn -h
Most imputation commands use two positional arguments:
beta_impute METHOD input_file output_file
Common options include:
--decimal– number of decimal places written to output (default: 5)--overwrite– replace an existing output file--truth FILE– evaluate imputation accuracy where supported
Enable debug logging at the top level with:
beta_impute --debug knn input.tsv output.tsv
14.4. Examples
14.4.1. KNN imputation
By default, KNN searches for neighboring samples, uses three neighbors, and weights neighbors by distance.
beta_impute knn \
methylation.tsv \
methylation.knn.tsv \
--neighbors 5 \
--weights distance
Use --axis index to search neighboring CpGs instead of samples.
14.4.2. Reference-based KNN
The external reference matrix must not contain missing values.
beta_impute refknn \
methylation.tsv \
methylation.refknn.tsv \
--reference reference.tsv \
--search_axis columns \
--neighbors 3
14.4.3. Random Forest
beta_impute rf \
methylation.tsv \
methylation.rf.tsv \
--trees 500 \
--max-iter 20
By default, Random Forest predictions are constrained to the interval
[0, 1] using --min-value 0 and --max-value 1.
14.4.4. SoftImpute
beta_impute softimpute \
methylation.tsv \
methylation.softimpute.tsv \
--max-rank 20 \
--max-iter 100
SoftImpute does not apply lower or upper bounds by default. For Beta-value
matrices, add --min-value 0 and --max-value 1 if bounded output is
desired.
14.5. Evaluating Imputation
Most imputation commands accept --truth FILE.
Evaluation is restricted to cells that:
were missing in the original input;
are observed in the truth matrix; and
are present after imputation.
The truth matrix must contain all CpG IDs and sample IDs from the original input.
Reported metrics are:
MAE – mean absolute error
RMSE – root mean squared error
R2 – coefficient of determination
Example:
beta_impute knn \
methylation.tsv \
methylation.knn.tsv \
--truth truth.tsv
14.6. Missing-value Utilities
14.6.1. Generate a toy matrix
beta_impute toy toy.tsv \
--rows 1000 \
--cols 20 \
--missingness 0.1
--missingness values between 0 and 1 specify a fraction; values greater
than or equal to 1 specify an approximate number of missing entries.
14.6.2. Insert missing values
target_missing is the desired total number of missing values in the
output, including any missing values already present.
beta_impute insertna \
methylation.tsv \
methylation.missing.tsv \
5000
14.6.3. Count missing values
beta_impute countna methylation.tsv
By default, the command writes:
missing_by_cpg.tsvmissing_by_sample.tsv
Use --row-report and --column-report to change these filenames.
14.6.4. Drop incomplete rows or columns
By default, incomplete CpG rows are removed.
beta_impute dropna \
methylation.tsv \
methylation.complete.tsv
To remove incomplete samples instead:
beta_impute dropna \
methylation.tsv \
methylation.complete.tsv \
--axis columns
14.7. MOREL
morel targets systematic block-wise missingness between two sample groups.
Sporadic missing values are first handled by KNN, and block-wise missing values
are then predicted using either Random Forest (RF) or a dense neural
network (DNN).
If --group is omitted, the two sample groups are inferred from missingness
patterns using K-means clustering.
When --group is supplied, the current implementation expects a JSON
object mapping two group names to sample-name lists, for example:
{
"group_1": ["Sample_01", "Sample_02"],
"group_2": ["Sample_03", "Sample_04"]
}
Example:
beta_impute morel \
methylation.tsv \
methylation.morel.tsv \
--group groups.json \
--model RF
Important defaults include:
--knn-neighbors 5--knn-weights uniform--n-iter 10--n-estimators 100--max-depth 30--min-value 0--max-value 1
TensorFlow is required only when --model DNN is used.
14.8. Genomic Nearest-neighbor Imputation
gnn estimates missing values using nearby CpGs. A genomic annotation file
is required and must contain at least five columns:
chrom, start, end, cpg_id, and CRE.
Example:
beta_impute gnn \
methylation.tsv \
methylation.gnn.tsv \
--gfile GRCh38_methyl_probes.info.tsv \
--up-dist 200 \
--down-dist 200
Important options include:
--up-dist/--down-dist– maximum search distance in bp (default: 100)--up-ncpg/--down-ncpg– maximum neighboring CpGs used on each side (default: 2)--same-cre– require neighbors to share a candidate cis-regulatory element with the target CpG--method {AA,WA,TA}– arithmetic average, inverse-distance weighted average, or trimmed average (default:TA)--cpgfile– append additional CpG IDs to the matrix for attempted imputation
Display all GNN options with:
beta_impute gnn -h