扩增子测序中OTU表进行抽平的两种方式

简介: A random rarefaction of sample reads according to a specific reads length (usually the smallest value) should be performed firstly for downstream analysis.

扩增子测序拿到OTU表之后通常会被要求进行抽平处理,这样去进行后续比较分析,测序量一致后续分析比较才有意义,但是这种方式的缺陷在于当样品测序量相差比较大时候,会造成数据的极大浪费,假设样品A测序量为3万条reads,样品B测序量10万条,抽平后样品B就会浪费7万条reads,当然抽平并不是唯一的解决途径,文献中也有通过像Deseq2这种方法去进行后续分析的,Deseq2有自己的标准化的方法,做过转录组的人应该大多都清楚,这里呢我就先说下前者--抽平的实现

Option 1 Vegan包


library(vegan)
otu = read.table('16s_OTU_Table.txt', header=T, sep="\t", quote = "", row.names=1, comment.char="",stringsAsFactors = FALSE)%>%select(-13) 
colSums(otu)
otu_rare = as.data.frame(t(rrarefy(t(otu), min(colSums(otu)))))
colSums(otu_rare)

image.png

Option 2 Phyloseq包


library(phyloseq)
set.seed(123)#这种方法最好设置一个随机种子便于重复
otu1 = otu_table(otu, taxa_are_rows = T)
phyloseq = phyloseq(otu1)
#这种方法会自动去除一些低丰度的otu
rare.data = rarefy_even_depth(phyloseq,replace = TRUE)
#8OTUs were removed because they are no longer present in any sample after random subsampling
#查看抽平前后的变化
sample_sums(phyloseq)
sample_sums(rare.data)
#提取抽平后的otu表格 
rare.otu = rare.data@.Data %>%
  as.data.frame()

image.png

可以看到通过phyloseq方法会过滤掉一下低丰度的OTU,所以通过这种方法进行抽平的话,最好set.seed一下,便于重复.

且看下被过滤掉的这8个OTU在各样品中的值如何


otu[setdiff(rownames(otu),rownames(rare.otu)),]

image.png

en,确实蛮低的,删就删了吧!~~ 方法没有好坏,大家自主选择吧!


相关文章
|
6月前
单细胞分析|映射和注释查询数据集
单细胞分析|映射和注释查询数据集
86 3
|
6月前
|
存储 关系型数据库 MySQL
提高查询性能的秘密:深入剖析聚集、辅助、覆盖和联合索引
提高查询性能的秘密:深入剖析聚集、辅助、覆盖和联合索引
100 0
|
搜索推荐 Linux Python
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
|
3月前
|
存储 数据处理 数据库
InfluxDB数据之谜:如何巧妙地删除和修改你的时间序列数据?
【8月更文挑战第20天】InfluxDB是一款高性能时间序列数据库,专为快速存储与检索时间序列数据设计。本文通过Python示例介绍如何在InfluxDB中执行数据删除与间接修改操作。首先安装`influxdb`库,接着连接数据库。使用`DELETE`语句可按条件删除数据;因InfluxDB不直接支持数据修改,可通过查询、更新并重写数据的方式来实现。注意这种方式可能影响性能,需谨慎使用。随着社区发展,未来将提供更多高效的数据管理工具。
192 1
|
5月前
|
存储
预测分析表方法
代码遵从C++14标准,忙着别的事潦草的完成,还有许多需要优化的地方。 预测表里面的数:-1代表这有报错,其他数字拆开十位代表行,个位代表列; 行:给出文法的行,从0开始,如:E→TE’是第0行;因为只需要到了右半部分所以只保留了右半部分 列:为什么会出现列呢?因为很多文法右半部分是或的关系,如:T’ →*FT’ |/ FT’ |%FT’|ε 依次的行列是(3,0),(3,1),(3,2),(3,3)所以预测表里存储的是30,31,32,33 其他部分看代码的注释即可,有问题可以留言或加我QQ讨论
26 1
|
存储 数据可视化 数据挖掘
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
知识点丨重测序数据进行kinship亲缘关系分析、构建IBS矩阵的方法与介绍
|
存储 JSON Java
GATK4重测序数据怎么分析?
GATK4重测序数据怎么分析?
|
数据挖掘
2-华大时空组学分析软件 Spateo 空转数据基础分析用法示例
本分分享了使用华大时空组学分析软件 Spateo进行聚类、DE等简单空间转录组分析的用法示例,以供参考
1004 1
|
存储 消息中间件 传感器
SPL 实现电力高频时序数据实时存储统计
SPL 实现电力高频时序数据实时存储统计
SPL 实现电力高频时序数据实时存储统计
|
数据采集 算法
测序质控和基因组组装原理
测序质控和基因组组装原理