| Title: | Discovery of Candidate Disease Genes Using Trans-Regulatory Effects |
|---|---|
| Description: | Implements the DANDELION method for prioritizing candidate disease-related proximal genes by integrating trans-regulatory association p-values and gene-level trait association p-values. The statistical testing framework builds on the divide-aggregate composite-null test described by Liu et al. (2022) <doi:10.1080/01621459.2021.1914634>. The biological application and SNP/gene-based prioritization workflow are motivated by Salamone et al. (under review), "Leveraging trans-gene regulation prioritizes central genes and pathways in asthma". The package provides functions for identifying distal-proximal gene pairs, organizing significant pairs into genomic loci, and visualizing resulting gene networks. |
| Authors: | Peixin Tian [aut, cre] |
| Maintainer: | Peixin Tian <[email protected]> |
| License: | GPL-3 |
| Version: | 0.1.0 |
| Built: | 2026-05-11 10:46:07 UTC |
| Source: | https://github.com/mxxptian/dandelion |
Cleans significant DANDELION pairs when the exposure side contains genes and merges nearby exposure genes into genomic loci.
calc_pair.gene( mat.sig, mat.p, p.wes, gene1, ref.table.keep, eta.wgs = 1e-05, verbose = FALSE )calc_pair.gene( mat.sig, mat.p, p.wes, gene1, ref.table.keep, eta.wgs = 1e-05, verbose = FALSE )
mat.sig |
Matrix encoding significant pairs, returned by |
mat.p |
Matrix of DANDELION p-values, returned by |
p.wes |
Named numeric vector of gene-level trait association p-values. |
gene1 |
Candidate exposure genes returned by |
ref.table.keep |
Gene annotation data frame after filtering. Required
columns are |
eta.wgs |
Significance threshold for WES genes. Default is 1e-5. |
verbose |
Logical. If |
A list containing pairs_dact, gene.pair, sig_gene2, and
non_sig.gene2.
Cleans significant DANDELION pairs when the exposure side contains SNPs.
SNPs are mapped to cis genes using uniq_snp first. If a SNP is not present
in uniq_snp, the function optionally maps it to the nearest or overlapping
gene using SNP.ref and ref.table.keep.
calc_pair.snp( mat.sig, mat.p, p.wes, gene1, uniq_snp, ref.table.keep, eta.wgs = 1e-05, SNP.ref = NULL, verbose = FALSE )calc_pair.snp( mat.sig, mat.p, p.wes, gene1, uniq_snp, ref.table.keep, eta.wgs = 1e-05, SNP.ref = NULL, verbose = FALSE )
mat.sig |
Matrix encoding significant pairs, returned by |
mat.p |
Matrix of DANDELION p-values, returned by |
p.wes |
Named numeric vector of gene-level trait association p-values. |
gene1 |
Candidate SNPs returned by |
uniq_snp |
Data frame containing known SNP-to-cis-gene mapping. Required
columns are |
ref.table.keep |
Gene annotation data frame after filtering. Required
columns are |
eta.wgs |
Significance threshold for WES genes. Default is 1e-5. |
SNP.ref |
Optional SNP annotation data frame with columns |
verbose |
Logical. If |
A list containing pairs_dact, gene.pair, sig_gene2, and
non_sig.gene2.
Generates a network plot from DANDELION gene-pair results.
gen_fig(gene.pair, p.wes, eta.wgs = 1e-05, pic_dir)gen_fig(gene.pair, p.wes, eta.wgs = 1e-05, pic_dir)
gene.pair |
Data frame of identified gene pairs, returned by
|
p.wes |
Named numeric vector of gene-level trait association p-values. |
eta.wgs |
Significance threshold for WES genes. Default is 1e-5. |
pic_dir |
Directory to save the figure. |
Invisibly returns the path to the saved PDF file.
Applies the DANDELION procedure to integrate trans-regulatory association
p-values and gene-level trait association p-values. The exposure side can be
either distal genes or SNPs. For clarity, exposures are referred to as
gene1, and candidate disease proximal genes are referred to as gene2.
med_gene( p.trans, p.wes, ref.table, gene1.list, target.fdr = 0.1, dist = 5e+06, gene1.type = c("SNP", "Gene"), SNP.ref = NULL, n.cores = 1, verbose = FALSE )med_gene( p.trans, p.wes, ref.table, gene1.list, target.fdr = 0.1, dist = 5e+06, gene1.type = c("SNP", "Gene"), SNP.ref = NULL, n.cores = 1, verbose = FALSE )
p.trans |
A numeric matrix of trans-regulatory association p-values.
Rows are candidate disease proximal genes ( |
p.wes |
A named numeric vector of gene-level trait association p-values (e.g., from WES burden tests or GWAS-based gene-level tests).
Note: Ensure that names (Gene Symbols) match the row names of |
ref.table |
A data frame containing gene annotation and genomic positions.
Required columns are |
gene1.list |
A character vector of candidate exposures to analyze. These
values must be a subset of |
target.fdr |
False Discovery Rate threshold. DANDELION uses this to decide which gene pairs are statistically significant. Default is 0.1. |
dist |
The cis-window size (in base pairs). Genes within this distance from the exposure will be excluded to focus on true distal (trans) effects. Default is 5e6. |
gene1.type |
Exposure type. Must be either |
SNP.ref |
Optional SNP annotation data frame used when |
n.cores |
Number of cores for parallel execution. On non-Windows systems,
values larger than 1 use |
verbose |
Logical. If |
A list with three elements: gene1, the analyzed exposures with at
least one valid DANDELION result; mat.sig, a matrix encoding significant
gene1-gene2 pairs; and mat.p, a matrix of DANDELION p-values.
set.seed(1) p.trans <- matrix(runif(60, 0.001, 0.9), nrow = 12, ncol = 5) rownames(p.trans) <- paste0("G", 1:12) colnames(p.trans) <- paste0("E", 1:5) p.wes <- runif(12, 0.001, 0.9) names(p.wes) <- paste0("G", 1:12) ref.table <- data.frame( gene_name = c(paste0("G", 1:12), paste0("E", 1:5)), type = "protein_coding", Chromosome = "chr1", start = seq_len(17) * 1e7, end = seq_len(17) * 1e7 + 1000 ) res <- med_gene( p.trans = p.trans, p.wes = p.wes, ref.table = ref.table, gene1.list = colnames(p.trans), gene1.type = "Gene" )set.seed(1) p.trans <- matrix(runif(60, 0.001, 0.9), nrow = 12, ncol = 5) rownames(p.trans) <- paste0("G", 1:12) colnames(p.trans) <- paste0("E", 1:5) p.wes <- runif(12, 0.001, 0.9) names(p.wes) <- paste0("G", 1:12) ref.table <- data.frame( gene_name = c(paste0("G", 1:12), paste0("E", 1:5)), type = "protein_coding", Chromosome = "chr1", start = seq_len(17) * 1e7, end = seq_len(17) * 1e7 + 1000 ) res <- med_gene( p.trans = p.trans, p.wes = p.wes, ref.table = ref.table, gene1.list = colnames(p.trans), gene1.type = "Gene" )
Print DANDELION pair results
## S3 method for class 'dandelion_pairs' print(x, ...)## S3 method for class 'dandelion_pairs' print(x, ...)
x |
A |
... |
Additional arguments, currently unused. |
Invisibly returns x.
Print a DANDELION result object
## S3 method for class 'dandelion_result' print(x, ...)## S3 method for class 'dandelion_result' print(x, ...)
x |
A |
... |
Additional arguments, currently unused. |
Invisibly returns x.