当前位置: 首页>后端>正文

数据分析:多种差异分析方法识别微生物标记物

差异方法识别微生物标记物

基于 Intestinal Akkermansia muciniphila predicts clinical response to PD-1 blockade in patients with advanced non-small-cell lung cancer文章的微生物标记识别方法

数据分析:多种差异分析方法识别微生物标记物,第1张

识别组间差异物种是微生物领域常见的数据分析。我们采用三类不同的差异分析方法来发现显著差异的微生物物种,它们分别是:

  • Linear Discriminant Analysis of Effect Size (LefSe).

  • Microbiome Multivariable Association with Linear Models (Maaslin2).

  • Analysis of Composition of Microbiomes with Bias Correction (ANCOM-BC).

LefSe是一种基于有监督的线性判别筛选差异物种的方法;Maaslin2是一种基于线性回归算法鉴定差异物种的方法;ANCOM-BC是一种校正样本之间绝对丰度偏差和零值膨胀等后再发现差异物种的方法。

我们将以LefSe识别出的差异物种作为基准,合并另外两种方法的差异结果,最后以柱状图展示结果。

详细内容请前往Multiple approaches for identification of microbial biomarkers

安装MicrobiomeAnalysis包

  • MicrobiomeAnalysis可提供下面分析使用的函数
if (!requireNamespace(c("remotes", "devtools"), quietly=TRUE)) {
  install.packages(c("devtools", "remotes"))
}
remotes::install_github("HuaZou/MicrobiomeAnalysis")

加载R包

knitr::opts_chunk$set(message = FALSE, warning = FALSE)
library(tidyverse)
library(MicrobiomeAnalysis)
library(Maaslin2)
library(ANCOMBC)
library(phyloseq)
library(ggpubr)

# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 1000 * 1024^2)

# group & color
sex_grp <- c("Male", "Female")
sex_col <- c("#F28880", "#60C4D3")

lf_grp <- c("None", "Mild", "Moderate", "Severe")
lf_col <- c("#803C08", "#F1A340", "#2C0a4B", "#998EC3")

导入数据

数据来自于Zeybel_2022的肠道微生物数据,可以在Zeybel Dataset章节的输出结果获取。

phy <- readRDS("InputData/result/Zeybel_2022_gut_MGS_ps.RDS")

phy
  • 因为没有绝对丰度表,暂时对相对丰度表进行转换成绝对丰度表(注意:需要提供准确的相对丰度表格,扩增子可用counts,Metaphlan系列可用FPKM等counts)
phy_count <- phyloseq::transform_sample_counts(
  phy, function(x){round(x*10^7, 0)})

# head(otu_table(phy_count), 4)

Linear Discriminant Analysis of Effect Size (LefSe)

  • 计算函数
get_lefse <- function(
  ps,
  taxa_level = c(NULL, "Phylum", "Class", "Order", 
                 "Family", "Genus", "Species"),
  filterCol = NULL,
  filterVars = NULL,
  group = c("LiverFatClass", "Gender"),
  group_names = c("None", "Mild", "Moderate", "Severe",
                  "Male", "Female"),
  prev_cutoff = 0.1,
  mean_threshold = 0.0001,
  one_threshold = 0.001,
  LDA_cutoff = 2) {
  
  # ps = phy
  # taxa_level = NULL
  # filterCol = NULL
  # filterVars = NULL
  # group = "LiverFatClass"
  # group_names = c("None", "Mild")
  # prev_cutoff = 0.1
  # mean_threshold = 0.0001
  # one_threshold = 0.001
  # LDA_cutoff = 0
  

  if (!is.null(taxa_level)) {
    ps_taxa <- MicrobiomeAnalysis::aggregate_taxa(
      x = ps, level = taxa_level)
  } else {
    ps_taxa <- ps
  }

  metadata <- ps_taxa@sam_data %>%
    data.frame()
  
  if (is.null(filterCol)) {
    dat_cln <- metadata
  } else {
    colnames(metadata)[which(colnames(metadata) == filterCol)] <- "FiltCol"
    dat_cln <- metadata %>%
      dplyr::filter(FiltCol %in% filterVars)
    colnames(metadata)[which(colnames(metadata) == "FiltCol")] <- filterCol   
  }
  
  # group for test 
  dat_cln2 <- dat_cln
  colnames(dat_cln2)[which(colnames(dat_cln2) == group)] <- "Group_new"
  if (group_names[1] == "all") {
    dat_cln3 <- dat_cln2
  } else {
    dat_cln3 <- dat_cln2 %>%
      dplyr::filter(Group_new %in% group_names)
  }
  
  dat_cln3$Group_new <- factor(dat_cln3$Group_new, levels = group_names)
  colnames(dat_cln3)[which(colnames(dat_cln3) == "Group_new")] <- group
  
  ps_temp <- ps_taxa
  phyloseq::sample_data(ps_temp) <- phyloseq::sample_data(dat_cln3)  
  
  # trim & filter
  ps_trim <- MicrobiomeAnalysis::trim_prevalence(
    object = ps_temp,
    cutoff = prev_cutoff,
    trim = "feature")
  ps_filter <- MicrobiomeAnalysis::filter_abundance(
    object = ps_trim,
    cutoff_mean = mean_threshold,
    cutoff_one = one_threshold)
  
  # run lefse
  set.seed(123)
  res_lefse <- MicrobiomeAnalysis::run_lefse(
                    ps = ps_filter,
                    group = group,
                    taxa_rank = "none",
                    norm = "CPM",
                    lda_cutoff = LDA_cutoff) 
  
  res_lda <- res_lefse@marker_table %>%
    data.frame() %>%
    dplyr::inner_join(ps_filter@tax_table %>%
                        data.frame() %>%
                        tibble::rownames_to_column("feature"),
                      by = "feature")
  # Number of Group
  input_metadata <- ps_filter@sam_data %>%
    data.frame()
  colnames(input_metadata)[which(colnames(input_metadata) == group)] <- "Compvar"
  dat_status <- table(input_metadata$Compvar)
  dat_status_number <- as.numeric(dat_status)
  dat_status_name <- names(dat_status)
  res_lda$Block <- paste(paste(dat_status_number[1], dat_status_name[1], sep = "_"),
                       "vs",
                       paste(dat_status_number[2], dat_status_name[2], sep = "_"))  
  res_DA <- res_lda %>%
    dplyr::rename(TaxaID = feature,
                  Enrichment = enrich_group,
                  LDA_Score = ef_lda) %>%
    dplyr::mutate(LDA_Score = ifelse(Enrichment == group_names[1], 
                                     -LDA_Score, LDA_Score)) %>%
    dplyr::select(TaxaID, Block, everything())
  
  
  # final results list
  res <- list(ps = ps_filter,
              test_res = res_DA)
  
  return(res)
}

get_lefse_pl <- function(
  dat,
  index,
  cutoff = 2,
  group_color) {
  
  # dat = res_DA
  # index = "LDA_Score"
  # cutoff = 2
  # group_color = lf_col[c(1, 4)]  
  
  
  plot_lefse <- function(
    da_res,
    group_names = NULL,
    x_index,
    x_index_cutoff = 2,
    group_color = c("green", "red"),
    line_size = 0.6,
    theme_text_size = 10,
    theme_title_size = 12,
    theme_legend_size = 12) {
  
    # group
    da_res_group_names <- gsub("\d+_", "", unlist(strsplit(da_res$Block[1], " vs ")))
    if (is.null(group_names)) {
      group_names <- da_res_group_names
    } else {
      if (!all(group_names == da_res_group_names)) {
        message("group names are in wrong order, and reoder them")
        group_names <- da_res_group_names
      }else{
        group_names <- group_names
      }
    }
  
    if (!x_index %in% colnames(da_res)) {
      stop("No x_index matched the DA results' column, please check out your inputdata")
    }
    colnames(da_res)[which(colnames(da_res) == x_index)] <- "Xindex"
    # significant results
  
    # enrichment by new LDA cutoff
    da_res[which(da_res$Xindex > x_index_cutoff), "EnrichedDir"] <- group_names[2]
    da_res[which(da_res$Xindex < -x_index_cutoff), "EnrichedDir"] <- group_names[1]
    da_res[which(abs(da_res$Xindex) <= x_index_cutoff), "EnrichedDir"] <- "Nonsignif"
    df_status <- table(da_res$EnrichedDir) %>%
      data.frame() %>%
      stats::setNames(c("Group", "Number"))
    grp1_number <- with(df_status, df_status[Group %in% group_names[1], "Number"])
    grp2_number <- with(df_status, df_status[Group %in% group_names[2], "Number"])
    nsf_number <- with(df_status, df_status[Group %in% "Nonsignif", "Number"])
    legend_label <- c(paste0(group_names[1], " (", grp1_number, ")"),
                      paste0("Nonsignif", " (", nsf_number, ")"),
                      paste0(group_names[2], " (", grp2_number, ")"))
  
    da_res_signif <- da_res %>%
      dplyr::arrange(Xindex) %>%
      dplyr::filter(abs(Xindex) >= x_index_cutoff)
    if (nrow(da_res_signif) == 0) {
      message("There is no significant taxa matched the threshold of LDA_Score")
    }
  
    if (!is.null(group_color)) {
      plot_group_color <- group_color
      names(plot_group_color) <- group_names
    } else{
      plot_group_color <- c("green", "red")
      names(plot_group_color) <- group_names
    }
  
    dat_range <- range(da_res_signif$Xindex)
    if (dat_range[1] > 0) {
      x_range <- c(0, ceiling(dat_range[2]))
      limits <- c(0, range(da_res_signif$Xindex)[2])
    }
    if (dat_range[2] < 0) {
      dat_start <- round(dat_range[1] - 1)
      x_range <- c(dat_start, round(dat_range[2]))
      limits <- c(range(da_res_signif$Xindex)[1], 0)
    }
    if (all(dat_range[1] < 0, dat_range[2] > 0)) {
      dat_start <- round(dat_range[1] - 1)
      x_range <- c(dat_start, ceiling(dat_range[2]))
      limits <- x_range
    }
  
  
    break_scale <- sum(abs(ceiling(range(da_res_signif$Xindex)))) / 6
    if (break_scale > 0.5) {
      break_scale_final <- ceiling(break_scale)
    } else {
      break_scale_final <- round(break_scale, 1)
    }
    breaks <- seq(x_range[1], x_range[2], break_scale_final)
  
    pl <- ggplot(da_res_signif, aes(x = reorder(TaxaID, Xindex), y = Xindex)) +
      geom_bar(stat = "identity", aes(fill = Enrichment),
               color = "black", width = .6) +
      geom_hline(yintercept = 0, alpha = .8, linetype = 1, size = line_size + 0.1) +
      geom_hline(yintercept = breaks[breaks != 0], alpha = .8, linetype = 2, size = line_size) +
      scale_fill_manual(values = plot_group_color) +
      scale_y_continuous(breaks = breaks, limits = limits) +
      ylab(x_index) +
      xlab("") +
      coord_flip() +
      theme_bw() +
      theme(axis.ticks.length = unit(0.4, "lines"),
            axis.ticks = element_line(color = "black"),
            axis.line = element_line(color = "black"),
            axis.title.x = element_text(size = theme_title_size, color = "black", face = "bold"),
            axis.text.x = element_text(size = theme_text_size, color = "black", face = "bold"),
            axis.text.y = element_text(size = theme_text_size, color = "black", face = "italic"),
            legend.title = element_blank(),
            legend.text = element_text(size = theme_legend_size, face = "bold", color = "black",
                                     margin = margin(r = 20)),
            legend.position = c(.76, .05),
            legend.direction = "horizontal",
            legend.key.width = unit(0.8, "cm"),
            legend.key.height = unit(0.5, "cm")
            )
  
    return(pl)
  }
  
  pl <- plot_lefse(
    da_res = dat,
    x_index = index,
    x_index_cutoff = cutoff,
    group_color = group_color,
    theme_legend_size = 8) +
    theme(legend.background = element_rect(fill = rgb(1, 1, 1, alpha = 0.001), color = NA))
  
  return(pl)
}


# plot boxplot
get_boxplot <- function(
  ps,
  feature,
  group = c("LiverFatClass", "Gender"),
  group_names = c("None", "Mild", "Moderate", "Severe",
                  "Male", "Female"),
  group_color,
  pl_title,
  pos_cutoff = -0.002) {
                                  
  # ps = lefse_df$ps
  # feature = "s__Dorea_longicatena"
  # group = "LiverFatClass"
  # group_names = c("None", "Mild")
  # group_color = lf_col[c(1, 2)]
  # pl_title = "Dorea_longicatena"
  # pos_cutoff = -0.002
  
  # metadata
  dat_phe <- phyloseq::sample_data(ps) %>%
    data.frame()
  
  # group
  colnames(dat_phe)[which(colnames(dat_phe) == group)] <- "Group_new"
  phen <- dat_phe %>%
    dplyr::filter(Group_new %in% group_names) %>%
    dplyr::select(Group_new) %>%
    tibble::rownames_to_column("TempRowNames")
  
  # features
  prof <- phyloseq::otu_table(ps) %>% 
    data.frame() %>% t() %>% data.frame() %>%
    dplyr::select(all_of(feature)) %>%
    tibble::rownames_to_column("TempRowNames")    
  
  plotdata <- phen %>%
    dplyr::inner_join(prof, by = "TempRowNames") %>%
    dplyr::mutate(Group_new = factor(Group_new, levels = group_names))
  colnames(plotdata)[2:3] <- c("Group", "Index")
  
  occ_cutoff <- 0
  occ_fun <- function(x) {
    return(round(length(x[x > occ_cutoff])/length(x), 4))
  }
  
  plotOcc <- plotdata |>
    dplyr::group_by(Group) |>
    dplyr::summarise(occ = occ_fun(Index)) |>
    dplyr::mutate(occ_lab = paste0(round(occ, 3) * 100, "%")) |>
    dplyr::mutate(position = min(plotdata$Index) - min(plotdata$Index) * 0.1,
                  position = ifelse(position == 0, pos_cutoff, position))
  
  pl <- ggplot(data = plotdata, aes(x = Group, y = Index, color = Group)) +
    stat_boxplot(geom = "errorbar", width = 0.15) +
    geom_boxplot(width = .4, outlier.shape = NA) +
    geom_point(size = 2, shape = 5) +
    labs(x = "", y = "Relative Abundance", title = pl_title) + 
    scale_y_continuous(expand = expansion(mult = c(0.1, 0.1))) +
    geom_point(data = plotOcc, aes(x = Group, y = position, size = occ), 
               show.legend = FALSE, shape = 1, stroke = 1) +
    geom_text(data = plotOcc, aes(x = Group, y = position, label = occ_lab),
              show.legend = FALSE) +
    scale_size_continuous(range = c(10, 12)) +
    coord_flip() +
    guides(color = "none") +
    theme_classic() +
    theme(plot.title = element_text(size = 13, color = "black", face = "bold", hjust = .5),
          axis.title = element_text(size = 12, color = "black", face = "bold"),
          axis.text = element_text(size = 10, color = "black"),
          text = element_text(size = 9, color = "black"))  
  
  return(pl)
}
  • lefse结果

以LiverFatClass作为分组,选择None和Mild两个分组进行差异分析

lefse_df <- get_lefse(
  ps = phy,
  taxa_level = NULL,
  filterCol = NULL,
  filterVars = NULL,
  group = "LiverFatClass",
  group_names = c("None", "Mild"),
  prev_cutoff = 0.1,
  mean_threshold = 0.0001,
  one_threshold = 0.001,
  LDA_cutoff = 2)

head(lefse_df$test_res[, 1:3], 3)
数据分析:多种差异分析方法识别微生物标记物,第2张

结果:总计16种显著差异的species被lefse方法识别出来

  • 可视化结果
lefse_pl <- get_lefse_pl(
  dat = lefse_df$test_res,
  index = "LDA_Score",
  cutoff = 2,
  group_color = lf_col[c(1, 2)])

lefse_pl
数据分析:多种差异分析方法识别微生物标记物,第3张

结果:13类差异菌富集在None组,3类差异菌富集在Mild组

  • 箱线图展示特定菌
get_boxplot(
  ps = lefse_df$ps,
  feature = "s__Dorea_longicatena",
  group = "LiverFatClass",
  group_names = c("None", "Mild"),
  group_color = lf_col[c(1, 2)],
  pl_title = "Dorea_longicatena",
  pos_cutoff = -0.002)
数据分析:多种差异分析方法识别微生物标记物,第4张

结果:Dorea longicatena在两组出现率均很高(大于90%),并且相对丰度在None组更高,但这种现象可能由于最右边的离群点导致的。

Microbiome Multivariable Association with Linear Models (Maaslin2)

更多内容请前往查看 Multiple approaches for identification of microbial biomarkers

Analysis of Composition of Microbiomes with Bias Correction (ANCOM-BC)

更多内容请前往查看 Multiple approaches for identification of microbial biomarkers

合并上述结果

更多内容请前往查看 Multiple approaches for identification of microbial biomarkers

Session info

devtools::session_info()
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.1 (2023-06-16)
 os       macOS Monterey 12.2.1
 system   x86_64, darwin20
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Asia/Shanghai
 date     2024-02-06
 rstudio  2023.09.0+463 Desert Sunflower (desktop)
 pandoc   3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)

─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package                  * version    date (UTC) lib source
 abind                      1.4-5      2016-07-21 [1] CRAN (R 4.3.0)
 ade4                       1.7-22     2023-02-06 [1] CRAN (R 4.3.0)
 ANCOMBC                  * 2.4.0      2023-10-24 [1] Bioconductor
 AnnotationDbi              1.64.1     2023-11-03 [1] Bioconductor
 ape                        5.7-1      2023-03-13 [1] CRAN (R 4.3.0)
 aplot                      0.2.2      2023-10-06 [1] CRAN (R 4.3.0)
 attempt                    0.3.1      2020-05-03 [1] CRAN (R 4.3.0)
 backports                  1.4.1      2021-12-13 [1] CRAN (R 4.3.0)
 base64enc                  0.1-3      2015-07-28 [1] CRAN (R 4.3.0)
 beachmat                   2.18.0     2023-10-24 [1] Bioconductor
 beeswarm                   0.4.0      2021-06-01 [1] CRAN (R 4.3.0)
 biglm                      0.9-2.1    2020-11-27 [1] CRAN (R 4.3.0)
 Biobase                    2.62.0     2023-10-24 [1] Bioconductor
 BiocGenerics               0.48.1     2023-11-01 [1] Bioconductor
 BiocManager                1.30.22    2023-08-08 [1] CRAN (R 4.3.0)
 BiocNeighbors              1.20.2     2024-01-07 [1] Bioconductor 3.18 (R 4.3.2)
 BiocParallel               1.36.0     2023-10-24 [1] Bioconductor
 BiocSingular               1.18.0     2023-10-24 [1] Bioconductor
 biomformat                 1.30.0     2023-10-24 [1] Bioconductor
 Biostrings                 2.70.2     2024-01-28 [1] Bioconductor 3.18 (R 4.3.2)
 bit                        4.0.5      2022-11-15 [1] CRAN (R 4.3.0)
 bit64                      4.0.5      2020-08-30 [1] CRAN (R 4.3.0)
 bitops                     1.0-7      2021-04-24 [1] CRAN (R 4.3.0)
 blob                       1.2.4      2023-03-17 [1] CRAN (R 4.3.0)
 bluster                    1.12.0     2023-10-24 [1] Bioconductor
 boot                       1.3-28.1   2022-11-22 [1] CRAN (R 4.3.1)
 broom                      1.0.5      2023-06-09 [1] CRAN (R 4.3.0)
 bslib                      0.6.1      2023-11-28 [1] CRAN (R 4.3.0)
 cachem                     1.0.8      2023-05-01 [1] CRAN (R 4.3.0)
 car                        3.1-2      2023-03-30 [1] CRAN (R 4.3.0)
 carData                    3.0-5      2022-01-06 [1] CRAN (R 4.3.0)
 caTools                    1.18.2     2021-03-28 [1] CRAN (R 4.3.0)
 cellranger                 1.1.0      2016-07-27 [1] CRAN (R 4.3.0)
 checkmate                  2.3.1      2023-12-04 [1] CRAN (R 4.3.0)
 class                      7.3-22     2023-05-03 [1] CRAN (R 4.3.1)
 cli                        3.6.2      2023-12-11 [1] CRAN (R 4.3.0)
 cluster                    2.1.4      2022-08-22 [1] CRAN (R 4.3.1)
 clusterProfiler            4.10.0     2023-10-24 [1] Bioconductor
 codetools                  0.2-19     2023-02-01 [1] CRAN (R 4.3.1)
 colorspace                 2.1-0      2023-01-23 [1] CRAN (R 4.3.0)
 config                     0.3.2      2023-08-30 [1] CRAN (R 4.3.0)
 cowplot                    1.1.3      2024-01-22 [1] CRAN (R 4.3.2)
 crayon                     1.5.2      2022-09-29 [1] CRAN (R 4.3.0)
 CVXR                       1.0-12     2024-02-02 [1] CRAN (R 4.3.2)
 data.table                 1.15.0     2024-01-30 [1] CRAN (R 4.3.2)
 DBI                        1.2.1      2024-01-12 [1] CRAN (R 4.3.0)
 DECIPHER                   2.30.0     2023-10-24 [1] Bioconductor
 decontam                   1.22.0     2023-10-24 [1] Bioconductor
 DelayedArray               0.28.0     2023-10-24 [1] Bioconductor
 DelayedMatrixStats         1.24.0     2023-10-24 [1] Bioconductor
 DEoptimR                   1.1-3      2023-10-07 [1] CRAN (R 4.3.0)
 DescTools                  0.99.54    2024-02-03 [1] CRAN (R 4.3.2)
 DESeq2                     1.42.0     2023-10-24 [1] Bioconductor
 devtools                   2.4.5      2022-10-11 [1] CRAN (R 4.3.0)
 digest                     0.6.34     2024-01-11 [1] CRAN (R 4.3.0)
 DirichletMultinomial       1.44.0     2023-10-24 [1] Bioconductor
 doParallel                 1.0.17     2022-02-07 [1] CRAN (R 4.3.0)
 doRNG                    * 1.8.6      2023-01-16 [1] CRAN (R 4.3.0)
 DOSE                       3.28.2     2023-12-10 [1] Bioconductor
 dplyr                    * 1.1.4      2023-11-17 [1] CRAN (R 4.3.0)
 DT                         0.31       2023-12-09 [1] CRAN (R 4.3.0)
 e1071                      1.7-14     2023-12-06 [1] CRAN (R 4.3.0)
 ellipsis                   0.3.2      2021-04-29 [1] CRAN (R 4.3.0)
 energy                     1.7-11     2022-12-22 [1] CRAN (R 4.3.0)
 enrichplot                 1.22.0     2023-10-24 [1] Bioconductor
 evaluate                   0.23       2023-11-01 [1] CRAN (R 4.3.0)
 Exact                      3.2        2022-09-25 [1] CRAN (R 4.3.0)
 expm                       0.999-9    2024-01-11 [1] CRAN (R 4.3.0)
 fansi                      1.0.6      2023-12-08 [1] CRAN (R 4.3.0)
 farver                     2.1.1      2022-07-06 [1] CRAN (R 4.3.0)
 fastmap                    1.1.1      2023-02-24 [1] CRAN (R 4.3.0)
 fastmatch                  1.1-4      2023-08-18 [1] CRAN (R 4.3.0)
 fgsea                      1.28.0     2023-10-24 [1] Bioconductor
 forcats                  * 1.0.0      2023-01-29 [1] CRAN (R 4.3.0)
 foreach                  * 1.5.2      2022-02-02 [1] CRAN (R 4.3.0)
 foreign                    0.8-84     2022-12-06 [1] CRAN (R 4.3.1)
 Formula                    1.2-5      2023-02-24 [1] CRAN (R 4.3.0)
 fs                         1.6.3      2023-07-20 [1] CRAN (R 4.3.0)
 generics                   0.1.3      2022-07-05 [1] CRAN (R 4.3.0)
 GenomeInfoDb               1.38.5     2023-12-28 [1] Bioconductor 3.18 (R 4.3.2)
 GenomeInfoDbData           1.2.11     2024-01-24 [1] Bioconductor
 GenomicRanges              1.54.1     2023-10-29 [1] Bioconductor
 getopt                     1.20.4     2023-10-01 [1] CRAN (R 4.3.0)
 ggbeeswarm                 0.7.2      2023-04-29 [1] CRAN (R 4.3.0)
 ggforce                    0.4.1      2022-10-04 [1] CRAN (R 4.3.0)
 ggfun                      0.1.4      2024-01-19 [1] CRAN (R 4.3.0)
 ggplot2                  * 3.4.4      2023-10-12 [1] CRAN (R 4.3.0)
 ggplotify                  0.1.2      2023-08-09 [1] CRAN (R 4.3.0)
 ggpubr                   * 0.6.0      2023-02-10 [1] CRAN (R 4.3.0)
 ggraph                     2.1.0      2022-10-09 [1] CRAN (R 4.3.0)
 ggrepel                    0.9.5      2024-01-10 [1] CRAN (R 4.3.0)
 ggsignif                   0.6.4      2022-10-13 [1] CRAN (R 4.3.0)
 ggtree                     3.10.0     2023-10-24 [1] Bioconductor
 gld                        2.6.6      2022-10-23 [1] CRAN (R 4.3.0)
 glmnet                     4.1-8      2023-08-22 [1] CRAN (R 4.3.0)
 glue                       1.7.0      2024-01-09 [1] CRAN (R 4.3.0)
 gmp                        0.7-4      2024-01-15 [1] CRAN (R 4.3.0)
 GO.db                      3.18.0     2024-02-06 [1] Bioconductor
 golem                      0.4.1      2023-06-05 [1] CRAN (R 4.3.0)
 GOSemSim                   2.28.1     2024-01-17 [1] Bioconductor 3.18 (R 4.3.2)
 gplots                     3.1.3.1    2024-02-02 [1] CRAN (R 4.3.2)
 graphlayouts               1.1.0      2024-01-19 [1] CRAN (R 4.3.0)
 gridExtra                  2.3        2017-09-09 [1] CRAN (R 4.3.0)
 gridGraphics               0.5-1      2020-12-13 [1] CRAN (R 4.3.0)
 gsl                        2.1-8      2023-01-24 [1] CRAN (R 4.3.0)
 gson                       0.1.0      2023-03-07 [1] CRAN (R 4.3.0)
 gtable                     0.3.4      2023-08-21 [1] CRAN (R 4.3.0)
 gtools                     3.9.5      2023-11-20 [1] CRAN (R 4.3.0)
 hash                       2.2.6.3    2023-08-19 [1] CRAN (R 4.3.0)
 HDO.db                     0.99.1     2024-02-06 [1] Bioconductor
 Hmisc                      5.1-1      2023-09-12 [1] CRAN (R 4.3.0)
 hms                        1.1.3      2023-03-21 [1] CRAN (R 4.3.0)
 htmlTable                  2.4.2      2023-10-29 [1] CRAN (R 4.3.0)
 htmltools                  0.5.7      2023-11-03 [1] CRAN (R 4.3.0)
 htmlwidgets                1.6.4      2023-12-06 [1] CRAN (R 4.3.0)
 httpuv                     1.6.14     2024-01-26 [1] CRAN (R 4.3.2)
 httr                       1.4.7      2023-08-15 [1] CRAN (R 4.3.0)
 igraph                     2.0.1.1    2024-01-30 [1] CRAN (R 4.3.2)
 IRanges                    2.36.0     2023-10-24 [1] Bioconductor
 irlba                      2.3.5.1    2022-10-03 [1] CRAN (R 4.3.0)
 iterators                  1.0.14     2022-02-05 [1] CRAN (R 4.3.0)
 jquerylib                  0.1.4      2021-04-26 [1] CRAN (R 4.3.0)
 jsonlite                   1.8.8      2023-12-04 [1] CRAN (R 4.3.0)
 KEGGREST                   1.42.0     2023-10-24 [1] Bioconductor
 KernSmooth                 2.23-21    2023-05-03 [1] CRAN (R 4.3.1)
 knitr                      1.45       2023-10-30 [1] CRAN (R 4.3.0)
 labeling                   0.4.3      2023-08-29 [1] CRAN (R 4.3.0)
 later                      1.3.2      2023-12-06 [1] CRAN (R 4.3.0)
 lattice                    0.21-8     2023-04-05 [1] CRAN (R 4.3.1)
 lazyeval                   0.2.2      2019-03-15 [1] CRAN (R 4.3.0)
 lifecycle                  1.0.4      2023-11-07 [1] CRAN (R 4.3.0)
 limma                      3.58.1     2023-10-31 [1] Bioconductor
 lme4                       1.1-35.1   2023-11-05 [1] CRAN (R 4.3.0)
 lmerTest                   3.1-3      2020-10-23 [1] CRAN (R 4.3.0)
 lmom                       3.0        2023-08-29 [1] CRAN (R 4.3.0)
 locfit                     1.5-9.8    2023-06-11 [1] CRAN (R 4.3.0)
 logging                    0.10-108   2019-07-14 [1] CRAN (R 4.3.0)
 lpsymphony                 1.30.0     2023-10-24 [1] Bioconductor (R 4.3.1)
 lubridate                * 1.9.3      2023-09-27 [1] CRAN (R 4.3.0)
 Maaslin2                 * 1.7.3      2024-01-24 [1] Bioconductor
 magrittr                   2.0.3      2022-03-30 [1] CRAN (R 4.3.0)
 MASS                       7.3-60     2023-05-04 [1] CRAN (R 4.3.1)
 Matrix                     1.6-5      2024-01-11 [1] CRAN (R 4.3.0)
 MatrixGenerics             1.14.0     2023-10-24 [1] Bioconductor
 matrixStats                1.2.0      2023-12-11 [1] CRAN (R 4.3.0)
 memoise                    2.0.1      2021-11-26 [1] CRAN (R 4.3.0)
 metagenomeSeq              1.43.0     2023-04-25 [1] Bioconductor
 mgcv                       1.8-42     2023-03-02 [1] CRAN (R 4.3.1)
 mia                        1.10.0     2023-10-24 [1] Bioconductor
 MicrobiomeAnalysis       * 1.0.3      2024-02-06 [1] Github (HuaZou/MicrobiomeAnalysis@fd2a6a2)
 MicrobiomeProfiler         1.8.0      2023-10-24 [1] Bioconductor
 mime                       0.12       2021-09-28 [1] CRAN (R 4.3.0)
 miniUI                     0.1.1.1    2018-05-18 [1] CRAN (R 4.3.0)
 minqa                      1.2.6      2023-09-11 [1] CRAN (R 4.3.0)
 multcomp                   1.4-25     2023-06-20 [1] CRAN (R 4.3.0)
 MultiAssayExperiment       1.28.0     2023-10-24 [1] Bioconductor
 multtest                   2.58.0     2023-10-24 [1] Bioconductor
 munsell                    0.5.0      2018-06-12 [1] CRAN (R 4.3.0)
 mvtnorm                    1.2-4      2023-11-27 [1] CRAN (R 4.3.0)
 nlme                       3.1-162    2023-01-31 [1] CRAN (R 4.3.1)
 nloptr                     2.0.3      2022-05-26 [1] CRAN (R 4.3.0)
 nnet                       7.3-19     2023-05-03 [1] CRAN (R 4.3.1)
 numDeriv                   2016.8-1.1 2019-06-06 [1] CRAN (R 4.3.0)
 optparse                   1.7.4      2024-01-16 [1] CRAN (R 4.3.0)
 patchwork                  1.2.0      2024-01-08 [1] CRAN (R 4.3.0)
 pbapply                    1.7-2      2023-06-27 [1] CRAN (R 4.3.0)
 pcaPP                      2.0-4      2023-12-07 [1] CRAN (R 4.3.0)
 permute                    0.9-7      2022-01-27 [1] CRAN (R 4.3.0)
 pheatmap                   1.0.12     2019-01-04 [1] CRAN (R 4.3.0)
 phyloseq                 * 1.46.0     2023-10-24 [1] Bioconductor
 pillar                     1.9.0      2023-03-22 [1] CRAN (R 4.3.0)
 pkgbuild                   1.4.3      2023-12-10 [1] CRAN (R 4.3.0)
 pkgconfig                  2.0.3      2019-09-22 [1] CRAN (R 4.3.0)
 pkgload                    1.3.4      2024-01-16 [1] CRAN (R 4.3.0)
 plyr                       1.8.9      2023-10-02 [1] CRAN (R 4.3.0)
 png                        0.1-8      2022-11-29 [1] CRAN (R 4.3.0)
 polyclip                   1.10-6     2023-09-27 [1] CRAN (R 4.3.0)
 profvis                    0.3.8      2023-05-02 [1] CRAN (R 4.3.0)
 promises                   1.2.1      2023-08-10 [1] CRAN (R 4.3.0)
 proxy                      0.4-27     2022-06-09 [1] CRAN (R 4.3.0)
 purrr                    * 1.0.2      2023-08-10 [1] CRAN (R 4.3.0)
 qvalue                     2.34.0     2023-10-24 [1] Bioconductor
 R6                         2.5.1      2021-08-19 [1] CRAN (R 4.3.0)
 rbibutils                  2.2.16     2023-10-25 [1] CRAN (R 4.3.0)
 RColorBrewer               1.1-3      2022-04-03 [1] CRAN (R 4.3.0)
 Rcpp                       1.0.12     2024-01-09 [1] CRAN (R 4.3.0)
 RCurl                      1.98-1.14  2024-01-09 [1] CRAN (R 4.3.0)
 Rdpack                     2.6        2023-11-08 [1] CRAN (R 4.3.0)
 readr                    * 2.1.5      2024-01-10 [1] CRAN (R 4.3.0)
 readxl                     1.4.3      2023-07-06 [1] CRAN (R 4.3.0)
 remotes                    2.4.2.1    2023-07-18 [1] CRAN (R 4.3.0)
 reshape2                   1.4.4      2020-04-09 [1] CRAN (R 4.3.0)
 rhdf5                      2.46.1     2023-11-29 [1] Bioconductor
 rhdf5filters               1.14.1     2023-11-06 [1] Bioconductor
 Rhdf5lib                   1.24.1     2023-12-12 [1] Bioconductor 3.18 (R 4.3.2)
 rlang                      1.1.3      2024-01-10 [1] CRAN (R 4.3.0)
 rmarkdown                  2.25       2023-09-18 [1] CRAN (R 4.3.0)
 Rmpfr                      0.9-5      2024-01-21 [1] CRAN (R 4.3.0)
 rngtools                 * 1.5.2      2021-09-20 [1] CRAN (R 4.3.0)
 robustbase                 0.99-1     2023-11-29 [1] CRAN (R 4.3.0)
 rootSolve                  1.8.2.4    2023-09-21 [1] CRAN (R 4.3.0)
 rpart                      4.1.19     2022-10-21 [1] CRAN (R 4.3.1)
 RSQLite                    2.3.5      2024-01-21 [1] CRAN (R 4.3.0)
 rstatix                    0.7.2      2023-02-01 [1] CRAN (R 4.3.0)
 rstudioapi                 0.15.0     2023-07-07 [1] CRAN (R 4.3.0)
 rsvd                       1.0.5      2021-04-16 [1] CRAN (R 4.3.0)
 S4Arrays                   1.2.0      2023-10-24 [1] Bioconductor
 S4Vectors                  0.40.2     2023-11-23 [1] Bioconductor
 sandwich                   3.1-0      2023-12-11 [1] CRAN (R 4.3.0)
 sass                       0.4.8      2023-12-06 [1] CRAN (R 4.3.0)
 ScaledMatrix               1.10.0     2023-10-24 [1] Bioconductor
 scales                     1.3.0      2023-11-28 [1] CRAN (R 4.3.0)
 scater                     1.30.1     2023-12-06 [1] Bioconductor
 scatterpie                 0.2.1      2023-06-07 [1] CRAN (R 4.3.0)
 scuttle                    1.12.0     2023-10-24 [1] Bioconductor
 sessioninfo                1.2.2      2021-12-06 [1] CRAN (R 4.3.0)
 shadowtext                 0.1.3      2024-01-19 [1] CRAN (R 4.3.0)
 shape                      1.4.6      2021-05-19 [1] CRAN (R 4.3.0)
 shiny                      1.8.0      2023-11-17 [1] CRAN (R 4.3.0)
 shinycustomloader          0.9.0      2018-03-27 [1] CRAN (R 4.3.0)
 shinyWidgets               0.8.1      2024-01-10 [1] CRAN (R 4.3.0)
 SingleCellExperiment       1.24.0     2023-10-24 [1] Bioconductor
 SparseArray                1.2.3      2023-12-25 [1] Bioconductor 3.18 (R 4.3.2)
 sparseMatrixStats          1.14.0     2023-10-24 [1] Bioconductor
 statmod                    1.5.0      2023-01-06 [1] CRAN (R 4.3.0)
 stringi                    1.8.3      2023-12-11 [1] CRAN (R 4.3.0)
 stringr                  * 1.5.1      2023-11-14 [1] CRAN (R 4.3.0)
 SummarizedExperiment       1.32.0     2023-10-24 [1] Bioconductor
 survival                   3.5-5      2023-03-12 [1] CRAN (R 4.3.1)
 TH.data                    1.1-2      2023-04-17 [1] CRAN (R 4.3.0)
 tibble                   * 3.2.1      2023-03-20 [1] CRAN (R 4.3.0)
 tidygraph                  1.3.0      2023-12-18 [1] CRAN (R 4.3.0)
 tidyr                    * 1.3.1      2024-01-24 [1] CRAN (R 4.3.2)
 tidyselect                 1.2.0      2022-10-10 [1] CRAN (R 4.3.0)
 tidytree                   0.4.6      2023-12-12 [1] CRAN (R 4.3.0)
 tidyverse                * 2.0.0      2023-02-22 [1] CRAN (R 4.3.0)
 timechange                 0.3.0      2024-01-18 [1] CRAN (R 4.3.0)
 treeio                     1.26.0     2023-10-24 [1] Bioconductor
 TreeSummarizedExperiment   2.10.0     2023-10-24 [1] Bioconductor
 tweenr                     2.0.2      2022-09-06 [1] CRAN (R 4.3.0)
 tzdb                       0.4.0      2023-05-12 [1] CRAN (R 4.3.0)
 urlchecker                 1.0.1      2021-11-30 [1] CRAN (R 4.3.0)
 usethis                    2.2.2      2023-07-06 [1] CRAN (R 4.3.0)
 utf8                       1.2.4      2023-10-22 [1] CRAN (R 4.3.0)
 vctrs                      0.6.5      2023-12-01 [1] CRAN (R 4.3.0)
 vegan                      2.6-4      2022-10-11 [1] CRAN (R 4.3.0)
 vipor                      0.4.7      2023-12-18 [1] CRAN (R 4.3.0)
 viridis                    0.6.5      2024-01-29 [1] CRAN (R 4.3.2)
 viridisLite                0.4.2      2023-05-02 [1] CRAN (R 4.3.0)
 withr                      3.0.0      2024-01-16 [1] CRAN (R 4.3.0)
 Wrench                     1.20.0     2023-10-24 [1] Bioconductor
 xfun                       0.41       2023-11-01 [1] CRAN (R 4.3.0)
 xtable                     1.8-4      2019-04-21 [1] CRAN (R 4.3.0)
 XVector                    0.42.0     2023-10-24 [1] Bioconductor
 yaml                       2.3.8      2023-12-11 [1] CRAN (R 4.3.0)
 yulab.utils                0.1.4      2024-01-28 [1] CRAN (R 4.3.2)
 zlibbioc                   1.48.0     2023-10-24 [1] Bioconductor
 zoo                        1.8-12     2023-04-13 [1] CRAN (R 4.3.0)

 [1] /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library

https://www.xamrdz.com/backend/3xe1942702.html

相关文章: