Introduction

Gene expression is controlled by transcription factors (TFs), which binding to DNA recognition sites located near their target genes. Chromatin Immunoprecipitation Sequencing (ChIP-Seq) can be used to profile genome-wide protein–DNA interactions, such as identifying sites of TFs binding. Therefore, ChIP-Seq can be used to reveal mechanisms involved in differential gene regulation.

DEbPeak implements functions to integrate RNA-seq and ChIP-seq, which can be used to investigate the direct and indirect targets of a TF, thus revealing the regulation network of gene expression.


Example data

The data used here contains RNA-seq and ChIP-seq datasets from RUNX represses Pmp22 to drive neurofibromagenesis:

  • RNA-seq: two genotypes and three samples per genotype, the raw data are stored in GSE122774
  • ChIP-seq: two genotypes and one sample per genotype, the raw data are stored in GSE122775

Differential Expression Analysis (RNA-seq)

# library
suppressWarnings(suppressMessages(library(DESeq2)))
suppressWarnings(suppressMessages(library(DEbPeak)))

# prepare count matrix and metadata
debchip.count.file <- system.file("extdata", "debchip_count.txt", package = "DEbPeak")
debchip.meta.file <- system.file("extdata", "debchip_meta.txt", package = "DEbPeak")
debchip.count.matrix <- read.table(file = debchip.count.file, header = T, sep = "\t")
debchip.meta.info <- read.table(file = debchip.meta.file, header = T)
# create DESeqDataSet object
debchip.dds <- DESeq2::DESeqDataSetFromMatrix(countData = debchip.count.matrix, 
                                              colData = debchip.meta.info, 
                                              design = ~condition)
## Warning in DESeqDataSet(se, design = design, ignoreRank): some variables in
## design formula are characters, converting to factors
# set control level
debchip.dds$condition <- relevel(debchip.dds$condition, ref = "NF")
# conduct differential expressed genes analysis
debchip.dds <- DESeq(debchip.dds)
## estimating size factors
## estimating dispersions
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## fitting model and testing
# extract results
debchip.dds.results <- results(debchip.dds,contrast=c("condition",'RX','NF'))
debchip.dds.results.ordered <- debchip.dds.results[order(debchip.dds.results$log2FoldChange,decreasing = TRUE),]
head(debchip.dds.results.ordered)
## log2 fold change (MLE): condition RX vs NF 
## Wald test p-value: condition RX vs NF 
## DataFrame with 6 rows and 6 columns
##          baseMean log2FoldChange     lfcSE      stat      pvalue        padj
##         <numeric>      <numeric> <numeric> <numeric>   <numeric>   <numeric>
## Sycp1    12.07541        7.15056   3.91075   1.82844 6.74840e-02 1.81006e-01
## Gm16532  10.07020        6.89407   1.74281   3.95573 7.63014e-05 7.17146e-04
## Hs3st4   18.88787        6.82852   1.42952   4.77679 1.78117e-06 2.83848e-05
## Nell1    34.13399        6.80718   1.34257   5.07027 3.97260e-07 7.79916e-06
## Sptssb    9.39376        6.78558   1.52948   4.43651 9.14275e-06 1.16684e-04
## Myo3a     7.19992        6.41077   1.74865   3.66612 2.46259e-04 1.94151e-03

Process ChIP-seq data

Consensus peaks

Due to the high noise of ChIP-seq experiments, control samples can be used to remove possible nonspecific interactions. Besides control samples, replicates are another way to separate actual biological events from variability resulting from random chance. The peaks which have high consistency between replicates are likely to be genuine signals, and we call these peaks consensus peaks. In this step, we will get consensus peaks with MSPC when multiple peak files are available, but when there is only one peak file, we will use it directly (make sure this peak file contains five columns: “chr”, “start”, “stop”, “name”, “score”).

# get consensus peak
peak.file = system.file("extdata", "debchip_peaks.bed", package = "DEbPeak")
peak.df = GetConsensusPeak(peak.file = peak.file)
head(peak.df)
##     chr     start      stop     name score
## 1 chr13  51519018  51519164  chr13-5  27.6
## 2 chr13  21326999  21327145  chr13-6  25.2
## 3  chr5 151112840 151112986   chr5-2  22.3
## 4 chr11 104361891 104362037 chr11-98  21.8
## 5 chr11  70198551  70198697 chr11-88  21.3
## 6  chr6  29326952  29327098   chr6-4  20.8

Peak profile

Check the profle of consensus peaks:

# peak profile plot
peak.profile = PeakProfile(peak.df ,species="Mouse", by = "gene", region.type = "body", nbin = 800)
## >> preparing promoter regions...  2023-07-02 18时13分47秒 
## >> preparing tag matrix...        2023-07-02 18时13分47秒 
## >> preparing start_site regions by ... 2023-07-02 18时13分47秒
## >> preparing tag matrix...  2023-07-02 18时13分47秒 
## >> generating figure...       2023-07-02 18时14分00秒
## >> done...            2023-07-02 18时14分00秒
## >> binning method is used...2023-07-02 18时14分00秒
## >> preparing start_site regions by gene... 2023-07-02 18时14分00秒
## >> preparing tag matrix by binning...  2023-07-02 18时14分00秒 
## >> Running bootstrapping for tag matrix...        2023-07-02 18时14分05秒 
## >> binning method is used...2023-07-02 18时14分05秒
## >> preparing body regions by gene... 2023-07-02 18时14分05秒
## >> preparing tag matrix by binning...  2023-07-02 18时14分05秒 
## >> preparing matrix with extension from (TSS-20%)~(TTS+20%)... 2023-07-02 18时14分05秒
## >> 1 peaks(0.1536098%), having lengths smaller than 800bp, are filtered... 2023-07-02 18时14分08秒
## >> Running bootstrapping for tag matrix...        2023-07-02 18时14分45秒
peak.profile$profile.plot

Check the reads profile with deepTools:

ReadProfile(bw.folder = '/home/songyabing/R/learn/tmp/DEbPeak/deeptools/ChIP-seq', species = "Mouse",
            deeptools.path = "~/anaconda3/bin", 
            out.folder = "/home/songyabing/R/learn/tmp/DEbPeak/deeptools/ChIP-seq")


Peak annotation

In this step, we will perform peak annotation with ChIPseeker. This will include annotating peaks with its nearby genes, assigning genomic region of the peaks, et al.

# peak annotation
peak.anno = AnnoPeak(peak.df = peak.df,species = "Mouse",seq.style = "UCSC",up.dist = 20000,down.dist = 20000)
## 
## >> preparing features information...      2023-07-02 18时14分47秒 
## >> identifying nearest features...        2023-07-02 18时14分48秒 
## >> calculating distance from peak to TSS...   2023-07-02 18时14分48秒 
## >> assigning genomic annotation...        2023-07-02 18时14分48秒 
## >> adding gene annotation...          2023-07-02 18时15分00秒
## 'select()' returned 1:many mapping between keys and columns
## >> assigning chromosome lengths           2023-07-02 18时15分00秒 
## >> done...                    2023-07-02 18时15分00秒
## Warning: Removed 6 rows containing non-finite values (`stat_count()`).
peak.anno.df = peak.anno$df
head(peak.anno.df)
##   seqnames     start       end width strand     name score
## 1    chr13  51519019  51519164   146      *  chr13-5  27.6
## 2    chr13  21327000  21327145   146      *  chr13-6  25.2
## 3     chr5 151112841 151112986   146      *   chr5-2  22.3
## 4    chr11 104361892 104362037   146      * chr11-98  21.8
## 5    chr11  70198552  70198697   146      * chr11-88  21.3
## 6     chr6  29326953  29327098   146      *   chr6-4  20.8
##                                            annotation geneChr geneStart
## 1 Intron (ENSMUST00000021898.5/20418, intron 1 of 11)       1  51431041
## 2                                   Promoter (9-10kb)       1  21317258
## 3                                    Promoter (4-5kb)       2 151095421
## 4 Intron (ENSMUST00000106977.7/76719, intron 4 of 13)       3 104334921
## 5                                  Promoter (14-15kb)       3  70212752
## 6                                    Promoter (7-8kb)       4  29319199
##     geneEnd geneLength geneStrand geneId         transcriptId distanceToTSS
## 1  51567084     136044          2  20418 ENSMUST00000021898.5         47920
## 2  21319624       2367          1  75512 ENSMUST00000136668.1          9742
## 3 151108735      13315          2 243362 ENSMUST00000202866.1         -4106
## 4 104341299       6379          2  76719 ENSMUST00000069188.6        -20593
## 5  70216413       3662          1 216867 ENSMUST00000126388.7        -14055
## 6  29335854      16656          1 330277 ENSMUST00000166462.1          7754
##              ENSEMBL   SYMBOL
## 1 ENSMUSG00000021448     Shc3
## 2 ENSMUSG00000004341     Gpx6
## 3 ENSMUSG00000016128  Stard13
## 4 ENSMUSG00000018412   Kansl1
## 5 ENSMUSG00000040938 Slc16a11
## 6 ENSMUSG00000039742  Fam71f1
##                                                                 GENENAME
## 1               src homology 2 domain-containing transforming protein C3
## 2                                               glutathione peroxidase 6
## 3               StAR-related lipid transfer (START) domain containing 13
## 4                                  KAT8 regulatory NSL complex subunit 1
## 5 solute carrier family 16 (monocarboxylic acid transporters), member 11
## 6                          family with sequence similarity 71, member F1
##       anno
## 1   Intron
## 2 Promoter
## 3 Promoter
## 4   Intron
## 5 Promoter
## 6 Promoter
peak.anno$plots

The above pie plot is not based on ggplot2, here we provide function to create pie plot based on ggplot2:

PeakAnnoPie(peak.anno$anno.obj)


Motif analysis

Here, we will perform de novo motif discovery to illustrate the binding motif:

# this step is time consuming!
MotifDiscovery(peak.df = peak.df, genome = '/path/to/genome.fa',
               streme.path = "~/data/software/meme-5.5.2/bin/streme",
               samtools.path = "/home/songyabing/data/software/samtools-1.17/samtools",
               out.folder = "/path/to/output", show.html = FALSE)
# after running, there will be a browser pop-up window to show the results.

Integrate ChIP-seq and RNA-seq

In this step, we will integrate ChIP-seq and RNA-seq to get plausible direct targets of TF (in this example, Runx). ### Integrate

debchip.res = DEbPeak(de.res = debchip.dds.results.ordered, peak.res = peak.anno.df, peak.anno.key = "Promoter", merge.key="SYMBOL", species = "Mouse")
## Differential expression analysis with DESeq2!
head(debchip.res)
##          SYMBOL geneId                    Peak         annotation     anno
## 1 0610012G03Rik   <NA>                    <NA>               <NA>     <NA>
## 2 1110002J07Rik  68488 chr10:66905070-66905215 Promoter (12-13kb) Promoter
## 3 1110008P14Rik   <NA>                    <NA>               <NA>     <NA>
## 4 1110032F04Rik   <NA>                    <NA>               <NA>     <NA>
## 5 1500009C09Rik   <NA>                    <NA>               <NA>     <NA>
## 6 1500011B03Rik   <NA>                    <NA>               <NA>     <NA>
##   ENSEMBL                   GENENAME log2FoldChange  abundance   signif
## 1    <NA>                       <NA>       1.837668  59.179193 3.073773
## 2    <NA> RIKEN cDNA 1110002J07 gene             NA         NA       NA
## 3    <NA>                       <NA>       1.013546 125.765543 2.277566
## 4    <NA>                       <NA>       2.935223  89.091244 4.714179
## 5    <NA>                       <NA>       3.183848   9.432253 1.492741
## 6    <NA>                       <NA>       1.058984 227.077738 2.656922
##     regulation Type
## 1 Up_regulated   UP
## 2         <NA> Peak
## 3 Up_regulated   UP
## 4 Up_regulated   UP
## 5 Up_regulated   UP
## 6 Up_regulated   UP

Integrate summary

# DE and ChIP venn plot
# debchip.plot = PlotDEbPeak(debchip.res, peak.type = "ChIP", show_percentage=FALSE)
# debchip.plot
debchip.plot = InteVenn(inte.res = debchip.res, inte.type = "DEbPeak", peak.type = "ChIP", 
                        peak.mode = "consensus", gene.col = "SYMBOL",show_percentage = FALSE)
debchip.plot


Functional enrichment

There are five categories for users to choose to perform functional enrichment: UP, Peak, DOWN, DOWNbPeak, UPbPeak. Here, we will use DOWNbPeak and UPbPeak as examples.

UPbPeak

# functional enrichment on direct targets
# debchip.up.fe.results = DEbPeakFE(de.peak = debchip.res, peak.fe.key = "UPbPeak", 
#                                   gene.type = "ENTREZID", species="Mouse",save = F)
debchip.up.fe.results = InteFE(inte.res = debchip.res, fe.key = "UPbPeak", inte.type = "DEbPeak",
                               gene.type = "ENTREZID", species="Mouse",save = F)
## conduct ALL GO enrichment analysis on: UPbPeak
## wrong orderBy parameter; set to default `orderBy = "x"`
## Scale for y is already present.
## Adding another scale for y, which will replace the existing scale.
## wrong orderBy parameter; set to default `orderBy = "x"`
## 
## Scale for y is already present.
## Adding another scale for y, which will replace the existing scale.
## wrong orderBy parameter; set to default `orderBy = "x"`
## 
## Scale for y is already present.
## Adding another scale for y, which will replace the existing scale.

The results:

# the result table
head(debchip.up.fe.results[["GO"]][["table"]])
##            ONTOLOGY         ID                                    Description
## GO:0032288       BP GO:0032288                                myelin assembly
## GO:0019233       BP GO:0019233                     sensory perception of pain
## GO:0043951       BP GO:0043951 negative regulation of cAMP-mediated signaling
## GO:0022011       BP GO:0022011       myelination in peripheral nervous system
## GO:0032292       BP GO:0032292    peripheral nervous system axon ensheathment
## GO:0014044       BP GO:0014044                       Schwann cell development
##            GeneRatio   BgRatio       pvalue   p.adjust     qvalue
## GO:0032288      2/21  23/23328 0.0001930551 0.02159856 0.01416299
## GO:0019233      3/21 146/23328 0.0002940462 0.02159856 0.01416299
## GO:0043951      2/21  30/23328 0.0003306741 0.02159856 0.01416299
## GO:0022011      2/21  31/23328 0.0003532875 0.02159856 0.01416299
## GO:0032292      2/21  31/23328 0.0003532875 0.02159856 0.01416299
## GO:0014044      2/21  34/23328 0.0004255310 0.02159856 0.01416299
##                      geneID Count
## GO:0032288        Pmp22/Prx     2
## GO:0019233 Kcnip3/Npy2r/Prx     3
## GO:0043951     Npy2r/Rnf157     2
## GO:0022011        Pmp22/Prx     2
## GO:0032292        Pmp22/Prx     2
## GO:0014044        Pmp22/Prx     2
# the result plot
debchip.up.fe.results[["GO"]][["plot"]]


DOWNbPeak

# functional enrichment on direct targets
# debchip.down.fe.results = DEbPeakFE(de.peak = debchip.res, peak.fe.key = "DOWNbPeak", 
#                                     gene.type = "ENTREZID", species="Mouse",save = F)
debchip.down.fe.results = InteFE(inte.res = debchip.res, fe.key = "DOWNbPeak", inte.type = "DEbPeak",
                                 gene.type = "ENTREZID", species="Mouse",save = F)
## conduct ALL GO enrichment analysis on: DOWNbPeak
## wrong orderBy parameter; set to default `orderBy = "x"`
## Scale for y is already present.
## Adding another scale for y, which will replace the existing scale.
## wrong orderBy parameter; set to default `orderBy = "x"`
## 
## Scale for y is already present.
## Adding another scale for y, which will replace the existing scale.

The results:

# the result table
head(debchip.down.fe.results[["GO"]][["table"]])
##            ONTOLOGY         ID                                  Description
## GO:0010810       BP GO:0010810        regulation of cell-substrate adhesion
## GO:0045785       BP GO:0045785         positive regulation of cell adhesion
## GO:0007162       BP GO:0007162         negative regulation of cell adhesion
## GO:0030198       BP GO:0030198            extracellular matrix organization
## GO:0043062       BP GO:0043062         extracellular structure organization
## GO:0051250       BP GO:0051250 negative regulation of lymphocyte activation
##            GeneRatio   BgRatio       pvalue   p.adjust      qvalue
## GO:0010810      5/33 214/23328 1.193628e-05 0.01428434 0.008185655
## GO:0045785      6/33 435/23328 2.935433e-05 0.01428434 0.008185655
## GO:0007162      5/33 290/23328 5.117751e-05 0.01428434 0.008185655
## GO:0030198      5/33 302/23328 6.201521e-05 0.01428434 0.008185655
## GO:0043062      5/33 303/23328 6.299252e-05 0.01428434 0.008185655
## GO:0051250      4/33 158/23328 7.112535e-05 0.01428434 0.008185655
##                                             geneID Count
## GO:0010810           Col8a1/Fbln2/Mmp14/Postn/Sdc4     5
## GO:0045785 Col8a1/Fbln2/Il4ra/Ptpn22/Sdc4/Tnfsf13b     6
## GO:0007162           Il4ra/Mmp14/Postn/Ptpn22/Sdc4     5
## GO:0030198           Bcl3/Col8a1/Fbln2/Mmp14/Postn     5
## GO:0043062           Bcl3/Col8a1/Fbln2/Mmp14/Postn     5
## GO:0051250                   Il4ra/Lyn/Ptpn22/Sdc4     4
# the result plot
debchip.down.fe.results[["GO"]][["plot"]]


Save results

Save results for downstream analysis:

save.image(file = "/home/songyabing/R/learn/tmp/DEbPeak/RNAandChIP.RData")

Session info

## R version 4.0.3 (2020-10-10)
## Platform: x86_64-conda-linux-gnu (64-bit)
## Running under: CentOS Linux 7 (Core)
## 
## Matrix products: default
## BLAS/LAPACK: /home/softwares/anaconda3/envs/r4.0/lib/libopenblasp-r0.3.12.so
## 
## locale:
##  [1] LC_CTYPE=zh_CN.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=zh_CN.UTF-8        LC_COLLATE=zh_CN.UTF-8    
##  [5] LC_MONETARY=zh_CN.UTF-8    LC_MESSAGES=zh_CN.UTF-8   
##  [7] LC_PAPER=zh_CN.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] org.Mm.eg.db_3.12.0                      
##  [2] TxDb.Mmusculus.UCSC.mm10.knownGene_3.10.0
##  [3] GenomicFeatures_1.42.2                   
##  [4] AnnotationDbi_1.52.0                     
##  [5] DEbPeak_1.4.0                            
##  [6] DESeq2_1.30.1                            
##  [7] SummarizedExperiment_1.20.0              
##  [8] Biobase_2.50.0                           
##  [9] MatrixGenerics_1.2.1                     
## [10] matrixStats_0.58.0                       
## [11] GenomicRanges_1.42.0                     
## [12] GenomeInfoDb_1.26.7                      
## [13] IRanges_2.24.1                           
## [14] S4Vectors_0.28.1                         
## [15] BiocGenerics_0.42.0                      
## 
## loaded via a namespace (and not attached):
##   [1] rsvd_1.0.3                             
##   [2] ggvenn_0.1.9                           
##   [3] apeglm_1.12.0                          
##   [4] Rsamtools_2.6.0                        
##   [5] rsvg_2.1                               
##   [6] foreach_1.5.1                          
##   [7] rprojroot_2.0.2                        
##   [8] crayon_1.4.1                           
##   [9] V8_3.4.2                               
##  [10] MASS_7.3-58                            
##  [11] nlme_3.1-152                           
##  [12] backports_1.2.1                        
##  [13] sva_3.38.0                             
##  [14] GOSemSim_2.25.0                        
##  [15] rlang_1.1.0                            
##  [16] XVector_0.30.0                         
##  [17] readxl_1.4.2                           
##  [18] irlba_2.3.5                            
##  [19] limma_3.46.0                           
##  [20] GOstats_2.56.0                         
##  [21] BiocParallel_1.24.1                    
##  [22] rjson_0.2.20                           
##  [23] bit64_4.0.5                            
##  [24] glue_1.6.2                             
##  [25] DiffBind_3.0.15                        
##  [26] mixsqp_0.3-43                          
##  [27] pheatmap_1.0.12                        
##  [28] parallel_4.0.3                         
##  [29] DEFormats_1.18.0                       
##  [30] base64url_1.4                          
##  [31] tcltk_4.0.3                            
##  [32] DOSE_3.23.2                            
##  [33] haven_2.5.2                            
##  [34] tidyselect_1.2.0                       
##  [35] rio_0.5.27                             
##  [36] XML_3.99-0.6                           
##  [37] tidyr_1.3.0                            
##  [38] ggpubr_0.4.0                           
##  [39] GenomicAlignments_1.26.0               
##  [40] xtable_1.8-4                           
##  [41] ggnetwork_0.5.12                       
##  [42] magrittr_2.0.3                         
##  [43] evaluate_0.14                          
##  [44] ggplot2_3.4.2                          
##  [45] cli_3.6.1                              
##  [46] zlibbioc_1.36.0                        
##  [47] hwriter_1.3.2                          
##  [48] rstudioapi_0.14                        
##  [49] bslib_0.3.1                            
##  [50] GreyListChIP_1.22.0                    
##  [51] fastmatch_1.1-3                        
##  [52] BiocSingular_1.6.0                     
##  [53] xfun_0.30                              
##  [54] askpass_1.1                            
##  [55] clue_0.3-59                            
##  [56] gson_0.0.9                             
##  [57] cluster_2.1.1                          
##  [58] caTools_1.18.2                         
##  [59] tidygraph_1.2.0                        
##  [60] tibble_3.2.1                           
##  [61] ggrepel_0.9.1                          
##  [62] Biostrings_2.58.0                      
##  [63] png_0.1-7                              
##  [64] withr_2.5.0                            
##  [65] bitops_1.0-6                           
##  [66] ggforce_0.3.3                          
##  [67] RBGL_1.66.0                            
##  [68] plyr_1.8.6                             
##  [69] cellranger_1.1.0                       
##  [70] GSEABase_1.52.1                        
##  [71] pcaPP_2.0-1                            
##  [72] dqrng_0.2.1                            
##  [73] coda_0.19-4                            
##  [74] pillar_1.9.0                           
##  [75] gplots_3.1.1                           
##  [76] GlobalOptions_0.1.2                    
##  [77] cachem_1.0.4                           
##  [78] fs_1.5.0                               
##  [79] GetoptLong_1.0.5                       
##  [80] clusterProfiler_4.7.1                  
##  [81] DelayedMatrixStats_1.12.3              
##  [82] vctrs_0.6.2                            
##  [83] generics_0.1.0                         
##  [84] plot3D_1.4                             
##  [85] tools_4.0.3                            
##  [86] foreign_0.8-81                         
##  [87] NOISeq_2.34.0                          
##  [88] munsell_0.5.0                          
##  [89] tweenr_1.0.2                           
##  [90] fgsea_1.16.0                           
##  [91] DelayedArray_0.16.3                    
##  [92] fastmap_1.1.0                          
##  [93] compiler_4.0.3                         
##  [94] abind_1.4-5                            
##  [95] rtracklayer_1.50.0                     
##  [96] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2
##  [97] GenomeInfoDbData_1.2.4                 
##  [98] gridExtra_2.3                          
##  [99] edgeR_3.32.1                           
## [100] lattice_0.20-45                        
## [101] ggnewscale_0.4.7                       
## [102] AnnotationForge_1.32.0                 
## [103] utf8_1.2.1                             
## [104] dplyr_1.1.2                            
## [105] BiocFileCache_1.14.0                   
## [106] jsonlite_1.8.4                         
## [107] scales_1.2.1                           
## [108] graph_1.68.0                           
## [109] carData_3.0-4                          
## [110] sparseMatrixStats_1.2.1                
## [111] TFEA.ChIP_1.10.0                       
## [112] genefilter_1.72.1                      
## [113] car_3.0-11                             
## [114] doParallel_1.0.16                      
## [115] latticeExtra_0.6-29                    
## [116] R.utils_2.12.0                         
## [117] brew_1.0-6                             
## [118] checkmate_2.0.0                        
## [119] rmarkdown_2.14                         
## [120] openxlsx_4.2.3                         
## [121] pkgdown_1.6.1                          
## [122] cowplot_1.1.1                          
## [123] textshaping_0.3.6                      
## [124] forcats_1.0.0                          
## [125] downloader_0.4                         
## [126] BSgenome_1.58.0                        
## [127] igraph_1.4.99.9024                     
## [128] survival_3.2-10                        
## [129] numDeriv_2016.8-1.1                    
## [130] yaml_2.2.1                             
## [131] plotrix_3.8-2                          
## [132] systemfonts_1.0.4                      
## [133] ashr_2.2-47                            
## [134] SQUAREM_2021.1                         
## [135] htmltools_0.5.2                        
## [136] memoise_2.0.0                          
## [137] VariantAnnotation_1.36.0               
## [138] locfit_1.5-9.4                         
## [139] graphlayouts_0.7.1                     
## [140] batchtools_0.9.15                      
## [141] PCAtools_2.2.0                         
## [142] viridisLite_0.4.0                      
## [143] rrcov_1.7-0                            
## [144] digest_0.6.27                          
## [145] assertthat_0.2.1                       
## [146] rappdirs_0.3.3                         
## [147] emdbook_1.3.12                         
## [148] RSQLite_2.2.5                          
## [149] amap_0.8-18                            
## [150] yulab.utils_0.0.4                      
## [151] debugme_1.1.0                          
## [152] misc3d_0.9-1                           
## [153] data.table_1.14.2                      
## [154] blob_1.2.1                             
## [155] R.oo_1.24.0                            
## [156] ragg_0.4.0                             
## [157] labeling_0.4.2                         
## [158] splines_4.0.3                          
## [159] ggupset_0.3.0                          
## [160] RCurl_1.98-1.3                         
## [161] broom_1.0.4                            
## [162] hms_1.1.3                              
## [163] colorspace_2.0-0                       
## [164] BiocManager_1.30.16                    
## [165] shape_1.4.6                            
## [166] sass_0.4.1                             
## [167] GEOquery_2.58.0                        
## [168] Rcpp_1.0.9                             
## [169] mvtnorm_1.1-2                          
## [170] circlize_0.4.15                        
## [171] enrichplot_1.10.2                      
## [172] fansi_0.4.2                            
## [173] tzdb_0.3.0                             
## [174] truncnorm_1.0-8                        
## [175] ChIPseeker_1.33.0.900                  
## [176] R6_2.5.0                               
## [177] grid_4.0.3                             
## [178] lifecycle_1.0.3                        
## [179] ShortRead_1.48.0                       
## [180] zip_2.1.1                              
## [181] curl_4.3                               
## [182] ggsignif_0.6.3                         
## [183] jquerylib_0.1.3                        
## [184] robustbase_0.95-0                      
## [185] DO.db_2.9                              
## [186] Matrix_1.5-4                           
## [187] qvalue_2.22.0                          
## [188] desc_1.3.0                             
## [189] org.Hs.eg.db_3.12.0                    
## [190] RColorBrewer_1.1-2                     
## [191] iterators_1.0.13                       
## [192] stringr_1.5.0                          
## [193] DOT_0.1                                
## [194] ggpie_0.2.5                            
## [195] beachmat_2.6.4                         
## [196] polyclip_1.10-0                        
## [197] biomaRt_2.46.3                         
## [198] purrr_1.0.1                            
## [199] shadowtext_0.0.9                       
## [200] gridGraphics_0.5-1                     
## [201] mgcv_1.8-34                            
## [202] ComplexHeatmap_2.13.1                  
## [203] openssl_1.4.3                          
## [204] patchwork_1.0.0                        
## [205] bdsmatrix_1.3-4                        
## [206] codetools_0.2-18                       
## [207] invgamma_1.1                           
## [208] GO.db_3.12.1                           
## [209] gtools_3.8.2                           
## [210] prettyunits_1.1.1                      
## [211] dbplyr_2.3.2                           
## [212] R.methodsS3_1.8.1                      
## [213] gtable_0.3.0                           
## [214] DBI_1.1.1                              
## [215] highr_0.8                              
## [216] ggfun_0.0.6                            
## [217] httr_1.4.5                             
## [218] KernSmooth_2.23-18                     
## [219] stringi_1.5.3                          
## [220] progress_1.2.2                         
## [221] reshape2_1.4.4                         
## [222] farver_2.1.0                           
## [223] annotate_1.68.0                        
## [224] viridis_0.6.1                          
## [225] Rgraphviz_2.34.0                       
## [226] xml2_1.3.4                             
## [227] bbmle_1.0.24                           
## [228] systemPipeR_1.24.3                     
## [229] boot_1.3-28                            
## [230] readr_2.1.4                            
## [231] geneplotter_1.68.0                     
## [232] ggplotify_0.1.0                        
## [233] Category_2.56.0                        
## [234] DEoptimR_1.0-11                        
## [235] bit_4.0.4                              
## [236] scatterpie_0.1.7                       
## [237] jpeg_0.1-8.1                           
## [238] ggraph_2.0.5                           
## [239] pkgconfig_2.0.3                        
## [240] rstatix_0.7.0                          
## [241] knitr_1.37