Generate gene expression data for trans-QTL analysis
Source:R/simulate_transQTL_null.R
gene_data.RdThis function simulates genotype and gene expression data for trans-QTL analysis, including both cis and trans effects with specified network structures.
Usage
gene_data(
n,
p,
A_snp_cis,
A_cis_trans,
A_trans,
MAF = NULL,
beta = 1,
gamma_cis_trans = 0.5,
gamma_trans_trans = 0.5,
maf_setting = 1
)Arguments
- n
Sample size
- p
Number of SNPs
- A_snp_cis
Binary adjacency matrix indicating SNP-cis gene relationships
- A_cis_trans
Binary adjacency matrix indicating cis-trans gene relationships
- A_trans
Binary adjacency matrix indicating trans-trans gene relationships
- MAF
Optional vector of minor allele frequencies. If NULL, MAFs will be generated randomly.
- beta
Effect size for SNP to cis gene effects
- gamma_cis_trans
Effect size for cis to trans gene effects
- gamma_trans_trans
Effect size for trans to trans gene effects
- maf_setting
Integer flag for MAF generation method (1=uniform random, 2=sample from provided MAF)
Value
A list containing:
maf: Vector of minor allele frequencies
G_unscaled: Unscaled genotype matrix
G: Scaled genotype matrix
G_centered: Column-centered genotype matrix
E_cis_unscaled: Unscaled cis gene expression matrix
E_cis: Scaled cis gene expression matrix
E_cis_centered: Column-centered cis gene expression matrix
E_trans_unscaled: Unscaled trans gene expression matrix
E_trans: Scaled trans gene expression matrix
E_trans_centered: Column-centered trans gene expression matrix
Examples
# Define adjacency matrices
A_snp_cis <- as.matrix(Matrix::bdiag(lapply(1:8, function(x) rep(1,5))))
A_snp_cis <- rbind(A_snp_cis, matrix(0, nrow = 20, ncol = 8))
A_cis_trans <- cbind(c(1,1,0,0,0,0,0,0),
c(0,0,1,1,0,0,0,0),
c(0,0,0,0,1,1,0,0),
c(0,0,0,0,0,0,1,1),0,0,0,0,0)
A_trans <- cbind(0,0,0,0,c(1,rep(0,8)),
c(0,1,1,rep(0,6)),
c(0,0,0,1,rep(0,5)),
c(0,0,0,0,1,1,0,0,0),
c(rep(0,5),1,1,0,0))
# Simulate data
data <- gene_data(n = 1000, p = 60, A_snp_cis, A_cis_trans, A_trans,
beta = 0.5, gamma_cis_trans = 0.5, gamma_trans_trans = 0.5)