Chapter 10 Test Example

10.1 Loading packages

library(XMAS2)
library(dplyr)
library(tibble)
library(phyloseq)
library(ggplot2)
library(ggpubr)
library(readxl)

10.2 Loading data

dada2_res <- readRDS("DataSet/RawData/dada2_res.rds")
tree <- phyloseq::read_tree("DataSet/RawData/tree.nwk")
metadata <- readxl::read_xlsx("DataSet/RawData/诺禾宏基因组678月-ZH.xlsx", sheet = 3)

metaphlan2_res <- read.table("DataSet/RawData/merged_metaphlan2.tsv",
                             header = TRUE, stringsAsFactors = FALSE) %>%
  tibble::rownames_to_column("ID")

10.3 Metaphlan2 result

metaphlan2_res_list <- import_metaphlan_taxa(data_metaphlan2 = metaphlan2_res, 
                                             taxa_level = "Species")
tax_tab <- metaphlan2_res_list$tax_tab

otu_tab <- metaphlan2_res_list$abu_tab
colnames(otu_tab) <- gsub("X", "S_", colnames(otu_tab))

sam_tab <- metadata %>% data.frame() %>%
  dplyr::mutate(Group=ifelse(SampleType == "粪便", "Stool", 
                             ifelse(SampleType == "QC", "QC", "Product"))) %>%
  dplyr::select(SampleTubeID, Group, everything())
rownames(sam_tab) <- paste0("S_", sam_tab$SeqID_MGS)

overlap_samples <- intersect(rownames(sam_tab), colnames(otu_tab))

otu_tab_cln <- otu_tab[, match(overlap_samples, colnames(otu_tab))]
sam_tab_cln <- sam_tab[match(overlap_samples, rownames(sam_tab)), ]
rownames(sam_tab_cln) <- overlap_samples

metaphlan2_ps <- get_metaphlan_phyloseq(
                    otu_tab = otu_tab_cln, 
                    sam_tab = sam_tab_cln,
                    tax_tab = tax_tab)
metaphlan2_ps
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 328 taxa and 145 samples ]
## sample_data() Sample Data:       [ 145 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 328 taxa by 7 taxonomic ranks ]

10.4 Step1: Reads’ Track

plot_Dada2Track(data = dada2_res$reads_track) +
  guides(color = "none")
DADA2' read track (Example)

Figure 10.1: DADA2’ read track (Example)

10.5 Step2: Convert inputs into phyloseq data

tax_tab_16s <- import_dada2_taxa(dada2_taxa = dada2_res$tax_tab)

otu_tab_16s <- dada2_res$seq_tab
# Shouldn't use the Total Number as SampleID (wrong: 123456; right: X123456)
rownames(otu_tab_16s) <- paste0("S_", rownames(otu_tab_16s))

sam_tab_16s <- metadata %>% data.frame() %>%
  dplyr::mutate(Group=ifelse(SampleType == "粪便", "Stool", 
                             ifelse(SampleType == "QC", "QC", "Product"))) %>%
  dplyr::filter(SampleTubeID %in% sam_tab_cln$SampleTubeID) %>% 
  dplyr::select(SampleTubeID, Group, everything())
rownames(sam_tab_16s) <- paste0("S_", sam_tab_16s$SeqID_16s)

overlap_samples_16s <- intersect(rownames(sam_tab_16s), rownames(otu_tab_16s))
otu_tab_16s_cln <- otu_tab_16s[match(overlap_samples_16s, rownames(otu_tab_16s)), ]
sam_tab_16s_cln <- sam_tab_16s[match(overlap_samples_16s, rownames(sam_tab_16s)), ]

dada2_ps <- get_dada2_phyloseq(
                seq_tab = otu_tab_16s_cln, 
                tax_tab = tax_tab_16s, 
                sam_tab = sam_tab_16s_cln, 
                phy_tree = tree)
dada2_ps
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 1948 taxa and 145 samples ]
## sample_data() Sample Data:       [ 145 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 1948 taxa by 7 taxonomic ranks ]
## phy_tree()    Phylogenetic Tree: [ 1948 tips and 1933 internal nodes ]
## refseq()      DNAStringSet:      [ 1948 reference sequences ]
if (!dir.exists("DataSet/Step2/")) {
  dir.create("DataSet/Step2/")
}
saveRDS(dada2_ps, "DataSet/Step2/Donor_16s_phyloseq.RDS", compress = TRUE)

10.6 Step3: BRS checking

dada2_ps <- readRDS("DataSet/Step2/Donor_16s_phyloseq.RDS")
dada2_ps_genus <- summarize_taxa(ps = dada2_ps, 
                                 taxa_level = "Genus")
tail(dada2_ps_genus@sam_data %>% data.frame())
##             SampleTubeID   Group Date_Sequencing ProductID SampleType ProductBatch Date_Sampling Date_Receiving SeqID_MGS
## S_7929      GGM50-210730   Stool      2021-08-03       M50       粪便 CYM50-210735    2021.07.30     2021-08-06      7769
## S_7930 CYM50-210735-0727 Product      2021-08-03       M50   肠菌胶囊 CYM50-210735    2021.07.27     2021-08-06      7770
## S_7931 CYM50-210735-0728 Product      2021-08-03       M50   肠菌胶囊 CYM50-210735    2021.07.28     2021-08-06      7771
## S_7932 CYM50-210735-0729 Product      2021-08-03       M50   肠菌胶囊 CYM50-210735    2021.07.29     2021-08-06      7772
## S_7933 CYM50-210735-0730 Product      2021-08-03       M50   肠菌胶囊 CYM50-210735    2021.07.30     2021-08-06      7773
## S_7327         Community      QC            <NA>       Ref         QC         <NA>          <NA>           <NA>      7222
##        SeqID_16s                                             Pipeline_MGS
## S_7929      7929 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
## S_7930      7930 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
## S_7931      7931 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
## S_7932      7932 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
## S_7933      7933 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
## S_7327      7327 /share/work/HPC/work_tmp/PipelineJob_180_20210923/output
##                                                                Pipeline_16s
## S_7929 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
## S_7930 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
## S_7931 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
## S_7932 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
## S_7933 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
## S_7327 /share/projects/Engineering/pipeline_output/PipelineJob_304_20211203
run_RefCheck(
    ps = dada2_ps_genus,
    BRS_ID = "S_7327",
    Ref_type = "16s")
## Noting: the Reference Matrix is for 16s
## 
## ############Matched baterica of the BRS sample#############
## The number of BRS' bacteria matched the Reference Matrix is [3]
## g__Lactobacillus
## g__Escherichia_Shigella
## g__Enterococcus
## The number of bacteria unmatched the Reference Matrix is [12]
## g__Bifidobacterium
## g__Bacteroides
## g__Faecalibacterium
## g__Parabacteroides
## g__Collinsella
## g__Coprococcus_3
## g__Dorea
## g__Streptococcus
## g__Roseburia
## g__Anaerostipes
## g__Prevotella_9
## g__Eggerthella
## The number of the additional bacteria compared to the Reference Matrix is [6]
## ###########################################################
## 
## ##################Status of the BRS sample##################
## Whether the BRS has the all bateria of Reference Matrix: FALSE
## Correlation Coefficient of the BRS is: 6
## Bray Curtis of the BRS is: 0.2265
## Impurity of the BRS is: 68.36
## ###########################################################
## #####Final Evaluation Results of the BRS #######
## The BRS of sequencing dataset didn't pass the cutoff of the Reference Matrix
## ###########################################################
##                             8002        8003        8004        8005     8006      8007      8008      8009    S_7327     mean
## Lactobacillus         2.61732573  3.36856272  3.44379163  3.88394343  5.92927  5.780008  5.781891  6.326723 12.263006  5.48828
## Escherichia_Shigella 15.27581475 16.00265210 12.36527954 14.08077142 10.84235 13.432037 10.157432 11.599456 12.119942 12.87508
## Enterococcus         14.51444842 14.66472707 11.04239952 11.66901114 13.16748 12.073609 12.887711 12.849247  7.258671 12.23637
## Impurity_level        0.08562792  0.06531291  0.05987576  0.06228054  0.00000  0.000000  0.000000  0.000000 68.360000  7.62590
##                                                                   Evaluation
## Lactobacillus        S_7327 didn't pass the threshold (2022-08-09 16:05:39).
## Escherichia_Shigella S_7327 didn't pass the threshold (2022-08-09 16:05:39).
## Enterococcus         S_7327 didn't pass the threshold (2022-08-09 16:05:39).
## Impurity_level       S_7327 didn't pass the threshold (2022-08-09 16:05:39).
dada2_ps_remove_BRS <- get_GroupPhyloseq(
                           ps = dada2_ps,
                           group = "Group",
                           group_names = "QC",
                           discard = TRUE)
dada2_ps_remove_BRS
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 1948 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 1948 taxa by 7 taxonomic ranks ]
## phy_tree()    Phylogenetic Tree: [ 1948 tips and 1933 internal nodes ]
## refseq()      DNAStringSet:      [ 1948 reference sequences ]

if (!dir.exists("DataSet/Step3/")) {
  dir.create("DataSet/Step3/")
}
saveRDS(dada2_ps_remove_BRS, "DataSet/Step3/Donor_16s_phyloseq_remove_BRS.RDS", compress = TRUE)

10.7 Step4: Rarefaction curves

dada2_ps_remove_BRS <- readRDS("DataSet/Step3/Donor_16s_phyloseq_remove_BRS.RDS")

plot_RarefCurve(ps = dada2_ps_remove_BRS,
               taxa_level = "OTU",
               step = 400,
               label = "Group",
               color = "Group")
## rarefying sample S_7271
## rarefying sample S_7272
## rarefying sample S_7273
## rarefying sample S_7274
## rarefying sample S_7275
## rarefying sample S_7276
## rarefying sample S_7277
## rarefying sample S_7278
## rarefying sample S_7279
## rarefying sample S_7280
## rarefying sample S_7281
## rarefying sample S_7282
## rarefying sample S_7283
## rarefying sample S_7284
## rarefying sample S_7285
## rarefying sample S_7286
## rarefying sample S_7287
## rarefying sample S_7288
## rarefying sample S_7289
## rarefying sample S_7290
## rarefying sample S_7291
## rarefying sample S_7292
## rarefying sample S_7293
## rarefying sample S_7294
## rarefying sample S_7295
## rarefying sample S_7296
## rarefying sample S_7297
## rarefying sample S_7298
## rarefying sample S_7299
## rarefying sample S_7300
## rarefying sample S_7301
## rarefying sample S_7302
## rarefying sample S_7303
## rarefying sample S_7304
## rarefying sample S_7305
## rarefying sample S_7306
## rarefying sample S_7307
## rarefying sample S_7308
## rarefying sample S_7309
## rarefying sample S_7310
## rarefying sample S_7311
## rarefying sample S_7312
## rarefying sample S_7313
## rarefying sample S_7314
## rarefying sample S_7315
## rarefying sample S_7316
## rarefying sample S_7317
## rarefying sample S_7318
## rarefying sample S_7319
## rarefying sample S_7320
## rarefying sample S_7321
## rarefying sample S_7322
## rarefying sample S_7323
## rarefying sample S_7324
## rarefying sample S_7325
## rarefying sample S_7326
## rarefying sample S_7846
## rarefying sample S_7847
## rarefying sample S_7848
## rarefying sample S_7849
## rarefying sample S_7850
## rarefying sample S_7851
## rarefying sample S_7852
## rarefying sample S_7853
## rarefying sample S_7854
## rarefying sample S_7855
## rarefying sample S_7856
## rarefying sample S_7857
## rarefying sample S_7858
## rarefying sample S_7859
## rarefying sample S_7860
## rarefying sample S_7861
## rarefying sample S_7862
## rarefying sample S_7863
## rarefying sample S_7864
## rarefying sample S_7865
## rarefying sample S_7866
## rarefying sample S_7867
## rarefying sample S_7868
## rarefying sample S_7869
## rarefying sample S_7870
## rarefying sample S_7871
## rarefying sample S_7872
## rarefying sample S_7873
## rarefying sample S_7874
## rarefying sample S_7875
## rarefying sample S_7876
## rarefying sample S_7877
## rarefying sample S_7878
## rarefying sample S_7879
## rarefying sample S_7880
## rarefying sample S_7881
## rarefying sample S_7882
## rarefying sample S_7883
## rarefying sample S_7884
## rarefying sample S_7885
## rarefying sample S_7886
## rarefying sample S_7887
## rarefying sample S_7888
## rarefying sample S_7889
## rarefying sample S_7890
## rarefying sample S_7891
## rarefying sample S_7892
## rarefying sample S_7893
## rarefying sample S_7894
## rarefying sample S_7895
## rarefying sample S_7896
## rarefying sample S_7897
## rarefying sample S_7898
## rarefying sample S_7899
## rarefying sample S_7900
## rarefying sample S_7901
## rarefying sample S_7902
## rarefying sample S_7903
## rarefying sample S_7904
## rarefying sample S_7905
## rarefying sample S_7906
## rarefying sample S_7907
## rarefying sample S_7908
## rarefying sample S_7909
## rarefying sample S_7910
## rarefying sample S_7911
## rarefying sample S_7912
## rarefying sample S_7913
## rarefying sample S_7914
## rarefying sample S_7915
## rarefying sample S_7916
## rarefying sample S_7917
## rarefying sample S_7918
## rarefying sample S_7919
## rarefying sample S_7920
## rarefying sample S_7921
## rarefying sample S_7922
## rarefying sample S_7923
## rarefying sample S_7924
## rarefying sample S_7925
## rarefying sample S_7926
## rarefying sample S_7927
## rarefying sample S_7928
## rarefying sample S_7929
## rarefying sample S_7930
## rarefying sample S_7931
## rarefying sample S_7932
## rarefying sample S_7933
Rarefaction curves (Example)

Figure 10.2: Rarefaction curves (Example)

10.8 Step5: Rarefy otu counts

dada2_ps_remove_BRS <- readRDS("DataSet/Step3/Donor_16s_phyloseq_remove_BRS.RDS")
summarize_phyloseq(ps = dada2_ps_remove_BRS)
## [[1]]
## [1] "1] Min. number of reads = 33267"
## 
## [[2]]
## [1] "2] Max. number of reads = 153367"
## 
## [[3]]
## [1] "3] Total number of reads = 10909876"
## 
## [[4]]
## [1] "4] Average number of reads = 75763.0277777778"
## 
## [[5]]
## [1] "5] Median number of reads = 71985.5"
## 
## [[6]]
## [1] "7] Sparsity = 0.912599104494638"
## 
## [[7]]
## [1] "6] Any OTU sum to 1 or less? YES"
## 
## [[8]]
## [1] "8] Number of singletons = 837"
## 
## [[9]]
## [1] "9] Percent of OTUs that are singletons\n        (i.e. exactly one read detected across all samples)0"
## 
## [[10]]
## [1] "10] Number of sample variables are: 12"
## 
## [[11]]
##  [1] "SampleTubeID"    "Group"           "Date_Sequencing" "ProductID"       "SampleType"      "ProductBatch"   
##  [7] "Date_Sampling"   "Date_Receiving"  "SeqID_MGS"       "SeqID_16s"       "Pipeline_MGS"    "Pipeline_16s"
dada2_ps_rare <- norm_rarefy(object = dada2_ps_remove_BRS, 
                             size = 33267)
dada2_ps_rare
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 1091 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 1091 taxa by 7 taxonomic ranks ]
## phy_tree()    Phylogenetic Tree: [ 1091 tips and 1086 internal nodes ]
## refseq()      DNAStringSet:      [ 1091 reference sequences ]
if (!dir.exists("DataSet/Step5/")) {
  dir.create("DataSet/Step5/")
}
saveRDS(dada2_ps_rare, "DataSet/Step5/Donor_16s_phyloseq_remove_BRS_rare.RDS", compress = TRUE)

10.9 Step6: Extracting specific taxonomic level

dada2_ps_rare <- readRDS("DataSet/Step5/Donor_16s_phyloseq_remove_BRS_rare.RDS")

dada2_ps_rare_genus <- summarize_taxa(ps = dada2_ps_rare, 
                                      taxa_level = "Genus")
dada2_ps_rare_genus
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 225 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 225 taxa by 6 taxonomic ranks ]
dada2_ps_rare_order <- summarize_taxa(ps = dada2_ps_rare, 
                                      taxa_level = "Order")
dada2_ps_rare_order
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 37 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 37 taxa by 4 taxonomic ranks ]
dada2_ps_rare_phylum <- summarize_taxa(ps = dada2_ps_rare, 
                                       taxa_level = "Phylum")
dada2_ps_rare_phylum
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 15 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 15 taxa by 2 taxonomic ranks ]
if (!dir.exists("DataSet/Step6/")) {
  dir.create("DataSet/Step6/")
}
saveRDS(dada2_ps_rare_genus, "DataSet/Step6/Donor_16s_phyloseq_remove_BRS_rare_genus.RDS", compress = TRUE)
saveRDS(dada2_ps_rare_order, "DataSet/Step6/Donor_16s_phyloseq_remove_BRS_rare_order.RDS", compress = TRUE)
saveRDS(dada2_ps_rare_phylum, "DataSet/Step6/Donor_16s_phyloseq_remove_BRS_rare_phylum.RDS", compress = TRUE)

10.10 Step7: GlobalView

dada2_ps_rare_genus <- readRDS("DataSet/Step6/Donor_16s_phyloseq_remove_BRS_rare_genus.RDS")

# alpha
dada2_ps_rare_genus_alpha <- run_alpha_diversity(ps = dada2_ps_rare_genus, 
                                                 measures = c("Shannon", "Chao1", "Observed"))
plot_boxplot(data = dada2_ps_rare_genus_alpha,
             y_index = c("Shannon", "Chao1", "Observed"),
             group = "Group",
             group_names = c("Stool", "Product"),
             group_color = c("red", "blue"))
diversity and ordination and composition(Example)

Figure 10.3: diversity and ordination and composition(Example)

# beta
dada2_ps_beta <- run_beta_diversity(ps = dada2_ps_rare_genus, 
                                    method = "bray")
plot_distance_corrplot(datMatrix = dada2_ps_beta$BetaDistance)
diversity and ordination and composition(Example)

Figure 10.4: diversity and ordination and composition(Example)

# permanova
dada2_ps_per <- run_permanova(ps = dada2_ps_rare_genus, 
                              method = "bray", 
                              columns = "Group")
print(dada2_ps_per)
##       SumsOfSample Df SumsOfSqs  MeanSqs  F.Model         R2 Pr(>F) AdjustedPvalue
## Group          144  1  1.335187 1.335187 9.669403 0.06375315  0.001          0.001
# beta dispersion
beta_df <- run_beta_diversity(ps = dada2_ps_rare_genus, 
                              method = "bray", 
                              group = "Group")
## 
## Permutation test for homogeneity of multivariate dispersions
## Permutation: free
## Number of permutations: 999
## 
## Response: Distances
##            Df  Sum Sq  Mean Sq      F N.Perm Pr(>F)  
## Groups      1 0.04375 0.043749 5.6785    999  0.016 *
## Residuals 142 1.09402 0.007704                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Pairwise comparisons:
## (Observed p-value below diagonal, permuted p-value above diagonal)
##          Product Stool
## Product          0.017
## Stool   0.018497
# ordination
dada2_ps_ordination <- run_ordination(
                           ps = dada2_ps_rare_genus,
                           group = "Group",
                           method = "PCoA")

plot_Ordination(ResultList = dada2_ps_ordination, 
                group = "Group", 
                group_names = c("Stool", "Product"),
                group_color = c("blue", "red"))
diversity and ordination and composition(Example)

Figure 10.5: diversity and ordination and composition(Example)

# Microbial composition
plot_stacked_bar_XIVZ(
        phyloseq = dada2_ps_rare_genus,
        level = "Phylum",
        feature = "Group")
diversity and ordination and composition(Example)

Figure 10.6: diversity and ordination and composition(Example)

10.11 Step8: Differential Analysis

dada2_ps_rare_genus <- readRDS("DataSet/Step6/Donor_16s_phyloseq_remove_BRS_rare_genus.RDS")

# filter & trim
dada2_ps_rare_genus_filter <- run_filter(ps = dada2_ps_rare_genus, 
                                         cutoff = 10, 
                                         unclass = TRUE)
dada2_ps_rare_genus_filter_trim <- run_trim(object = dada2_ps_rare_genus_filter, 
                                            cutoff = 0.1, 
                                            trim = "feature")
dada2_ps_rare_genus_filter_trim
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 127 taxa and 144 samples ]
## sample_data() Sample Data:       [ 144 samples by 12 sample variables ]
## tax_table()   Taxonomy Table:    [ 127 taxa by 6 taxonomic ranks ]
# lefse
dada2_ps_lefse <- run_lefse(
                      ps = dada2_ps_rare_genus_filter_trim,
                      group = "Group",
                      group_names = c("Stool", "Product"),
                      norm = "CPM",
                      Lda = 2)

# # don't run this code when you do lefse in reality
# dada2_ps_lefse$LDA_Score <- dada2_ps_lefse$LDA_Score * 1000

plot_lefse(
    da_res = dada2_ps_lefse,
    x_index = "LDA_Score",
    x_index_cutoff = 2,
    group_color = c("green", "red"))
Differential Analysis (Example)

Figure 10.7: Differential Analysis (Example)

dada2_ps_wilcox <- run_wilcox(
                      ps = dada2_ps_rare_genus_filter_trim,
                      group = "Group",
                      group_names = c("Stool", "Product"))
plot_volcano(
    da_res = dada2_ps_wilcox,
    group_names = c("Stool", "Product"),
    x_index = "Log2FoldChange (Rank)\nStool_vs_Product",
    x_index_cutoff = 0.5,
    y_index = "Pvalue",
    y_index_cutoff = 0.05,
    group_color = c("red", "grey", "blue"),
    topN = 5)
Differential Analysis (Example)

Figure 10.8: Differential Analysis (Example)

if (!dir.exists("DataSet/Step8/")) {
  dir.create("DataSet/Step8/")
}
saveRDS(dada2_ps_rare_genus_filter_trim, "DataSet/Step8/Donor_16s_phyloseq_remove_BRS_rare_genus_filter_trim.RDS", compress = TRUE)

10.12 Systematic Information

devtools::session_info()
## ─ Session info ──────────────────────────────────────────────────────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.1.2 (2021-11-01)
##  os       macOS Monterey 12.2.1
##  system   x86_64, darwin17.0
##  ui       RStudio
##  language (EN)
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       Asia/Shanghai
##  date     2022-08-09
##  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.1.0)
##  ade4                   1.7-18   2021-09-16 [1] CRAN (R 4.1.0)
##  ALDEx2                 1.26.0   2021-10-26 [1] Bioconductor
##  annotate               1.72.0   2021-10-26 [1] Bioconductor
##  AnnotationDbi          1.56.2   2021-11-09 [1] Bioconductor
##  ape                    5.6-2    2022-03-02 [1] CRAN (R 4.1.2)
##  assertthat             0.2.1    2019-03-21 [1] CRAN (R 4.1.0)
##  backports              1.4.1    2021-12-13 [1] CRAN (R 4.1.0)
##  base64enc              0.1-3    2015-07-28 [1] CRAN (R 4.1.0)
##  Biobase                2.54.0   2021-10-26 [1] Bioconductor
##  BiocGenerics           0.40.0   2021-10-26 [1] Bioconductor
##  BiocParallel           1.28.3   2021-12-09 [1] Bioconductor
##  biomformat             1.22.0   2021-10-26 [1] Bioconductor
##  Biostrings             2.62.0   2021-10-26 [1] Bioconductor
##  bit                    4.0.4    2020-08-04 [1] CRAN (R 4.1.0)
##  bit64                  4.0.5    2020-08-30 [1] CRAN (R 4.1.0)
##  bitops                 1.0-7    2021-04-24 [1] CRAN (R 4.1.0)
##  blob                   1.2.2    2021-07-23 [1] CRAN (R 4.1.0)
##  bookdown               0.27     2022-06-14 [1] CRAN (R 4.1.2)
##  brio                   1.1.3    2021-11-30 [1] CRAN (R 4.1.0)
##  broom                  0.7.12   2022-01-28 [1] CRAN (R 4.1.2)
##  bslib                  0.3.1    2021-10-06 [1] CRAN (R 4.1.0)
##  cachem                 1.0.6    2021-08-19 [1] CRAN (R 4.1.0)
##  callr                  3.7.0    2021-04-20 [1] CRAN (R 4.1.0)
##  car                    3.0-12   2021-11-06 [1] CRAN (R 4.1.0)
##  carData                3.0-5    2022-01-06 [1] CRAN (R 4.1.2)
##  caTools                1.18.2   2021-03-28 [1] CRAN (R 4.1.0)
##  cccd                   1.6      2022-04-08 [1] CRAN (R 4.1.2)
##  cellranger             1.1.0    2016-07-27 [1] CRAN (R 4.1.0)
##  checkmate              2.0.0    2020-02-06 [1] CRAN (R 4.1.0)
##  cli                    3.3.0    2022-04-25 [1] CRAN (R 4.1.2)
##  cluster                2.1.2    2021-04-17 [1] CRAN (R 4.1.2)
##  codetools              0.2-18   2020-11-04 [1] CRAN (R 4.1.2)
##  coin                   1.4-2    2021-10-08 [1] CRAN (R 4.1.0)
##  colorspace             2.0-3    2022-02-21 [1] CRAN (R 4.1.2)
##  conflicted             1.1.0    2021-11-26 [1] CRAN (R 4.1.0)
##  corpcor                1.6.10   2021-09-16 [1] CRAN (R 4.1.0)
##  corrplot               0.92     2021-11-18 [1] CRAN (R 4.1.0)
##  cowplot                1.1.1    2020-12-30 [1] CRAN (R 4.1.0)
##  crayon                 1.5.0    2022-02-14 [1] CRAN (R 4.1.2)
##  data.table             1.14.2   2021-09-27 [1] CRAN (R 4.1.0)
##  DBI                    1.1.2    2021-12-20 [1] CRAN (R 4.1.0)
##  DelayedArray           0.20.0   2021-10-26 [1] Bioconductor
##  deldir                 1.0-6    2021-10-23 [1] CRAN (R 4.1.0)
##  desc                   1.4.1    2022-03-06 [1] CRAN (R 4.1.2)
##  DESeq2                 1.34.0   2021-10-26 [1] Bioconductor
##  devtools               2.4.3    2021-11-30 [1] CRAN (R 4.1.0)
##  digest                 0.6.29   2021-12-01 [1] CRAN (R 4.1.0)
##  doParallel             1.0.17   2022-02-07 [1] CRAN (R 4.1.2)
##  doSNOW                 1.0.20   2022-02-04 [1] CRAN (R 4.1.2)
##  dplyr                * 1.0.8    2022-02-08 [1] CRAN (R 4.1.2)
##  dynamicTreeCut         1.63-1   2016-03-11 [1] CRAN (R 4.1.0)
##  edgeR                  3.36.0   2021-10-26 [1] Bioconductor
##  ellipsis               0.3.2    2021-04-29 [1] CRAN (R 4.1.0)
##  evaluate               0.15     2022-02-18 [1] CRAN (R 4.1.2)
##  fansi                  1.0.2    2022-01-14 [1] CRAN (R 4.1.2)
##  farver                 2.1.0    2021-02-28 [1] CRAN (R 4.1.0)
##  fastcluster            1.2.3    2021-05-24 [1] CRAN (R 4.1.0)
##  fastmap                1.1.0    2021-01-25 [1] CRAN (R 4.1.0)
##  fdrtool                1.2.17   2021-11-13 [1] CRAN (R 4.1.0)
##  filematrix             1.3      2018-02-27 [1] CRAN (R 4.1.0)
##  FNN                    1.1.3    2019-02-15 [1] CRAN (R 4.1.0)
##  foreach                1.5.2    2022-02-02 [1] CRAN (R 4.1.2)
##  foreign                0.8-82   2022-01-13 [1] CRAN (R 4.1.2)
##  forestplot             2.0.1    2021-09-03 [1] CRAN (R 4.1.0)
##  Formula                1.2-4    2020-10-16 [1] CRAN (R 4.1.0)
##  fs                     1.5.2    2021-12-08 [1] CRAN (R 4.1.0)
##  genefilter             1.76.0   2021-10-26 [1] Bioconductor
##  geneplotter            1.72.0   2021-10-26 [1] Bioconductor
##  generics               0.1.2    2022-01-31 [1] CRAN (R 4.1.2)
##  GenomeInfoDb           1.30.1   2022-01-30 [1] Bioconductor
##  GenomeInfoDbData       1.2.7    2022-03-09 [1] Bioconductor
##  GenomicRanges          1.46.1   2021-11-18 [1] Bioconductor
##  ggplot2              * 3.3.5    2021-06-25 [1] CRAN (R 4.1.0)
##  ggpubr               * 0.4.0    2020-06-27 [1] CRAN (R 4.1.0)
##  ggrepel                0.9.1    2021-01-15 [1] CRAN (R 4.1.0)
##  ggsignif               0.6.3    2021-09-09 [1] CRAN (R 4.1.0)
##  glasso                 1.11     2019-10-01 [1] CRAN (R 4.1.0)
##  glmnet                 4.1-3    2021-11-02 [1] CRAN (R 4.1.0)
##  glue                 * 1.6.2    2022-02-24 [1] CRAN (R 4.1.2)
##  Gmisc                * 3.0.0    2022-01-03 [1] CRAN (R 4.1.2)
##  GO.db                  3.14.0   2022-04-11 [1] Bioconductor
##  gplots                 3.1.1    2020-11-28 [1] CRAN (R 4.1.0)
##  gridExtra              2.3      2017-09-09 [1] CRAN (R 4.1.0)
##  gtable                 0.3.0    2019-03-25 [1] CRAN (R 4.1.0)
##  gtools                 3.9.2    2021-06-06 [1] CRAN (R 4.1.0)
##  highr                  0.9      2021-04-16 [1] CRAN (R 4.1.0)
##  Hmisc                  4.6-0    2021-10-07 [1] CRAN (R 4.1.0)
##  htmlTable            * 2.4.0    2022-01-04 [1] CRAN (R 4.1.2)
##  htmltools              0.5.2    2021-08-25 [1] CRAN (R 4.1.0)
##  htmlwidgets            1.5.4    2021-09-08 [1] CRAN (R 4.1.0)
##  httr                   1.4.2    2020-07-20 [1] CRAN (R 4.1.0)
##  huge                   1.3.5    2021-06-30 [1] CRAN (R 4.1.0)
##  igraph                 1.2.11   2022-01-04 [1] CRAN (R 4.1.2)
##  impute                 1.68.0   2021-10-26 [1] Bioconductor
##  IRanges                2.28.0   2021-10-26 [1] Bioconductor
##  irlba                  2.3.5    2021-12-06 [1] CRAN (R 4.1.0)
##  iterators              1.0.14   2022-02-05 [1] CRAN (R 4.1.2)
##  jpeg                   0.1-9    2021-07-24 [1] CRAN (R 4.1.0)
##  jquerylib              0.1.4    2021-04-26 [1] CRAN (R 4.1.0)
##  jsonlite               1.8.0    2022-02-22 [1] CRAN (R 4.1.2)
##  KEGGREST               1.34.0   2021-10-26 [1] Bioconductor
##  KernSmooth             2.23-20  2021-05-03 [1] CRAN (R 4.1.2)
##  knitr                  1.39     2022-04-26 [1] CRAN (R 4.1.2)
##  labeling               0.4.2    2020-10-20 [1] CRAN (R 4.1.0)
##  lattice                0.20-45  2021-09-22 [1] CRAN (R 4.1.2)
##  latticeExtra           0.6-29   2019-12-19 [1] CRAN (R 4.1.0)
##  lavaan                 0.6-11   2022-03-31 [1] CRAN (R 4.1.2)
##  libcoin                1.0-9    2021-09-27 [1] CRAN (R 4.1.0)
##  lifecycle              1.0.1    2021-09-24 [1] CRAN (R 4.1.0)
##  limma                  3.50.1   2022-02-17 [1] Bioconductor
##  locfit                 1.5-9.5  2022-03-03 [1] CRAN (R 4.1.2)
##  lubridate              1.8.0    2021-10-07 [1] CRAN (R 4.1.0)
##  magrittr             * 2.0.2    2022-01-26 [1] CRAN (R 4.1.2)
##  MASS                   7.3-55   2022-01-13 [1] CRAN (R 4.1.2)
##  Matrix                 1.4-0    2021-12-08 [1] CRAN (R 4.1.0)
##  MatrixGenerics         1.6.0    2021-10-26 [1] Bioconductor
##  matrixStats            0.61.0   2021-09-17 [1] CRAN (R 4.1.0)
##  mbzinb                 0.2      2022-03-16 [1] local
##  memoise                2.0.1    2021-11-26 [1] CRAN (R 4.1.0)
##  metagenomeSeq          1.36.0   2021-10-26 [1] Bioconductor
##  mgcv                   1.8-39   2022-02-24 [1] CRAN (R 4.1.2)
##  mixedCCA               1.5.2    2022-07-14 [1] Github (irinagain/mixedCCA@c6d41a3)
##  mnormt                 2.0.2    2020-09-01 [1] CRAN (R 4.1.0)
##  modeltools             0.2-23   2020-03-05 [1] CRAN (R 4.1.0)
##  multcomp               1.4-18   2022-01-04 [1] CRAN (R 4.1.2)
##  multtest               2.50.0   2021-10-26 [1] Bioconductor
##  munsell                0.5.0    2018-06-12 [1] CRAN (R 4.1.0)
##  mvtnorm                1.1-3    2021-10-08 [1] CRAN (R 4.1.0)
##  NADA                   1.6-1.1  2020-03-22 [1] CRAN (R 4.1.0)
##  NetCoMi              * 1.0.3    2022-07-14 [1] Github (stefpeschel/NetCoMi@d4d80d3)
##  nlme                   3.1-155  2022-01-13 [1] CRAN (R 4.1.2)
##  nnet                   7.3-17   2022-01-13 [1] CRAN (R 4.1.2)
##  pbapply                1.5-0    2021-09-16 [1] CRAN (R 4.1.0)
##  pbivnorm               0.6.0    2015-01-23 [1] CRAN (R 4.1.0)
##  pcaPP                  1.9-74   2021-04-23 [1] CRAN (R 4.1.0)
##  permute                0.9-7    2022-01-27 [1] CRAN (R 4.1.2)
##  pheatmap               1.0.12   2019-01-04 [1] CRAN (R 4.1.0)
##  phyloseq             * 1.38.0   2021-10-26 [1] Bioconductor
##  pillar                 1.7.0    2022-02-01 [1] CRAN (R 4.1.2)
##  pkgbuild               1.3.1    2021-12-20 [1] CRAN (R 4.1.0)
##  pkgconfig              2.0.3    2019-09-22 [1] CRAN (R 4.1.0)
##  pkgload                1.2.4    2021-11-30 [1] CRAN (R 4.1.0)
##  plyr                   1.8.6    2020-03-03 [1] CRAN (R 4.1.0)
##  png                    0.1-7    2013-12-03 [1] CRAN (R 4.1.0)
##  preprocessCore         1.56.0   2021-10-26 [1] Bioconductor
##  prettyunits            1.1.1    2020-01-24 [1] CRAN (R 4.1.0)
##  processx               3.5.2    2021-04-30 [1] CRAN (R 4.1.0)
##  proxy                  0.4-26   2021-06-07 [1] CRAN (R 4.1.0)
##  ps                     1.6.0    2021-02-28 [1] CRAN (R 4.1.0)
##  pscl                   1.5.5    2020-03-07 [1] CRAN (R 4.1.0)
##  psych                  2.2.5    2022-05-10 [1] CRAN (R 4.1.2)
##  pulsar                 0.3.7    2020-08-07 [1] CRAN (R 4.1.0)
##  purrr                  0.3.4    2020-04-17 [1] CRAN (R 4.1.0)
##  qgraph                 1.9.2    2022-03-04 [1] CRAN (R 4.1.2)
##  R6                     2.5.1    2021-08-19 [1] CRAN (R 4.1.0)
##  rbibutils              2.2.7    2021-12-07 [1] CRAN (R 4.1.0)
##  RColorBrewer           1.1-2    2014-12-07 [1] CRAN (R 4.1.0)
##  Rcpp                 * 1.0.8.2  2022-03-11 [1] CRAN (R 4.1.2)
##  RcppZiggurat           0.1.6    2020-10-20 [1] CRAN (R 4.1.0)
##  RCurl                  1.98-1.6 2022-02-08 [1] CRAN (R 4.1.2)
##  Rdpack                 2.2      2022-03-19 [1] CRAN (R 4.1.2)
##  readxl               * 1.4.0    2022-03-28 [1] CRAN (R 4.1.2)
##  remotes                2.4.2    2021-11-30 [1] CRAN (R 4.1.0)
##  reshape2               1.4.4    2020-04-09 [1] CRAN (R 4.1.0)
##  Rfast                  2.0.6    2022-02-16 [1] CRAN (R 4.1.2)
##  rhdf5                  2.38.1   2022-03-10 [1] Bioconductor
##  rhdf5filters           1.6.0    2021-10-26 [1] Bioconductor
##  Rhdf5lib               1.16.0   2021-10-26 [1] Bioconductor
##  rlang                  1.0.2    2022-03-04 [1] CRAN (R 4.1.2)
##  rmarkdown              2.14     2022-04-25 [1] CRAN (R 4.1.2)
##  rootSolve              1.8.2.3  2021-09-29 [1] CRAN (R 4.1.0)
##  rpart                  4.1.16   2022-01-24 [1] CRAN (R 4.1.2)
##  rprojroot              2.0.2    2020-11-15 [1] CRAN (R 4.1.0)
##  RSQLite                2.2.10   2022-02-17 [1] CRAN (R 4.1.2)
##  rstatix                0.7.0    2021-02-13 [1] CRAN (R 4.1.0)
##  rstudioapi             0.13     2020-11-12 [1] CRAN (R 4.1.0)
##  S4Vectors              0.32.3   2021-11-21 [1] Bioconductor
##  sandwich               3.0-1    2021-05-18 [1] CRAN (R 4.1.0)
##  sass                   0.4.0    2021-05-12 [1] CRAN (R 4.1.0)
##  scales                 1.1.1    2020-05-11 [1] CRAN (R 4.1.0)
##  sessioninfo            1.2.2    2021-12-06 [1] CRAN (R 4.1.0)
##  shape                  1.4.6    2021-05-19 [1] CRAN (R 4.1.0)
##  snow                   0.4-4    2021-10-27 [1] CRAN (R 4.1.0)
##  SpiecEasi            * 1.1.2    2022-07-14 [1] Github (zdk123/SpiecEasi@c463727)
##  SPRING                 1.0.4    2022-08-03 [1] Github (GraceYoon/SPRING@3d641a4)
##  stringi                1.7.6    2021-11-29 [1] CRAN (R 4.1.0)
##  stringr                1.4.0    2019-02-10 [1] CRAN (R 4.1.0)
##  SummarizedExperiment   1.24.0   2021-10-26 [1] Bioconductor
##  survival               3.3-1    2022-03-03 [1] CRAN (R 4.1.2)
##  testthat               3.1.2    2022-01-20 [1] CRAN (R 4.1.2)
##  TH.data                1.1-0    2021-09-27 [1] CRAN (R 4.1.0)
##  tibble               * 3.1.6    2021-11-07 [1] CRAN (R 4.1.0)
##  tidyr                  1.2.0    2022-02-01 [1] CRAN (R 4.1.2)
##  tidyselect             1.1.2    2022-02-21 [1] CRAN (R 4.1.2)
##  tmvnsim                1.0-2    2016-12-15 [1] CRAN (R 4.1.0)
##  truncnorm              1.0-8    2018-02-27 [1] CRAN (R 4.1.0)
##  usethis                2.1.5    2021-12-09 [1] CRAN (R 4.1.0)
##  utf8                   1.2.2    2021-07-24 [1] CRAN (R 4.1.0)
##  vctrs                  0.3.8    2021-04-29 [1] CRAN (R 4.1.0)
##  vegan                  2.5-7    2020-11-28 [1] CRAN (R 4.1.0)
##  VGAM                   1.1-6    2022-02-14 [1] CRAN (R 4.1.2)
##  WGCNA                  1.71     2022-04-22 [1] CRAN (R 4.1.2)
##  withr                  2.5.0    2022-03-03 [1] CRAN (R 4.1.2)
##  Wrench                 1.12.0   2021-10-26 [1] Bioconductor
##  xfun                   0.30     2022-03-02 [1] CRAN (R 4.1.2)
##  XMAS2                * 2.1.7.4  2022-08-09 [1] local
##  XML                    3.99-0.9 2022-02-24 [1] CRAN (R 4.1.2)
##  xtable                 1.8-4    2019-04-21 [1] CRAN (R 4.1.0)
##  XVector                0.34.0   2021-10-26 [1] Bioconductor
##  yaml                   2.3.5    2022-02-21 [1] CRAN (R 4.1.2)
##  zCompositions          1.4.0    2022-01-13 [1] CRAN (R 4.1.2)
##  zlibbioc               1.40.0   2021-10-26 [1] Bioconductor
##  zoo                    1.8-9    2021-03-09 [1] CRAN (R 4.1.0)
## 
##  [1] /Library/Frameworks/R.framework/Versions/4.1/Resources/library
## 
## ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────