Coding-variant Allelic Series Test

2023-05-01

Data

To run an allelic series test, there are 4 key inputs:

The example data used below were generated using the DGP function provided with the package. The data set includes 100 subjects, 300 variants, and a continuous phenotype. The true effect sizes follow an allelic series, with magnitudes proportional to c(1, 2, 3) for BMVs, DMVs, and PTVs respectively.

set.seed(101)
n <- 100
data <- AllelicSeries::DGP(
  n = n,
  snps = 300,
  beta = c(1, 2, 3) / sqrt(n),
)

# Annotations.
anno <- data$anno
head(anno)
## [1] 2 0 0 0 0 1
# Covariates.
covar <- data$covar
head(covar)
##      int         age sex         pc1        pc2        pc3
## [1,]   1  0.06340401   1  1.54356127 -2.3816890  0.3378446
## [2,]   1 -0.26084149   1 -0.34178454 -1.4227627 -0.2141389
## [3,]   1  0.10148711   1  1.25528541  0.4608104 -0.6585620
## [4,]   1  0.48607024   1 -0.87800487  0.4316516  0.3552285
## [5,]   1 -0.52207993   1 -0.03553949 -0.1124594 -0.4243847
## [6,]   1 -1.41018843   0  0.37024952  1.3373260 -0.4423871
# Genotypes.
geno <- data$geno
head(geno[,1:5])
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    0    0    0    0    0
## [2,]    0    0    0    0    0
## [3,]    0    0    0    0    0
## [4,]    0    0    0    0    0
## [5,]    0    0    0    0    0
## [6,]    0    0    0    0    0
# Phenotype.
pheno <- data$pheno
head(pheno)
## [1]  3.1059934  1.1354490  0.4306503  0.7834604  1.0421679 -0.4964317

The example data generated by the preceding are available under vignettes/vignette_data.

Running the alleic series test

The COding-variant Allelic Series Test (COAST) is run using the COAST function. By default, p-values for the component tests, as well as the overall omnibus test (p_omni), are returned. Inspection of the component p-values is useful for determining which model(s) drove an association. In the presence case, the association was most evident via the baseline count model (p_count).

results <- AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar
)
show(results)
##        p_count          p_ind    p_max_count      p_max_ind    p_sum_count 
##   3.112702e-26   1.322084e-09   3.076876e-10   5.374363e-09   1.661854e-20 
##      p_sum_ind p_allelic_skat         p_omni 
##   2.554417e-11   2.658137e-07   3.735235e-25

Test options

AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar,
  apply_int = TRUE
)
AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar,
  include_orig_skato_all = TRUE,
  include_orig_skato_ptv = TRUE,
)
AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = 1 * (pheno > 0),
  covar = covar,
  is_pheno_binary = TRUE
)
AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar,
  return_omni_only = TRUE
)
AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar,
  score_test = TRUE
)
AllelicSeries::COAST(
  anno = anno,
  geno = geno,
  pheno = pheno,
  covar = covar,
  weights = c(1, 2, 3)
)