本节课程,需要先完成
 
先看一下扩增子分析的整体流程,从下向上逐层分析

分析前准备
  1. # 进入工作目录
  2. cd example_PE250
上一节回顾:我们制作了Usearch要求格式的Fasta文件,对所有序列进行去冗余和低丰度过滤,并聚类生成了OTU。
 
接下来我们对OTU进一步去除嵌合体,并生成代表性序列和OTU表。
 
什么是chimeras(嵌合体)?
嵌合体序列由来自两条或者多条模板链的序列组成,示意图如下:

在PCR反应中,延伸阶段由于不完全延伸,就会导致嵌合体序列的出现,以上图为例,在扩增序列X的过程中,在序列延伸阶段,只产生了部分X序列延伸阶段就结束了,在下一轮的PCR反应中,这部分序列作为序列Y的引物接着延伸,扩增就会形成X和Y的嵌合体序列;
 
在放一张具体一点的示意图,不完全延伸产生的序列作为下一轮PCR反应的产物,进行延伸

通常在PCR过程中,大概有1%的几率会出现嵌合体序列,在16S/18S/ITS 扩增子测序的分析中,系统相似度极高,嵌合体可达1%-20%,需要去除嵌合体序列。
 
嵌合体的比例与PCR循环数相关,循环数越高,嵌合体比例越高。
 
有玩过魔兽有小伙伴记得精灵族的终极兵种双头龙奇美拉吗?它的英文就是chimera,即中文的嵌合体,奇美拉是音译。
10. 基于数据库去嵌合体(可选)
上文第9步,聚OTU时,已经按照组内的序列相似情况,直接denovo去除了大量嵌合体。目前这步基于数据库去嵌合体,在以前的分析中是必做的,但随着技术发展,发现这步可能也会造成假阴性。读者可以实验设计、初步结果和预期来判断是否需要这步处理。本文示例对每一步均进行操作,即是个人风格,又是为了给大家展现一个比较全面的流程。之前Usearch作者推荐使用RDP数据去嵌合,并提供了下载链接;现在作者建议,如果做,就用Sliva或Unite这种全面的大数据库,不推荐用RDP这种小数据库,以前的建议是错的。软件方法均是不断进步的,我还没有系统比较作者的新建议有多大改进,这里还是按照原来的方法进行,读者可以自行尝试新方法。
  1. # 下载Usearch推荐的参考数据库RDP
  2. wget http://drive5.com/uchime/rdp_gold.fa
  3. # 基于RDP数据库比对去除已知序列的嵌合体
  4. ./usearch10 -uchime2_ref temp/otus.fa \
  5. -db rdp_gold.fa \
  6. -chimeras temp/otus_chimeras.fa \
  7. -notmatched temp/otus_rdp.fa \
  8. -uchimeout temp/otus_rdp.uchime \
  9. -strand plus -mode sensitive -threads 96
采用-uchime2_ref参数去嵌合体,后面接OTU序列(输入文件);
-db 指定参考数据库,这里用RDP;
-chimeras 输出检测为嵌合体的序列;
-notmatched 输出不匹配数据库的结果,即非嵌合,非相同序列;
-uchimeout 输入嵌合体的检测详细信息,如每个嵌合体的来源,与那几个亲本相似等;
-strand 指定链方向,一般为正;
-mode 选择模式,敏感的代价是嵌合体鉴定的高假阳性率;
-threads 设计线程数,程序默认系统小于10个线程为单线程;多于10个线程为10线程,根据实际情况设置,不清楚不用更好。
 
上面计算结果Chimeras 2669/5489 (48.6%), in db 51 (0.9%), not matched 2769 (50.4%),即5489个OTU有2669检测为嵌合、51个与数据库序列一致为非嵌合,另外2769与数据库不匹配不确定是否为嵌合。对应temp/otus_rdp.uchime文件中第三列的Y/N/?
 
我们想要是的排除嵌合的部分,即51+2769=2820。思路是将全部OTU中鉴定为嵌合的排除掉。
  1. # 获得嵌合体的序列ID
  2. grep '>' temp/otus_chimeras.fa | sed 's/>//g' > temp/otus_chimeras.id
  3. # 剔除嵌合体的序列
  4. filter_fasta.py -f temp/otus.fa -o temp/otus_non_chimera.fa -s temp/otus_chimeras.id -n
  5. # 检查是否为预期的序列数量2820
  6. grep '>' -c temp/otus_non_chimera.fa
11. 去除非细菌序列(可选)
此步也是非必须的,容易造成假阴性。分析中有很多个人习惯的因素在里面,所以不同人的分析结果,也会略有不同。也缺少系统的评估到底那些更好,因为好与不好是有条件的,如何判断也不容易説清楚,这就是经验;项目经验是经过大量的项目反复研究积累出来的。
个人习惯在大数据面前,结果再多也没用,得找到有意义的东西,所以原则上是能舍即舍,更容易发现规律。万一没有发现,再回去把扔掉的捡回来试试。如果什么都不仍,规律可能永远藏在大数据的海洋中。
 
这步的原理是将OTU与Greengene (http://greengenes.secondgenome.com)的Align数据库比对,筛选序列相似性大于75%以上的序列作为细菌序列;此步可以排除外源非细菌的污染,非细菌序列在接下来的分析中无法注释物种分类,也很难分析。
  1. # 下载Greengene最新数据库,320MB
  2. wget -c ftp://greengenes.microbio.me/greengenes_release/gg_13_5/gg_13_8_otus.tar.gz
  3. # 解压数据包后大小3.4G
  4. tar xvzf gg_13_8_otus.tar.gz
  5. # 将OTU与97%相似聚类的代表性序列多序列比对,大约8min
  6. time align_seqs.py -i temp/otus_non_chimera.fa -t gg_13_8_otus/rep_set_aligned/97_otus.fasta -o temp/aligned/
  7. # 无法比对细菌的数量
  8. grep -c '>' temp/aligned/otus_non_chimera_failures.fasta # 1860
  9. # 获得不像细菌的OTU ID
  10. grep '>' temp/aligned/otus_non_chimera_failures.fasta|cut -f 1 -d ' '|sed 's/>//g' > temp/aligned/otus_non_chimera_failures.id
  11. # 过滤非细菌序列
  12. filter_fasta.py -f temp/otus_non_chimera.fa -o temp/otus_rdp_align.fa -s temp/aligned/otus_non_chimera_failures.id -n
  13. # 看我们现在还有多少OTU:975
  14. grep '>' -c temp/otus_rdp_align.fa
经过这一步过滤,从2820非嵌合的OTU,只剩下975个与细菌相似的OTU,这种数量才更接近真相。有些研究经常搞几千、几万的OTU,假阳性结果90%以上,你觉得意义何在,如何指导下游实验。
 
对于真菌ITS/18S,一般不建议用Unite数据库去嵌合,因为ITS/18S在所有真核生物中都有,有待物种注释后进一步确认。
12. 产生代表性序列和OTU表
代表性序列(representative sequences)即为确定的最终版的OTU,类似于参考基因组/cDNA将为索引的字典。然后将所有数据mapping于OTU上来确定各物种的丰度。
 
OTU表,是每个OTU在每样品中的丰度值,本质上每种高通量测序结果,都会有一个类似的表,如RNA-Seq是基因表达与样品的表
  1. # 重命名OTU,这就是最终版的代表性序列,即Reference(可选,个人习惯)
  2. awk 'BEGIN {n=1}; />/ {print ">OTU_" n; n++} !/>/ {print}' temp/otus_rdp_align.fa > result/rep_seqs.fa
  3. # 生成OTU表
  4. ./usearch10 -usearch_global temp/seqs_usearch.fa -db result/rep_seqs.fa -otutabout temp/otu_table.txt -biomout temp/otu_table.biom -strand plus -id 0.97 -threads 10
  5. # 结果信息 01:20 141Mb 100.0% Searching seqs_usearch.fa, 32.3% matched
  6. # 默认10线程,用时1分20秒,有32.3%的序列匹配到OTU上;用30线程反而用时3分04秒,不是线程越多越快,分发任务也是很费时间的
现在我们获得了OTU表,用less temp/otu_table.txt查看一下吧。同时还有biom可处理的标准json格式文件,用于后续分析

扩增子分析解读4去嵌合体 非细菌序列 生成代表性序列和OTU表的更多相关文章

  1. 扩增子分析解读5物种注释 OTU表操作

    本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...

  2. 扩增子分析解读2提取barcode 质控及样品拆分 切除扩增引物

    本节课程,需要完成扩增子分析解读1质控 实验设计 双端序列合并 先看一下扩增子分析的整体流程,从下向上逐层分析 分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们拿到了双 ...

  3. 扩增子分析解读6进化树 Alpha Beta多样性

    分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们的OTU获得了物种注释,并学习OTU表的各种操作————添加信息,格式转换,筛选信息.   接下来我们学习对OTU序列的 ...

  4. 扩增子图表解读6韦恩图:比较组间共有和特有OTU或分类单元

    韦恩图 Venn Diagram Venn Diagram,也称韦恩图.维恩图.文氏图,用于显示元素集合重叠区域的图示.   韦图绘制工具 常用R语言的VennDiagram包绘制,输出PDF格式方便 ...

  5. 解读人:谭亦凡,Macrophage phosphoproteome analysis reveals MINCLE-dependent and -independent mycobacterial cord factor signaling(巨噬细胞磷酸化蛋白组学分析揭示MINCLE依赖和非依赖的分支杆菌索状因子信号通路)(MCP换)

    发表时间:2019年4月 IF:5.232 一. 概述: 分支杆菌索状因子TDM(trehalose-6,6’-dimycolate)能够与巨噬细胞C-型凝集素受体(CLR)MINCLE结合引起下游通 ...

  6. 扩增子图表解读5火山图:差异OTU的数量及变化规律

    火山图 Volcano plot 在统计学上,火山图是一种类型的散点图,被用于在大数据中快速鉴定变化.由于它的形成像火山喷发的样子,所以被称为火山图.和上文讲的曼哈顿图类似.   火山图基本元素 火山 ...

  7. 扩增子图表解读1箱线图:Alpha多样性

    箱线图 箱形图(Box-plot)又称为盒须图.盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图.因形状如箱子而得名.在宏基因组领域,常用于展示样品组中各样品Alpha多样性的分布 第一种情 ...

  8. 如何分析解读systemstat dump产生的trc文件

    ORACLE数据库的systemstat dump生成trace文件虽然比较简单,但是怎么从trace文件中浩如烟海的信息中提炼有用信息,并作出分析诊断是一件技术活,下面收集.整理如何分析解读syst ...

  9. 扩增子分析QIIME2. 1简介和安装

    原网站:https://blog.csdn.net/woodcorpse/article/details/75103929 声明:本文为QIIME2官方帮助文档的中文版,由中科院遗传发育所刘永鑫博士翻 ...

随机推荐

  1. 图像处理之基础---滤波器之高斯低通滤波器3c代码实现yuv,rgb

    ()高斯理论简介 () ()代码实现 四 使用高斯滤波器进行图像的平滑 ()高斯简介 http://research.microsoft.com/en-us/um/people/kahe/eccv10 ...

  2. Myeclipse10集成Flex4.6

    安装好flash builder4.6 执行fb安装文件夹下utilities\Adobe Flash Builder 4.6 Plug-in Utility.exe 插件. 第一次选择flash b ...

  3. [项目机会]使用lync的统一通信平台

    [项目内容]基于微软的lync或者其他思科.腾讯等公司技术,建立一个员工统一的通讯平台,可以随时的保持员工之间沟通. [项目价值] 1.保持项目团队成员之间的随时随地高效的电话或者视频会议: 2.集成 ...

  4. 使用Hibernate防止SQL注入的方法

    之前写代码,往后台传入一个组织好的String类型的Hql或者Sql语句,去执行. 这样其实是很蠢的一种做法!!!! 举个栗子~~ 我们模仿一下用户登录的场景: 常见的做法是将前台获取到的用户名和密码 ...

  5. Keys.BACKSPACE Keys.SPACE

    browser.find_element_by_xpath(xp_newpage).send_keys(Keys.SPACE)browser.find_element_by_xpath(xp_newp ...

  6. Codeforces Round #100 A. New Year Table

    A. New Year Table time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. sql server 生成随机数 rand函数

    https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql?view=sql-server-2017 在某一个区间内生 ...

  8. 并不对劲的spoj1811

    题意是求两个字符串的lcs,两个串都只包含小写字母. 本题既可以用后缀自动机,又可以用后缀数组. 对于后缀自动机,就是一道模板题,直接对于一个字符串建后缀自动机再用另一个串查询就行. 对于后缀数组,其 ...

  9. Python不兼容问题

    今天遇到了一个Python2与3不兼容的坑. ride是基于robot框架的python自动化ui,但它只支持python2,而我电脑环境只有python3,想跑别人基于ride编写的测试用例,折腾了 ...

  10. ubuntu/linuxmint如何添加和删除PPA源

    [添加] 1.sudo add-apt-repository ppa:user/ppa-name 2.sudo apt-get update (然后再安装软件sudo apt-get install ...