R语言实现OTU表的抽平分析

作者: fafu生信小蘑菇 | 来源:发表于2021-07-02 22:28 被阅读0次

    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.1 OTU表

    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.2-1 抽平前每个样本的和 图2.2-2 抽平后每个样本的和 图2.2-3 抽平后的OTU表

    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) 
    
    
    图2.3-1 抽平前每个样本的和 图2.3-2 抽平后每个样本的和 图2.3-3 抽平后的OTU表
    #查看被过滤掉OTU在各样品中的数据
    otu[setdiff(rownames(otu),rownames(otu_Flattening1)),]
    
    图2.3-4 查看被过滤掉OTU在各样品中的数据

    我们可以看到使用phyloseq包来抽平分析会过滤掉一下低丰度的OTU,所以我们需要设置一个随机种子便于重复。可以看到被过滤掉了8个OTU。

    这两个方法都可以抽平,要如何选择,还是看你,好了今天的内容就是这些,简单但是可以你需要。

    好久没更新了,感谢你们的支持谢谢。

    相关文章

      网友评论

        本文标题:R语言实现OTU表的抽平分析

        本文链接:https://www.haomeiwen.com/subject/gciyultx.html