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