差异方法识别微生物标记物
基于 Intestinal Akkermansia muciniphila predicts clinical response to PD-1 blockade in patients with advanced non-small-cell lung cancer文章的微生物标记识别方法
识别组间差异物种是微生物领域常见的数据分析。我们采用三类不同的差异分析方法来发现显著差异的微生物物种,它们分别是:
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)
结果:总计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
结果: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)
结果: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