R Notebook: Provides reproducible analysis for Hierarchical Clustering data in the following manuscript:
Citation: Romanowicz KJ and Kling GW. (In Press) Summer thaw duration is a strong predictor of the soil microbiome and its response to permafrost thaw in arctic tundra. Environmental Microbiology. https://doi.org/10.1111/1462-2920.16218
GitHub Repository: https://github.com/kromanowicz/2022-Annual-Thaw-Microbes
NCBI BioProject: https://www.ncbi.nlm.nih.gov/bioproject/?term=PRJNA794857
Accepted for Publication: 22 September 2022 Environmental Microbiology
This R Notebook provides complete reproducibility of the data analysis presented in “Summer thaw duration is a strong predictor of the soil microbiome and its response to permafrost thaw in arctic tundra” by Romanowicz and Kling.
This pipeline uses amplicon sequence variants (ASVs) generated from 16S rRNA gene sequences in hierarchical clustering analysis to determine statistically significant clusters based on soil depth and shared taxonomy.
# Make a vector of required packages
required.packages <- c("corrr","data.table","devtools","dplyr","forcats","ggalluvial","ggdendro","ggplot2","ggpubr","grid","gridExtra","knitr","magrittr","microeco","patchwork","pheatmap","pvclust","qiime2R","RColorBrewer","tidyr","UpSetR","vegan")
# Load required packages
lapply(required.packages, library, character.only = TRUE)
This analysis includes heatmaps of z-scored relative abundance taxonomic data and hierarchical clustering by soil depth and taxa using pvclust and 10,000 bootstrap iterations.
Import mean abundance of taxa by depth for TTT heatmap
asv.taxa.ttt.mean <- read.csv("QIIME/SILVA/R_Data/taxa.mean.ttt.csv")
colnames(asv.taxa.ttt.mean)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.ttt.mean) <- asv.taxa.ttt.mean$Phylum
asv.taxa.ttt.mean<-as.data.frame(asv.taxa.ttt.mean[-1])
# Convert dataframe into a matrix for heatmap
asv.taxa.ttt.mean<-as.matrix(asv.taxa.ttt.mean)
# Scale matrix values to generate Z-scores
asv.taxa.ttt.mean<-scale(t(asv.taxa.ttt.mean))
# Specify RColorBrewer custom color palette
col <- colorRampPalette(brewer.pal(10, "RdYlBu"))(256)
# Pheatmap
asv.taxa.ttt.mean.pheatmap <- pheatmap(asv.taxa.ttt.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = TRUE, cutree_cols = 3, cutree_rows = 3, angle_col=45, fontsize_col=8, legend = FALSE)
asv.taxa.ttt.mean.pheatmap.v2 <- pheatmap(asv.taxa.ttt.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = FALSE, cutree_cols = 3, gaps_row = c(2, 4), angle_col=45, fontsize_col=10, legend = FALSE, cellheight=16, cellwidth=18)
#Export as .eps (width:650, height:600; "ttt.heat.silva.eps")
TTT Soil Depth pvclust Analysis
asv.taxa.ttt.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.ttt.csv")
colnames(asv.taxa.ttt.mean.pvclust)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.ttt.mean.pvclust) <- asv.taxa.ttt.mean.pvclust$Phylum
asv.taxa.ttt.mean.pvclust<-as.data.frame(asv.taxa.ttt.mean.pvclust[-1])
# Scale data
asv.taxa.ttt.mean.pvclust<-scale(asv.taxa.ttt.mean.pvclust)
result.10k.ttt <- pvclust(asv.taxa.ttt.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.ttt)
pvrect(result.10k.ttt, alpha=0.95)
TTT Soil Taxa pvclust Analysis
asv.depth.ttt.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.ttt.cols.csv")
# Convert the first column (Phylum) into rownames
rownames(asv.depth.ttt.mean.pvclust) <- asv.depth.ttt.mean.pvclust$Phylum
asv.depth.ttt.mean.pvclust<-as.data.frame(asv.depth.ttt.mean.pvclust[-1])
# Scale data
asv.depth.ttt.mean.pvclust<-scale(asv.depth.ttt.mean.pvclust)
result.10k.ttt.taxa <- pvclust(asv.depth.ttt.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.ttt.taxa)
pvrect(result.10k.ttt.taxa, alpha=0.95)
Import mean abundance of taxa by depth for TWS heatmap
asv.taxa.tws.mean <- read.csv("QIIME/SILVA/R_Data/taxa.mean.tws.csv")
colnames(asv.taxa.tws.mean)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.tws.mean) <- asv.taxa.tws.mean$Phylum
asv.taxa.tws.mean<-as.data.frame(asv.taxa.tws.mean[-1])
# Convert dataframe into a matrix for heatmap
asv.taxa.tws.mean<-as.matrix(asv.taxa.tws.mean)
# Scale matrix values to generate Z-scores
asv.taxa.tws.mean<-scale(t(asv.taxa.tws.mean))
# Specify RColorBrewer custom color palette
col <- colorRampPalette(brewer.pal(10, "RdYlBu"))(256)
# Pheatmap
asv.taxa.tws.mean.pheatmap <- pheatmap(asv.taxa.tws.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = TRUE, cutree_cols = 3, cutree_rows = 3, angle_col=45, fontsize_col=8, legend = FALSE)
asv.taxa.tws.mean.pheatmap.v2 <- pheatmap(asv.taxa.tws.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = FALSE, cutree_cols = 3, gaps_row = c(1, 5), angle_col=45, fontsize_col=10, legend = FALSE, cellheight=16, cellwidth=18)
#Export as .eps (width:650, height:600; "tws.heat.silva.eps")
TWS pvclust analysis
asv.taxa.tws.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.tws.csv")
colnames(asv.taxa.tws.mean.pvclust)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.tws.mean.pvclust) <- asv.taxa.tws.mean.pvclust$Phylum
asv.taxa.tws.mean.pvclust<-as.data.frame(asv.taxa.tws.mean.pvclust[-1])
# Scale data
asv.taxa.tws.mean.pvclust<-scale(asv.taxa.tws.mean.pvclust)
result.10k.tws <- pvclust(asv.taxa.tws.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.tws)
pvrect(result.10k.tws, alpha=0.95)
TWS Soil Taxa pvclust Analysis
asv.depth.tws.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.tws.cols.csv")
# Convert the first column (Phylum) into rownames
rownames(asv.depth.tws.mean.pvclust) <- asv.depth.tws.mean.pvclust$Phylum
asv.depth.tws.mean.pvclust<-as.data.frame(asv.depth.tws.mean.pvclust[-1])
# Scale data
asv.depth.tws.mean.pvclust<-scale(asv.depth.tws.mean.pvclust)
result.10k.tws.taxa <- pvclust(asv.depth.tws.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.tws.taxa)
pvrect(result.10k.tws.taxa, alpha=0.95)
Import mean abundance of taxa by depth for STT heatmap
asv.taxa.stt.mean <- read.csv("QIIME/SILVA/R_Data/taxa.mean.stt.csv")
colnames(asv.taxa.stt.mean)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.stt.mean) <- asv.taxa.stt.mean$Phylum
asv.taxa.stt.mean<-as.data.frame(asv.taxa.stt.mean[-1])
# Convert dataframe into a matrix for heatmap
asv.taxa.stt.mean<-as.matrix(asv.taxa.stt.mean)
# Scale matrix values to generate Z-scores
asv.taxa.stt.mean<-scale(t(asv.taxa.stt.mean))
# Specify RColorBrewer custom color palette
col <- colorRampPalette(brewer.pal(10, "RdYlBu"))(256)
# Pheatmap
asv.taxa.stt.mean.pheatmap <- pheatmap(asv.taxa.stt.mean, clustering_method = "complete", cluster_cols = TRUE, cluster_rows = TRUE, cutree_cols = 2, cutree_rows = 2, angle_col=45, fontsize_col=8, legend = FALSE)
asv.taxa.stt.mean.pheatmap.v2 <- pheatmap(asv.taxa.stt.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = FALSE, cutree_cols = 3, gaps_row = c(3,5), angle_col=45, fontsize_col=10, legend = FALSE, cellheight=16, cellwidth=18)
#Export as .eps (width:650, height:600; "stt.heat.silva.eps")
STT pvclust analysis
asv.taxa.stt.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.stt.csv")
colnames(asv.taxa.stt.mean.pvclust)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","80-90")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.stt.mean.pvclust) <- asv.taxa.stt.mean.pvclust$Phylum
asv.taxa.stt.mean.pvclust<-as.data.frame(asv.taxa.stt.mean.pvclust[-1])
# Scale data
asv.taxa.stt.mean.pvclust<-scale(asv.taxa.stt.mean.pvclust)
result.10k.stt <- pvclust(asv.taxa.stt.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.stt)
pvrect(result.10k.stt, alpha=0.95)
STT Soil Taxa pvclust Analysis
asv.depth.stt.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.stt.cols.csv")
# Convert the first column (Phylum) into rownames
rownames(asv.depth.stt.mean.pvclust) <- asv.depth.stt.mean.pvclust$Phylum
asv.depth.stt.mean.pvclust<-as.data.frame(asv.depth.stt.mean.pvclust[-1])
# Scale data
asv.depth.stt.mean.pvclust<-scale(asv.depth.stt.mean.pvclust)
result.10k.stt.taxa <- pvclust(asv.depth.stt.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.stt.taxa)
pvrect(result.10k.stt.taxa, alpha=0.95)
Import mean abundance of taxa by depth for SWS heatmap
asv.taxa.sws.mean <- read.csv("QIIME/SILVA/R_Data/taxa.mean.sws.csv")
colnames(asv.taxa.sws.mean)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.sws.mean) <- asv.taxa.sws.mean$Phylum
asv.taxa.sws.mean<-as.data.frame(asv.taxa.sws.mean[-1])
# Convert dataframe into a matrix for heatmap
asv.taxa.sws.mean<-as.matrix(asv.taxa.sws.mean)
# Scale matrix values to generate Z-scores
asv.taxa.sws.mean<-scale(t(asv.taxa.sws.mean))
# Specify RColorBrewer custom color palette
col <- colorRampPalette(brewer.pal(10, "RdYlBu"))(256)
# Pheatmap
asv.taxa.sws.mean.pheatmap <- pheatmap(asv.taxa.sws.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = TRUE, cutree_cols = 2, cutree_rows = 2, angle_col=45, fontsize_col=8, legend = FALSE)
asv.taxa.sws.mean.pheatmap.v2 <- pheatmap(asv.taxa.sws.mean, clustering_method = "average", cluster_cols = TRUE, cluster_rows = FALSE, cutree_cols = 2, gaps_row = 4, angle_col=45, fontsize_col=10, legend = FALSE, cellheight=16, cellwidth=16)
#Export as .eps (width:650, height:600; "sws.heat.silva.eps")
SWS pvclust analysis
asv.taxa.sws.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.sws.csv")
colnames(asv.taxa.sws.mean.pvclust)<-c("Phylum","0-10","10-20","20-30","30-40","40-50","50-60","60-70")
# Convert the first column (Phylum) into rownames
rownames(asv.taxa.sws.mean.pvclust) <- asv.taxa.sws.mean.pvclust$Phylum
asv.taxa.sws.mean.pvclust<-as.data.frame(asv.taxa.sws.mean.pvclust[-1])
# Scale data
asv.taxa.sws.mean.pvclust<-scale(asv.taxa.sws.mean.pvclust)
result.10k.sws <- pvclust(asv.taxa.sws.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.sws)
pvrect(result.10k.sws, alpha=0.95)
SWS Soil Taxa pvclust Analysis
asv.depth.sws.mean.pvclust <- read.csv("QIIME/SILVA/R_Data/taxa.mean.sws.cols.csv")
# Convert the first column (Phylum) into rownames
rownames(asv.depth.sws.mean.pvclust) <- asv.depth.sws.mean.pvclust$Phylum
asv.depth.sws.mean.pvclust<-as.data.frame(asv.depth.sws.mean.pvclust[-1])
# Scale data
asv.depth.sws.mean.pvclust<-scale(asv.depth.sws.mean.pvclust)
result.10k.sws.taxa <- pvclust(asv.depth.sws.mean.pvclust, method.dist="cor", method.hclust="average", nboot=10000, parallel=TRUE)
Creating a temporary cluster...done:
socket cluster with 3 nodes on host ‘localhost’
Multiscale bootstrap... Done.
plot(result.10k.sws.taxa)
pvrect(result.10k.sws.taxa, alpha=0.95)
The session information is provided for full reproducibility.
devtools::session_info()
─ Session info ────────────────────────────────────────────────────────────────────
setting value
version R version 4.2.1 (2022-06-23)
os macOS Monterey 12.6
system x86_64, darwin17.0
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/Los_Angeles
date 2022-09-22
rstudio 2022.07.1+554 Spotted Wakerobin (desktop)
pandoc 2.18 @ /Applications/RStudio.app/Contents/MacOS/quarto/bin/tools/ (via rmarkdown)
─ Packages ────────────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.2.0)
ade4 1.7-19 2022-04-19 [1] CRAN (R 4.2.0)
agricolae * 1.3-5 2021-06-06 [1] CRAN (R 4.2.0)
AlgDesign 1.2.1 2022-05-25 [1] CRAN (R 4.2.0)
ape 5.6-2 2022-03-02 [1] CRAN (R 4.2.0)
backports 1.4.1 2021-12-13 [1] CRAN (R 4.2.0)
base64enc 0.1-3 2015-07-28 [1] CRAN (R 4.2.0)
Biobase 2.56.0 2022-04-26 [1] Bioconductor
BiocGenerics 0.42.0 2022-04-26 [1] Bioconductor
biomformat 1.24.0 2022-04-26 [1] Bioconductor
Biostrings 2.64.1 2022-08-18 [1] Bioconductor
bitops 1.0-7 2021-04-24 [1] CRAN (R 4.2.0)
broom 1.0.0 2022-07-01 [1] CRAN (R 4.2.0)
bslib 0.4.0 2022-07-16 [1] CRAN (R 4.2.0)
cachem 1.0.6 2021-08-19 [1] CRAN (R 4.2.0)
callr 3.7.2 2022-08-22 [1] CRAN (R 4.2.0)
car 3.1-0 2022-06-15 [1] CRAN (R 4.2.0)
carData 3.0-5 2022-01-06 [1] CRAN (R 4.2.0)
checkmate 2.1.0 2022-04-21 [1] CRAN (R 4.2.0)
cli 3.3.0 2022-04-25 [1] CRAN (R 4.2.0)
cluster 2.1.3 2022-03-28 [1] CRAN (R 4.2.1)
codetools 0.2-18 2020-11-04 [1] CRAN (R 4.2.1)
colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.2.0)
combinat 0.0-8 2012-10-29 [1] CRAN (R 4.2.0)
corrr * 0.4.4 2022-08-16 [1] CRAN (R 4.2.0)
crayon 1.5.1 2022-03-26 [1] CRAN (R 4.2.0)
data.table * 1.14.2 2021-09-27 [1] CRAN (R 4.2.0)
deldir 1.0-6 2021-10-23 [1] CRAN (R 4.2.0)
devtools * 2.4.4 2022-07-20 [1] CRAN (R 4.2.0)
digest 0.6.29 2021-12-01 [1] CRAN (R 4.2.0)
dplyr * 1.0.9 2022-04-28 [1] CRAN (R 4.2.0)
DT 0.24 2022-08-09 [1] CRAN (R 4.2.0)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.2.0)
evaluate 0.16 2022-08-09 [1] CRAN (R 4.2.0)
fansi 1.0.3 2022-03-24 [1] CRAN (R 4.2.0)
farver 2.1.1 2022-07-06 [1] CRAN (R 4.2.0)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.2.0)
forcats * 0.5.2 2022-08-19 [1] CRAN (R 4.2.0)
foreach 1.5.2 2022-02-02 [1] CRAN (R 4.2.0)
foreign 0.8-82 2022-01-16 [1] CRAN (R 4.2.1)
Formula 1.2-4 2020-10-16 [1] CRAN (R 4.2.0)
fs 1.5.2 2021-12-08 [1] CRAN (R 4.2.0)
generics 0.1.3 2022-07-05 [1] CRAN (R 4.2.0)
GenomeInfoDb 1.32.3 2022-08-09 [1] Bioconductor
GenomeInfoDbData 1.2.8 2022-08-29 [1] Bioconductor
ggalluvial * 0.12.3 2020-12-05 [1] CRAN (R 4.2.0)
ggdendro * 0.1.23 2022-02-16 [1] CRAN (R 4.2.0)
ggplot2 * 3.3.6 2022-05-03 [1] CRAN (R 4.2.0)
ggpubr * 0.4.0 2020-06-27 [1] CRAN (R 4.2.0)
ggsignif 0.6.3 2021-09-09 [1] CRAN (R 4.2.0)
glue 1.6.2 2022-02-24 [1] CRAN (R 4.2.0)
gridExtra * 2.3 2017-09-09 [1] CRAN (R 4.2.0)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.2.0)
haven 2.5.1 2022-08-22 [1] CRAN (R 4.2.0)
highr 0.9 2021-04-16 [1] CRAN (R 4.2.0)
Hmisc 4.7-1 2022-08-15 [1] CRAN (R 4.2.0)
hms 1.1.2 2022-08-19 [1] CRAN (R 4.2.0)
htmlTable 2.4.1 2022-07-07 [1] CRAN (R 4.2.0)
htmltools 0.5.3 2022-07-18 [1] CRAN (R 4.2.0)
htmlwidgets 1.5.4 2021-09-08 [1] CRAN (R 4.2.0)
httpuv 1.6.5 2022-01-05 [1] CRAN (R 4.2.0)
igraph 1.3.4 2022-07-19 [1] CRAN (R 4.2.0)
interp 1.1-3 2022-07-13 [1] CRAN (R 4.2.0)
IRanges 2.30.1 2022-08-18 [1] Bioconductor
iterators 1.0.14 2022-02-05 [1] CRAN (R 4.2.0)
jpeg 0.1-9 2021-07-24 [1] CRAN (R 4.2.0)
jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.2.0)
jsonlite 1.8.0 2022-02-22 [1] CRAN (R 4.2.0)
klaR 1.7-1 2022-06-27 [1] CRAN (R 4.2.0)
knitr * 1.40 2022-08-24 [1] CRAN (R 4.2.0)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.2.0)
labelled 2.9.1 2022-05-05 [1] CRAN (R 4.2.0)
later 1.3.0 2021-08-18 [1] CRAN (R 4.2.0)
lattice * 0.20-45 2021-09-22 [1] CRAN (R 4.2.1)
latticeExtra 0.6-30 2022-07-04 [1] CRAN (R 4.2.0)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.2.0)
magrittr * 2.0.3 2022-03-30 [1] CRAN (R 4.2.0)
MASS 7.3-57 2022-04-22 [1] CRAN (R 4.2.1)
Matrix 1.4-1 2022-03-23 [1] CRAN (R 4.2.1)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.2.0)
mgcv 1.8-40 2022-03-29 [1] CRAN (R 4.2.1)
microeco * 0.11.0 2022-06-22 [1] CRAN (R 4.2.0)
mime 0.12 2021-09-28 [1] CRAN (R 4.2.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.2.0)
multtest 2.52.0 2022-04-26 [1] Bioconductor
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.2.0)
NADA 1.6-1.1 2020-03-22 [1] CRAN (R 4.2.0)
nlme 3.1-157 2022-03-25 [1] CRAN (R 4.2.1)
nnet 7.3-17 2022-01-16 [1] CRAN (R 4.2.1)
patchwork * 1.1.2 2022-08-19 [1] CRAN (R 4.2.0)
permute * 0.9-7 2022-01-27 [1] CRAN (R 4.2.0)
pheatmap * 1.0.12 2019-01-04 [1] CRAN (R 4.2.0)
phyloseq 1.40.0 2022-04-26 [1] Bioconductor
pillar 1.8.1 2022-08-19 [1] CRAN (R 4.2.0)
pkgbuild 1.3.1 2021-12-20 [1] CRAN (R 4.2.0)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.2.0)
pkgload 1.3.0 2022-06-27 [1] CRAN (R 4.2.0)
plyr 1.8.7 2022-03-24 [1] CRAN (R 4.2.0)
png 0.1-7 2013-12-03 [1] CRAN (R 4.2.0)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.2.0)
processx 3.7.0 2022-07-07 [1] CRAN (R 4.2.0)
profvis 0.3.7 2020-11-02 [1] CRAN (R 4.2.0)
promises 1.2.0.1 2021-02-11 [1] CRAN (R 4.2.0)
ps 1.7.1 2022-06-18 [1] CRAN (R 4.2.0)
purrr 0.3.4 2020-04-17 [1] CRAN (R 4.2.0)
pvclust * 2.2-0 2019-11-19 [1] CRAN (R 4.2.0)
qiime2R * 0.99.6 2022-08-29 [1] Github (jbisanz/qiime2R@2a3cee1)
questionr 0.7.7 2022-01-31 [1] CRAN (R 4.2.0)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.2.0)
RColorBrewer * 1.1-3 2022-04-03 [1] CRAN (R 4.2.0)
Rcpp 1.0.9 2022-07-08 [1] CRAN (R 4.2.0)
RCurl 1.98-1.8 2022-07-30 [1] CRAN (R 4.2.0)
remotes 2.4.2 2021-11-30 [1] CRAN (R 4.2.0)
reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.2.0)
rhdf5 2.40.0 2022-04-26 [1] Bioconductor
rhdf5filters 1.8.0 2022-04-26 [1] Bioconductor
Rhdf5lib 1.18.2 2022-05-17 [1] Bioconductor
rlang 1.0.4 2022-07-12 [1] CRAN (R 4.2.0)
rmarkdown 2.16 2022-08-24 [1] CRAN (R 4.2.0)
rpart 4.1.16 2022-01-24 [1] CRAN (R 4.2.1)
rsconnect 0.8.27 2022-07-12 [1] CRAN (R 4.2.1)
rstatix 0.7.0 2021-02-13 [1] CRAN (R 4.2.0)
rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.2.0)
S4Vectors 0.34.0 2022-04-26 [1] Bioconductor
sass 0.4.2 2022-07-16 [1] CRAN (R 4.2.0)
scales 1.2.1 2022-08-20 [1] CRAN (R 4.2.0)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.0)
shiny 1.7.2 2022-07-19 [1] CRAN (R 4.2.0)
stringi 1.7.8 2022-07-11 [1] CRAN (R 4.2.0)
stringr 1.4.1 2022-08-20 [1] CRAN (R 4.2.0)
survival 3.3-1 2022-03-03 [1] CRAN (R 4.2.1)
tibble 3.1.8 2022-07-22 [1] CRAN (R 4.2.0)
tidyr * 1.2.0 2022-02-01 [1] CRAN (R 4.2.0)
tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.2.0)
truncnorm 1.0-8 2018-02-27 [1] CRAN (R 4.2.0)
UpSetR * 1.4.0 2019-05-22 [1] CRAN (R 4.2.0)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.2.0)
usethis * 2.1.6 2022-05-25 [1] CRAN (R 4.2.0)
utf8 1.2.2 2021-07-24 [1] CRAN (R 4.2.0)
vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.2.0)
vegan * 2.6-2 2022-04-17 [1] CRAN (R 4.2.0)
withr 2.5.0 2022-03-03 [1] CRAN (R 4.2.0)
xfun 0.32 2022-08-10 [1] CRAN (R 4.2.0)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.2.0)
XVector 0.36.0 2022-04-26 [1] Bioconductor
yaml 2.3.5 2022-02-21 [1] CRAN (R 4.2.0)
zCompositions 1.4.0-1 2022-03-26 [1] CRAN (R 4.2.0)
zlibbioc 1.42.0 2022-04-26 [1] Bioconductor
[1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library
───────────────────────────────────────────────────────────────────────────────────