Using Dream | Schizophrenia + Bipolar x CT.

Differential expression for repeated measures (dream) uses a linear model model to increase power and decrease false positives for RNA-seq datasets with multiple measurements per individual. The analysis fits seamlessly into the widely used workflow of limma/voom (Law et al. 2014).

Samples for DEG

Number of case samples

[1] 37

Case samples

[1] “15-075-GFM” “15-075-GTS” “15-077-GTS” “15-101-THA” “15-107-GFM” [6] “15-107-GTS” “15-107-THA” “16-003-GFM” “16-003-GTS” “16-003-SVZ” [11] “16-003-THA” “16-033-GTS” “16-033-SVZ” “16-033-THA” “16-062-GFM” [16] “16-062-GTS” “16-062-SVZ” “16-062-THA” “16-065-GFM” “16-065-GTS” [21] “16-065-SVZ” “16-065-THA” “17-004-SVZ” “17-009-GFM” “17-009-GTS” [26] “17-009-SVZ” “17-009-THA” “17-128-GFM” “17-128-SVZ” “17-128-THA” [31] “17-148-GTS” “17-148-SVZ” “17-148-THA” “18-039-GFM” “18-039-GTS” [36] “18-039-THA” “18-042-SVZ”

Number of control samples

[1] 96

Control samples

[1] “14-005-GFM” “14-005-GTS” “14-015-GFM” “14-015-GTS” “14-029-GFM” [6] “14-029-GTS” “14-051-GTS” “14-069-GFM” “14-069-GTS” “14-075-GFM” [11] “14-075-GTS” “15-018-GFM” “15-018-GTS” “15-027-GFM” “15-034-GFM” [16] “15-055-GFM” “15-055-GTS” “15-074-THA” “15-087-GFM” “15-087-GTS” [21] “15-087-THA” “15-089-GFM” “15-089-GTS” “15-089-THA” “16-027-GFM” [26] “16-027-GTS” “16-038-GFM” “16-046-GFM” “16-046-GTS” “16-046-THA” [31] “16-056-GFM” “16-056-THA” “16-067-GFM” “16-067-GTS” “16-067-THA” [36] “16-078-GFM” “16-078-GTS” “16-078-THA” “16-080-GFM” “16-080-GTS” [41] “16-080-SVZ” “16-080-THA” “16-082-SVZ” “16-116-GFM” “16-116-GTS” [46] “16-137-GFM” “16-137-GTS” “16-137-SVZ” “16-137-THA” “17-003-GFM” [51] “17-003-GTS” “17-003-SVZ” “17-003-THA” “17-005-GFM” “17-005-GTS” [56] “17-005-SVZ” “17-005-THA” “17-016-GFM” “17-016-GTS” “17-016-SVZ” [61] “17-016-THA” “17-043-GFM” “17-043-GTS” “17-043-SVZ” “17-078-GFM” [66] “17-078-GTS” “17-078-SVZ” “17-078-THA” “17-097-GFM” “17-097-GTS” [71] “17-097-SVZ” “17-124-GFM” “17-124-GTS” “17-124-SVZ” “17-124-THA” [76] “18-018-GFM” “18-018-SVZ” “18-018-THA” “18-021-GFM” “18-021-GTS” [81] “18-021-SVZ” “18-021-THA” “18-064-GFM” “18-064-GTS” “18-064-SVZ” [86] “18-064-THA” “18-105-GFM” “18-105-GTS” “18-105-THA” “18-112-GFM” [91] “18-112-GTS” “18-112-THA” “MG-03-SVZ” “MG-09-GFM” “MG-11-GFM” [96] “MG-11-SVZ”

Dream analysis

Schizophrenia and Bipolar are a sub-group of the main_diagnosis Psychiatric diagnosis (115 samples).

params = BiocParallel::MulticoreParam(workers=4, progressbar=T)
register(params)
registerDoParallel(4)

# To include cause of death and C1-C4
metadata4deg$cause_of_death_categories[metadata4deg$cause_of_death_categories %in% NA] <- "Other"
# table(metadata4deg$cause_of_death_categories)

metadata4deg$C1 = metadata4deg$C1 %>% replace_na(median(metadata4deg$C1, na.rm = T))
metadata4deg$C2 = metadata4deg$C2 %>% replace_na(median(metadata4deg$C2, na.rm = T))
metadata4deg$C3 = metadata4deg$C3 %>% replace_na(median(metadata4deg$C3, na.rm = T))
metadata4deg$C4 = metadata4deg$C4 %>% replace_na(median(metadata4deg$C4, na.rm = T))

metadata4deg$main_diagnosis = factor(as.character(metadata4deg$main_diagnosis), levels = unique(as.character(metadata4deg$main_diagnosis)))
metadata4deg$main_diagnosis = relevel(metadata4deg$main_diagnosis, ref = "Control")

# Check variance partition version 
# packageVersion("variancePartition")  # Must be 1.17.7

# The variable to be tested should be a fixed effect
form <- ~ main_diagnosis + sex + (1|donor_id) + age + tissue + (1|cause_of_death_categories) + C1 + C2 + C3 + C4 + picard_pct_mrna_bases + picard_summed_median + picard_pct_ribosomal_bases

# estimate weights using linear mixed model of dream
vobjDream = suppressWarnings( voomWithDreamWeights( genes_counts4deg, form, metadata4deg ) ) # supressing messages because of Biocparallel was generating a lot of messages  
 
# Fit the dream model on each gene
# By default, uses the Satterthwaite approximation for the hypothesis test
fitmm = suppressWarnings (dream( vobjDream, form, metadata4deg )) 

# Examine design matrix
# createDT(fitmm$design, 3)

res_dream <- data.frame(topTable(fitmm, coef='main_diagnosisPsychiatric diagnosis', 
                                 number=nrow(genes_counts4deg), sort.by = "p"), check.names = F)

The t-statistics are not directly comparable since they have different degrees of freedom. In order to be able to compare test statistics, we report z.std which is the p-value transformed into a signed z-score. This can be used for downstream analysis.

DEG table for download

Directionality

LogFC > 0 is up in Case from Dream.

R version 3.6.2 (2019-12-12) Platform: x86_64-apple-darwin15.6.0 (64-bit) Running under: macOS 10.16

Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages: [1] parallel stats graphics grDevices utils datasets methods
[8] base

other attached packages: [1] tidyr_1.1.2 dplyr_1.0.2 doParallel_1.0.15
[4] iterators_1.0.12 ggpubr_0.2.4 magrittr_2.0.1
[7] statmod_1.4.32 BiocParallel_1.20.1 variancePartition_1.17.7 [10] Biobase_2.46.0 BiocGenerics_0.32.0 scales_1.1.1
[13] foreach_1.4.8 reshape2_1.4.4 ggplot2_3.3.2
[16] gplots_3.1.0 RColorBrewer_1.1-2 edgeR_3.28.0
[19] limma_3.42.0

loaded via a namespace (and not attached): [1] jsonlite_1.7.1 splines_3.6.2 gtools_3.8.2
[4] BiocManager_1.30.10 yaml_2.2.1 progress_1.2.2
[7] numDeriv_2016.8-1.1 pillar_1.4.7 lattice_0.20-38
[10] glue_1.4.2 digest_0.6.27 ggsignif_0.6.0
[13] minqa_1.2.4 colorspace_2.0-0 htmltools_0.5.0
[16] Matrix_1.2-18 plyr_1.8.6 pkgconfig_2.0.3
[19] purrr_0.3.4 lme4_1.1-21 tibble_3.0.4
[22] generics_0.1.0 farver_2.0.3 ellipsis_0.3.1
[25] DT_0.13 withr_2.3.0 pbkrtest_0.4-8.6
[28] crayon_1.3.4 evaluate_0.14 nlme_3.1-142
[31] MASS_7.3-51.6 tools_3.6.2 prettyunits_1.1.1
[34] hms_0.5.3 lifecycle_0.2.0 stringr_1.4.0
[37] munsell_0.5.0 locfit_1.5-9.1 colorRamps_2.3
[40] compiler_3.6.2 caTools_1.18.0 rlang_0.4.8
[43] grid_3.6.2 nloptr_1.2.1 htmlwidgets_1.5.2
[46] crosstalk_1.1.0.1 bitops_1.0-6 labeling_0.4.2
[49] rmarkdown_2.0 boot_1.3-23 gtable_0.3.0
[52] codetools_0.2-16 lmerTest_3.1-1 R6_2.5.0
[55] knitr_1.26 KernSmooth_2.23-16 stringi_1.5.3
[58] Rcpp_1.0.5 vctrs_0.3.5 tidyselect_1.1.0
[61] xfun_0.11