简介
通过Rank Abundance曲线、稀释曲线、物种累积箱形图(species accumulation boxplot)和物种堆叠柱状图可视化展示,从样本丰富度、测序深度和样本个数三个方面全面评估总体实验设计、采样个数、测序情况,对扩增子数据获得初步认识。
Rank Abundance曲线
Rank Abundance曲线是将样品中的OTUs/ASVs的相对丰度(或绝对丰度)由大到小排序,并以排序编号为横坐标,OTUs中的相对丰度为纵坐标绘制得到,它可直观的反映样本中物种的丰富度和均匀度。在水平方向上,物种的丰富度由曲线的宽度来反映,物种的丰富度越高,曲线在横轴上的跨度越大;在垂直方向上,曲线的平滑程度,反映了样品中物种的均匀程度,曲线越平缓,物种分布越均匀。
简单来说,在rank abundance 曲线中每一条垂直的线代表一个OTU/ASV,可以理解为一种菌,每一条垂直线右侧的水平线(即楼梯的平台)表示该菌种含量。另外,曲线的平缓程度反映了样品中物种的均度,曲线越平缓,物种分布越均匀,曲线越陡,物种分布越不均匀。
具体做法,首先每个样本中的OTU按丰度大小降序排列。然后以横坐标为各OTU的排列顺序,纵坐标为各OTU的丰度(最好使用相对丰度,并做对数转化)绘制图形。
数据样式:常见OTU丰度表,列为样本,行为OTU,交叉区域为每种OTU在各样本中的丰度。
# Input OTUs
otu_table <- read.delim("16S-amplicon-analysis/otutab.txt", header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)
# relative abundance
relative_otu <- apply(otu_table, 2, function(x){x/sum(x)})
# check
apply(relative_otu, 2, sum)
## KO1 KO2 KO3 KO4 KO5 KO6 OE1 OE2 OE3 OE4 OE5 OE6 WT1 WT2 WT3 WT4 WT5 WT6
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
# rank-abundance curves
library(BiodiversityR)
Transp_relat_otu <- t(relative_otu)
Transp_relat_otu[c(1:3),c(1:3)]
## ASV_10 ASV_100 ASV_1000
## KO1 0.01122980 0.0024346450 0.0001217322
## KO2 0.01014012 0.0005014347 0.0001671449
## KO3 0.01789865 0.0009814557 0.0001291389
rank_dat <- data.frame()
for (i in rownames(Transp_relat_otu)) {
rank_dat_i <- data.frame(rankabundance(subset(Transp_relat_otu, rownames(Transp_relat_otu) == i), digits = 6))[1:2]
rank_dat_i$sample <- i
rank_dat <- rbind(rank_dat, rank_dat_i)
}
rank_dat <- subset(rank_dat, rank_dat$abundance != 0)
# visualization
library(ggplot2)
ggplot(rank_dat, aes(rank, log(abundance, 10), color = sample)) + geom_line()
稀释曲线
稀释曲线(Rarefaction curves)是从样品中随机抽取一定测序量的数据(序列条数),统计它们所对应的OTUs/ASVs种类(代表物种),并以抽取的测序数据量与对应的OTUs/ASVs种类来构建曲线。一般情况下,横坐标代表随机抽取的序列数量,纵坐标代表观测到的OTUs/ASVs种类数量,样本曲线的延伸终点的横坐标位置为对应样本的测序数量。
稀释曲线可直接反映测序数据量的合理性,并间接反映样品中物种的丰富程度和样本特性,当曲线趋向平坦时,说明测序数据量渐进合理,更多的数据量只会产生少量新OTUs/ASVs(物种);反之表明不饱和,增加数据量可以发现更多OTUs/ASVs。
数据样式:常见OTU丰度表,列为样本,行为OTU,交叉区域为每种OTU在各样本中的丰度,可以将rarecurve的数据提取出来美化
# input OTUs
otu_table <- read.delim("16S-amplicon-analysis/otutab.txt", header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)
Transp_otu <- t(otu_table )
# step size
step <- 1000
rare_otu <- rarecurve(Transp_otu, step = step, label = FALSE)
names(rare_otu) <- rownames(Transp_otu)
protox <- mapply(FUN = function(x, y) {
mydf <- as.data.frame(x)
colnames(mydf) <- "value"
mydf$sample_name <- y
mydf$subsample <- attr(x, "Subsample")
mydf
}, x = rare_otu, y = as.list(rownames(Transp_otu)), SIMPLIFY = FALSE)
xy <- do.call(rbind, protox)
rownames(xy) <- NULL # pretty
ggplot(xy, aes(x = subsample, y = value, color = sample_name)) +
scale_color_discrete(guide = FALSE) +
geom_line() + geom_point(size = 0.5) +
xlab("Number of sequences") +
ylab("Number of OTUs") +
theme(legend.position = c(0.97,0.25),
panel.background = element_blank(),
panel.border = element_rect(fill = NA ),
legend.text = element_text(size=12),
axis.title = element_text(family="sans", size=13))
物种累积箱形图
物种累积箱形图(species accumulation boxplot)是描述物种多样性随着样本个数的增加而增加的分析,是调查和预测样本中物种丰度的有效工具,被广泛用于判断样本量是否充分以及估计物种丰富度。
当样本个数较少时,物种随着抽样个数的增加呈现急剧上升的趋势,可以推断此前发现的物种并不全面,随着样本量增加,还能继续发现新的物种,此时并不能表征整个群落结构;随着样本个数增加,曲线上升趋势趋于平缓,表明采样量足够。
数据样式:常见OTU丰度表,列为样本,行为OTU,交叉区域为每种OTU在各样本中的丰度。
# input OTUs
otu_table <- read.delim("16S-amplicon-analysis/otutab.txt", header=T, sep="\t", row.names=1, stringsAsFactors = FALSE)
Transp_otu <- t(otu_table )
species_accum <- specaccum(Transp_otu, method="random")
# extract data
data <- as.data.frame(species_accum$perm)
data$sites <- as.character(seq(1: nrow(data)))
plot_data <- tidyr::pivot_longer(data = data,
cols = -sites,
names_to = "V",
values_to = "richness")
# Reorder factor levels
plot_data$sites <- forcats::fct_inorder(plot_data$sites)
ggplot(data = plot_data) +
geom_boxplot(mapping = aes(x = sites, y = richness)) +
ylab("OTUs detected") +
xlab("Number of samples sequenced") +
theme_bw()
网友评论