扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表

article/2025/1/13 10:15:55

image

写在前面

之前发布的《扩增子图表解读》系列,相信关注过我的朋友大部分都看过了(链接直达7月文章目录)。这些内容的最初是写本实验室的学生们学习的材料,加速大家对同行文章的解读能力。

《扩增子分析解读》系列文章介绍

扩增子分析是目前宏基因组研究中最常用的技术,由于微生物组受环境影响大,实验间重复较差,更需要更多的实验重复和分析技术来保证结果的准确性、可重复性。

本系统文章叫分析解读,即有详细的扩增子分析流程代码,又有本人对使用参数、备选参数意义的解读,可以让大部分零基础的人,更好的理解数据分析过程,并可亲自实践在自己的课题上,获得更好、更合理的实验结果。

本文采用目前最主流的扩增子测序数据类型HiSeq2500 PE250类型数据为例,结合目前主流方法QIIME+USearch优点组合定制的分析流程。本课程中所需的测序数据、实验设计和课程分析生成的中间文件,均可以直去百度云下载。链接:http://pan.baidu.com/s/1hs1PXcw 密码:y33d。

本课程代码的运行,至少需要Linux平台+安装QIIME1.9.1,我之前发布过三种安装QIIME的方法详见文章目录,总有一款适合你。

第四节. 去嵌合体,非细菌序列,生成代表性序列和OTU表

本节课程,需要完成
扩增子分析解读1质控,实验设计,双端序列合并
2提取barcode,质控及样品拆分,切除扩增引物
3格式转换,去冗余,聚类

先看一下扩增子分析的整体流程,从下向上逐层分析。
image

分析前准备

# 进入工作目录
cd example_PE250

上一节回顾:我们制作了Usearch要求格式的Fasta文件,对所有序列进行去冗余和低丰度过滤,并聚类生成了OTU。

接下来我们对OTU进一步去除嵌合体,并生成代表性序列和OTU表。

什么是chimeras(嵌合体)?

image

嵌合体序列由来自两条或者多条模板链的序列组成,示意图如下:
image
在PCR反应中,延伸阶段由于不完全延伸,就会导致嵌合体序列的出现,以上图为例,

在扩增序列X的过程中,在序列延伸阶段,只产生了部分X序列延伸阶段就结束了,在下一轮的PCR反应中,这部分序列作为序列Y的引物接着延伸,扩增就会形成X和Y的嵌合体序列;

在放一张具体一点的示意图,不完全延伸产生的序列作为下一轮PCR反应的产物,进行延伸
image

通常在PCR过程中,大概有1%的几率会出现嵌合体序列,而以在16S/18S/ITS 扩增子测序的分析中,系统相似度极高,嵌合体可达1%-20%,需要去除嵌合体序列。

嵌合体的比例与PCR循环数相关,循环数越高,嵌合体比例越高。

有玩过魔兽有小伙伴记得精灵族的终极兵种双头龙奇美拉吗?它的英文就是chimera,即中文的嵌合体,奇美拉是音译。

10. 基于数据库去嵌合体(可选)

上文第9步,聚OTU时,已经按照组内的序列相似情况,直接denovo去除了大量嵌合体。目前这步基于数据库去嵌合体,在以前的分析中是必做的,但随着技术发展,发现这步可能也会造成假阴性。读者可以实验设计、初步结果和预期来判断是否需要这步处理。本文示例对每一步均进行操作,即是个人风格,又是为了给大家展现一个比较全面的流程。之前Usearch作者推荐使用RDP数据 去嵌合,并提供了下载链接;现在作者建议,如果做,就用Sliva或Unite这种全面的大数据库,不推荐用RDP这种小数据库,以前的建议是错的。软件方法均是不断进步的,我还没有系统比较作者的新建议有多大改进,这里还是按照原来的方法进行,读者可以自行尝试新方法。

# 下载Usearch8推荐的参考数据库RDP
wget http://drive5.com/uchime/rdp_gold.fa
# 基于RDP数据库比对去除已知序列的嵌合体
./usearch10 -uchime2_ref temp/otus.fa \-db rdp_gold.fa \
    -chimeras temp/otus_chimeras.fa \
    -notmatched temp/otus_rdp.fa \
    -uchimeout temp/otus_rdp.uchime \
    -strand plus -mode sensitive -threads 96

采用-uchime2_ref参数去嵌合体,后面接OTU序列(输入文件);
-db指定参考数据库,这里用RDP;
-chimeras 输出检测为嵌合体的序列;
-notmatched 输出不匹配数据库的结果,即非嵌合,非相同序列;
-uchimeout 输入嵌合体的检测详细信息,如每个嵌合体的来源,与那几个亲本相似等;
-strand 指定链方向,一般为正;
-mode选择模式,敏感的代价是嵌合体鉴定的高假阳性率;
-threads设计线程数,程序默认系统小于10个线程为单线程;多于10个线程为10线程,根据实际情况设置,不清楚不用更好。

上面计算结果Chimeras 2651/5486 (48.3%), in db 53 (1.0%), not matched 2782 (50.7%),即5486个OTU有2651检测为嵌合、53个与数据库序列一致为非嵌合,另外2782与数据库不匹配不确定是否为嵌合。对应temp/otus_rdp.uchime文件中第三列的Y/N/?

我们想要是的排除嵌合的部分,即53+2782=2835。思路是将全部OTU中鉴定为嵌合的排除掉。

# 获得嵌合体的序列ID
grep '>' temp/otus_chimeras.fa|sed 's/>//g' > temp/otus_chimeras.id
# 剔除嵌合体的序列
filter_fasta.py -f temp/otus.fa -o temp/otus_non_chimera.fa -s temp/otus_chimeras.id -n
# 检查是否为预期的序列数量
grep '>' -c temp/otus_non_chimera.fa # 2835

11. 去除非细菌序列(可选)

此步也是非必须的,容易造成假阴性。分析中有很多个人习惯的因素在里面,所以不同人的分析结果,也会略有不同。也缺少系统的评估到底那些更好,因为好与不好是有条件的,如何判断也不容易説清楚,这就是经验;项目经验是经过大量的项目反复研究积累出来的。
个人习惯在大数据面前,结果再多也没用,得找到有意义的东西,所以原则上是能舍即舍,更容易发现规律。万一没有发现,再回去把扔掉的捡回来试试。如果什么都不仍,规律可能永远藏在大数据的海洋中。

这步的原理是将OTU与Greengene (http://greengenes.secondgenome.com)的Align数据库比对,筛选序列相似性大于75%以上的序列作为细菌序列;此步可以排除外源非细菌的污染,非细菌序列在接下来的分析中无法注释物种分类,也很难分析。

# 下载Greengene最新数据库,320MB
wget -c ftp://greengenes.microbio.me/greengenes_release/gg_13_5/gg_13_8_otus.tar.gz
# 解压数据包后大小3.4G
tar xvzf gg_13_8_otus.tar.gz
# 将OTU与97%相似聚类的代表性序列多序列比对,大约8min
time align_seqs.py -i temp/otus_non_chimera.fa -t gg_13_8_otus/rep_set_aligned/97_otus.fasta -o temp/aligned/
# 无法比对细菌的数量
grep -c '>' temp/aligned/otus_non_chimera_failures.fasta # 1860
# 获得不像细菌的OTU ID
grep '>' temp/aligned/otus_non_chimera_failures.fasta|cut -f 1 -d ' '|sed 's/>//g' > temp/aligned/otus_non_chimera_failures.id
# 过滤非细菌序列
filter_fasta.py -f temp/otus_non_chimera.fa -o temp/otus_rdp_align.fa -s temp/aligned/otus_non_chimera_failures.id -n
# 看我们现在还有多少OTU:975
grep '>' -c temp/otus_rdp_align.fa 

经过这一步过滤,从2835非嵌合的OTU,只剩下975个与细菌相似的OTU,这种数量才更接近真相。有些研究经常搞几千、几万的OTU,假阳性结果90%以上,你觉得意义何在,如何指导下游实验。

对于真菌ITS/18S,一般不建议用Unite数据库去嵌合,因为ITS/18S在所有真核生物中都有,有待物种注释后进一步确认。

12. 产生代表性序列和OTU表

代表性序列(representative sequences)即为确定的最终版的OTU,类似于参考基因组/cDNA将为索引的字典。然后将所有数据mapping于OTU上来确定各物种的丰度。

OTU表,是每个OTU在每样品中的丰度值,本质上每种高通量测序结果,都会有一个类似的表,如RNA-Seq是基因表达与样品的表;

# 重命名OTU,这就是最终版的代表性序列,即Reference(可选,个人习惯)
awk 'BEGIN {n=1}; />/ {print ">OTU_" n; n++} !/>/ {print}' temp/otus_rdp_align.fa > result/rep_seqs.fa
# 生成OTU表
./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
# 结果信息 01:20 141Mb   100.0% Searching seqs_usearch.fa, 32.3% matched
# 默认10线程,用时1分20秒,有32.3%的序列匹配到OTU上;用30线程反而用时3分04秒,不是线程越多越快,分发任务也是很费时间的

现在我们获得了OTU表,用less temp/otu_table.txt查看一下吧。同时还有biom可处理的标准json格式文件,用于后续分析。

写在后面

今天先到这里,本文已经讲了三个程序的使用,够大家学习一会的了。要想了解这些程序的更多功能,一定要阅读程序的帮助全文,才能有更深入的理解。

下节预告:OTU表操作、物种注释

(宏基因组7月文章目录,更多精彩等你读)

Reference

  1. http://www.drive5.com/usearch
  2. http://www.drive5.com/usearch/manual/cmds_all.html
  3. http://drive5.com/usearch/manual/chimera_formation.html
  4. http://www.cnblogs.com/xudongliang/p/6497465.html
  5. de Muinck, E. J., et al. (2017). “A novel ultra high-throughput 16S rRNA gene amplicon sequencing library preparation method for the Illumina HiSeq platform.” Microbiome 5(1): 68.
  6. http://www.drive5.com/usearch/manual/cmd_uchime2_ref.html
  7. http://drive5.com/usearch/manual8.1/cmd_uchime_ref.html
  8. http://greengenes.secondgenome.com
  9. http://www.drive5.com/usearch/manual/cmd_usearch_global.html
  10. http://drive5.com/python/
  11. http://drive5.com/python/uc2otutab_py.html

想了解更多16S/ITS/18S扩增子、宏基因组、宏转录组文献阅读和分析相关文章,快关注“宏基因组”公众号,干货第一时间推送。
image

系统学习生物信息,快关注“生信宝典”,那里有几千志同道合的小伙伴一起学习。
image


http://chatgpt.dhexx.cn/article/w5uMGGPD.shtml

相关文章

扩增子分析流程 —— 数据处理(vsearch)

本篇文章是笔者学习了刘永鑫老师的扩增子教程以后,根据自己的学习过程总结了一篇使用vsearch工具处理序列数据得出OTU表的文章。笔者这篇文章会根据笔者自身的学习思路,每一步的数据处理都会从三个方面(是什么、为什么和怎么做)去…

扩增子高通量测序

扩增子测序是指利用合适的通用引物扩增环境中微生物的16S rDNA/18S rDNA /ITS高变区或功能基因,通过高通量测序技术检测PCR产物的序列变异和丰度信息,分析该环境下的微生物群落的多样性和分布规律,以揭示环境样品中微生物的种类、相对丰度、进…

从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)语音部分

这里我采用的是wukong-robot的开源项目,这个项目可以说是目前语音部分最好的解决方案,给大家分析下整个语音部分的构成,大致分为下面几个模块。 这里的语音识别(ASR)和语音合成(TTS)可以使用百…

树莓派——智能推送

树莓派——智能推送 本教程为python实训作业的笔记,包括了从如何烧系统到最后作品成型我所踩过的坑,走过的弯路(说多都是泪啊_) 开头篇 首先,老爷保号,bug远离我。 随着科技的发展,广告行业的…

树莓派安装开源项目——wukong_robot和魔镜结合 个人经验总结

首先安装树莓派镜像 系统:windows10 工具:SD卡、读卡器、树莓派3b、SD卡格式化工具、win32DiskImager、Raspbian系统镜像、Xshell(ssh工具) 镜像下载可选用官网 https://www.raspberrypi.org/downloads/ 后续镜像烧录与初始化修改 ,可参考多…

从零搭建一个属于自己的智慧语音“魔镜”(MagicMirro+wukong-robot)魔镜部分

语音部分结尾有已经烧录好的完整版镜像,动手能力较差的小伙伴,可以前去自取。 一、系统环境 硬件:原子镜、相框、显示器、至少8g的内存卡、树莓派3b 软件:2019-07-10-raspbian-buster的镜像 镜像链接:https://www.ra…

树莓派使用入门

作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 官方文档 官方Github Github raspberrypi/documentation 树莓派(Raspberry pi) 使用Pi Imager安装烧录操作系…

基于树莓派的智能魔镜,支持人脸识别、情感监测、热词唤醒、语音交互,以及与手机APP交互、温湿度/新闻热点/日期显示等

目录 功能清单 界面演示 系统框图 设计方案 整体结构 网站设计 app设计 魔镜界面设计 温湿度传感器 光电传感器 相关教程 第三方库的安装 安装库 换源 安装mqtt 安装Qt5 git clone提速 安装Adafruit_DHT opencv安装 安装字体 安装portaudio 安装snowboy 安装…

将Linux可执行文件变成可执行命令

查看PATH环境变量 echo $PATH 或 env | grep PATH 添加路径到PATH export PATH/usr/test:$PATH 临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢#复原有的path配置,通过修改.bashrc文件可以永久保存。 vim ~/.bashrc export PA…

linux执行软件,软件可执行文件 linux 可执行文件

如何制作exe程序可执行文件 Java制作成exe的安装文件真是太复杂了,有几种打包软件,比如InstallAnyWere等,可以打包成你想要的安装文件,但那个软件是英文版的,功能也挺大的,我也没找到相关的资料&#xff0c…

linux 如何运行一个可执行文件

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。 1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format&#xff…

浅析linux可执行文件

程序是以可执行文件的形式存放在磁盘上的,可执行文件既包括目标代码也包括数据。我们一般所使用的库函数可以被静态的拷贝到可执行文件中,也可以运行时动态链接。 可执行文件是一个普通文件,它描述了如何初始化一个新的执行上下文,也就是如何开始一个新的计算。当进程开始执…

python打包为linux可执行文件

1、将python文件打包后(dist及log文件不需要打包)上传至linux服务器,同一目录下 注:不要打包成zip格式,zip从windos上传至linux解压后会存在编码格式不一致的问题 2、安装pyinstaller打包库 pip installer pyinsta…

Linux 可执行文件结构与进程结构

Linux可执行文件结构 在 Linux 下,程序是一个普通的可执行文件,以下列出一个二进制可执行文件的基本情况: 可以看出,此可执行文件在存储时(没有调入到内存前)分为代码区(text)、数据…

Linux可执行文件与进程的虚拟地址空间

作者简介: 本文由西邮陈莉君教授研一学生贺东升编辑,梁金荣、张孝家校对 建议结合之前的《linux的内存寻址方式》看。 Linux可执行文件与进程的虚拟地址空间 一个可执行文件被执行的同时也伴随着一个新的进程的创建。Linux会为这个进程创建一个新的虚拟地…

linux 可执行文件启动流程

linux ELF文件启动流程 一、背景 ​ 最近看了《linkers and loader》和以前学习《程序员的自我修养》,但是看了理解不是特别透,所以就想通过一个实际的案例来把了解到知识串起来,因此就想到把linux 识别和启动elf可执行文件流程梳理下&…

Linux可执行文件制作

Linux可执行文件制作 背景 测试过程中,需要针对不同的Linux系统、核心服务版本进行验证,各种环境依赖的python版本以及已安装的库存在较大差异,考虑到实际测试需求以及出差现场使用的要求,需要将测试脚本打包为可执行文件&#xf…

如何将Python程序打包成linux可执行文件

如何将Python程序打包成linux可执行文件 方法1.安装环境2.打包程序3.执行文件 方法 前段时间尝试使用Python的tkinter制作了一个简单的丑丑的图形化界面,现在想把它打包成Linux可执行文件,具体步骤如下: 1.安装环境 使用的工具是pyinstall…

linux 运行可执行文件

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。 1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format)文件格式,该目标文件由一个文件头、代码段、数据段…

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境:Ubuntu 20.04、gcc-9.4.0 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 本章目标 本章会加载并运行…