grin.assoc.lsn.outcome: Associate Binary Genomic Lesions with Clinical Outcomes

View source: R/grin.assoc.lsn.outcome.R

grin.assoc.lsn.outcomeR Documentation

Associate Binary Genomic Lesions with Clinical Outcomes

Description

Performs association analyses between binary genomic lesion events and clinical outcomes. Time-to-event outcomes stored as Surv objects are analyzed using Cox proportional hazards regression, while binary outcomes coded as 0 and 1 are analyzed using logistic regression.

Each row of the input lesion matrix represents a specific gene-lesion event, such as a mutation, deletion, gain, or rearrangement affecting a particular gene. Separate models are fitted for each gene-lesion event and each clinical outcome.

Usage

grin.assoc.lsn.outcome(
  lsn.mtx,
  clin.data,
  annotation.data,
  clinvars,
  covariate = NULL
)

Arguments

lsn.mtx

A binary lesion matrix, typically generated using prep.binary.lsn.mtx. Rows represent gene-lesion events (e.g., ENSG00000148400_mutation) and columns represent subjects. Values must be coded as 1 when a subject harbors the specified lesion and 0 otherwise. Missing values are permitted.

clin.data

A clinical data frame containing a column named ID with subject identifiers corresponding to the column names of lsn.mtx.

annotation.data

A gene annotation data frame containing a column named gene. Annotation information is merged with the final results.

clinvars

A character vector specifying the clinical outcome variables to analyze. Time-to-event outcomes must be stored in clin.data as Surv objects created using survival::Surv(). Binary outcomes must be numeric and coded as 0 and 1.

covariate

Optional character vector specifying one or more clinical covariates to include in the regression models. Covariates may be categorical or numeric. If NULL, models are fitted without covariate adjustment.

Details

Subject identifiers in the lesion matrix and clinical data are matched and reordered before analysis.

For time-to-event outcomes, a separate Cox proportional hazards model is fitted for each binary gene-lesion event using coxph. The reported hazard ratio compares subjects harboring the lesion with subjects who do not harbor the lesion.

Cox models in which no outcome events occur in one of the two lesion groups are not fitted because the lesion effect cannot be reliably estimated. These gene-lesion events are retained in the output with NA values for the hazard ratio, confidence interval, p value, and q value. A warning reports the number of models excluded for this reason.

Cox models that otherwise generate convergence warnings are also retained in the output with NA model statistics, and the number of additional non-converged models is reported separately.

For binary outcomes coded as 0 and 1, a separate logistic regression model is fitted for each gene-lesion event using glm with family = "binomial". The reported odds ratio compares subjects harboring the lesion with subjects who do not harbor the lesion for the outcome coded as 1.

Logistic regression models that fail to converge or produce warnings consistent with complete or near-complete separation are returned with NA model statistics, and the number of affected models is reported to the user.

When covariate is provided, the specified covariates are included together with the binary lesion indicator in each Cox proportional hazards or logistic regression model.

P values are adjusted for multiple testing using the false discovery rate procedure together with the Pounds and Cheng estimator of the proportion of tests having a true null hypothesis: pi.hat = min(1, 2 * mean(p)). Models with missing p values are excluded from the multiple-testing adjustment.

The output also reports the numbers of subjects with and without each lesion according to clinical outcome status.

Cox proportional hazards models assume proportional hazards. Users should evaluate this assumption when interpreting gene-lesion associations of particular interest.

Value

A data frame containing gene annotation information, the corresponding gene-lesion identifier, and outcome-specific association statistics.

For time-to-event outcomes, results include:

  • Hazard ratio (HR).

  • Lower bound of the 95 percent confidence interval.

  • Upper bound of the 95 percent confidence interval.

  • Cox proportional hazards model p value.

  • Multiple-testing-adjusted q value.

  • Numbers of subjects with and without the lesion according to event status.

For binary outcomes, results include:

  • Odds ratio (OR).

  • Lower bound of the 95 percent confidence interval.

  • Upper bound of the 95 percent confidence interval.

  • Logistic regression p value.

  • Multiple-testing-adjusted q value.

  • Numbers of subjects with and without the lesion according to binary outcome status.

Models that cannot be reliably estimated or do not converge are retained in the output with NA values for their model statistics.

Author(s)

Abdelrahman Elsayed abdelrahman.elsayed@stjude.org and Stanley Pounds stanley.pounds@stjude.org

References

Cox, D. R. (1972). Regression Models and Life-Tables. Journal of the Royal Statistical Society: Series B (Methodological), 34(2), 187-202.

Nelder, J. A., & Wedderburn, R. W. M. (1972). Generalized Linear Models. Journal of the Royal Statistical Society: Series A (General), 135(3), 370-384.

See Also

prep.binary.lsn.mtx, coxph, glm

Examples

# Load the example datasets
data(lesion_data)
data(hg38_gene_annotation)
data(clin_data)

# Prepare gene-level lesion data
gene.lsn <- prep.gene.lsn.data(
  lesion_data,
  hg38_gene_annotation
)

# Identify overlaps between genomic lesions and genes
gene.lsn.overlap <- find.gene.lsn.overlaps(gene.lsn)

# Create a binary lesion matrix
lsn.binary.mtx <- prep.binary.lsn.mtx(
  gene.lsn.overlap,
  min.ngrp = 5
)

# Create the event-free survival object
clin_data$EFS <- survival::Surv(
  clin_data$efs.time,
  clin_data$efs.censor
)

# Analyze a binary and a survival outcome
clinvars <- c("MRD.binary", "EFS")

lsn.outcomes <- grin.assoc.lsn.outcome(
  lsn.mtx = lsn.binary.mtx,
  clin.data = clin_data,
  annotation.data = hg38_gene_annotation,
  clinvars = clinvars
)

# Models may also be adjusted for clinical covariates
lsn.outcomes.adj <- grin.assoc.lsn.outcome(
  lsn.mtx = lsn.binary.mtx,
  clin.data = clin_data,
  annotation.data = hg38_gene_annotation,
  clinvars = clinvars,
  covariate = "Sex"
)

GRIN2 documentation built on Aug. 22, 2026, 5:09 p.m.