Expected results

Direct quotes from Tobacco exposure associated with oral microbiota oxygen utilization in the New York City Health and Nutrition Examination Study

ORA

“… differentially abundant OTUs between current smokers and never smokers to be over-represented in aerobic OTUs (Hypergeometric test, p = 0.004).”

GSEA

Significant:

“…aerobic OTUs were significantly depleted among current smokers relative to never smokers (Enrichment Score test statistic ES = −0.75, p = 0.002, GSEA permutation test).”

Non-significant:

“Anaerobic OTUs were enriched in smokers relative to never smokers but the difference was not statistically significant (ES = 0.36, p = 0.14, GSEA permutation test).”

“… enrichment of facultative anaerobic OTUs among never smokers compared to current smokers but this result was not statistically significant (ES = −0.29, p = 0.48, GSEA permutation test).”

Data

Data used here is a subset of the original data used for the NYCHANES study. Full data can be found on GitHub. Signatures from this study have been published on BugSigDB.

The data subset presented here only contains abundance values for “Never smoker” vs “Cigarette” samples (“smokingstatus” column in metadata).

tse <- importNYCHANES()
tse
#> class: TreeSummarizedExperiment 
#> dim: 1291 129 
#> metadata(0):
#> assays(1): counts
#> rownames(1291): New.CleanUp.ReferenceOTU7367
#>   New.CleanUp.ReferenceOTU7623 ... New.CleanUp.ReferenceOTU2608
#>   New.CleanUp.ReferenceOTU5014
#> rowData names(8): Domain Phylum ... Species GenusID
#> colnames(129): NYDH0033 NYDH0026 ... NYDH1460 NYDH0847
#> colData names(714): KEY Burklab_ID ... INC3C DBQ_10_3CAT
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> rowLinks: a LinkDataFrame (1291 rows)
#> rowTree: 1 phylo tree(s) (1291 leaves)
#> colLinks: NULL
#> colTree: NULL
table(tse$smokingstatus)
#> 
#> Never smoker    Cigarette 
#>           43           86

Summarize by genus:

tse_gn <- splitByRanks(tse)$Genus
tse_gn
#> class: TreeSummarizedExperiment 
#> dim: 173 129 
#> metadata(1): agglomerated_by_rank
#> assays(1): counts
#> rownames(173): Streptococcus unclassified ... Aerococcus
#>   unclassified_22
#> rowData names(8): Domain Phylum ... Species GenusID
#> colnames(129): NYDH0033 NYDH0026 ... NYDH1460 NYDH0847
#> colData names(714): KEY Burklab_ID ... INC3C DBQ_10_3CAT
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> rowLinks: a LinkDataFrame (173 rows)
#> rowTree: 1 phylo tree(s) (1291 leaves)
#> colLinks: NULL
#> colTree: NULL

Biosis data:

biosis <- importBiosis()
head(biosis)
#>              Genus               Attribute GenusID
#> 1     Acholeplasma facultatively_anaerobic    2147
#> 2 Actinomycetaceae facultatively_anaerobic    2049
#> 3    Aeriscardovia                 aerobic  240233
#> 4       Aerococcus facultatively_anaerobic    1375
#> 5  Aggregatibacter facultatively_anaerobic  416916
#> 6    Alloscardovia               anaerobic  419014

Signatures

Signatures at the genus level:

gn_sigs <- split(biosis, factor(biosis$Attribute)) |> 
  lapply(function(x) unique(x$Genus))
gn_sigs_bk <- c(gn_sigs, list(background = rownames(tse_gn)))
map(gn_sigs_bk, head)
#> $aerobic
#> [1] "Aeriscardovia"      "Alpinimonas"        "Alysiella"         
#> [4] "Cardiobacterium"    "Comamonadaceae"     "Corynebacteriaceae"
#> 
#> $anaerobic
#> [1] "Alloscardovia"                   "Anaerococcus"                   
#> [3] "Anaeroglobus"                    "Bifidobacteriaceae"             
#> [5] "Blvii28 wastewater-sludge group" "Butyrivibrio"                   
#> 
#> $facultatively_anaerobic
#> [1] "Acholeplasma"                "Actinomycetaceae"           
#> [3] "Aerococcus"                  "Aggregatibacter"            
#> [5] "Erysipelotrichaceae UCG-002" "Erysipelotrichaceae UCG-006"
#> 
#> $background
#> [1] "Streptococcus"  "unclassified"   "Blautia"        "Gemella"       
#> [5] "unclassified_1" "Abiotrophia"

Signatures at the OTU level:

genera <- rowData(tse)$Genus 
names(genera) <- rownames(tse)
otu_sigs <- map(gn_sigs, function(x) names(genera)[which(genera %in% x)])
otu_sigs_bk <- c(otu_sigs, list(background = rownames(tse)))
map(otu_sigs_bk, head)
#> $aerobic
#> [1] "New.CleanUp.ReferenceOTU264"   "New.CleanUp.ReferenceOTU3954" 
#> [3] "New.CleanUp.ReferenceOTU10635" "New.CleanUp.ReferenceOTU5297" 
#> [5] "New.CleanUp.ReferenceOTU6080"  "New.ReferenceOTU124"          
#> 
#> $anaerobic
#> [1] "New.CleanUp.ReferenceOTU8003"  "New.CleanUp.ReferenceOTU10070"
#> [3] "New.CleanUp.ReferenceOTU8703"  "New.CleanUp.ReferenceOTU3192" 
#> [5] "New.CleanUp.ReferenceOTU3925"  "New.CleanUp.ReferenceOTU5093" 
#> 
#> $facultatively_anaerobic
#> [1] "New.CleanUp.ReferenceOTU7367" "New.CleanUp.ReferenceOTU7623"
#> [3] "New.ReferenceOTU195"          "New.CleanUp.ReferenceOTU2376"
#> [5] "New.CleanUp.ReferenceOTU3539" "New.CleanUp.ReferenceOTU7335"
#> 
#> $background
#> [1] "New.CleanUp.ReferenceOTU7367" "New.CleanUp.ReferenceOTU7623"
#> [3] "New.ReferenceOTU195"          "New.CleanUp.ReferenceOTU2376"
#> [5] "New.CleanUp.ReferenceOTU3539" "New.CleanUp.ReferenceOTU7335"
max_sig_size <- max(map_int(c(otu_sigs_bk, gn_sigs_bk), length))
max_sig_size
#> [1] 1291

Current value:

configEBrowser(key="GS.MAX.SIZE")
#> [1] 500

New max.size value:

configEBrowser(key="GS.MAX.SIZE", value = max_sig_size)
configEBrowser(key="GS.MAX.SIZE")
#> [1] 1291

Analysis at the OTU level

Differential abundance

tse$GROUP <- ifelse(
  tse$smokingstatus == 'Never smoker', 0, 1
)
edger <- deAna(
  expr = tse, de.method = 'edgeR', padj.method = 'fdr', 
  filter.by.expr = FALSE
)

Enrichment (GSEA)

design2 = model.matrix(~smokingstatus, data = data.frame(colData(tse)))
assay.voom2 <- limma::voom(
  SummarizedExperiment::assay(edger), design = design2, plot = FALSE
)
SummarizedExperiment::assay(edger) <- assay.voom2$E
class(SummarizedExperiment::assay(edger)) <- "matrix"

gsea <- sbea(
  method = 'gsea', se = edger, gs = otu_sigs, perm = 1000,
  alpha = 0.1  # this is for DA taxa
)
gsea_res <- as.data.frame(gsea$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
    
myDataTable(gsea_res)

Enrichment (ORA)

Significant (mixed) vs Non-Significant:

ora <- sbea(
  method = 'ora', se = edger, gs = otu_sigs_bk, perm = 0, 
  alpha = 0.1 # This is for DA taxa
)
ora_res <- as.data.frame(ora$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_res)

Significant over-abundant vs Reference:

edger_up <- edger
rowData(edger_up)$ADJ.PVAL <- ifelse(
  rowData(edger_up)$FC < 0, 1, rowData(edger_up)$ADJ.PVAL
)
ora_up <- sbea(
  method = 'ora', se = edger_up, gs = otu_sigs_bk, perm = 0,
  alpha = 0.1 # this is for DA taxa
)
ora_up_res <- as.data.frame(ora_up$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_up_res)

Significant under-abundant vs Reference:

edger_down <- edger
rowData(edger_down)$ADJ.PVAL <- ifelse(
  rowData(edger_down)$FC < 1, 0, rowData(edger_down)$ADJ.PVAL
)
ora_down <- sbea(
  method = 'ora', se = edger_down, gs = otu_sigs_bk, perm = 0, 
  alpha = 0.1
)
ora_down_res <- as.data.frame(ora_down$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_down_res)

Analysis at the genus level

Differential expression

tse_gn$GROUP <- ifelse(
  tse_gn$smokingstatus == 'Never smoker', 0, 1
)
edger_gn <- deAna(
   expr = tse_gn, de.method = 'edgeR', padj.method = 'fdr', 
    filter.by.expr = FALSE, 
)

Enrichment GSEA

design1 <- model.matrix(~ smokingstatus, data = data.frame(colData(tse_gn)))
assay.voom1 <- limma::voom(
  SummarizedExperiment::assay(edger_gn), design = design1, plot = FALSE
)
SummarizedExperiment::assay(edger_gn) <- assay.voom1$E
class(SummarizedExperiment::assay(edger_gn)) <- "matrix"

gsea_gn <- sbea(
  method = 'gsea', se = edger_gn, gs = gn_sigs, perm = 1000,
  alpha = 0.1 # This is for DA taxa
  
)
gsea_gn_res <- as.data.frame(gsea_gn$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(gsea_gn_res)

Enrichment ORA

Significant (mixed) vs Non-Significant

ora_gn <- sbea(
  method = 'ora', se = edger_gn, gs = gn_sigs_bk, perm = 0, 
  padj.method = 'BH', alpha = 0.1
)
ora_gn_res <- as.data.frame(ora_gn$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_gn_res)

Significant over-abundant vs Reference

edger_gn_up <- edger_gn
rowData(edger_gn_up)$ADJ.PVAL <- ifelse(
  rowData(edger_gn_up)$FC < 0, 1, rowData(edger_gn_up)$ADJ.PVAL
)
ora_gn_up <- sbea(
  method = 'ora', se = edger_gn_up, gs = gn_sigs_bk, alpha = 0.1, perm = 0, 
  padj.method = 'BH'
)
ora_gn_up_res <- as.data.frame(ora_gn_up$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_gn_up_res)

Significant under-abundant vs Reference

edger_gn_down <- edger_gn
rowData(edger_gn_down)$ADJ.PVAL <- ifelse(
  rowData(edger_gn_down)$FC < 1, 0, rowData(edger_gn_down)$ADJ.PVAL
)
ora_gn_down <- sbea(
  method = 'ora', se = edger_gn_down, gs = gn_sigs_bk, alpha = 0.1, perm = 0, 
  padj.method = 'BH'
)
ora_gn_down_res <- as.data.frame(ora_gn_down$res.tbl) |> 
    mutate(GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, "*"), GENE.SET )) |> 
    filter(GENE.SET != "background")
myDataTable(ora_gn_down_res)

Session information

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.1 (2024-06-14)
#>  os       Ubuntu 22.04.4 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language en
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Etc/UTC
#>  date     2024-06-28
#>  pandoc   3.2 @ /usr/bin/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package                  * version   date (UTC) lib source
#>  abind                      1.4-5     2016-07-21 [1] RSPM (R 4.4.0)
#>  annotate                   1.82.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  AnnotationDbi              1.66.0    2024-05-01 [1] Bioconductor 3.19 (R 4.4.1)
#>  ape                        5.8       2024-04-11 [1] RSPM (R 4.4.0)
#>  beachmat                   2.20.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  beeswarm                   0.4.0     2021-06-01 [1] RSPM (R 4.4.0)
#>  Biobase                  * 2.64.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  BiocGenerics             * 0.50.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  BiocNeighbors              1.22.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  BiocParallel               1.38.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  BiocSingular               1.20.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  Biostrings               * 2.72.1    2024-06-02 [1] Bioconductor 3.19 (R 4.4.1)
#>  bit                        4.0.5     2022-11-15 [1] RSPM (R 4.4.0)
#>  bit64                      4.0.5     2020-08-30 [1] RSPM (R 4.4.0)
#>  bitops                     1.0-7     2021-04-24 [1] RSPM (R 4.4.0)
#>  blob                       1.2.4     2023-03-17 [1] RSPM (R 4.4.0)
#>  bluster                    1.14.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  bslib                      0.7.0     2024-03-29 [1] RSPM (R 4.4.0)
#>  bugphyzzAnalyses         * 0.1.19    2024-06-28 [1] local
#>  cachem                     1.1.0     2024-05-16 [1] RSPM (R 4.4.0)
#>  cli                        3.6.3     2024-06-21 [1] RSPM (R 4.4.0)
#>  cluster                    2.1.6     2023-12-01 [2] CRAN (R 4.4.1)
#>  codetools                  0.2-20    2024-03-31 [2] CRAN (R 4.4.1)
#>  colorspace                 2.1-0     2023-01-23 [1] RSPM (R 4.4.0)
#>  crayon                     1.5.3     2024-06-20 [1] RSPM (R 4.4.0)
#>  crosstalk                  1.2.1     2023-11-23 [1] RSPM (R 4.4.0)
#>  DBI                        1.2.3     2024-06-02 [1] RSPM (R 4.4.0)
#>  DECIPHER                   3.0.0     2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  decontam                   1.24.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  DelayedArray               0.30.1    2024-05-07 [1] Bioconductor 3.19 (R 4.4.1)
#>  DelayedMatrixStats         1.26.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  desc                       1.4.3     2023-12-10 [1] RSPM (R 4.4.0)
#>  digest                     0.6.36    2024-06-23 [1] RSPM (R 4.4.0)
#>  DirichletMultinomial       1.46.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  dplyr                    * 1.1.4     2023-11-17 [1] RSPM (R 4.4.0)
#>  DT                         0.33      2024-04-04 [1] RSPM (R 4.4.0)
#>  edgeR                      4.2.0     2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  EnrichmentBrowser        * 2.34.1    2024-05-06 [1] Bioconductor 3.19 (R 4.4.1)
#>  evaluate                   0.24.0    2024-06-10 [1] RSPM (R 4.4.0)
#>  fansi                      1.0.6     2023-12-08 [1] RSPM (R 4.4.0)
#>  fastmap                    1.2.0     2024-05-15 [1] RSPM (R 4.4.0)
#>  fs                         1.6.4     2024-04-25 [1] RSPM (R 4.4.0)
#>  generics                   0.1.3     2022-07-05 [1] RSPM (R 4.4.0)
#>  GenomeInfoDb             * 1.40.1    2024-05-24 [1] Bioconductor 3.19 (R 4.4.1)
#>  GenomeInfoDbData           1.2.12    2024-06-25 [1] Bioconductor
#>  GenomicRanges            * 1.56.1    2024-06-12 [1] Bioconductor 3.19 (R 4.4.1)
#>  ggbeeswarm                 0.7.2     2023-04-29 [1] RSPM (R 4.4.0)
#>  ggplot2                    3.5.1     2024-04-23 [1] RSPM (R 4.4.0)
#>  ggrepel                    0.9.5     2024-01-10 [1] RSPM (R 4.4.0)
#>  glue                       1.7.0     2024-01-09 [1] RSPM (R 4.4.0)
#>  graph                    * 1.82.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  gridExtra                  2.3       2017-09-09 [1] RSPM (R 4.4.0)
#>  GSEABase                   1.66.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  gtable                     0.3.5     2024-04-22 [1] RSPM (R 4.4.0)
#>  htmltools                  0.5.8.1   2024-04-04 [1] RSPM (R 4.4.0)
#>  htmlwidgets                1.6.4     2023-12-06 [1] RSPM (R 4.4.0)
#>  httr                       1.4.7     2023-08-15 [1] RSPM (R 4.4.0)
#>  igraph                     2.0.3     2024-03-13 [1] RSPM (R 4.4.0)
#>  IRanges                  * 2.38.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  irlba                      2.3.5.1   2022-10-03 [1] RSPM (R 4.4.0)
#>  jquerylib                  0.1.4     2021-04-26 [1] RSPM (R 4.4.0)
#>  jsonlite                   1.8.8     2023-12-04 [1] RSPM (R 4.4.0)
#>  KEGGgraph                  1.64.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  KEGGREST                   1.44.1    2024-06-19 [1] Bioconductor 3.19 (R 4.4.1)
#>  knitr                      1.47      2024-05-29 [1] RSPM (R 4.4.0)
#>  lattice                    0.22-6    2024-03-20 [2] CRAN (R 4.4.1)
#>  lazyeval                   0.2.2     2019-03-15 [1] RSPM (R 4.4.0)
#>  lifecycle                  1.0.4     2023-11-07 [1] RSPM (R 4.4.0)
#>  limma                      3.60.3    2024-06-16 [1] Bioconductor 3.19 (R 4.4.1)
#>  locfit                     1.5-9.10  2024-06-24 [1] RSPM (R 4.4.0)
#>  magrittr                   2.0.3     2022-03-30 [1] RSPM (R 4.4.0)
#>  MASS                       7.3-61    2024-06-13 [2] RSPM (R 4.4.0)
#>  Matrix                     1.7-0     2024-04-26 [2] CRAN (R 4.4.1)
#>  MatrixGenerics           * 1.16.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  matrixStats              * 1.3.0     2024-04-11 [1] RSPM (R 4.4.0)
#>  memoise                    2.0.1     2021-11-26 [1] RSPM (R 4.4.0)
#>  mgcv                       1.9-1     2023-12-21 [2] CRAN (R 4.4.1)
#>  mia                      * 1.12.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  MultiAssayExperiment     * 1.30.2    2024-05-29 [1] Bioconductor 3.19 (R 4.4.1)
#>  munsell                    0.5.1     2024-04-01 [1] RSPM (R 4.4.0)
#>  nlme                       3.1-165   2024-06-06 [2] RSPM (R 4.4.0)
#>  permute                    0.9-7     2022-01-27 [1] RSPM (R 4.4.0)
#>  pillar                     1.9.0     2023-03-22 [1] RSPM (R 4.4.0)
#>  pkgconfig                  2.0.3     2019-09-22 [1] RSPM (R 4.4.0)
#>  pkgdown                    2.0.9     2024-04-18 [1] RSPM (R 4.4.0)
#>  plyr                       1.8.9     2023-10-02 [1] RSPM (R 4.4.0)
#>  png                        0.1-8     2022-11-29 [1] RSPM (R 4.4.0)
#>  purrr                    * 1.0.2     2023-08-10 [1] RSPM (R 4.4.0)
#>  R6                         2.5.1     2021-08-19 [1] RSPM (R 4.4.0)
#>  ragg                       1.3.2     2024-05-15 [1] RSPM (R 4.4.0)
#>  Rcpp                       1.0.12    2024-01-09 [1] RSPM (R 4.4.0)
#>  RCurl                      1.98-1.14 2024-01-09 [1] RSPM (R 4.4.0)
#>  reshape2                   1.4.4     2020-04-09 [1] RSPM (R 4.4.0)
#>  Rgraphviz                  2.48.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  rlang                      1.1.4     2024-06-04 [1] RSPM (R 4.4.0)
#>  rmarkdown                  2.27      2024-05-17 [1] RSPM (R 4.4.0)
#>  RSQLite                    2.3.7     2024-05-27 [1] RSPM (R 4.4.0)
#>  rsvd                       1.0.5     2021-04-16 [1] RSPM (R 4.4.0)
#>  S4Arrays                   1.4.1     2024-05-20 [1] Bioconductor 3.19 (R 4.4.1)
#>  S4Vectors                * 0.42.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  safe                       3.44.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  sass                       0.4.9     2024-03-15 [1] RSPM (R 4.4.0)
#>  ScaledMatrix               1.12.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  scales                     1.3.0     2023-11-28 [1] RSPM (R 4.4.0)
#>  scater                     1.32.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  scuttle                    1.14.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  sessioninfo                1.2.2     2021-12-06 [1] RSPM (R 4.4.0)
#>  SingleCellExperiment     * 1.26.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  SparseArray                1.4.8     2024-05-24 [1] Bioconductor 3.19 (R 4.4.1)
#>  SparseM                    1.84      2024-06-25 [1] RSPM (R 4.4.0)
#>  sparseMatrixStats          1.16.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  statmod                    1.5.0     2023-01-06 [1] RSPM (R 4.4.0)
#>  stringi                    1.8.4     2024-05-06 [1] RSPM (R 4.4.0)
#>  stringr                    1.5.1     2023-11-14 [1] RSPM (R 4.4.0)
#>  SummarizedExperiment     * 1.34.0    2024-05-01 [1] Bioconductor 3.19 (R 4.4.1)
#>  systemfonts                1.1.0     2024-05-15 [1] RSPM (R 4.4.0)
#>  textshaping                0.4.0     2024-05-24 [1] RSPM (R 4.4.0)
#>  tibble                     3.2.1     2023-03-20 [1] RSPM (R 4.4.0)
#>  tidyr                      1.3.1     2024-01-24 [1] RSPM (R 4.4.0)
#>  tidyselect                 1.2.1     2024-03-11 [1] RSPM (R 4.4.0)
#>  tidytree                   0.4.6     2023-12-12 [1] RSPM (R 4.4.0)
#>  treeio                     1.28.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  TreeSummarizedExperiment * 2.12.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  UCSC.utils                 1.0.0     2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  utf8                       1.2.4     2023-10-22 [1] RSPM (R 4.4.0)
#>  vctrs                      0.6.5     2023-12-01 [1] RSPM (R 4.4.0)
#>  vegan                      2.6-6.1   2024-05-21 [1] RSPM (R 4.4.0)
#>  vipor                      0.4.7     2023-12-18 [1] RSPM (R 4.4.0)
#>  viridis                    0.6.5     2024-01-29 [1] RSPM (R 4.4.0)
#>  viridisLite                0.4.2     2023-05-02 [1] RSPM (R 4.4.0)
#>  xfun                       0.45      2024-06-16 [1] RSPM (R 4.4.0)
#>  XML                        3.99-0.17 2024-06-25 [1] RSPM (R 4.4.0)
#>  xtable                     1.8-4     2019-04-21 [1] RSPM (R 4.4.0)
#>  XVector                  * 0.44.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#>  yaml                       2.3.8     2023-12-11 [1] RSPM (R 4.4.0)
#>  yulab.utils                0.1.4     2024-01-28 [1] RSPM (R 4.4.0)
#>  zlibbioc                   1.50.0    2024-04-30 [1] Bioconductor 3.19 (R 4.4.1)
#> 
#>  [1] /usr/local/lib/R/site-library
#>  [2] /usr/local/lib/R/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────