bugphyzz is an electronic database of standardized microbial annotations that allows: 1. annotation of microbial taxa from multiple sources, and 2. creation of microbial signatures based on shared attributes for bug set enrichment analysis.
Annotations in bugphyzz represent the link between a taxon (Bacteria/Archaea) and an attribute, as outlined in the data schema provided below.
Data schema
Taxon-related
Taxonomic data in bugphyzz is standardized according to the NCBI taxonomy:
Attribute-related
Attribute data is harmonized using ontology terms. Details of attributes, ontology terms, and ontology libraries can be found in the Attribute and sources article.
Attribute value-related
Metadata associated with attribute values:
Attribute source-related
Additional information
Description of sources and attributes: https://waldronlab.io/bugphyzz/articles/attributes.html
Description of ontology evidence codes: https://geneontology.org/docs/guide-go-evidence-codes/
Description of frequency keywords and scores were based on: https://grammarist.com/grammar/adverbs-of-frequency/
IBD and ASR were performed with taxPPro: https://github.com/waldronlab/taxPPro
This vignette serves as an introduction to the basic functionalities of bugphyzz. For a more in-depth analysis and detailed statistics utilizing bugphyzz annotations, please visit: https://github.com/waldronlab/bugphyzzAnalyses
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("bugphyzz")
Load the bugphyzz package and additional packages for data manipulation:
library(bugphyzz)
library(dplyr)
library(purrr)
bugphyzz data is imported using the importBugphyzz
function,
resulting in a list of tidy data frames. Each data frame corresponds to an
attribute or a group of related attributes. This is particularly evident in
the case of the multistate-union type described in the data schema above,
where related attributes are grouped together in a single data frame. Available
attribute names can be inspected with the names
function:
bp <- importBugphyzz()
names(bp)
#> [1] "animal pathogen"
#> [2] "antimicrobial sensitivity"
#> [3] "biofilm formation"
#> [4] "butyrate-producing bacteria"
#> [5] "extreme environment"
#> [6] "health associated"
#> [7] "host-associated"
#> [8] "hydrogen gas producing"
#> [9] "lactate producing"
#> [10] "motility"
#> [11] "plant pathogenicity"
#> [12] "sphingolipid producing"
#> [13] "spore formation"
#> [14] "aerophilicity"
#> [15] "antimicrobial resistance"
#> [16] "arrangement"
#> [17] "biosafety level"
#> [18] "cogem pathogenicity rating"
#> [19] "disease association"
#> [20] "gram stain"
#> [21] "habitat"
#> [22] "hemolysis"
#> [23] "shape"
#> [24] "spore shape"
#> [25] "coding genes"
#> [26] "genome size"
#> [27] "growth temperature"
#> [28] "length"
#> [29] "mutation rate per site per generation"
#> [30] "mutation rate per site per year"
#> [31] "optimal ph"
#> [32] "width"
Let’s take a glimpse at one of the data frames:
glimpse(bp$aerophilicity, width = 50)
#> Rows: 17,966
#> Columns: 12
#> $ NCBI_ID <int> 117743, 118001, 1…
#> $ Taxon_name <chr> "Flavobacteriia",…
#> $ Rank <chr> "class", "class",…
#> $ Attribute <chr> "aerophilicity", …
#> $ Attribute_value <chr> "anaerobic", "ana…
#> $ Evidence <chr> "asr", "asr", "as…
#> $ Frequency <chr> "sometimes", "usu…
#> $ Score <dbl> 0.6911516, 0.9992…
#> $ Attribute_source <chr> NA, NA, NA, NA, N…
#> $ Confidence_in_curation <chr> NA, NA, NA, NA, N…
#> $ Attribute_type <chr> "multistate-inter…
#> $ Validation <dbl> 0.88, 0.88, 0.88,…
Compare the column names with the data schema described above.
bugphyzz’s primary function is to facilitate the creation of microbial
signatures, which are essentially lists of microbes sharing specific taxonomy
ranks and attribute values. Once the data frames containing attribute
information are imported, the makeSignatures
function can be employed to
generate these signatures. makeSignatures
offers various filtering options,
including evidence, frequency, and minimum and maximum values for numeric
attributes. For more precise filtering requirements, users can leverage
standard data manipulation functions on the relevant data frame,
such as dplyr::filter
.
Examples:
aer_sigs_g <- makeSignatures(
dat = bp[["aerophilicity"]], tax_id_type = "Taxon_name", tax_level = "genus"
)
map(aer_sigs_g, head)
#> $`bugphyzz:aerophilicity|aerobic`
#> [1] "Cellvibrio" "Acidipila" "Hydrotalea" "Saprospira"
#> [5] "Nitrosarchaeum" "Halopelagius"
#>
#> $`bugphyzz:aerophilicity|anaerobic`
#> [1] "Microaerobacter" "Desulfitispora" "Desulfurispira"
#> [4] "Pseudoflavonifractor" "Chromatium" "Ectothiorhodospira"
#>
#> $`bugphyzz:aerophilicity|facultatively anaerobic`
#> [1] "Capnocytophaga" "Kistimonas" "Trueperella" "Telmatobacter"
#> [5] "Alishewanella" "Muricauda"
gt_sigs_sp <- makeSignatures(
dat = bp[["growth temperature"]], tax_id_type = "Taxon_name",
tax_level = 'species'
)
map(gt_sigs_sp, head)
#> $`bugphyzz:growth temperature|hyperthermophile| > 60 & <= 121`
#> [1] "Metallosphaera cuprina" "Pyrococcus yayanosii"
#> [3] "Methanothermobacter crinale" "Acidilobus aceticus"
#> [5] "Thermanaerovibrio velox" "Thermoanaerobacter italicus"
#>
#> $`bugphyzz:growth temperature|mesophile| > 25 & <= 45`
#> [1] "Ancylobacter aquaticus" "Leptospira alexanderi"
#> [3] "Halosaccharopolyspora lacisalsi" "Garritya polymorpha"
#> [5] "Sporobacterium olearium" "Borreliella lusitaniae"
#>
#> $`bugphyzz:growth temperature|psychrophile| > -10.01 & <= 25`
#> [1] "Cryobacterium roopkundense" "Hugenholtzia roseola"
#> [3] "Halopseudomonas formosensis" "Occallatibacter riparius"
#> [5] "Occallatibacter savannae" "Pectinatus sottacetonis"
#>
#> $`bugphyzz:growth temperature|thermophile| > 45 & <= 60`
#> [1] "Alicyclobacillus cellulosilyticus" "Defluviitoga tunisiensis"
#> [3] "Fervidobacterium thailandense" "Polycladomyces subterraneus"
#> [5] "Desulfofalx alkaliphila" "Marinitoga camini"
gt_sigs_mix <- makeSignatures(
dat = bp[["growth temperature"]], tax_id_type = "Taxon_name",
tax_level = "mixed", min = 0, max = 25
)
map(gt_sigs_mix, head)
#> $`bugphyzz:growth temperature| >=0 & <=25`
#> [1] "Cryobacterium roopkundense" "Hugenholtzia roseola"
#> [3] "Halopseudomonas formosensis" "Occallatibacter riparius"
#> [5] "Occallatibacter savannae" "Pectinatus sottacetonis"
ap_sigs_mix <- makeSignatures(
dat = bp[["animal pathogen"]], tax_id_type = "NCBI_ID",
tax_level = "mixed", evidence = c("exp", "igc", "nas", "tas")
)
map(ap_sigs_mix, head)
#> $`bugphyzz:animal pathogen|FALSE`
#> [1] 100225 1003110 1006 1008 1008460 101192
#>
#> $`bugphyzz:animal pathogen|TRUE`
#> [1] 100053 100901 1015 1017 1018 1019
sigs <- map(bp, makeSignatures) |>
list_flatten(name_spec = "{inner}")
length(sigs)
#> [1] 124
head(map(sigs, head))
#> $`bugphyzz:animal pathogen|FALSE`
#> [1] 100225 1003110 1006 1008 1008460 101192
#>
#> $`bugphyzz:animal pathogen|TRUE`
#> [1] 100053 1004150 1004159 1004165 1004166 100469
#>
#> $`bugphyzz:antimicrobial sensitivity|FALSE`
#> [1] 100225 1008 1008460 101192 101385 101534
#>
#> $`bugphyzz:antimicrobial sensitivity|TRUE`
#> [1] 1003110 100379 101564 101571 1031 103232
#>
#> $`bugphyzz:biofilm formation|FALSE`
#> [1] 1006 1053 105841 105972 1079800 109790
#>
#> $`bugphyzz:biofilm formation|TRUE`
#> [1] 100053 1018 102684 102862 1033739 1033846
Bugphyzz signatures are suitable for conducting bug set enrichment analysis using existing tools available in R. In this example, we will perform a set enrichment analysis using a dataset with a known biological ground truth.
The dataset originates from the Human Microbiome Project (2012) and compares subgingival and supragingival plaque. This data will be imported using the MicrobiomeBenchmarkData package. For the implementation of the enrichment analysis, we will utilize the Gene Set Enrichment Analysis (GSEA) method available in the EnrichmentBrowser package. The expected outcome is an enrichment of aerobic taxa in the supragingival plaque (positive enrichment score) and anaerobic taxa in the subgingival plaque (negative enrichment score).
Load necessary packages:
library(EnrichmentBrowser)
library(MicrobiomeBenchmarkData)
library(mia)
Import benchmark data:
dat_name <- 'HMP_2012_16S_gingival_V35'
tse <- MicrobiomeBenchmarkData::getBenchmarkData(dat_name, dryrun = FALSE)[[1]]
#> adding rname 'https://zenodo.org/record/6911027/files/HMP_2012_16S_gingival_V35_count_matrix.tsv'
#> adding rname 'https://zenodo.org/record/6911027/files/HMP_2012_16S_gingival_V35_taxonomy_table.tsv'
#> adding rname 'https://zenodo.org/record/6911027/files/HMP_2012_16S_gingival_V35_taxonomy_tree.newick'
#> Finished HMP_2012_16S_gingival_V35.
tse_genus <- mia::splitByRanks(tse)$genus
min_n_samples <- round(ncol(tse_genus) * 0.2)
tse_subset <- tse_genus[rowSums(assay(tse_genus) >= 1) >= min_n_samples,]
tse_subset
#> class: TreeSummarizedExperiment
#> dim: 37 311
#> metadata(1): agglomerated_by_rank
#> assays(1): counts
#> rownames(37): Streptococcus Neisseria ... Mogibacterium Peptococcus
#> rowData names(7): superkingdom phylum ... genus taxon_annotation
#> colnames(311): 700103497 700106940 ... 700111586 700109119
#> colData names(15): dataset subject_id ... sequencing_method
#> variable_region_16s
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#> rowLinks: a LinkDataFrame (37 rows)
#> rowTree: 1 phylo tree(s) (45364 leaves)
#> colLinks: NULL
#> colTree: NULL
Perform differential abundance (DA) analysis to get sets of microbes:
tse_subset$GROUP <- ifelse(
tse_subset$body_subsite == 'subgingival_plaque', 0, 1
)
se <- EnrichmentBrowser::deAna(
expr = tse_subset, de.method = 'limma', padj.method = 'fdr',
filter.by.expr = FALSE,
)
dat <- data.frame(colData(se))
design <- stats::model.matrix(~ GROUP, data = dat)
assay(se) <- limma::voom(
counts = assay(se), design = design, plot = FALSE
)$E
Perform GSEA and display the results:
gsea <- EnrichmentBrowser::sbea(
method = 'gsea', se = se, gs = aer_sigs_g, perm = 1000,
alpha = 0.1
)
gsea_tbl <- as.data.frame(gsea$res.tbl) |>
mutate(
GENE.SET = ifelse(PVAL < 0.05, paste0(GENE.SET, ' *'), GENE.SET),
PVAL = round(PVAL, 3),
) |>
dplyr::rename(BUG.SET = GENE.SET)
knitr::kable(gsea_tbl)
BUG.SET | ES | NES | PVAL |
---|---|---|---|
bugphyzz:aerophilicity|aerobic * | 0.974 | 1.920 | 0.000 |
bugphyzz:aerophilicity|anaerobic * | -0.861 | -1.650 | 0.015 |
bugphyzz:aerophilicity|facultatively anaerobic | 0.317 | 0.709 | 0.810 |
To retrieve all signature names associated with a specific taxon,
users can utilize the getTaxonSignatures
function.
Let’s see an example using Escherichia coli (taxid: 562).
Get all signature names associated to E. coli:
getTaxonSignatures(tax = "Escherichia coli", bp = bp)
#> character(0)
Get all signature names associated to the E. coli taxid:
getTaxonSignatures(tax = "562", bp = bp)
#> [1] "bugphyzz:animal pathogen|FALSE"
#> [2] "bugphyzz:extreme environment|TRUE"
#> [3] "bugphyzz:health associated|FALSE"
#> [4] "bugphyzz:host-associated|TRUE"
#> [5] "bugphyzz:motility|FALSE"
#> [6] "bugphyzz:plant pathogenicity|FALSE"
#> [7] "bugphyzz:spore formation|FALSE"
#> [8] "bugphyzz:aerophilicity|aerobic"
#> [9] "bugphyzz:aerophilicity|facultatively anaerobic"
#> [10] "bugphyzz:arrangement|paired cells"
#> [11] "bugphyzz:biosafety level|biosafety level 1"
#> [12] "bugphyzz:cogem pathogenicity rating|cogem pathogenicity rating 2"
#> [13] "bugphyzz:gram stain|gram stain negative"
#> [14] "bugphyzz:habitat|digestive system"
#> [15] "bugphyzz:habitat|feces"
#> [16] "bugphyzz:habitat|human microbiome"
#> [17] "bugphyzz:shape|bacillus"
#> [18] "bugphyzz:growth temperature|mesophile| > 25 & <= 45"
#> [19] "bugphyzz:mutation rate per site per generation|slow| > 0.78 & <= 2.92"
#> [20] "bugphyzz:mutation rate per site per year|slow| > 0.08 & <= 7.5"
#> [21] "bugphyzz:optimal ph|neutral| > 6 & <= 8"
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.4.0 RC (2024-04-16 r86468)
#> os Ubuntu 22.04.4 LTS
#> system x86_64, linux-gnu
#> ui X11
#> language (EN)
#> collate C
#> ctype en_US.UTF-8
#> tz America/New_York
#> date 2024-05-17
#> pandoc 2.7.3 @ /usr/bin/ (via rmarkdown)
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date (UTC) lib source
#> abind 1.4-5 2016-07-21 [3] CRAN (R 4.4.0)
#> annotate 1.83.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> AnnotationDbi 1.67.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> ape 5.8 2024-04-11 [3] CRAN (R 4.4.0)
#> beachmat 2.21.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> beeswarm 0.4.0 2021-06-01 [3] CRAN (R 4.4.0)
#> Biobase * 2.65.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocFileCache 2.13.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocGenerics * 0.51.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocManager 1.30.23 2024-05-04 [2] CRAN (R 4.4.0)
#> BiocNeighbors 1.23.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocParallel 1.39.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocSingular 1.21.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> BiocStyle * 2.33.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> Biostrings * 2.73.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> bit 4.0.5 2022-11-15 [3] CRAN (R 4.4.0)
#> bit64 4.0.5 2020-08-30 [3] CRAN (R 4.4.0)
#> bitops 1.0-7 2021-04-24 [3] CRAN (R 4.4.0)
#> blob 1.2.4 2023-03-17 [3] CRAN (R 4.4.0)
#> bluster 1.15.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> bookdown 0.39 2024-04-15 [3] CRAN (R 4.4.0)
#> bslib 0.7.0 2024-03-29 [3] CRAN (R 4.4.0)
#> bugphyzz * 0.99.0 2024-05-17 [1] Bioconductor
#> cachem 1.1.0 2024-05-16 [2] CRAN (R 4.4.0)
#> cli 3.6.2 2023-12-11 [3] CRAN (R 4.4.0)
#> cluster 2.1.6 2023-12-01 [4] CRAN (R 4.4.0)
#> codetools 0.2-20 2024-03-31 [4] CRAN (R 4.4.0)
#> colorspace 2.1-0 2023-01-23 [3] CRAN (R 4.4.0)
#> crayon 1.5.2 2022-09-29 [3] CRAN (R 4.4.0)
#> curl 5.2.1 2024-03-01 [3] CRAN (R 4.4.0)
#> DBI 1.2.2 2024-02-16 [3] CRAN (R 4.4.0)
#> dbplyr 2.5.0 2024-03-19 [3] CRAN (R 4.4.0)
#> DECIPHER 3.1.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> decontam 1.25.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> DelayedArray 0.31.1 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> DelayedMatrixStats 1.27.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> digest 0.6.35 2024-03-11 [3] CRAN (R 4.4.0)
#> DirichletMultinomial 1.47.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> dplyr * 1.1.4 2023-11-17 [3] CRAN (R 4.4.0)
#> edgeR 4.3.4 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> EnrichmentBrowser * 2.35.1 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> evaluate 0.23 2023-11-01 [3] CRAN (R 4.4.0)
#> fansi 1.0.6 2023-12-08 [3] CRAN (R 4.4.0)
#> fastmap 1.2.0 2024-05-15 [3] CRAN (R 4.4.0)
#> filelock 1.0.3 2023-12-11 [3] CRAN (R 4.4.0)
#> fs 1.6.4 2024-04-25 [3] CRAN (R 4.4.0)
#> generics 0.1.3 2022-07-05 [3] CRAN (R 4.4.0)
#> GenomeInfoDb * 1.41.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> GenomeInfoDbData 1.2.12 2024-04-23 [3] Bioconductor
#> GenomicRanges * 1.57.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> ggbeeswarm 0.7.2 2023-04-29 [3] CRAN (R 4.4.0)
#> ggplot2 3.5.1 2024-04-23 [3] CRAN (R 4.4.0)
#> ggrepel 0.9.5 2024-01-10 [3] CRAN (R 4.4.0)
#> glue 1.7.0 2024-01-09 [3] CRAN (R 4.4.0)
#> graph * 1.83.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> gridExtra 2.3 2017-09-09 [3] CRAN (R 4.4.0)
#> GSEABase 1.67.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> gtable 0.3.5 2024-04-22 [3] CRAN (R 4.4.0)
#> htmltools 0.5.8.1 2024-04-04 [3] CRAN (R 4.4.0)
#> httr 1.4.7 2023-08-15 [3] CRAN (R 4.4.0)
#> httr2 1.0.1 2024-04-01 [3] CRAN (R 4.4.0)
#> igraph 2.0.3 2024-03-13 [3] CRAN (R 4.4.0)
#> IRanges * 2.39.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> irlba 2.3.5.1 2022-10-03 [3] CRAN (R 4.4.0)
#> jquerylib 0.1.4 2021-04-26 [3] CRAN (R 4.4.0)
#> jsonlite 1.8.8 2023-12-04 [3] CRAN (R 4.4.0)
#> KEGGgraph 1.65.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> KEGGREST 1.45.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> knitr 1.46 2024-04-06 [3] CRAN (R 4.4.0)
#> lattice 0.22-6 2024-03-20 [4] CRAN (R 4.4.0)
#> lazyeval 0.2.2 2019-03-15 [3] CRAN (R 4.4.0)
#> lifecycle 1.0.4 2023-11-07 [3] CRAN (R 4.4.0)
#> limma 3.61.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> locfit 1.5-9.9 2024-03-01 [3] CRAN (R 4.4.0)
#> magrittr 2.0.3 2022-03-30 [3] CRAN (R 4.4.0)
#> MASS 7.3-60.2 2024-04-23 [4] local
#> Matrix 1.7-0 2024-03-22 [4] CRAN (R 4.4.0)
#> MatrixGenerics * 1.17.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> matrixStats * 1.3.0 2024-04-11 [3] CRAN (R 4.4.0)
#> memoise 2.0.1 2021-11-26 [3] CRAN (R 4.4.0)
#> mgcv 1.9-1 2023-12-21 [4] CRAN (R 4.4.0)
#> mia * 1.13.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> MicrobiomeBenchmarkData * 1.7.0 2024-05-16 [3] Bioconductor 3.20 (R 4.4.0)
#> MultiAssayExperiment * 1.31.1 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> munsell 0.5.1 2024-04-01 [3] CRAN (R 4.4.0)
#> nlme 3.1-164 2023-11-27 [4] CRAN (R 4.4.0)
#> permute 0.9-7 2022-01-27 [3] CRAN (R 4.4.0)
#> pillar 1.9.0 2023-03-22 [3] CRAN (R 4.4.0)
#> pkgconfig 2.0.3 2019-09-22 [3] CRAN (R 4.4.0)
#> plyr 1.8.9 2023-10-02 [3] CRAN (R 4.4.0)
#> png 0.1-8 2022-11-29 [3] CRAN (R 4.4.0)
#> purrr * 1.0.2 2023-08-10 [3] CRAN (R 4.4.0)
#> R6 2.5.1 2021-08-19 [3] CRAN (R 4.4.0)
#> rappdirs 0.3.3 2021-01-31 [3] CRAN (R 4.4.0)
#> Rcpp 1.0.12 2024-01-09 [3] CRAN (R 4.4.0)
#> RCurl 1.98-1.14 2024-01-09 [3] CRAN (R 4.4.0)
#> reshape2 1.4.4 2020-04-09 [3] CRAN (R 4.4.0)
#> Rgraphviz 2.49.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> rlang 1.1.3 2024-01-10 [3] CRAN (R 4.4.0)
#> rmarkdown 2.26 2024-03-05 [3] CRAN (R 4.4.0)
#> RSQLite 2.3.6 2024-03-31 [3] CRAN (R 4.4.0)
#> rsvd 1.0.5 2021-04-16 [3] CRAN (R 4.4.0)
#> S4Arrays 1.5.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> S4Vectors * 0.43.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> sass 0.4.9 2024-03-15 [3] CRAN (R 4.4.0)
#> ScaledMatrix 1.13.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> scales 1.3.0 2023-11-28 [3] CRAN (R 4.4.0)
#> scater 1.33.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> scuttle 1.15.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> sessioninfo 1.2.2 2021-12-06 [3] CRAN (R 4.4.0)
#> SingleCellExperiment * 1.27.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> SparseArray 1.5.4 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> sparseMatrixStats 1.17.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> statmod 1.5.0 2023-01-06 [3] CRAN (R 4.4.0)
#> stringi 1.8.4 2024-05-06 [3] CRAN (R 4.4.0)
#> stringr 1.5.1 2023-11-14 [3] CRAN (R 4.4.0)
#> SummarizedExperiment * 1.35.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> tibble 3.2.1 2023-03-20 [3] CRAN (R 4.4.0)
#> tidyr 1.3.1 2024-01-24 [3] CRAN (R 4.4.0)
#> tidyselect 1.2.1 2024-03-11 [3] CRAN (R 4.4.0)
#> tidytree 0.4.6 2023-12-12 [3] CRAN (R 4.4.0)
#> treeio 1.29.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> TreeSummarizedExperiment * 2.13.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> UCSC.utils 1.1.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> utf8 1.2.4 2023-10-22 [3] CRAN (R 4.4.0)
#> vctrs 0.6.5 2023-12-01 [3] CRAN (R 4.4.0)
#> vegan 2.6-6 2024-05-14 [3] CRAN (R 4.4.0)
#> vipor 0.4.7 2023-12-18 [3] CRAN (R 4.4.0)
#> viridis 0.6.5 2024-01-29 [3] CRAN (R 4.4.0)
#> viridisLite 0.4.2 2023-05-02 [3] CRAN (R 4.4.0)
#> withr 3.0.0 2024-01-16 [3] CRAN (R 4.4.0)
#> xfun 0.44 2024-05-15 [3] CRAN (R 4.4.0)
#> XML 3.99-0.16.1 2024-01-22 [3] CRAN (R 4.4.0)
#> xtable 1.8-4 2019-04-21 [3] CRAN (R 4.4.0)
#> XVector * 0.45.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#> yaml 2.3.8 2023-12-11 [2] CRAN (R 4.4.0)
#> yulab.utils 0.1.4 2024-01-28 [3] CRAN (R 4.4.0)
#> zlibbioc 1.51.0 2024-05-15 [3] Bioconductor 3.20 (R 4.4.0)
#>
#> [1] /tmp/Rtmp1eAKwm/Rinst38e7c85bc232a6
#> [2] /home/pkgbuild/packagebuilder/workers/jobs/3367/R-libs
#> [3] /home/biocbuild/bbs-3.20-bioc/R/site-library
#> [4] /home/biocbuild/bbs-3.20-bioc/R/library
#>
#> ──────────────────────────────────────────────────────────────────────────────