load("../1.align/txi.rsem.RData")
metadata <- read.csv("metadata.csv", stringsAsFactors = TRUE)
metadata$Trt <- factor(metadata$Trt, levels=c("SAL","LPS"))
rownames(metadata) <- metadata$ID
all.equal(colnames(txi.rsem$counts), rownames(metadata))
## [1] TRUE
Differential gene expression for design: Group1 + Trt + Group1:Trt
dds <- DESeqDataSetFromTximport(txi.rsem, colData = metadata, design = ~ Group1 + Trt + Group1:Trt)
samp <- colData(dds)$ID != "CCL3" & colData(dds)$ID != "MPS1"
# filter low expressed genes
keep <- rowSums(counts(dds)) >= 80
table(keep)
## keep
## FALSE TRUE
## 40108 15379
dds <- dds[keep, samp]
# add in gene symbols
genes <- gsub("\\..*","",rownames(dds))
ah <- AnnotationHub()
edb <- ah[["AH53222"]]
symbol <- mapIds(edb, keys=genes, column="SYMBOL", keytype="GENEID", multiVals="first")
mcols(dds) <- cbind(mcols(dds), symbol)
dds <- DESeq(dds)
resultsNames(dds)
## [1] "Intercept" "Group1_CON_PLX_vs_CON_CON"
## [3] "Group1_MIA_CON_vs_CON_CON" "Group1_MIA_PLX_vs_CON_CON"
## [5] "Trt_LPS_vs_SAL" "Group1CON_PLX.TrtLPS"
## [7] "Group1MIA_CON.TrtLPS" "Group1MIA_PLX.TrtLPS"
LPS Response
# The effect of treatment in CON:CON
LvSinCON_CON <- results(dds, contrast=c("Trt","LPS","SAL"), alpha=0.05)
summary(LvSinCON_CON) # up:1570 down: 1464
##
## out of 15379 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 1570, 10%
## LFC < 0 (down) : 1464, 9.5%
## outliers [1] : 14, 0.091%
## low counts [2] : 594, 3.9%
## (mean count < 3)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
LvSinCON_CON$gene <- symbol
# The effect of treatment in CON:PLX
LvSinCON_PLX <- results(dds, list( c("Trt_LPS_vs_SAL","Group1CON_PLX.TrtLPS")), alpha=0.05)
summary(LvSinCON_PLX)# up:2149 down: 1969
##
## out of 15379 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 2149, 14%
## LFC < 0 (down) : 1969, 13%
## outliers [1] : 14, 0.091%
## low counts [2] : 0, 0%
## (mean count < 1)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
LvSinCON_PLX$gene <- symbol
# The effect of treatment in MIA:CON
LvSinMIA_CON <- results(dds, list( c("Trt_LPS_vs_SAL","Group1MIA_CON.TrtLPS")), alpha=0.05)
summary(LvSinMIA_CON)# up:1738 down: 1531
##
## out of 15379 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 1738, 11%
## LFC < 0 (down) : 1531, 10%
## outliers [1] : 14, 0.091%
## low counts [2] : 594, 3.9%
## (mean count < 3)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
LvSinMIA_CON$gene <- symbol
# The effect of treatment in MIA:PLX
LvSinMIA_PLX <- results(dds, list( c("Trt_LPS_vs_SAL","Group1MIA_PLX.TrtLPS")), alpha=0.05)
summary(LvSinMIA_PLX)# up:1474 down: 1366
##
## out of 15379 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 1474, 9.6%
## LFC < 0 (down) : 1366, 8.9%
## outliers [1] : 14, 0.091%
## low counts [2] : 297, 1.9%
## (mean count < 2)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
LvSinMIA_PLX$gene <- symbol
LPS Response in CON_CON vs MIA_CON
LPS_MC_CC <- merge(as.data.frame(LvSinCON_CON), as.data.frame(LvSinMIA_CON), by = "row.names", all.x = TRUE)
rownames(LPS_MC_CC) <- LPS_MC_CC$Row.names
colnames(LPS_MC_CC) <- c("gene.id","baseMean.CC","log2FC.CC","lfcSE.CC","stat.CC","pval.CC","padj.CC", "gene.name.CC", "baseMean.MC","log2FC.MC","lfcSE.MC","stat.MC","pval.MC","padj.MC", "gene.name")
#Assign the Group variable for coloring 4-way plot
for (i in c(1:nrow(LPS_MC_CC))){
if (LPS_MC_CC$padj.CC[i]<0.05 & (!is.na(LPS_MC_CC$padj.CC[i]))){
LPS_MC_CC$CCSig[i]='YES'
}
else {
LPS_MC_CC$CCSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_MC_CC))){
if (LPS_MC_CC$padj.MC[i]<0.05 & (!is.na(LPS_MC_CC$padj.MC[i]))){
LPS_MC_CC$MCSig[i]='YES'
}
else {
LPS_MC_CC$MCSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_MC_CC))){
if (LPS_MC_CC$CCSig[i]=='YES' & LPS_MC_CC$MCSig[i]=='NO'){
LPS_MC_CC$Group[i]=1 }
else if (LPS_MC_CC$CCSig[i]=='NO' & LPS_MC_CC$MCSig[i]=='YES'){
LPS_MC_CC$Group[i]=2}
else if (LPS_MC_CC$CCSig[i]=='YES' & LPS_MC_CC$MCSig[i]=='YES'){
LPS_MC_CC$Group[i]=3}
else {
LPS_MC_CC$Group[i]=4}
}
dim(LPS_MC_CC)
## [1] 15379 18
table(LPS_MC_CC$Group)
##
## 1 2 3 4
## 1052 1287 1982 11058
LPS_MC_CC <- LPS_MC_CC %>% dplyr::filter(log2FC.CC < 15 & log2FC.CC > -15 & log2FC.MC < 15 & log2FC.MC > -15)
LPS_MC_CC.final<-subset(LPS_MC_CC, LPS_MC_CC$Group != 4)
ggplot(data = LPS_MC_CC.final, aes(x = log2FC.CC, y = log2FC.MC, color=factor(Group))) + geom_point() + scale_color_manual(values = c("black", "red","grey"), labels = c("CON:CON","MIA:CON","both")) + geom_abline(slope=1, size=0.5) + labs(x="Con:CON logFC",y="MIA:CON logFC", color="") + theme_cowplot() + geom_hline(yintercept = 0) + geom_vline(xintercept = 0) + xlim(-15, 15) + ylim(-15, 15) + labs(title = "MC vs CC")
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MC >0 & log2FC.MC > log2FC.CC)) # 1048
## [1] 1048 18
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MC >0 & log2FC.MC < log2FC.CC)) # 1110
## [1] 1110 18
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MC <0 & log2FC.MC > log2FC.CC)) # 1166
## [1] 1166 18
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MC <0 & log2FC.MC < log2FC.CC)) # 836
## [1] 836 18
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MC <0)) # 77
## [1] 77 18
dim(LPS_MC_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MC >0)) # 82
## [1] 82 18
ggplotRegression <- function (fit) {
require(ggplot2)
ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) +
geom_point(color = "grey50") +
stat_smooth(method = "lm", col = "blue", size=2) +
labs(subtitle = paste(" Slope =",signif(fit$coef[[2]], 3),
" P =",signif(summary(fit)$coef[2,4], 3),
"Adj R2 = ",signif(summary(fit)$adj.r.squared, 3),
"Intercept =",signif(fit$coef[[1]],3 )
))
}
ggplotRegression(lm(LPS_MC_CC.final$log2FC.MC ~ LPS_MC_CC.final$log2FC.CC, data=LPS_MC_CC.final)) + geom_abline(slope=1) + labs(x="CON:CON log2FC (LPS/SAL)", y="MIA:CON log2FC (LPS/SAL)") + xlim(-15, 15) + ylim(-15, 15) + theme_cowplot() + labs(title = "MC vs CC")
## `geom_smooth()` using formula 'y ~ x'
# concordance correlation coefficient
epi.ccc(LPS_MC_CC.final$log2FC.CC, LPS_MC_CC.final$log2FC.MC, ci = "z-transform", conf.level = 0.95)$rho.c
## est lower upper
## 1 0.854 0.846 0.861
LPS Response in CON_CON vs MIA_PLX
LPS_MP_CC <- merge(as.data.frame(LvSinCON_CON), as.data.frame(LvSinMIA_PLX), by = "row.names", all.x = TRUE)
rownames(LPS_MP_CC) <- LPS_MP_CC$Row.names
colnames(LPS_MP_CC) <- c("gene.id","baseMean.CC","log2FC.CC","lfcSE.CC","stat.CC","pval.CC","padj.CC", "gene.name.CC", "baseMean.MP","log2FC.MP","lfcSE.MP","stat.MP","pval.MP","padj.MP", "gene.name")
#Assign the Group variable for coloring 4-way plot
for (i in c(1:nrow(LPS_MP_CC))){
if (LPS_MP_CC$padj.CC[i]<0.05 & (!is.na(LPS_MP_CC$padj.CC[i]))){
LPS_MP_CC$CCSig[i]='YES'
}
else {
LPS_MP_CC$CCSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_MP_CC))){
if (LPS_MP_CC$padj.MP[i]<0.05 & (!is.na(LPS_MP_CC$padj.MP[i]))){
LPS_MP_CC$MPSig[i]='YES'
}
else {
LPS_MP_CC$MPSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_MP_CC))){
if (LPS_MP_CC$CCSig[i]=='YES' & LPS_MP_CC$MPSig[i]=='NO'){
LPS_MP_CC$Group[i]=1 }
else if (LPS_MP_CC$CCSig[i]=='NO' & LPS_MP_CC$MPSig[i]=='YES'){
LPS_MP_CC$Group[i]=2}
else if (LPS_MP_CC$CCSig[i]=='YES' & LPS_MP_CC$MPSig[i]=='YES'){
LPS_MP_CC$Group[i]=3}
else {
LPS_MP_CC$Group[i]=4}
}
dim(LPS_MP_CC)
## [1] 15379 18
table(LPS_MP_CC$Group)
##
## 1 2 3 4
## 1037 843 1997 11502
LPS_MP_CC <- LPS_MP_CC %>% dplyr::filter(log2FC.CC < 15 & log2FC.CC > -15 & log2FC.MP < 15 & log2FC.MP > -15)
LPS_MP_CC.final<-subset(LPS_MP_CC, LPS_MP_CC$Group != 4)
ggplot(data = LPS_MP_CC.final, aes(x = log2FC.CC, y = log2FC.MP, color=factor(Group))) + geom_point() + scale_color_manual(values = c("black", "purple3","grey"), labels = c("CON:CON","MIA:PLX","both")) + geom_abline(slope=1, size=0.5) + labs(x="Con:CON logFC",y="MIA:PLX logFC", color="") + theme_cowplot() + geom_hline(yintercept = 0) + geom_vline(xintercept = 0) + xlim(-15, 15) + ylim(-15, 15)+ labs(title = "MP vs CC")
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MP >0 & log2FC.MP > log2FC.CC)) # 958
## [1] 958 18
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MP >0 & log2FC.MP < log2FC.CC)) # 975
## [1] 975 18
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MP <0 & log2FC.MP > log2FC.CC)) # 886
## [1] 886 18
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MP <0 & log2FC.MP < log2FC.CC)) # 946
## [1] 946 18
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.MP <0)) # 43
## [1] 43 18
dim(LPS_MP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.MP >0)) # 62
## [1] 62 18
ggplotRegression(lm(LPS_MP_CC.final$log2FC.MP ~ LPS_MP_CC.final$log2FC.CC, data=LPS_MP_CC.final)) + geom_abline(slope=1) + labs(x="CON:CON log2FC (LPS/SAL)", y="MIA:PLX log2FC (LPS/SAL)")+ theme_cowplot() + xlim(-15, 15) + ylim(-15, 15) + labs(title = "MP vs CC")
## `geom_smooth()` using formula 'y ~ x'
# concordance correlation coefficient
epi.ccc(LPS_MP_CC.final$log2FC.CC, LPS_MP_CC.final$log2FC.MP, ci = "z-transform", conf.level = 0.95)$rho.c
## est lower upper
## 1 0.885 0.878 0.892
LPS Response in CON_CON vs CON_PLX
LPS_CP_CC <- merge(as.data.frame(LvSinCON_CON), as.data.frame(LvSinCON_PLX), by = "row.names", all.x = TRUE)
rownames(LPS_CP_CC) <- LPS_CP_CC$Row.names
colnames(LPS_CP_CC) <- c("gene.id","baseMean.CC","log2FC.CC","lfcSE.CC","stat.CC","pval.CC","padj.CC", "gene.name.CC", "baseMean.CP","log2FC.CP","lfcSE.CP","stat.CP","pval.CP","padj.CP", "gene.name")
#Assign the Group variable for coloring 4-way plot
for (i in c(1:nrow(LPS_CP_CC))){
if (LPS_CP_CC$padj.CC[i]<0.05 & (!is.na(LPS_CP_CC$padj.CC[i]))){
LPS_CP_CC$CCSig[i]='YES'
}
else {
LPS_CP_CC$CCSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_CP_CC))){
if (LPS_CP_CC$padj.CP[i]<0.05 & (!is.na(LPS_CP_CC$padj.CP[i]))){
LPS_CP_CC$CPSig[i]='YES'
}
else {
LPS_CP_CC$CPSig[i]='NO'
}
}
for (i in c(1:nrow(LPS_CP_CC))){
if (LPS_CP_CC$CCSig[i]=='YES' & LPS_CP_CC$CPSig[i]=='NO'){
LPS_CP_CC$Group[i]=1 }
else if (LPS_CP_CC$CCSig[i]=='NO' & LPS_CP_CC$CPSig[i]=='YES'){
LPS_CP_CC$Group[i]=2}
else if (LPS_CP_CC$CCSig[i]=='YES' & LPS_CP_CC$CPSig[i]=='YES'){
LPS_CP_CC$Group[i]=3}
else {
LPS_CP_CC$Group[i]=4}
}
dim(LPS_CP_CC)
## [1] 15379 18
table(LPS_CP_CC$Group)
##
## 1 2 3 4
## 706 1790 2328 10555
LPS_CP_CC <- LPS_CP_CC %>% dplyr::filter(log2FC.CC < 15 & log2FC.CC > -15 & log2FC.CP < 15 & log2FC.CP > -15)
LPS_CP_CC.final<-subset(LPS_CP_CC, LPS_CP_CC$Group != 4)
ggplot(data = LPS_CP_CC.final, aes(x = log2FC.CC, y = log2FC.CP, color=factor(Group))) + geom_point() + scale_color_manual(values = c("black", "turquoise3","grey"), labels = c("CON:CON","CON:PLX","both")) + geom_abline(slope=1, size=0.5) + labs(x="CON:CON logFC",y="CON:PLX logFC", color="") + theme_cowplot() + geom_hline(yintercept = 0) + geom_vline(xintercept = 0) + xlim(-15, 15) + ylim(-15, 15) + labs(title = "CP vs CC")
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.CP >0 & log2FC.CP > log2FC.CC)) # 1497
## [1] 1497 18
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.CP >0 & log2FC.CP < log2FC.CC)) # 923
## [1] 923 18
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.CP <0 & log2FC.CP > log2FC.CC)) # 935
## [1] 935 18
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.CP <0 & log2FC.CP < log2FC.CC)) # 1308
## [1] 1308 18
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC>0 & log2FC.CP <0)) # 77
## [1] 77 18
dim(LPS_CP_CC.final %>% dplyr::filter(log2FC.CC<0 & log2FC.CP >0)) # 82
## [1] 82 18
ggplotRegression <- function (fit) {
require(ggplot2)
ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) +
geom_point(color = "grey50") +
stat_smooth(method = "lm", col = "blue", size=2) +
labs(subtitle = paste(" Slope =",signif(fit$coef[[2]], 3),
" P =",signif(summary(fit)$coef[2,4], 3),
"Adj R2 = ",signif(summary(fit)$adj.r.squared, 3),
"Intercept =",signif(fit$coef[[1]],3 )
))
}
ggplotRegression(lm(LPS_CP_CC.final$log2FC.CP ~ LPS_CP_CC.final$log2FC.CC, data=LPS_CP_CC.final)) + geom_abline(slope=1) + labs(x="CON:CON log2FC (LPS/SAL)", y="CON:PLX log2FC (LPS/SAL)")+ theme_cowplot() + xlim(-15, 15) + ylim(-15, 15) + labs(title = "CP vs CC")
## `geom_smooth()` using formula 'y ~ x'
# concordance correlation coefficient
epi.ccc(LPS_CP_CC.final$log2FC.CC, LPS_CP_CC.final$log2FC.CP, ci = "z-transform", conf.level = 0.95)$rho.c
## est lower upper
## 1 0.893 0.887 0.898
Heatmap
library(pheatmap)
LPS <- as.data.frame(cbind(LvSinCON_CON, LvSinCON_PLX, LvSinMIA_CON, LvSinMIA_PLX))
colnames(LPS) <- c("baseMean.CC", "log2FC.CC", "lfcSE.CC","stat.CC", "pval.CC", "padj.CC", "gene.CC","baseMean.CP", "log2FC.CP", "lfcSE.CP", "stat.CP", "pval.CP", "padj.CP", "gene.CP", "baseMean.MC", "log2FC.MC", "lfcSE.MC", "stat.MC", "pval.MC", "padj.MC", "gene.MC", "baseMean.MP", "log2FC.MP", "lfcSE.MP", "stat.MP", "pval.MP", "padj.MP", "gene.MP")
write.csv(LPS, "writes/211005_LPS_all.csv")
rescue <- read.csv("writes/RescueGenes.csv")
sig <- which(LPS$gene.CC %in% rescue$RESCUE)
sorted.LPS <- data.frame(LPS[sig,c(2,9,16,23)])
sorted.LPS <- sorted.LPS[order(sorted.LPS$log2FC.CC),]
paletteLength <- 50
myColor <- colorRampPalette(c("navy", "white", "red"))(paletteLength)
myBreaks <- c(seq(-4, 0, length.out=ceiling(paletteLength/2) + 1),
seq(8/paletteLength, 8, length.out=floor(paletteLength/2)))
pheatmap(sorted.LPS, cluster_rows=F, show_rownames=F, cluster_cols=F, scale="none", breaks = myBreaks, col = myColor, main="Rescued LPS Response Genes")
sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/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 stats4 stats graphics grDevices utils datasets
## [8] methods base
##
## other attached packages:
## [1] pheatmap_1.0.12 ensembldb_2.14.1
## [3] AnnotationFilter_1.14.0 GenomicFeatures_1.42.3
## [5] epiR_2.0.26 survival_3.2-11
## [7] AnnotationHub_2.22.1 BiocFileCache_1.14.0
## [9] dbplyr_2.1.1 ggrepel_0.9.1
## [11] org.Mm.eg.db_3.12.0 AnnotationDbi_1.52.0
## [13] DESeq2_1.30.1 SummarizedExperiment_1.20.0
## [15] Biobase_2.50.0 MatrixGenerics_1.2.1
## [17] matrixStats_0.59.0 GenomicRanges_1.42.0
## [19] GenomeInfoDb_1.26.7 IRanges_2.24.1
## [21] S4Vectors_0.28.1 BiocGenerics_0.36.1
## [23] cowplot_1.1.1 forcats_0.5.1
## [25] stringr_1.4.0 dplyr_1.0.7
## [27] purrr_0.3.4 readr_1.4.0
## [29] tidyr_1.1.3 tibble_3.1.2
## [31] ggplot2_3.3.5 tidyverse_1.3.1
##
## loaded via a namespace (and not attached):
## [1] colorspace_2.0-2 ellipsis_0.3.2
## [3] XVector_0.30.0 fs_1.5.0
## [5] rstudioapi_0.13 farver_2.1.0
## [7] bit64_4.0.5 interactiveDisplayBase_1.28.0
## [9] fansi_0.5.0 lubridate_1.7.10
## [11] xml2_1.3.2 splines_4.0.3
## [13] cachem_1.0.5 geneplotter_1.68.0
## [15] knitr_1.33 jsonlite_1.7.2
## [17] Rsamtools_2.6.0 broom_0.7.8
## [19] annotate_1.68.0 shiny_1.6.0
## [21] BiocManager_1.30.16 compiler_4.0.3
## [23] httr_1.4.2 backports_1.2.1
## [25] lazyeval_0.2.2 assertthat_0.2.1
## [27] Matrix_1.3-4 fastmap_1.1.0
## [29] cli_3.0.0 later_1.2.0
## [31] prettyunits_1.1.1 htmltools_0.5.1.1
## [33] tools_4.0.3 gtable_0.3.0
## [35] glue_1.4.2 GenomeInfoDbData_1.2.4
## [37] rappdirs_0.3.3 Rcpp_1.0.7
## [39] cellranger_1.1.0 jquerylib_0.1.4
## [41] Biostrings_2.58.0 vctrs_0.3.8
## [43] nlme_3.1-152 rtracklayer_1.50.0
## [45] xfun_0.24 rvest_1.0.0
## [47] mime_0.11 lifecycle_1.0.0
## [49] XML_3.99-0.6 zlibbioc_1.36.0
## [51] scales_1.1.1 ProtGenerics_1.22.0
## [53] promises_1.2.0.1 hms_1.1.0
## [55] RColorBrewer_1.1-2 yaml_2.2.1
## [57] curl_4.3.2 memoise_2.0.0
## [59] pander_0.6.4 sass_0.4.0
## [61] biomaRt_2.46.3 stringi_1.6.2
## [63] RSQLite_2.2.7 highr_0.9
## [65] BiocVersion_3.12.0 genefilter_1.72.1
## [67] BiocParallel_1.24.1 rlang_0.4.11
## [69] pkgconfig_2.0.3 bitops_1.0-7
## [71] evaluate_0.14 lattice_0.20-44
## [73] labeling_0.4.2 GenomicAlignments_1.26.0
## [75] bit_4.0.4 tidyselect_1.1.1
## [77] magrittr_2.0.1 R6_2.5.0
## [79] generics_0.1.0 DelayedArray_0.16.3
## [81] DBI_1.1.1 mgcv_1.8-36
## [83] pillar_1.6.1 haven_2.4.1
## [85] withr_2.4.2 RCurl_1.98-1.3
## [87] modelr_0.1.8 crayon_1.4.1
## [89] utf8_1.2.1 rmarkdown_2.9
## [91] progress_1.2.2 locfit_1.5-9.4
## [93] grid_4.0.3 readxl_1.3.1
## [95] blob_1.2.1 reprex_2.0.0
## [97] digest_0.6.27 xtable_1.8-4
## [99] httpuv_1.6.1 openssl_1.4.4
## [101] munsell_0.5.0 BiasedUrn_1.07
## [103] bslib_0.2.5.1 askpass_1.1