关于测试数据共享文件声明

百度云是一种非常方便的文件共享方式,但是有时会出现文件无法通过审核,导致大家访问失败?之前团队分享视频(百度管片最严,你懂的,上周六的纪录片将扩展名mkv修改为jpg才通过审核)时为避免被和谐,采用后台回复获取可更新下载链接的方式。而扩增子、宏基因组、网络教程的测序数据为方便大家使用,直接将链接贴在正文中,半年来累计下载转存超过5000次,为大家参考格式准备数据、自学分析提供了很大便利。最近百度更新了敏感词库,导致之前分享的测序数据全部被强制取消分享(连分享的AGCT纯文本数据都不小心组成了敏感词,防不胜防呀!),给后续学习者带来不便见谅!

今后团队的教程中尽量展示输入文件的格式,即只读正文即可自己动手准备相关文件。对于必不可少的示例文件,一律采用后台回复方式获取下载链接(确认链接失效请文章下方留言通知我们更新),本文相关数据暗号为“稀释曲线”。请读者仔细阅读原文,找到暗号,并准确回复获取网盘下载链接。请复制链接在电脑端正规浏览器中访问(如Chrome、IE、Firefox)。

经常有人用手机、微信访问百度链接无法打开,并误报链接失败,这是因为手机或微信的系统经常错误识别链接(如把链接前后的文字加入链接生成错误地址),或是功能不完善无法访问一些百度云网址,去年下半年至少收到过20次以上误报链接失效,不是微信自动生成链接错误,就是复制了不准确的网址(地址前后包括文字或链接不完整)。再次声明,请在电脑端准确复制链接,并用Chrome等兼容性强的浏览器访问。如访问失败,请先核对地址链接是否正确,并尝试至少使用两种上面提到的正规浏览器访问获得的准确网址,确认无法访问后,采用文章留言或后台留言的方式联系团队成员更新链接,谢谢!

Alpha多样性之稀释曲线

比较菌群Alpha多样性,最常见的方法是采用箱线图组间比较,此外还存在另一种常见比较样品、组间多样性的方法就是稀释曲线(rarefraction curve)。

稀释曲线的使用实例,可以参考之前分享的一篇文章
《Microbiome: 简单套路发高分文章–杨树微生物组》,其中图1中4个子图全是稀释曲线。

今天我们将介绍最方便的方法是usearch + R,逐行实行绘制。

同时还提供QIIME命令行,和使用Docker QIIME实例网页版交互式稀释曲线的方法(前提是你能成功安装QIIME,或是有权限使用Docker)。

本实战,是基于本公众号之前发布文章 《扩增子分析教程-3统计绘图-冲击高分文章》中提供测试数据的OTU表、实验设计文件上进行分析,保存过的直接查找相应文件,新手请后才回复“稀释曲线”获得本文所需OTU表和实验分组信息文件。

采用Usearch获得alpha rarefraction的数值

这里我们需要一个文件的OTU表,格式如下:

# Constructed from biom file
#OTU ID KO6     WT8     KO2     KO5     OE2
OTU_52  73.0    15.0    29.0    62.0    1.0
OTU_12  1109.0  182.0   575.0   886.0   110.0
OTU_26  87.0    53.0    66.0    117.0   12.0 

也可以使用biom命令转换通常的biom为txt文件,此步不需要的请跳过:

# 获得文本OTU表
biom convert -i otu_table.biom -o otu_table.txt --table-type="OTU table" --to-tsv

采用usearch进行重抽样等量标准,并基于各样品等量数据生成稀释梯度数据

# 重采样为相同reads数量,默认为1万,测试数据比较小,这是抽3000条
usearch10 -otutab_norm otu_table.txt -output otu_table_norm.txt -sample_size 3000 # , normlize by subsample to 10000
# 取1%-100%的序列中OTUs数量
usearch10 -alpha_div_rare otu_table_norm.txt -output alpha_rare.txt -method without_replacement 

最后我们获得了不同梯度下各样品中OTU的数据alpha_rare.txt文件,内容格式如下:

richness        KO6     WT8     KO2     KO5     OE2     WT1     WT2
1       39.0    27.0    39.0    37.0    33.0    27.0    34.0    31.0
2       70.0    44.0    71.0    64.0    55.0    57.0    69.0    62.0
3       92.0    60.0    91.0    91.0    70.0    76.0    85.0    90.0
4       107.0   70.0    114.0   108.0   90.0    99.0    104.0   102.0
5       128.0   84.0    119.0   127.0   101.0   106.0   125.0   116.0
6       134.0   90.0    135.0   145.0   115.0   119.0   141.0   131.0 

关于usearch10 -alpha_div_rare 的使用方法和介绍,请阅读其官方帮助及相关页面 http://www.drive5.com/usearch/manual/cmd_alpha_div_rare.html

其实这个表你在Excel中选中,就可以生成稀释曲线的图。但为我们还需要进一步的统计,以及为了实现可重复式计算,建议所有统计绘图全部在R语言中用代码记录,便于将来修改和检查错误,发表文章同时共享代码也是对成果的负责。

R ggplot2绘制稀释曲线

1. 按每个样品抽样的richness绘制曲线

实验设计的基本格式

SampleID        BarcodeSequence LinkerPrimerSequence    ReversePrimer   genotype        compartment     batch   species Description
KO1     TAGCTT  AACMGGATTAGATACCCKG     ACGTCATCCCCACCTTCC      KO      root    1       Aarabidopsis    KnockDown
KO2     GGCTAC  AACMGGATTAGATACCCKG     ACGTCATCCCCACCTTCC      KO      root    1       Aarabidopsis    KnockDown
KO3     CGCGCG  AACMGGATTAGATACCCKG     ACGTCATCCCCACCTTCC      KO      root    1       Aarabidopsis    KnockDown

在Rstudio中,首先设置工作目录为测试文件所在目录(Session - Set Working Directory - Choose Directory)

# 安装和载入相关包和数据文件
#source("https://bioconductor.org/biocLite.R")
#biocLite(c("ggplot2","reshape2")) # 没安装过此类包的请手动运行这两行代码安装包
library("ggplot2") # load related packages
library("reshape2")
design = read.table("design.txt", header=T, row.names= 1, sep="\t")
rare = read.table("alpha_rare.txt", header=T, row.names= 1, sep="\t") # 提取样品组信息
sampFile = as.data.frame(design$genotype,row.names = row.names(design))
colnames(sampFile)[1] = "group"# 转换宽表格为ggplot通用长表格格式
rare$x = rownames(rare) # 添加x轴列
rare_melt = melt(rare, id.vars=c("x")) # 转换为长表格
rare_melt$x = factor(rare_melt$x, levels=1:100) # 设置x轴顺序# 添加分组信息
rare_melt3 = merge(sampFile,rare_melt, by.x="row.names", by.y="variable")
rare_melt3$variable=rare_melt3$Row.names# 按样品分组,按组上色
p = ggplot(rare_melt3, aes(x = x, y = value, group = variable, color = group )) + geom_line()+xlab("Rarefraction Percentage")+ylab("Richness (Observed OTUs)")+scale_x_discrete(breaks = c(1:10)*10, labels = c(1:10)*10) + theme_classic()
p
ggsave(paste("alpha_rare_samples.pdf", sep=""), p, width = 8, height = 5)

图1. 拆线图展示27个样品,3000条序列,在1% - 100% 抽样条件下的稀释曲线,并按组上色。

这里有一个问题,是曲线为锯齿。主要原因是测试数据量太少,数据量越大越平滑。另一个解决办法是增加抽样次数,如将多次计算的抽样在表取均值。或者也可以增加显示的步长,比如将1%的步长改为2%或5%,也可以消除据锯齿,读者可以自己试试。

2. 按组求均值和标准误展示组间差异

# 求各组均值
# 读取usearch rarefraction文件,上面己经修改,必须重新读入
rare = read.table("alpha_rare.txt", header=T, row.names= 1, sep="\t")
mat_t = merge(sampFile, t(rare), by="row.names")[,-1]
# 按第一列合并求均值
mat_mean = aggregate(mat_t[,-1], by=mat_t[1], FUN=mean)
# 修正行名
mat_mean_final = do.call(rbind, mat_mean)[-1,]
geno = mat_mean$group
colnames(mat_mean_final) = genorare=as.data.frame(round(mat_mean_final))
rare$x = rownames(rare)
rare_melt = melt(rare, id.vars=c("x"))# 求各组标准误
# 转置rare表格与实验设计合并,并去除第一列样品名
se = function(x) sd(x)/sqrt(length(x)) # function for Standard Error
mat_se = aggregate(mat_t[,-1], by=mat_t[1], FUN=se) # se 为什么全是NA
mat_se_final = do.call(rbind, mat_se)[-1,]
colnames(mat_se_final) = genorare_se=as.data.frame(round(mat_se_final))
rare_se$x = rownames(rare_se)
rare_se_melt = melt(rare_se, id.vars=c("x"))# 添加标准误到均值中se列
rare_melt$se=rare_se_melt$valuerare_melt$x = factor(rare_melt$x, levels=c(1:100))p = ggplot(rare_melt, aes(x = x, y = value, group = variable, color = variable )) + geom_line()+geom_errorbar(aes(ymin=value-se, ymax=value+se), width=.5) +xlab("Percentage")+ylab("Richness (Observed OTUs)")+theme(axis.text.x=element_text(angle=90,vjust=1, hjust=1))+scale_x_discrete(breaks = c(1:10)*10, labels = c(1:10)*10)+theme_classic()
p
ggsave(paste("alpha_rare_groups.pdf", sep=""), p, width = 8, height = 5)

图2. 拆线图展示3组均值和标准误在1% - 100% 抽样条件下的稀释曲线,并按组上色。

对于组间无差异也是很正常的,不是所有的实验都在物种多样性差异。

大部分结果按组+标准误是不是差别更明显了,谁多谁少一目了解。对于其中的OE为直线是测试数据量太少造成的,实际公司返回的数据都有3-10万。一般取3-5万重抽样,过低的重复可以直接扔掉。

QIIME绘制稀释曲线

前提是你能装好QIIME,最近QIIME更新了Conda方式安装,是很方便,可是我在Ubuntu16.04上快速安装成功,但就是不好使。

我还是采用了之前的手动安装,或Docker安装的方式都成功了,有需要的可以参考之前发布过QIIME1.9.1安装的三种方法如下:
1. 虚拟机安装:适合在Windows上学习,但分析效率低。
2. Docker安装:Linux上最简单的安装方法,需要管理员帮忙并给你开通部分权限。
3. 管理员直接安装:直接安装QIIME1.9.1相关的上百个程序和包,不同环境依赖关系不同,需要极丰富经验,建议管理员安装。

QIIME进行OTU表步长重抽样,计算Alpha指数

# 调置重抽样的起、始和步长,默认每步还抽10次增加曲线平滑
multiple_rarefactions.py -i otu_table.biom -m 100 -x 3000 -s 100 -n 30 -o a_rare/ # min, max, step
# 批量计算shannon和observed_otus指数
alpha_diversity.py -i a_rare/ -m shannon,observed_otus -o a_div/ # -t ${result}/rep_seqs.tree
# 合并结果
collate_alpha.py -i a_div/ -o a_collated/
# 实验设计前添加#符合QIIME mappingfile要求
cat <(echo -n "#") design.txt > design_rare.txt # make mapping file
# 绘制释释曲线
make_rarefaction_plots.py -i a_collated/ -m design_rare.txt -o a_rare_plots/

如果你QIIME安装不完整,出现报错Segmentation fault (core dumped),可以在VirtualBox中运行,代码不变。推荐使用Docker更方便。

Docker虚拟机中运行生成稀释曲线的方法

docker run --rm -v `pwd`:/home --name=qiime yoshikiv/basespace-qiime-191-dev make_rarefaction_plots.py -i home/a_collated/ -m home/design_rare.txt -o home/

结果可打开rarefaction_plots.html网页方部,图片在average_plots目录中。

网页非常好用,可以选择不同的Alpha多样性指数,和不同的分组类别,有多种结果选择。
缺点是结果不是矢量图。

图3. QIIME的梯度稀释曲线,步长只设置了30个,曲线更平滑,而usearch为100次。

猜你喜欢

  • 一文读懂:1微生物组 2进化树 3预测群落功能
  • 热文:1图表规范 2DNA提取 3 实验vs分析
  • 必备技能:1提问 2搜索 3Endnote
  • 文献阅读 1热心肠 2SemanticScholar 3geenmedical
  • 扩增子分析:1图表解读 2分析流程 3统计绘图 4群落功能 5进化树
  • 科研团队经验:1云笔记 2云协作 3公众号
  • 系列教程:1Biostar 2微生物组 3宏基因组
  • 生物科普 1肠道细菌 2生命大跃进 3细胞的暗战 4人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外100+ PI,900+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA

Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文相关推荐

  1. 基于USEARCH或QIIME绘制Alpha多样性稀释曲线(rarefraction curve)

    关于测试数据共享文件声明 百度云是一种非常方便的文件共享方式,但是有时会出现文件无法通过审核,导致大家访问失败?之前团队分享视频(百度管片最严,你懂的,上周六的纪录片将扩展名mkv修改为jpg才通过审 ...

  2. 在线作图|微生物多样性分析——稀释曲线

    稀释曲线 稀释曲线(Rarefaction Curve,也称稀疏曲线):一般在微生物组研究中用于评估测序量或样本量的饱和情况.稀释曲线通过从每个样本中随机抽取一定数量的序列(即在不超过现有样本测序量的 ...

  3. Qiime2+Origin绘制稀释曲线

    稀释曲线(Rarefaction Curve)也称稀疏曲线,一般在微生物组研究中多用于评估测序量或样本量的饱和情况.利用dada2去噪获得的table文件,计算随机抽取n个(n小于测得reads序列总 ...

  4. vegan稀释曲线 基因丰度_蒙古沙冬青及其伴生植物AM真菌物种多样性

    蒙古沙冬青(Ammopiptanthus mongolicus)隶属豆科沙冬青属, 是西北荒漠生境中唯一常绿阔叶灌木, 耐干旱.抗逆性强, 在保持水土和防治荒漠化方面作用显著[.与蒙古沙冬青相伴而生的 ...

  5. vegan稀释曲线 基因丰度_基于OTU的稀释曲线(Rarefaction curves) + ggplot2

    1. 简介 稀释曲线(Rarefaction curves)是从样品中随机抽取一定测序量的数据(序列条数),统计它们所对应的OTUs种类(代表物种),并以抽取的测序数据量与对应的代表OTUs来构建曲线 ...

  6. 211.Alpha多样性箱线图(样章,11图2视频)

    <微生物组数据分析与可视化实战>专著 众筹编写<微生物组数据分析与可视化实战>--成为宏基因组学百科全书的创始人(目录) 编者序:初衷.计划.要求.优势.目标和展望 本文为样章 ...

  7. 扩增子图表解读1箱线图:Alpha多样性,老板再也不操心的我文献阅读了

    想了解更多宏基因组.16S文献阅读和分析相关文章,快关注"宏基因组"公众号,干货第一时间推送. 系统学习生物信息,快关注"生信宝典",那里有几千志同道合的小伙伴 ...

  8. 为什么Alpha多样性的输入数据会是它?

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

  9. vegan稀释曲线 基因丰度_R语言 vegan包计算物种累计曲线

    vegan 包是进行群落数据分析最常用的R包,其中的 specaccum 函数用来计算物种的累计曲线 首先看下官方示例: library(vegan) data(BCI) sp1 plot(sp1, ...

最新文章

  1. css less 不要作用到子对象_不要盲目的在项目中使用LESS CSS
  2. 个人博客开发-01-nodeJs项目搭建
  3. 【网络基础】URI 和 URL 的纠缠
  4. 【模型解读】历数GAN的5大基本结构
  5. Excel中的VBA宏:每次划款前从总名册中同步用户数据到当前页
  6. k8s之pod管理(控制器)
  7. 【经典问题】maximum subset sum of vectors
  8. php如何获取百度快照,PHP获取某网站的百度快照日期方法
  9. [BZOJ 2424][HAOI2010]订货(费用流)
  10. cve-2020-0796_微软SMBv3 Client/Server远程代码执行漏洞简单分析(CVE20200796)
  11. Android APK包文件解析
  12. 【ERNIE】深度剖析知识增强语义表示模型——ERNIE
  13. docucentre s2011默认登录密码
  14. static 在C/C++中的用法总结
  15. 宏观经济学 马工程教材个人笔记整理
  16. 谷歌浏览器控制台preview乱码问题及原因
  17. premiere cs6导出视频格式
  18. zend新建php项目,Zend Studio使用教程:创建PHP文件的三种方式
  19. 大屏antdesign走马灯轮播加图形渲染
  20. Google SEO和SEM的不同之处?

热门文章

  1. 书中自有BAT Offer!
  2. 从DDD DSL DCI 说起
  3. 软件系统理想主义之殇
  4. 分布式概念-分布式系统是什么?
  5. scrum敏捷开发工具实践分享
  6. C++11 开启多线程
  7. 对操作系统安全构成威胁的问题
  8. random函数用法_Python函数式编程:从入门到走火入魔
  9. makefile文件编写教程
  10. python开发工具和框架安装器_Python 开发工具和框架安装