R语言实现OTU表的抽平分析
好久没有更新文章了,抱歉,今天我们先来讲一下抽平。相信大家平常在16s RNA 测序后,一般都会对测序数据划分后生成的OTU表进行抽平,保证保证样本测序序列的均一性。那么今天就来讲一下如何使用R语言来实现对OTU表的抽平分析。
1 抽平是什么?
抽平:指按照一定数量或样本序列最低数量,将所有样本的序列随机抽取至统一数据量。
简单地说,就是在不同的样本测序数据有差距的时候,保证样本测序序列的均一性。
打个比方说:有5个样本:A、B、C、D、E,样品A测序数据量为3万条序列,样本B为4万条,样本C为5万条,样本C为6万条,样本E为7万条,这个时候我们一般会选择抽平处理。
但是注意抽平后样品B就会浪费1万条,样品C就会浪费2万条,样品D就会浪费3万条,样品E就会浪费4万条 ,所以抽平不是唯一的方法,也可以通过Deseq2方法去进行后续分析的,但是今天我们主要将抽平分析。
2 R语言实现抽平分析的方法
R语言实现抽平分析的方法,我所掌握的是两种,一种是使用vegan包,另一种是phyloseq包。
2.1 OTU表数据格式
这里我们提供一组数据,分别为16个样本的OTU数据,大家有需要可以去我的gitee获取该数据,可以给我留言。
2.2 vegan包实现抽平分析的方法
#首先我们需要加载vegan包
library(vegan)
#加载工作目录,这里需要更换为你自己的
setwd("D:/R_wenji/06-微信公众号/21_07_02抽平分析")
#加载otu表
otu = read.table('otu.txt', header=T, sep="\t", quote = "", row.names=1, comment.char="",stringsAsFactors = FALSE)
#求和查看每个样本的和
colSums(otu)
#使用该代码进行抽平
otu_Flattening = as.data.frame(t(rrarefy(t(otu), min(colSums(otu)))))
#查看抽平后的每个样本的和
colSums(otu_Flattening)
#将抽平后的otu表保存到该工作目录,准备后面的多样性分析
write.table (otu_Flattening, file ="otu_Flattening.csv",sep =",", quote =FALSE) #结果导出
2.3 phyloseq包实现抽平分析的方法
#安装包
#如果你没有安装过phyloseq包,你可以使用下列代码进行安装该包
if(!requireNamespace("BiocManager")){
install.packages("BiocManager")
}
BiocManager::install("phyloseq")
#加载包1
library(phyloseq)
#设置一个随机种子便于重复
set.seed(123)
otu_1 = otu_table(otu, taxa_are_rows = T)
otu_2 = phyloseq(otu_1)
#注意,该方法会自动去除一些低丰度的otu
otu_Flattening1 = rarefy_even_depth(otu_2,replace = TRUE)
#8OTUs were removed because they are no longer present in any sample after random subsampling
#查看抽平前后的变化
sample_sums(otu_2)
sample_sums(otu_Flattening1)
#提取抽平后的otu表格
otu_Flattening1 = as.data.frame(otu_Flattening1@.Data )
#将抽平后的otu表保存到该工作目录,准备后面的多样性分析
write.table (otu_Flattening1, file ="otu_Flattening1.csv",sep =",", quote =FALSE)
#查看被过滤掉OTU在各样品中的数据
otu[setdiff(rownames(otu),rownames(otu_Flattening1)),]
我们可以看到使用phyloseq包来抽平分析会过滤掉一下低丰度的OTU,所以我们需要设置一个随机种子便于重复。可以看到被过滤掉了8个OTU。
这两个方法都可以抽平,要如何选择,还是看你,好了今天的内容就是这些,简单但是可以你需要。
好久没更新了,感谢你们的支持谢谢。