Aim: use stratified LDSC to test whether PD heritability enriches within top 10% most cell-type specific genes and to check whether there is a linear relationship between heritability enrichment values and cell-type specificity deciles.

1 File paths for workflow

source(here::here("R", "file_paths.R"))
source(here::here("R", "EWCE_related_functions.R"))
source(here::here("R", "upsetR_common.R"))

2 Background

s-LDSC is a method that allows you to determine the relative contribution of an annotation to disease heritability. We use the co-efficient p-value as our read-out for significance, as it tells us whether our annotation is significantly contributing to disease heritability after we have accounted for underlying genetic architecture (as represented by a 53-annotation baseline model, which tags coding regions, enhancer regions, histones, promoters, etc.).

3 Running s-LDSC

3.1 Creating gene lists

  • We will be creating these from specificity matrices generated from our snRNA-seq data.
  • Note that a separate specificity matrix was prepared for each disease group i.e. control, PD, PDD and DLB. Thus, we will be generating 320 gene lists (4 disease groups * 8 cell types * 10 deciles).
  • We will run each decile through s-LDSC to check whether we have a linear relationship between enrichment and specificity deciles. Ultimately, however, we will only display coefficient p-values for the top 10% of cell-type specific genes.

3.1.1 Cell-type clustering

  • It is worth knowing how these cell types cluster, thus dendrograms plotted below.
# Load ctd files and plot dendrograms
ctd_files <- list.files(
  file.path(
    path_to_results,
    "snRNA/specificity_matrices/2020_Feb"
    ), 
  pattern = "ctd", 
  full.names = T)

# Inititate empty vectors
plot_list <- vector(mode = "list", length = length(ctd_files))
ctd_list <- vector(mode = "list", length = length(ctd_files))

# Loop to load data and plot dendrogram
for(i in 1:length(ctd_files)){
  
  # Load ctd
  ctd_list[[i]] <- readRDS(ctd_files[i])
  
  # Extract file name
  title <- 
    ctd_files[i] %>% 
    str_replace(".*/", "") %>% 
    str_replace("\\..*", "") %>% 
    str_replace(".*_", "")
  
  # Name list
  names(ctd_list)[i] <- title
  
  # Create dendrogram
  plot_list[[i]] <- 
    plot_dendrogram(ctd_list[[i]] , level = 1) + 
    labs(title = str_c("Dendrogram for ", title))
  
  
}

ggarrange(plotlist = plot_list)
Dendrogram showing clustering of cell type specificity quantiles (n = 40) from each cell-type specificity matrix. Distance shown is euclidian distance.

Figure 3.1: Dendrogram showing clustering of cell type specificity quantiles (n = 40) from each cell-type specificity matrix. Distance shown is euclidian distance.

  • In controls, we see that endothelial cells and pericytes cluster together (as expected), but also seperately from all other cell types. All other cell types form a different branch wherein neuronal cell types cluster together (excitatory and inhibitory); oligodendrocytes, OPCs and astrocytes cluster together; and finally, microglia lie alone.
  • Only DLB appears to cluster differently, in that:
    • Microglia are now in the same branch that includes endothelial cells and pericytes.
    • Also, OPCs now clustering with astrocytes (as opposed to oligodendrocytes).

3.1.2 Specificity across deciles

  • Now let's split these specificity matrices into deciles and check that specificity increases across deciles.
  • While doing this, also create a merge of the endothelial and pericyte cell types i.e. vascular cells.
# Create deciles dataframe
decile_df <- ctd_list %>% 
  lapply(., function(ctd){
    
    # Only using level 1 annotations
    ctd[[1]]$specificity %>% 
      as.data.frame() %>% 
      tibble::rownames_to_column(var = "gene") %>% 
      dplyr::mutate(Vascular = Endo + Per) %>% 
      tidyr::gather(key = "cell_type", value = "specificity", -gene) %>% 
      dplyr::group_by(cell_type) %>% 
      dplyr::mutate(quantile = ntile(specificity, 10))
  }) %>% 
  qdapTools::list_df2df(col = "Disease_Group")

# Check order of deciles
decile_df %>% 
  dplyr::mutate(Disease_Group = fct_relevel(Disease_Group,
                                            c("Control", "PD", "PDD", "DLB"))) %>% 
  ggplot(aes(x = as.factor(quantile), y = specificity)) +
  geom_boxplot() +
  facet_grid(Disease_Group ~ cell_type) +
  labs(x = "Quantile") +
  theme_rhr
Plot of specificity values across quantiles in each cell type in each disease group.

Figure 3.2: Plot of specificity values across quantiles in each cell type in each disease group.

# Check that within each disease group and decile equal number of genes across cell types
decile_df %>% 
  dplyr::group_by(quantile, Disease_Group, cell_type) %>% 
  dplyr::summarise(n = n()) %>% 
  dplyr::arrange(Disease_Group, quantile, cell_type)
  • As expected, specificity increases across the deciles.

3.2 Overlap between top 10% most cell-type specific genes

  • When running our lists, it is worth knowing just how much our lists overlap. As we will only report the coefficient p-value for the top 10% in any publication, let's check the overlap here.
# Create gene list
gene_list <- 
  decile_df %>% 
  dplyr::filter(quantile == 10) %>% 
  dplyr::mutate(cell_type_disease = str_c(cell_type, ":", Disease_Group)) %>% 
  group_split(cell_type, Disease_Group)

names(gene_list) <- gene_list %>% 
  lapply(., function(df){
    df %>% .[["cell_type_disease"]] %>% unique()
  })

upset(fromList(gene_list %>% 
  lapply(., function(df){
    df %>% .[["gene"]]
  })), 
  sets = names(gene_list), 
  keep.order = TRUE, 
  nintersects = 25,
  order.by = "freq")
**Figure:** Overlap between top 10% cell-type specificity lists from each disease group. In the matrix (lower half of panel), rows represent the top 10% cell-type specificity lists and the columns represent their intersections, with a single black filled circle representing those genes that were not found to be part of an intersection, while black filled circles connected by a vertical line represent genes that intersect across lists. The size of each intersection is shown as a bar chart above the matrix (upper half of panel), while the size of each list is shown to the left of the matrix. Only the top 25 intersections are displayed.

Figure 3.3: Figure: Overlap between top 10% cell-type specificity lists from each disease group. In the matrix (lower half of panel), rows represent the top 10% cell-type specificity lists and the columns represent their intersections, with a single black filled circle representing those genes that were not found to be part of an intersection, while black filled circles connected by a vertical line represent genes that intersect across lists. The size of each intersection is shown as a bar chart above the matrix (upper half of panel), while the size of each list is shown to the left of the matrix. Only the top 25 intersections are displayed.

  • As might be expected, large overlaps between the same cell type across disease groups, as well as between endo/per and the merged of them, vascular.
  • There are, however, some genes unique to each cell type within each condition, with the highest number of unique genes found in PD:endo.
  • Given the large degree of overlap, we may have to think about whether we want to run s-LDSC using all top 10% genes and those that are unique to each list. Alternatively, we would have to condition on each cell type.

3.3 Creating LDSC annotations and running LDSC

  • In addition to creating annotations with SNPs found within start and end site for transcription, we also include SNPs found within 100kb upstream and downstream of these sites (as in: https://www.ncbi.nlm.nih.gov/pubmed/29632380)
  • As we are looking for critical cell types/tissues via co-efficient p-value, then according to developer guidelines on baseline model we should use baseline LD v1.2 (53 annotations).
  • This was run via nohup using the following script: LDSC_cell_type_specificity_deciles.R

cd /home/rreynolds/projects/Aim2_PDsequencing_wd/LBD-seq-bulk-analyses/

nohup Rscript \
/home/rreynolds/projects/Aim2_PDsequencing_wd/LBD-seq-bulk-analyses/misc_scripts/LDSC_cell_type_specificity_deciles.R \
&>/home/rreynolds/projects/Aim2_PDsequencing_wd/LBD-seq-bulk-analyses/nohup_logs/LDSC_cell_type_specificity_deciles.log&

# LBD GWAS
nohup Rscript \
/home/rreynolds/projects/Aim2_PDsequencing_wd/LBD-seq-bulk-analyses/misc_scripts/LDSC_cell_type_specificity_deciles.R \
&>/home/rreynolds/projects/Aim2_PDsequencing_wd/LBD-seq-bulk-analyses/nohup_logs/LDSC_cell_type_specificity_deciles_LBD.log&
  • Ran with the following GWASs:

4 Results

  • Can multiple correct in a number of ways.
    • Choice of method e.g. Bonferroni (stringent) vs FDR. Will opt for FDR.
    • Number of tests to correct for. In our case, will probably want to correct within a disease group and potentially across GWASs, too.
  • Will apply two forms of multiple test correction:
    1. Stringent: multiple test correct across all cell types and GWASs run within a disease group.
    2. Leniant: filter for well-powered GWASs (i.e. AD, PD and PD AOO) and multiple test correct across all cell types within a disease group (i.e. correcting by the number of cell types).
file_paths <- 
  list.files(path = 
               file.path(
                 path_to_raw_data,
                 "ldsc_annotations/celltype.deciles/"
               ),
             pattern = ".results",
             recursive = T,
             full.names = T)

results <- LDSCforRyten::Assimilate_H2_results(path_to_results = file_paths) %>% 
  LDSCforRyten::Calculate_enrichment_SE_and_logP(., one_sided = "+") %>% 
  tidyr::separate(annot_name, into = c("Disease_Group", "cell_type", "decile"),sep = ":") %>% 
  dplyr::mutate(Disease_Group = fct_relevel(Disease_Group,
                                            c("Control", "PD", "PDD", "DLB"))) %>% 
  dplyr::select(Disease_Group, cell_type, decile, GWAS, everything())

write_delim(results,
            path = 
              file.path(
                path_to_results,
                "ldsc/sldsc_celltype_deciles.txt"
                ),
            delim = "\t")

4.1 Top decile

Let's start by looking at the top decile of specificity.

4.1.1 Stringent

This will take into account the number of GWASs and cell types tested.

results <- read_delim(file = 
                        file.path(
                          path_to_results,
                          "ldsc/sldsc_celltype_deciles.txt"
                        ),
                      delim = "\t") %>% 
  dplyr::mutate(GWAS = str_replace(GWAS, "\\.hg38", ""),
                GWAS = str_replace(GWAS, "2019", ""),
                GWAS = str_replace_all(GWAS, "\\.", "_"))

# Multiple correct co-efficient p-value within disease
results %>% 
  dplyr::filter(decile == 10,
                !c(cell_type %in% c("Endo", "Per"))) %>%
  dplyr::group_by(Disease_Group) %>%
  dplyr::mutate(Z_score_FDR = p.adjust(Z_score_P, method = "fdr")) %>% 
  dplyr::filter(Enrichment > 0) %>% 
  dplyr::select(Disease_Group, cell_type, decile, GWAS, Z_score_FDR, everything(), -contains("SE"), -contains("log")) %>%
  dplyr::arrange(Z_score_FDR)  %>% 
  DT::datatable(rownames = FALSE,
                options = list(scrollX = TRUE),
                class = 'white-space: nowrap')
  • With this multiple test correction, no significant enrichment of any GWAS heritability in the top 10% most cell-type specific genes.

4.1.2 Lenient

This will take into account the number of cell types tested and uses only well-powered GWASs (AD, PD, PD AOO).

results %>% 
  # Filter for top decile, no endo/per cells and only well-powered GWASs
  dplyr::filter(decile == 10, 
                !c(cell_type %in% c("Endo", "Per")), 
                GWAS %in% c("AD", "PD2018_AOO", "PD_meta5_ex23andMe")) %>%
  dplyr::group_by(Disease_Group, GWAS) %>%
  dplyr::mutate(Z_score_FDR = p.adjust(Z_score_P, method = "fdr")) %>% 
  dplyr::filter(Enrichment > 0,
                Z_score_FDR < 0.05) %>% 
  dplyr::select(Disease_Group, cell_type, decile, GWAS, Z_score_P, everything(), -contains("SE", ignore.case = F), -contains("log", ignore.case = F)) %>%
  dplyr::arrange(Z_score_P) %>% 
  DT::datatable(rownames = FALSE,
                options = list(scrollX = TRUE),
                class = 'white-space: nowrap')
  • When we correct in this manner, we see:
    • A significant enrichment of AD heritability in microglia from control, PD and PDD.

4.1.3 Nominal results (unadjusted p < 0.05)

  • No multiple test correction. Only AD/PD/PD AOO used.
results %>% 
  # Filter for top decile, no endo/per cells and only well-powered GWASs
  dplyr::filter(decile == 10, 
                !c(cell_type %in% c("Endo", "Per")), 
                GWAS %in% c("AD", "PD2018_AOO", "PD_meta5_ex23andMe"),
                Enrichment > 0,
                Z_score_P < 0.05) %>% 
  dplyr::select(Disease_Group, cell_type, decile, GWAS, Z_score_P, everything(), -contains("SE", ignore.case = F), -contains("log", ignore.case = F)) %>%
  dplyr::arrange(Z_score_P) %>% 
  DT::datatable(rownames = FALSE,
                options = list(scrollX = TRUE),
                class = 'white-space: nowrap')
  • Nominal enrichment of AD heritability in microglia from DLB.
  • Nominal enrichment of PD heritability in excitatory neurons from PDD/DLB.

4.2 Linear relationships between deciles

Only those annotations where heritability proportions are above 0 for all deciles are included in this analysis. A negative prop_h2 indicates a model misspecification/GWAS underpowered.

4.2.1 Stringent

This will take into account the number of GWASs and cell types tested.

# All deciles should have heritability proportions above 0; a negative prop_h2 indicates a model misspecification/GWAS underpowered
# Keep only those annotations where this is fulfilled across all deciles
filtered <- results %>% 
  dplyr::filter(Prop._h2 > 0) %>% 
  dplyr::group_by(Disease_Group, cell_type, GWAS) %>% 
  dplyr::filter(n() == 10)

# Test of linear regression
lm_results <- filtered %>% 
  dplyr::filter(!c(cell_type %in% c("Endo", "Per"))) %>%
  dplyr::group_by(Disease_Group, cell_type, GWAS) %>% 
  do(lm(Enrichment ~ as.numeric(decile), data = .) %>% 
       broom::tidy())  %>% 
  # Multiple correction
  dplyr::group_by(Disease_Group) %>% 
  dplyr::mutate(FDR = p.adjust(p.value, method = "fdr"))

# Table of lm where decile is significant term
lm_results %>% 
  dplyr::filter(term != "(Intercept)" & FDR < 0.05) %>% 
  DT::datatable(rownames = FALSE,
                options = list(scrollX = TRUE),
                class = 'white-space: nowrap')

Figure 4.1: GWAS enrichment values in each specificity decile for each cell types. Only significant linear regressions shown; significant threshold set to 5% FDR across cell types and GWAS tested (within each disease group). Error bars indicate 95% confidence intervals. Blue line shows the linear regression slope fitted to the enrichment values. The grey boxing around the blue regression line depict the confidence intervals of the regression line.

# Filtered for term == decile & FDR < 0.05
# Plot significant lm models
lm_results %>% 
  dplyr::filter(term != "(Intercept)" & FDR < 0.05) %>% 
  dplyr::inner_join(filtered) %>% 
  dplyr::ungroup() %>% 
  dplyr::mutate(Disease_Group = fct_relevel(Disease_Group,
                                            c("Control", "PD", "PDD", "DLB"))) %>% 
  ggplot(aes(x = as.numeric(decile), y = Enrichment)) +
  geom_point() +
  geom_errorbar(aes(ymin = Enrichment.Lower.SE, ymax = Enrichment.Upper.SE)) +
  scale_x_continuous(breaks = seq(0,10,1)) +
  labs(x = "Specificity decile") +
  facet_wrap(vars(GWAS, cell_type, Disease_Group), ncol = 5) +
  geom_smooth(method = "lm") + 
  theme_rhr
GWAS enrichment values in each specificity decile for each cell types. Only significant linear regressions shown; significant threshold set to 5% FDR across cell types and GWAS tested (within each disease group). Error bars indicate 95% confidence intervals. Blue line shows the linear regression slope fitted to the enrichment values. The grey boxing around the blue regression line depict the confidence intervals of the regression line.

Figure 4.2: GWAS enrichment values in each specificity decile for each cell types. Only significant linear regressions shown; significant threshold set to 5% FDR across cell types and GWAS tested (within each disease group). Error bars indicate 95% confidence intervals. Blue line shows the linear regression slope fitted to the enrichment values. The grey boxing around the blue regression line depict the confidence intervals of the regression line.

4.2.2 Lenient

This will take into account the number of cell types tested and uses only well-powered GWASs (AD, PD, PD AOO).

# Test of linear regression
lm_results <- filtered %>% 
  dplyr::filter(!c(cell_type %in% c("Endo", "Per")),
                GWAS %in% c("AD", "PD2018_AOO", "PD_meta5_ex23andMe")) %>%
  dplyr::group_by(Disease_Group, cell_type, GWAS) %>% 
  do(lm(Enrichment ~ as.numeric(decile), data = .) %>% 
       broom::tidy())  %>% 
  # Multiple correction
  dplyr::group_by(Disease_Group, GWAS) %>% 
  dplyr::mutate(FDR = p.adjust(p.value, method = "fdr"))

# Table of lm where decile is significant term
lm_results %>% 
  dplyr::filter(term != "(Intercept)",
                FDR < 0.05) %>% 
  DT::datatable(rownames = FALSE,
                options = list(scrollX = TRUE),
                class = 'white-space: nowrap')
# Filtered for term == decile & FDR < 0.05
# Plot significant lm models
lm_results %>% 
  dplyr::filter(term != "(Intercept)",
                FDR < 0.05) %>% 
  dplyr::inner_join(filtered) %>% 
  dplyr::ungroup() %>% 
  dplyr::mutate(Disease_Group = fct_relevel(Disease_Group,
                                            c("Control", "PD", "PDD", "DLB"))) %>% 
  ggplot(aes(x = as.numeric(decile), y = Enrichment)) +
  geom_point() +
  geom_errorbar(aes(ymin = Enrichment.Lower.SE, ymax = Enrichment.Upper.SE)) +
  scale_x_continuous(breaks = seq(0,10,1)) +
  labs(x = "Specificity decile") +
  facet_wrap(vars(GWAS, cell_type, Disease_Group), ncol = 5) +
  geom_smooth(method = "lm") + 
  theme_rhr
GWAS enrichment values in each specificity decile for each cell types.  Only significant linear regressions shown; significant threshold set to 5% FDR across cell types (within each disease group). Error bars indicate 95% confidence intervals. Blue line shows the linear regression slope fitted to the enrichment values. The grey boxing around the blue regression line depict the confidence intervals of the regression line.

Figure 4.3: GWAS enrichment values in each specificity decile for each cell types. Only significant linear regressions shown; significant threshold set to 5% FDR across cell types (within each disease group). Error bars indicate 95% confidence intervals. Blue line shows the linear regression slope fitted to the enrichment values. The grey boxing around the blue regression line depict the confidence intervals of the regression line.

  • Using the AD GWAS, this analysis highlights:
    • The same result seen previously i.e. enrichment of AD heritability in microglia from PD, PDD and DLB cases.
    • A positive linear relationship between cell-type deciles from PDD- and DLB-derived vascular cells and AD heritability.
    • A negative linear relationship between cell-type deciles from (i) control-, PD and PDD-derived excitatory neurons; (ii) PD-, PDD- and DLB-derived inhibitory neurons; and (iii) DLB-derived OPCs.
  • Using the PD and PD AOO GWAS, this analysis highlights:
    • A positive linear relationship between cell-type deciles from PD-derived microglia and PD heritability.
    • A negative linear relationship between cell-type deciles from DLB-derived inhibitory neurons and PD AOO GWAS.

5 Session info

session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 3.6.1 (2019-07-05)
##  os       Ubuntu 16.04.6 LTS          
##  system   x86_64, linux-gnu           
##  ui       X11                         
##  language (EN)                        
##  collate  en_GB.UTF-8                 
##  ctype    en_GB.UTF-8                 
##  tz       Europe/London               
##  date     2021-05-24                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  !  package              * version    date       lib
##     abind                  1.4-5      2016-07-21 [2]
##     AnnotationDbi          1.48.0     2019-10-29 [1]
##     askpass                1.1        2019-01-13 [2]
##     assertthat             0.2.1      2019-03-21 [2]
##     backports              1.1.8      2020-06-17 [1]
##     Biobase                2.46.0     2019-10-29 [1]
##     BiocFileCache          1.10.2     2019-11-08 [1]
##     BiocGenerics         * 0.32.0     2019-10-29 [1]
##     BiocParallel           1.20.1     2019-12-21 [1]
##     biomaRt                2.42.1     2020-03-26 [1]
##     Biostrings             2.54.0     2019-10-29 [1]
##     bit                    4.0.4      2020-08-04 [1]
##     bit64                  4.0.2      2020-07-30 [1]
##     bitops                 1.0-6      2013-08-17 [2]
##     blob                   1.2.1      2020-01-20 [1]
##     bookdown               0.21       2020-10-13 [1]
##     broom                  0.7.0      2020-07-09 [1]
##     BSgenome               1.54.0     2019-10-29 [1]
##     cachem                 1.0.3      2021-02-04 [1]
##     callr                  3.5.1      2020-10-13 [1]
##     car                    3.0-9      2020-08-11 [1]
##     carData                3.0-4      2020-05-22 [1]
##     caTools                1.18.0     2020-01-17 [1]
##     cellranger             1.1.0      2016-07-27 [2]
##     chron                  2.3-56     2020-08-18 [1]
##     cli                    2.2.0.9000 2021-01-22 [1]
##     codetools              0.2-16     2018-12-24 [4]
##     colorspace             2.0-0      2020-11-11 [2]
##     corrplot             * 0.84       2017-10-16 [1]
##     cowplot                1.0.0      2019-07-11 [1]
##     crayon                 1.4.1      2021-02-08 [2]
##     crosstalk              1.1.0.1    2020-03-13 [1]
##     curl                   4.3        2019-12-02 [2]
##     data.table             1.13.0     2020-07-24 [1]
##     DBI                    1.1.1      2021-01-15 [2]
##     dbplyr                 1.4.4      2020-05-27 [1]
##     DelayedArray           0.12.3     2020-04-09 [1]
##     desc                   1.2.0      2018-05-01 [1]
##     devtools             * 2.3.2      2020-09-18 [1]
##     digest                 0.6.27     2020-10-24 [2]
##     doParallel           * 1.0.15     2019-08-02 [1]
##     dplyr                * 1.0.2      2020-08-18 [1]
##     DT                   * 0.15       2020-08-05 [1]
##     ellipsis               0.3.1      2020-05-15 [1]
##     evaluate               0.14       2019-05-28 [2]
##     farver                 2.0.3      2020-01-16 [1]
##     fastmap                1.0.1      2019-10-08 [1]
##     forcats              * 0.5.1      2021-01-27 [2]
##     foreach              * 1.5.0      2020-03-30 [1]
##     foreign                0.8-72     2019-08-02 [4]
##     fs                     1.5.0      2020-07-31 [1]
##     gdata                  2.18.0     2017-06-06 [1]
##     GeneOverlap          * 1.22.0     2019-10-29 [1]
##     generics               0.0.2      2018-11-29 [1]
##     GenomeInfoDb         * 1.22.1     2020-03-27 [1]
##     GenomeInfoDbData       1.2.2      2020-08-24 [1]
##     GenomicAlignments      1.22.1     2019-11-12 [1]
##     GenomicRanges        * 1.38.0     2019-10-29 [1]
##     getopt                 1.20.3     2019-03-22 [2]
##     ggdendro             * 0.1.21     2020-08-11 [1]
##     ggplot2              * 3.3.2      2020-06-19 [1]
##     ggpubr               * 0.4.0      2020-06-27 [1]
##     ggsignif               0.6.0      2019-11-04 [1]
##     glue                   1.4.2      2020-08-27 [1]
##     gplots                 3.0.4      2020-07-05 [1]
##     gridExtra              2.3        2017-09-09 [2]
##     gtable                 0.3.0      2019-03-25 [2]
##     gtools                 3.8.2      2020-03-31 [1]
##     haven                  2.3.1      2020-06-01 [1]
##     here                   1.0.0      2020-11-15 [1]
##     highr                  0.8        2019-03-20 [2]
##     hms                    1.0.0      2021-01-13 [2]
##     htmltools              0.5.1.1    2021-01-22 [1]
##     htmlwidgets            1.5.3      2020-12-10 [2]
##     httr                   1.4.2      2020-07-20 [1]
##     IRanges              * 2.20.2     2020-01-13 [1]
##     iterators            * 1.0.12     2019-07-26 [2]
##     jsonlite               1.7.1      2020-09-07 [1]
##     KernSmooth             2.23-15    2015-06-29 [4]
##     knitr                  1.29       2020-06-23 [1]
##     labeling               0.4.2      2020-10-20 [2]
##     lattice                0.20-38    2018-11-04 [4]
##  VP LDSCforRyten         * 0.99.1     2020-04-03 [?]
##     lifecycle              0.2.0      2020-03-06 [1]
##     lubridate              1.7.9      2020-06-08 [1]
##     magrittr               2.0.1      2020-11-17 [2]
##     MASS                   7.3-51.4   2019-04-26 [4]
##     Matrix                 1.2-17     2019-03-22 [4]
##     matrixStats            0.56.0     2020-03-13 [1]
##     memoise                2.0.0      2021-01-26 [2]
##     mgcv                   1.8-29     2019-09-20 [4]
##     modelr                 0.1.8      2020-05-19 [1]
##     munsell                0.5.0      2018-06-12 [2]
##     nlme                   3.1-141    2019-08-01 [4]
##     openssl                1.4.2      2020-06-27 [1]
##     openxlsx               4.2.3      2020-10-27 [1]
##     optparse               1.6.6      2020-04-16 [1]
##     pillar                 1.4.6      2020-07-10 [1]
##     pkgbuild               1.1.0      2020-07-13 [1]
##     pkgconfig              2.0.3      2019-09-22 [2]
##     pkgload                1.1.0      2020-05-29 [1]
##     plyr                   1.8.6      2020-03-03 [2]
##     prettyunits            1.1.1      2020-01-24 [1]
##     processx               3.4.5      2020-11-30 [1]
##     progress               1.2.2      2019-05-16 [2]
##     ps                     1.3.4      2020-08-11 [1]
##     purrr                * 0.3.4      2020-04-17 [1]
##     qdapTools              1.3.5      2020-04-17 [1]
##     R.methodsS3            1.8.1      2020-08-26 [2]
##     R.oo                   1.24.0     2020-08-26 [2]
##     R.utils                2.10.1     2020-08-26 [2]
##     R6                     2.5.0      2020-10-28 [2]
##     rappdirs               0.3.1      2016-03-28 [1]
##     RColorBrewer           1.1-2      2014-12-07 [2]
##     Rcpp                   1.0.5      2020-07-06 [1]
##     RCurl                  1.98-1.2   2020-04-18 [1]
##     readr                * 1.4.0      2020-10-05 [2]
##     readxl               * 1.3.1      2019-03-13 [2]
##     remotes                2.2.0      2020-07-21 [1]
##     reprex                 2.0.0      2021-04-02 [2]
##     rio                    0.5.16     2018-11-26 [1]
##     rlang                  0.4.7      2020-07-09 [1]
##     rmarkdown              2.5        2020-10-21 [1]
##     rprojroot              2.0.2      2020-11-15 [1]
##     Rsamtools              2.2.3      2020-02-23 [1]
##     RSQLite                2.2.0      2020-01-07 [1]
##     rstatix                0.6.0      2020-06-18 [1]
##     rstudioapi             0.13       2020-11-12 [2]
##     rtracklayer          * 1.46.0     2019-10-29 [1]
##     rvest                  0.3.6      2020-07-25 [1]
##     S4Vectors            * 0.24.4     2020-04-09 [1]
##     scales                 1.1.1      2020-05-11 [1]
##     sessioninfo            1.1.1      2018-11-05 [2]
##     stringi                1.5.3      2020-09-09 [2]
##     stringr              * 1.4.0      2019-02-10 [2]
##     SummarizedExperiment   1.16.1     2019-12-19 [1]
##     testthat               2.3.2      2020-03-02 [1]
##     tibble               * 3.0.3      2020-07-10 [1]
##     tidyr                * 1.1.1      2020-07-31 [1]
##     tidyselect             1.1.0      2020-05-11 [1]
##     tidyverse            * 1.3.0      2019-11-21 [1]
##     UpSetR               * 1.4.0      2019-05-22 [1]
##     usethis              * 1.6.3      2020-09-17 [1]
##     vctrs                  0.3.2      2020-07-15 [1]
##     withr                  2.2.0      2020-04-20 [1]
##     xfun                   0.16       2020-07-24 [1]
##     XML                    3.99-0.3   2020-01-20 [2]
##     xml2                   1.3.2      2020-04-23 [1]
##     XVector                0.26.0     2019-10-29 [1]
##     yaml                   2.2.1      2020-02-01 [1]
##     zip                    2.1.0      2020-08-10 [1]
##     zlibbioc               1.32.0     2019-10-29 [1]
##  source                                  
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Github (r-lib/cli@4b41c51)              
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Github (const-ae/ggsignif@5a05d88)      
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Github (RHReynolds/LDSCforRyten@e805257)
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
##  CRAN (R 3.6.1)                          
##  CRAN (R 3.6.1)                          
##  Bioconductor                            
## 
## [1] /home/rreynolds/R/x86_64-pc-linux-gnu-library/3.6
## [2] /usr/local/lib/R/site-library
## [3] /usr/lib/R/site-library
## [4] /usr/lib/R/library
## 
##  V ── Loaded and on-disk version mismatch.
##  P ── Loaded and on-disk path mismatch.