Trying to have another look through our results for anything neurodegeneration-related, either at the level of phenotype or disease.

Import results

res <- MultiEWCE::load_example_results()
## Registered S3 method overwritten by 'ggtree':
##   method         from     
##   fortify.igraph ggnetwork
res <- HPOExplorer::add_disease(res)
## Annotating phenos with Disease
res <- HPOExplorer::add_ancestor(res)
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
annot <- HPOExplorer::load_phenotype_to_genes(3)
genes <- HPOExplorer::load_phenotype_to_genes(1)

Filter results

First, we do some initial filtering of the results to only get significant associations.

res <- res[q<0.05 & symptom.pval<0.05,]

Alzheimer’s

AD is not enriched for any phenotype, likely due to the small number of genes included. GWAS results are more comprehensive than this. https://hpo.jax.org/app/browse/term/HP:0002511

ad <- res[grepl("alzheimer",hpo_name,ignore.case = TRUE)]
nrow(ad) 
## [1] 0

Parkinson’s

Phenotypes

“Parkinson’s disease” is not in the HPO, but the branch “Parkinsonism” is. https://hpo.jax.org/app/browse/term/HP:0001300

We actually do have 1 sig phenotype here: “Parkinsonism”

pd_phenos <- HPOExplorer::make_phenos_dataframe(ancestor="Parkinsonism")
## ℹ All local files already up-to-date!
## Extracting data for 2 descendents.
## Computing gene counts.
## Getting absolute ontology level for 2 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
pd1 <- res[hpo_id %in% pd_phenos$hpo_id ]

MultiEWCE::create_dt(pd1)
## Loading required namespace: DT

Diseases

We can also search for phenotypes via “Parkinson’s” as a disease.

This gives us lots of phenotypes, but many of them are not specific to PD: e.g. Autosomal recessive inheritance, Open mouth, Macrocephaly, Urinary urgency

d <- annot[grepl("parkinson",disease_name, ignore.case = TRUE)]
pd <- res[hpo_id %in% d$hpo_id] 
nrow(pd)
## [1] 9768

Let’s try to narrow it down to very PD-specific phenotypes.

These PD-associated phenotypes only appear once in the HPO annotations. Thus, they must be PD-specific.

That leaves us with just 2 phenotypes.

n_pd_terms <- length(unique(pd_phenos$hpo_id))
pd_pheno_freqs <- sort(table(annot[hpo_id %in% d$hpo_id]$hpo_id))
hist(pd_pheno_freqs, 50)

pd_specific <- pd[hpo_id %in% names(pd_pheno_freqs)[pd_pheno_freqs<=1+n_pd_terms]]

MultiEWCE::create_dt(pd_specific)

We can lift this filter a bit and look for PD-associated phenotypes that only appear in 3 or less non-PD diseases. We see phenotype that can indeed be associated with PD, but are not necessarily exclusive to it: e.g.
Abnormal aggressive, impulsive or violent behavior, Pill-rolling tremor, “Abnormal CSF protein level

pd_specific2 <- pd[hpo_id %in% names(pd_pheno_freqs)[pd_pheno_freqs<=3+n_pd_terms] ]

MultiEWCE::create_dt(pd_specific2)

PD network

pd_specific3 <- pd[hpo_id %in% names(pd_pheno_freqs)[pd_pheno_freqs<=20+n_pd_terms] ]
pd_targets <- data.table::merge.data.table(pd_specific3,
                             genes[,-c("hpo_name")],
                             by= c("hpo_id","disease_id"))
pd_vn <- MultiEWCE::prioritise_targets_network(top_targets = pd_targets, 
                                               mediator_var = list(c(1,2),c(2,3),c(3,4),c(2,4),c(1,4)))
## Loading required namespace: pals
## Loading required namespace: igraph
## Loading required namespace: tidygraph
## Creating network.
## Loading required namespace: visNetwork
## Creating plot.
## Saving plot ==> /var/folders/rd/rbc_wrdj4k3djf3brk6z0_dc0000gp/T//RtmpQLe7DT/file88467e1d7b58_prioritise_targets_network.html

Mental deterioration

Get all the phenos from the Mental deterioration branch. This includes many forms of dementia https://hpo.jax.org/app/browse/term/HP:0001268

As we’ve seen before, only the higher-level term “Mental deterioration” remains significant. Perhaps due to the greater number of genes in this higher level.

phenos <- HPOExplorer::make_phenos_dataframe(ancestor="Mental deterioration")
## ℹ All local files already up-to-date!
## Extracting data for 14 descendents.
## Computing gene counts.
## Getting absolute ontology level for 14 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
md <- res[hpo_id %in% phenos$hpo_id]

MultiEWCE::create_dt(md)

Atrophy/Degeneration affecting the central nervous system

HPO has the term: Atrophy/Degeneration affecting the central nervous system https://hpo.jax.org/app/browse/term/HP:0007367

In our results, we found a number of significantly enriched phenotypes that fall under that branch:

phenos <- HPOExplorer::make_phenos_dataframe(ancestor="Atrophy/Degeneration affecting the central nervous system")
## ℹ All local files already up-to-date!
## Extracting data for 41 descendents.
## Computing gene counts.
## Getting absolute ontology level for 41 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
at <- res[hpo_id %in% phenos$hpo_id]
MultiEWCE::create_dt(at)

Multi-trait intersection

dementia/neurodegeneration & diabetes/obesity

Next, let’s find examples of celltype-specific enrichment results that relate to diseases/phenotypes in the categories of dementia/neurodegeneration vs. diabetes/obesity.

Query results

queries <- paste("alzheimer","parkinson","diabetes","obesity",sep = "|")
phenos <- rbind(
  HPOExplorer::make_phenos_dataframe(ancestor="Atrophy/Degeneration affecting the central nervous system"),
  HPOExplorer::make_phenos_dataframe(ancestor="Mental deterioration"),
  HPOExplorer::make_phenos_dataframe(ancestor="Diabetes mellitus"),
  HPOExplorer::make_phenos_dataframe(ancestor="Obesity")
)
## ℹ All local files already up-to-date!
## Extracting data for 41 descendents.
## Computing gene counts.
## Getting absolute ontology level for 41 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
## ℹ All local files already up-to-date!
## Extracting data for 14 descendents.
## Computing gene counts.
## Getting absolute ontology level for 14 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
## ℹ All local files already up-to-date!
## Extracting data for 11 descendents.
## Computing gene counts.
## Getting absolute ontology level for 11 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
## ℹ All local files already up-to-date!
## Extracting data for 5 descendents.
## Computing gene counts.
## Getting absolute ontology level for 5 HPO IDs.
## Computing ontology level / gene count ratio.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
res_inter <- res[grepl(queries,hpo_name,ignore.case = TRUE) | 
                 grepl(queries,disease_name,ignore.case = TRUE) |
                   hpo_id %in% phenos$hpo_id] 

message(formatC(nrow(res_inter),big.mark = ",")," results remain.")
## 511 results remain.

Filter results

We still have a lot of results left (500+ rows), which is a bit much to visualize. So let’s do some additional filtering.

res_filt <- MultiEWCE::prioritise_targets(results = res_inter, 
                                          keep_tiers = NULL,
                                          severity_threshold = NULL,
                                          keep_onsets = NULL, 
                                          keep_deaths = NULL,
                                          pheno_ndiseases_threshold = NULL,
                                          symptom_p_threshold = NULL, 
                                          symptom_intersection_size_threshold = 2)
## Prioritising gene targets.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding disease metadata: Definitions, Preferred.Label
## Importing Orphanet metadata.
## Importing OMIM metadata.
## 42 / 95 (44.21%) disease_name missing.
## 15 / 71 (21.13%) Definitions missing.
## Annotating phenos with MONDO metadata.
## ℹ All local files already up-to-date!
## 0 / 71 (0%) MONDO_ID missing.
## 67 / 71 (94.37%) MONDO_name missing.
## 68 / 71 (95.77%) MONDO_definition missing.
## 15 / 71 (21.13%) Definitions missing.
## Prioritised targets: step='start' 
##  - Rows: 511 
##  - Phenotypes: 96 
##  - Diseases: 71 
##  - Cell types: 32
## Filtering @ q-value <= 0.05
## Prioritised targets: step='q_threshold' 
##  - Rows: 511 
##  - Phenotypes: 96 
##  - Diseases: 71 
##  - Cell types: 32
## Filtering @ fold-change >= 1
## Prioritised targets: step='fold_threshold' 
##  - Rows: 511 
##  - Phenotypes: 96 
##  - Diseases: 71 
##  - Cell types: 32
## Prioritised targets: step='symptom_p_threshold' 
##  - Rows: 511 
##  - Phenotypes: 96 
##  - Diseases: 71 
##  - Cell types: 32
## Prioritised targets: step='symptom_intersection_size_threshold' 
##  - Rows: 502 
##  - Phenotypes: 88 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenos with AgeOfDeath.
## Prioritised targets: step='keep_deaths' 
##  - Rows: 502 
##  - Phenotypes: 88 
##  - Diseases: 65 
##  - Cell types: 30
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
## Removing remove descendants of: 'Clinical course'
## Translating all phenotypes to HPO IDs.
## + Returning a dictionary of phenotypes (different order as input).
## Prioritised targets: step='remove_descendants' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Getting absolute ontology level for 87 HPO IDs.
## ℹ All local files already up-to-date!
## Prioritised targets: step='keep_ont_levels' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenos with onset.
## Prioritised targets: step='keep_onsets' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenos with Tiers.
## Prioritised targets: step='keep_tiers' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenos with modifiers
## Prioritised targets: step='severity_threshold' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Prioritised targets: step='severity_threshold_max' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenos with n_diseases
## Prioritised targets: step='pheno_ndiseases_threshold' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## Annotating phenotype frequencies.
## Prioritised targets: step='pheno_frequency_threshold' 
##  - Rows: 501 
##  - Phenotypes: 87 
##  - Diseases: 65 
##  - Cell types: 30
## 21 / 30 of cell types kept.
## Prioritised targets: step='keep_celltypes' 
##  - Rows: 372 
##  - Phenotypes: 81 
##  - Diseases: 56 
##  - Cell types: 21
## Converting phenos to GRanges.
## Loading required namespace: ensembldb
## Gathering metadata for 260 unique genes.
## Loading required namespace: EnsDb.Hsapiens.v75
## Prioritised targets: step='symptom_gene_overlap' 
##  - Rows: 2,666 
##  - Phenotypes: 81 
##  - Diseases: 56 
##  - Cell types: 21 
##  - Genes: 260
## Filtering by keep_seqnames.
## Prioritised targets: step='keep_seqnames' 
##  - Rows: 2,666 
##  - Phenotypes: 81 
##  - Diseases: 56 
##  - Cell types: 21 
##  - Genes: 260
## Filtering by gene-disease association evidence.
## Annotating gene-disease associations with Evidence score
## Gathering data from GenCC.
## Importing cached file.
## Prioritised targets: step='keep_evidence' 
##  - Rows: 2,159 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Filtering by gene size.
## 182 / 182 genes kept.
## Prioritised targets: step='gene_size' 
##  - Rows: 2,159 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Prioritised targets: step='keep_biotypes' 
##  - Rows: 2,159 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Prioritised targets: step='keep_specificity_quantiles' 
##  - Rows: 2,159 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Prioritised targets: step='keep_mean_exp_quantiles' 
##  - Rows: 2,159 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Annotating gene frequencies.
## Prioritised targets: step='gene_frequency_threshold' 
##  - Rows: 2,557 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182
## Sorting rows.
## Prioritised targets: step='end' 
##  - Rows: 2,557 
##  - Phenotypes: 80 
##  - Diseases: 36 
##  - Cell types: 20 
##  - Genes: 182

Plot network

vn <- MultiEWCE::prioritise_targets_network(
  top_targets = res_filt$top_targets, 
  submain = "dementia/neurodegeneration & diabetes/obesity", 
  save_path = here::here("networks/dementia_diabetes_network.html"), 
  show_plot = FALSE)
## Creating network.
## Creating plot.
## Saving plot ==> /Users/bms20/Desktop/Rare Disease Celltyping/RareDiseasePrioritisation/networks/dementia_diabetes_network.html
vn$plot

Abnormality of the nervous system

Let’s prioritise therapeutics targets for phenotypes that fall within the broader “abnormality of the nervous system” HPO branch.

res_nerv <- MultiEWCE::prioritise_targets(results = res[ancestor_name=="Abnormality of the nervous system"],
                                          fold_threshold=2,
                                          keep_ont_levels=seq(5),
                                          keep_tiers = NULL,
                                          severity_threshold = NULL,
                                          keep_onsets = NULL, 
                                          keep_deaths = NULL,
                                          pheno_ndiseases_threshold = NULL,
                                          symptom_p_threshold = NULL, 
                                          symptom_intersection_size_threshold = 2, 
                                          group_vars = c("hpo_id"),
                                          top_n=1)
## Prioritising gene targets.
## Adding term definitions.
## ℹ All local files already up-to-date!
## Adding disease metadata: Definitions, Preferred.Label
## Importing Orphanet metadata.
## Importing OMIM metadata.
## 894 / 1434 (62.34%) disease_name missing.
## 467 / 931 (50.16%) Definitions missing.
## Annotating phenos with MONDO metadata.
## ℹ All local files already up-to-date!
## 2 / 931 (0.21%) MONDO_ID missing.
## 839 / 931 (90.12%) MONDO_name missing.
## 916 / 931 (98.39%) MONDO_definition missing.
## 458 / 931 (49.19%) Definitions missing.
## Prioritised targets: step='start' 
##  - Rows: 20,576 
##  - Phenotypes: 360 
##  - Diseases: 931 
##  - Cell types: 54
## Filtering @ q-value <= 0.05
## Prioritised targets: step='q_threshold' 
##  - Rows: 20,576 
##  - Phenotypes: 360 
##  - Diseases: 931 
##  - Cell types: 54
## Filtering @ fold-change >= 2
## Prioritised targets: step='fold_threshold' 
##  - Rows: 2,224 
##  - Phenotypes: 231 
##  - Diseases: 185 
##  - Cell types: 48
## Prioritised targets: step='symptom_p_threshold' 
##  - Rows: 2,224 
##  - Phenotypes: 231 
##  - Diseases: 185 
##  - Cell types: 48
## Prioritised targets: step='symptom_intersection_size_threshold' 
##  - Rows: 2,224 
##  - Phenotypes: 231 
##  - Diseases: 185 
##  - Cell types: 48
## Annotating phenos with AgeOfDeath.
## Prioritised targets: step='keep_deaths' 
##  - Rows: 2,224 
##  - Phenotypes: 231 
##  - Diseases: 185 
##  - Cell types: 48
## Adding level-3 ancestor to each HPO ID.
## ℹ All local files already up-to-date!
## Removing remove descendants of: 'Clinical course'
## Translating all phenotypes to HPO IDs.
## + Returning a dictionary of phenotypes (different order as input).
## Prioritised targets: step='remove_descendants' 
##  - Rows: 2,224 
##  - Phenotypes: 231 
##  - Diseases: 185 
##  - Cell types: 48
## Getting absolute ontology level for 231 HPO IDs.
## ℹ All local files already up-to-date!
## Prioritised targets: step='keep_ont_levels' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Annotating phenos with onset.
## Prioritised targets: step='keep_onsets' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Annotating phenos with Tiers.
## Prioritised targets: step='keep_tiers' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Annotating phenos with modifiers
## Prioritised targets: step='severity_threshold' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Prioritised targets: step='severity_threshold_max' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Annotating phenos with n_diseases
## Prioritised targets: step='pheno_ndiseases_threshold' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## Annotating phenotype frequencies.
## Prioritised targets: step='pheno_frequency_threshold' 
##  - Rows: 1,746 
##  - Phenotypes: 152 
##  - Diseases: 169 
##  - Cell types: 47
## 25 / 47 of cell types kept.
## Prioritised targets: step='keep_celltypes' 
##  - Rows: 1,057 
##  - Phenotypes: 110 
##  - Diseases: 113 
##  - Cell types: 25
## Converting phenos to GRanges.
## Gathering metadata for 385 unique genes.
## Prioritised targets: step='symptom_gene_overlap' 
##  - Rows: 5,248 
##  - Phenotypes: 110 
##  - Diseases: 113 
##  - Cell types: 25 
##  - Genes: 385
## Filtering by keep_seqnames.
## Prioritised targets: step='keep_seqnames' 
##  - Rows: 5,248 
##  - Phenotypes: 110 
##  - Diseases: 113 
##  - Cell types: 25 
##  - Genes: 385
## Filtering by gene-disease association evidence.
## Annotating gene-disease associations with Evidence score
## Gathering data from GenCC.
## Importing cached file.
## Prioritised targets: step='keep_evidence' 
##  - Rows: 4,236 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Filtering by gene size.
## 270 / 270 genes kept.
## Prioritised targets: step='gene_size' 
##  - Rows: 4,236 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Prioritised targets: step='keep_biotypes' 
##  - Rows: 4,236 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Prioritised targets: step='keep_specificity_quantiles' 
##  - Rows: 4,236 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Prioritised targets: step='keep_mean_exp_quantiles' 
##  - Rows: 4,236 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Annotating gene frequencies.
## Prioritised targets: step='gene_frequency_threshold' 
##  - Rows: 5,353 
##  - Phenotypes: 107 
##  - Diseases: 81 
##  - Cell types: 24 
##  - Genes: 270
## Sorting rows.
## Finding top 1 gene targets per: hpo_id
## Prioritised targets: step='top_n' 
##  - Rows: 107 
##  - Phenotypes: 107 
##  - Diseases: 31 
##  - Cell types: 21 
##  - Genes: 35
## Prioritised targets: step='end' 
##  - Rows: 107 
##  - Phenotypes: 107 
##  - Diseases: 31 
##  - Cell types: 21 
##  - Genes: 35
annot <- HPOExplorer::gpt_annot_codify()
## ℹ All local files already up-to-date!
## Reading in GPT annotations for 5,844 phenotypes.
targets <- merge(res_nerv$top_targets,
                 annot$annot_weighted[,-c("hpo_name")],
                 by="hpo_id") |> 
  data.table::setorderv(c("severity_score_gpt","fold_change"),
                        c(-1,-1)) 
MultiEWCE::create_dt(targets)

Session info

sessionInfo()
## R version 4.3.1 (2023-06-16)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS Sonoma 14.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Europe/London
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] GenomicRanges_1.53.3 IRanges_2.35.3       S4Vectors_0.39.3    
## 
## loaded via a namespace (and not attached):
##   [1] later_1.3.1                   BiocIO_1.11.0                
##   [3] bitops_1.0-7                  ggplotify_0.1.2              
##   [5] GeneOverlap_1.37.0            filelock_1.0.2               
##   [7] R.oo_1.25.0                   tibble_3.2.1                 
##   [9] ontologyPlot_1.6              ggnetwork_0.5.12             
##  [11] graph_1.79.4                  XML_3.99-0.14                
##  [13] lifecycle_1.0.3               httr2_0.2.3                  
##  [15] rstatix_0.7.2                 HPOExplorer_0.99.11          
##  [17] rprojroot_2.0.3               ensembldb_2.25.1             
##  [19] pals_1.8                      lattice_0.22-4               
##  [21] crosstalk_1.2.0               backports_1.4.1              
##  [23] magrittr_2.0.3                limma_3.57.11                
##  [25] plotly_4.10.3                 sass_0.4.7                   
##  [27] rmarkdown_2.25                jquerylib_0.1.4              
##  [29] yaml_2.3.7                    httpuv_1.6.12                
##  [31] HGNChelper_0.8.1              mapproj_1.2.11               
##  [33] DBI_1.1.3                     RColorBrewer_1.1-3           
##  [35] lubridate_1.9.3               maps_3.4.1                   
##  [37] abind_1.4-5                   zlibbioc_1.47.0              
##  [39] R.utils_2.12.2                purrr_1.0.2                  
##  [41] AnnotationFilter_1.25.0       BiocGenerics_0.47.1          
##  [43] RCurl_1.98-1.12               yulab.utils_0.1.0            
##  [45] rappdirs_0.3.3                MultiEWCE_0.1.6              
##  [47] GenomeInfoDbData_1.2.11       gitcreds_0.1.2               
##  [49] tidytree_0.4.5                piggyback_0.1.5              
##  [51] codetools_0.2-19              DelayedArray_0.27.10         
##  [53] xml2_1.3.5                    DT_0.30                      
##  [55] tidyselect_1.2.0              aplot_0.2.2                  
##  [57] matrixStats_1.0.0             stats4_4.3.1                 
##  [59] BiocFileCache_2.9.1           GenomicAlignments_1.37.0     
##  [61] jsonlite_1.8.7                tidygraph_1.2.3              
##  [63] ellipsis_0.3.2                paintmap_1.0                 
##  [65] progress_1.2.2                tools_4.3.1                  
##  [67] treeio_1.25.4                 Rcpp_1.0.11                  
##  [69] glue_1.6.2                    SparseArray_1.1.12           
##  [71] here_1.0.1                    xfun_0.40                    
##  [73] MatrixGenerics_1.13.2         GenomeInfoDb_1.37.7          
##  [75] RNOmni_1.0.1.2                dplyr_1.1.3                  
##  [77] BiocManager_1.30.22           fastmap_1.1.1                
##  [79] fansi_1.0.5                   caTools_1.18.2               
##  [81] digest_0.6.33                 timechange_0.2.0             
##  [83] R6_2.5.1                      mime_0.12                    
##  [85] gridGraphics_0.5-1            colorspace_2.1-0             
##  [87] gtools_3.9.4                  biomaRt_2.57.1               
##  [89] dichromat_2.0-0.1             RSQLite_2.3.1                
##  [91] R.methodsS3_1.8.2             utf8_1.2.4                   
##  [93] tidyr_1.3.0                   generics_0.1.3               
##  [95] data.table_1.14.8             rtracklayer_1.61.2           
##  [97] prettyunits_1.2.0             httr_1.4.7                   
##  [99] htmlwidgets_1.6.2             S4Arrays_1.1.6               
## [101] ontologyIndex_2.11            pkgconfig_2.0.3              
## [103] gtable_0.3.4                  blob_1.2.4                   
## [105] SingleCellExperiment_1.23.0   XVector_0.41.2               
## [107] htmltools_0.5.6.1             carData_3.0-5                
## [109] ProtGenerics_1.33.1           scales_1.2.1                 
## [111] Biobase_2.61.0                png_0.1-8                    
## [113] EnsDb.Hsapiens.v75_2.99.0     ggfun_0.1.3                  
## [115] knitr_1.44                    rstudioapi_0.15.0            
## [117] rjson_0.2.21                  reshape2_1.4.4               
## [119] visNetwork_2.1.2              coda_0.19-4                  
## [121] statnet.common_4.9.0          nlme_3.1-163                 
## [123] curl_5.1.0                    cachem_1.0.8                 
## [125] stringr_1.5.0                 BiocVersion_3.18.0           
## [127] KernSmooth_2.23-22            parallel_4.3.1               
## [129] AnnotationDbi_1.63.2          restfulr_0.0.15              
## [131] pillar_1.9.0                  grid_4.3.1                   
## [133] vctrs_0.6.4                   gplots_3.1.3                 
## [135] promises_1.2.1                ggpubr_0.6.0                 
## [137] car_3.1-2                     dbplyr_2.3.4                 
## [139] xtable_1.8-4                  Rgraphviz_2.45.0             
## [141] evaluate_0.22                 GenomicFeatures_1.53.3       
## [143] orthogene_1.7.2               Rsamtools_2.17.0             
## [145] cli_3.6.1                     compiler_4.3.1               
## [147] rlang_1.1.1                   crayon_1.5.2                 
## [149] grr_0.9.5                     ggsignif_0.6.4               
## [151] gprofiler2_0.2.2              EWCE_1.9.3                   
## [153] plyr_1.8.9                    fs_1.6.3                     
## [155] stringi_1.7.12                BiocParallel_1.35.4          
## [157] viridisLite_0.4.2             ewceData_1.9.0               
## [159] network_1.18.1                babelgene_22.9               
## [161] munsell_0.5.0                 Biostrings_2.69.2            
## [163] lazyeval_0.2.2                gh_1.4.0                     
## [165] homologene_1.4.68.19.3.27     Matrix_1.6-1.1               
## [167] ExperimentHub_2.9.1           hms_1.1.3                    
## [169] patchwork_1.1.3               bit64_4.0.5                  
## [171] ggplot2_3.4.4                 KEGGREST_1.41.4              
## [173] statmod_1.5.0                 shiny_1.7.5.1                
## [175] SummarizedExperiment_1.31.1   interactiveDisplayBase_1.39.0
## [177] AnnotationHub_3.9.2           igraph_1.5.1                 
## [179] broom_1.0.5                   memoise_2.0.1.9000           
## [181] bslib_0.5.1                   ggtree_3.9.1                 
## [183] bit_4.0.5                     ape_5.7-1