grin.logRank: Log-Rank Test for Associations Between Genomic Lesions and...

View source: R/grin.logRank.R

grin.logRankR Documentation

Log-Rank Test for Associations Between Genomic Lesions and Survival Outcomes

Description

Performs gene-level log-rank tests to evaluate associations between genomic lesions and time-to-event outcomes. For each gene, subjects are grouped according to their lesion status and survival distributions are compared using the log-rank test.

Usage

grin.logRank(lsn.mtx,
             clin.data,
             annotation.data,
             clinvars,
             min.grp.size = NULL)

Arguments

lsn.mtx

A gene-by-subject lesion matrix, typically generated using prep.lsn.type.matrix. Rows represent genes and columns represent subjects. For each gene-subject combination, entries indicate lesion status: "none" if the gene is not affected, a specific lesion type (e.g., "mutation" or "fusion") if the gene is affected by one lesion type, or "multiple" if the gene is affected by two or more distinct lesion types in the same subject.

clin.data

A data frame containing clinical information. The data frame must contain a column named ID with subject identifiers that correspond to the subject identifiers in lsn.mtx.

annotation.data

A gene annotation data frame containing a column named gene with unversioned Ensembl gene IDs matching the gene IDs used as row names in lsn.mtx. Annotation information is merged with the final association results using these gene IDs.

clinvars

A character vector specifying the time-to-event clinical variables to analyze. Each variable must be stored in clin.data as a Surv object created using survival::Surv().

min.grp.size

Optional numeric value specifying the minimum number of subjects required in each lesion-status group for a gene to be analyzed. Groups may include "none", individual lesion types such as "mutation" or "fusion", and "multiple". Groups containing fewer than min.grp.size subjects are excluded from the analysis for that gene. A gene is tested only if at least two groups remain after filtering.

Details

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

For each time-to-event outcome specified in clinvars, the function performs a log-rank test for each gene using survdiff with rho = 0.

P values are adjusted for multiple testing using the Benjamini-Hochberg 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)).

The output also reports the number of subjects with and without an event within each lesion group.

Value

A data frame containing gene annotation information together with:

  • logRank_<endpoint>_pval: Gene-level log-rank test p value for each survival endpoint specified in clinvars.

  • logRank_<endpoint>_qval: Multiple-testing-adjusted q value for each survival endpoint.

  • Numbers of subjects with an event in each lesion group.

  • Numbers of subjects without an event in each lesion group.

Author(s)

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

References

Mantel, N. (1966). Evaluation of survival data and two new rank order statistics arising in its consideration. Cancer Chemotherapy Reports, 50(3), 163-170.

Benjamini, Y., & Hochberg, Y. (1995). Controlling the false discovery rate: A practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B, 57(1), 289-300.

Pounds, S., & Cheng, C. (2006). Robust estimation of the false discovery rate. Bioinformatics, 22(16), 1979-1987.

See Also

prep.lsn.type.matrix, Surv, survdiff

Examples

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

# 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 the lesion-type matrix
gene.lsn.type.mtx <- prep.lsn.type.matrix(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)

# Run gene-level log-rank tests
logRank.efs <- grin.logRank(lsn.mtx = gene.lsn.type.mtx,
                            clin.data = clin_data,
                            annotation.data = hg38_gene_annotation,
                            clinvars = "EFS",
                            min.grp.size = 3)


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