QIIME 2 for Experienced Microbiome Researchers
本节5365字,我们将介绍如何使用QIIME 2处理微生物数据。本节教程主要针对经验丰富的微生物研究人员,即已经对如何处理数据非常熟悉,只需要知道的QIIME 2中特殊步骤的命令。
上一节我们的QIIME 2概述教程包含微生物数据处理的更多理论,本节将使老司机轻松上手QIIME 2。新人可跳过,或当学习资料阅读(看看是否能读懂,全看懂的才是老司机)。
Why switch to QIIME 2?
对于习惯于使用自己的工具和脚本处理数据、并且希望对过程中的每个步骤进行精细控制的用户来说,转换到QIIME 2可能是困难的(这好像是在説我)。我们理解经验丰富的微生物研究人员令人抓狂的学习曲线,但是相信社区、开源的环境和对可重复科学的承诺,使得切换到QIIME 2时开始感觉有些沮丧是值得的。
通过为微生物组数据分析提供一个通用框架,QIIME 2汇集了一个充满活力和包容性的社区。通过加入QIIME 2社区,作为一名正式的微生物学研究人员,您将自动与该领域的其他领导者产生联系,并且能够更容易地一起工作,以推动微生物学研究的最佳方法开发和实施,以供广泛使用。QIIME 2社区包括微生物学研究的老司机以及新手:鼓励所有人参与并相互学习。QIIME 2论坛包含关于如何执行微生物数据处理和分析的大量信息,以及关于该领域最佳方法具有建设意义的讨论。
QIIME 2还鼓励使微生物学研究更加可重复。QIIME 2通过定义特定的数据类型和仅将方法限制到其适当的数据输入类型,以减少不适当的分析。它还跟踪每个QIIME 2对象相关联的数据起源和对给定数据文件所做的所有操作。
此外,通过将工具封装到一个常用框架中,形成了简化的数据处理流程。使用QIIME 2大多数数据处理工作流可以合并成一个(或几个)bash脚本,从而减少需要调用的不同程序或可执行文件的数量以及需要重新格式化数据步骤的数量。
最后,QIIME 2是开源的,有经验的研究人员可贡献个人的代码,以扩大本软件的工作范围。任何工具都可以作为插件添加到QIIME 2中,它可以为任何软件、包或其他可安装、可执行文件提供接口。为自己的开发的方法编写QIIME 2插件,使得成千上万的用户立即访问并使用它。
Pro-tips for power users
以下是我们学到的一些技巧,这些经验将有助于您将工作流程转变为QIIME 2:
提示1: QIIME 2对象只是zip文件。如果您想查看.qza
对象中的文件,可以使用qiime导出工具来提取数据文件(它基本上只是用于解压缩的工具)。或者,您也可以直接解压缩对象(unzip -k file.qza
)并查看数据/文件夹中的文件。
提示2:QIIME 2命令行接口工具运行速度较慢,因为它每次调用对象时都必须解压缩和重新压缩对象中包含的数据。如果需要更多交互地处理数据,您可能希望使用Python API——它更快,因为对象可以简单地存储在内存中。您可以了解更多关于不同QIIME 2界面的信息。
Data processing steps
本教程中将介绍的处理步骤包括:
DADA2
或deblur
的去噪序列,和/或VSEARCH
或dbOTU
进行质量筛选、长度剪切和聚类教程综述和可用插件列表可以为其他可能的处理和分析步骤提供思路。
Importing data into QIIME 2
相关插件:qiime tools import
如果使用QIIME 2处理数据,则首先需要将该数据转换成QIIME 2能够理解的格式。QIIME 2中当前可用的各种导入方法在QIIME 2导入教程中重点介绍。
这个步骤可能是QIIME 2分析流程中最令人困惑的部分,因为有许多导入和格式类型可供选择。要查看可用导入/格式类型的完整列表,请使用:qiime tools import --show-importable-formats
(见附录1)和qiime tools import --show-importable-types
(见附录2)
如果导入FASTQ数据,则很可能需要生成一个清单文件,该文件只是一个文本文件,将每个FASTQ文件映射到其样本ID和说明(如果可用)
。
如果你的数据是两种非常特殊的格式(EMP或Casava)之一的序列数据,则可以直接导入包含序列文件的文件夹,方法为--type EMPSingleEndSequences
或--type'SampleData[PairedEndSequencesWith.]
(或其相应的双端类型)。否则,如果您没有这两种非常特定的格式之一,则需要制作清单文件以给出关于导入什么和如何导入文件的导入指令。
如果希望直接导入FASTA文件或特征表,也可以使用不同--type
的标志或qiime tools import
。导入教程详细介绍了所有这些选项。
Demultiplexing sequences
相关插件
如果在同一个文件中包含了多个样本,则需要对序列进样本拆分。
如果您的条形码(barcodes)已经从序列中移除,并且位于单独的文件中,则可以使用q2-demux
对这些条形码进行样本拆分。
如果你的条形码还在序列中,你可以使用cutadapt插件的函数。cutadap demux-single
方法在序列的开始(或5’末端)查找具有特异容错性的条形码序列,删除它们并返回由每个样本单独的序列数据。QIIME 2论坛上有关于cutadapt
中各种功能的教程,包括样本拆分。通过阅读这些文档,你可以了解更多关于cutadapt如何工作的。
注意:目前q2-demux
和q2-cutadapt
不支持双端条码的样品拆分,而且只能在正向序列中查找条码并进行拆分。因此,目前这种类型的样本拆分需要使用其他工具(例如bcl2fastq)在QIIME 2之外完成。
Merging reads
相关插件:q2-vsearch
是否需要合并序列取决于你计划如何将序列聚类或去噪为扩增序列变体(ASV)或操作分类单元(OTU)。如果接下来打算使用deblur或OTU聚类方法,现在就合并序列。如果计划使用dada2对序列进行去噪,则不要合并——dada2会在对每个序列进行去噪之后自动执行序列合并。
如果需要合并序列,可以使用QIIME 2 q2-vsearch
插件的join-pairs
方法。
Removing non-biological sequences
相关插件
如果您的数据包含任何非生物序列(例如,引物、测序接头、PCR间隔区等),则应该删除这些序列。
q2-cutadapt
插件具有从成对或单端数据中去除非生物序列的多种方法。
如果要使用DADA2对序列进行去噪,可以在调用去噪函数的同时删除非生物序列。DADA2的所有去噪函数都具有某种--p-trim
参数,您可以指定该参数来从序列的5’末端删除碱基。(Deblur没有这个功能。)
Grouping similar sequences
将相似序列分组主要有两种方法:去噪和聚类。概述教程提供了对这些方法更深入的讨论。
无论如何对序列进行分组,分组方法将输出:
FeatureData[Sequence]
),以及FeatureTable[Frequency]
)DADA2和deblur还将生成一个带有关于过滤和去噪的相关信息的统计摘要文件。
Denoising
相关插件:
DADA2和deblur是目前QIIME 2中可用的两种去噪方法。您可以在概述教程中了解更多关于这些方法的信息。
DADA2和deblur都输出精确的序列变体(exact sequence variants,ESV),据推测这些变体更能代表存在于数据中的真实生物序列。它们的创建者对于这些序列有不同的术语(DADA2称它们为“扩增序列变体”(ASV),deblur称它们为“subOTU”)。我们将在本教程中使用ASV术语来统一代表这两种输出。
准备去噪数据
去噪只需要很少的数据准备。DADA2和deblur都执行质量过滤、去噪和嵌合体去除,因此在运行它们之前不应该执行任何质量筛选。deblur开发人员建议在使用deblur之前使用默认设置进行初始质量筛选(如“人体不同部分微生物组”教程所示)。DADA2内置了基于Q值的过滤,因此在用DADA2进行去噪之前执行这个质量过滤步骤是不必要的。
两种方法都具有将序列截断为恒定长度(在降噪之前发生)的选项。在DADA2中,这是–p-trunc-len
参数;在deblur中,它是–p-trim-length
。截断参数对于DADA2和deblur都是可选的(但是如果使用deblur,则需要指定–p-trim-length -1
来禁用截断)。比截断长度短的读被丢弃,而比截断长度长的序列在指定位置被截断。概览教程中有更多关于决定截断到什么长度的讨论。
DADA2去噪
DADA2插件有多种方法进行序列去噪:
注意,对于非常大的数据集,DADA2可能非常慢。可以通过增加--p-n-threads
参数使用多线程缩短计算时间(前提是你的系统有足够多的线程)。
deblur去噪
deblur 插件具有两种序列去噪的方法:
deblur-16S
对16S序列进行去噪。deblur-other
去噪其他类型的序列。如果使用deblur-16S
,deblur执行初始的正向过滤步骤,其中它丢弃与85% GreenGenes 数据库中OTU的序列小于60%相似性的任何序列。如果不想执行此步骤,请使用deblur-other
方法。
deblur目前只能对单端序列进行去噪。如果提供末合并的双端序列为输入,将对反向序列不作任何操作。请注意,deblur接受合并的序列,并将它们视为单端序列,因此如果使用deblur进行去噪,需要先合并读取。
OTU Clustering
在本教程中,我们将涉及QIIME 2的无参(de novo)和有参(closed reference)两类聚类方法。QIIME OTU聚类教程部分有更多的细节。
对序列进行聚类,你需要确保:
我们讨论了合并双端序列,和删除非生物序列(详见相关章节)。
一旦你的数据已经符合以上要求,你需要在聚类前先将序列进行去冗余。
长度修整Length trimming
如果由于某种原因,原始序列没有完全相同的长度,则需要在进行OTU聚类之前将它们修剪到相同的长度。目前还没有一个QIIME 2函数在不做其他任何事情的情况下可将序列调整至相同长度,你可以使用cutadapt
插件中的函数来完成此事。(这是因为QIIME 2工作流建议首先序列去噪(这里面包括了长度修剪步骤),然后可选地通过聚类算法获得ASV。)
质量过滤Quality filtering
相关插件:quality-filter
您可以使用质量筛选器插件执行不同类型的质量筛选。q-score
方法可用于单端或双端序列(即,SampleData[PairedEndSequencesWithQuality | SequencesWithQuality]
),而q-score-joined
方法用于合并后的双端序列(即合并后的SampleData[JoinedSequencesWithQuality]
)。每个方法的选项描述了不同类型的质量筛选。
序列去冗余Dereplicating sequences
相关插件:q2-vsearch
不管你使用哪种类型的聚类,您首先需要去除序列的重复。q2-vsearch
插件的dereplicate-sequences
方法可完成此步操作。
无参聚类de novo clustering
相关插件:
序列可以仅基于它们的遗传相似性(即VSEARCH)或基于它们的遗传相似性和丰度分布的组合(即基于分布的聚类)的从头/无参(de novo)聚类。
q2-vsearch
插件聚类方法为cluster-features-de-novo
。可以使用--p-perc-identity
参数更改遗传相似性阈值。该插件包装自--cluster_size
函数。q2-dbotu
插件中的call-otus
函数对输入数据执行基于丰度分布的聚类。这两个函数都以q2-vsearch
去冗余的输出作为输入,这些去冗余的序列具有QIIME 2“FeatureData[Sequence]”数据类型,以及结果的计数表(counts table,整数频率汇总表)的QIIME 2“FeatureTable[Frequency]”数据类型。
有参聚类closed reference clustering
相关插件:q2-vsearch
有参聚类将与数据库中参考序列以某种相似性的序列分组在一起。
VSEARCH可以用cluster-features-closed-reference
方法进行有参聚类。此方法封装了VSEARCH中的--usearch_global
函数。可以使用--i-reference-sequences
参数决定要针对哪个参考数据库进行聚类。这个参数的输入文件应该是一个包含fasta文件的.qza
文件,fasta文件具有用作参考数据库的序列,并采用QIIME 2数据类型FeatureData[Sequence]
。大多数人对16S rRNA基因序列使用GreenGenes或SILVA,但是其他人使用自己手工校正的数据库或使用其他标准参考(例如,ITS数据的UNITE)。您可以从QIIME 2数据资源页面上的链接下载这些参考数据库。您将需要解压缩(unzip/untar)并将它们作为FeatureData[Sequence]
对象导入,因为它们是作为原始数据文件提供的。
Assigning taxonomy
相关插件:feature-classifier
将物种注释分配给ASV或OTU代表序列的方法,包含在物种分类教程中。所有物种分配方法都在feature-classifier
插件中。
有两类物种分类方法,每类都有多个可用的方法。
第一类是直接将序列与参考数据库比对:
两者都使用物种分配的一致方法,您可以在概述中了解更多,并调整maxaccepts
、perc-identity
和min-consensus
参数。
第二种方法使用机器学习分类器为序列分配可能的物种注释,并且可以通过classify-sklearn
命令实现。
此方法需要一个预先训练好的模型来对序列进行分类:您可以从数据资源页面下载一个预先训练好的物种注释分类器,或者自己训练一个(按照特性分类器教程中概述的步骤)。(您还可以了解更多关于插件相关论文中实现特定模型的信息。)
Analyze feature table and gain insight
相关插件:太多了!
此时,您应该准备好分析特性表来回答您的科学问题!QIIME 2提供了多个内置函数来分析此类数据,并且您还可以导出它,并使用您擅长的编程语言或软件包进行下游分析。
使用QIIME 2可以做的一些常用分析包括:
alpha
、 alpha-phylogenetic
方法提供了许多α多样性度量方法。beta
、beta-phylogenetic
和beta-phylogenetic-alt
方法中也有多种度量方法。注意,diversity core-metrics
和diversity core-metrics-phylogenetic
是α和β多样性分析的方便包装。这些内容在概述教程中进行了描述。beta-group-significance
方法完成。ANCOM在composition
插件中可用。Gneiss 插件中提供了gneiss功能,并有相关的教程“Gneiss 差异丰度分析”。q2-sample-classifier
插件有几个用于构建分类器和回归器的功能,并且相关的“使用q2-sample-classifier
预测样本元数据值”教程提供了更多细节。Export the data
相关插件:qiime tools export
如果您是一位经验丰富的微生物科学家,并且不想使用QIIME 2进行下游分析,那么可以使用导出工具从对象中提取特征表和序列。虽然export
功能只输出数据,但是提取工具还允许您提取其他元数据,如引文、数据分析过程等信息。
请注意,通常的文件在输出目录名为feature-table.txt,因此您可能希望立即将文件重命名为更多信息(或者确保它保留在原始目录中)!
您还可以使用方便的R包qiime2R
将QIIME 2对象直接导入R。
New plugins
可以多看看QIIME 2不断增长的插件列表,以找到其他适合应用于你数据的方法。
请记住,您还可以制作自己的QIIME 2插件,以向QIIME 2添加功能,并与同行共享!
qiime tools import --show-importable-formats
qiime tools import --show-importable-types
刘永鑫,博士。2008年毕业于东北农大微生物学专业。2014年中科院遗传发育所获生物信息学博士学位,2016年博士后出站留所工作,任宏基因组学实验室工程师,目前主要研究方向为宏基因组学、数据分析与可重复计算和植物微生物组、QIIME 2项目参与人。发于论文12篇,SCI收录9篇。2017年7月创办“宏基因组”公众号,目前分享宏基因组、扩增子原创文章300+篇,代表博文有《扩增子图表解读、分析流程和统计绘图三部曲》,关注人数3万+,累计阅读400万+。
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2600+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA