以下是前面几节的微信推送文章:
Filtering data
https://docs.qiime2.org/2020.2/tutorials/filtering/
注:此实例需要完成本系列文章《1简介和安装》
本教程介绍如何过滤QIIME 2中的特征表、序列和距离矩阵,软件将随着更新,新增可用的过滤功能,从而不断扩大其应用范围。
详者注:复杂的实验通常会有非常多的条件和分组,具体分析中会根据批次、处理条件、基因型等信息进行反复筛选和分析,是分析中常用的操作。本文主讲特征表(Feature/OTU table)和距离矩阵的筛选,是分析大项目中常用的技术。
Obtain the data
# 创建工作目录并进入
mkdir -p qiime2-filtering-tutorial
cd qiime2-filtering-tutorial
# 下载实验设计、特征表和距离矩阵
wget -c \
-O "sample-metadata.tsv" \
"https://data.qiime2.org/2020.2/tutorials/moving-pictures/sample_metadata.tsv"
wget -c \
-O "table.qza" \
"https://data.qiime2.org/2020.2/tutorials/filtering/table.qza"
wget -c \
-O "distance-matrix.qza" \
"https://data.qiime2.org/2020.2/tutorials/filtering/distance-matrix.qza"
wget -c \
-O "taxonomy.qza" \
"https://data.qiime2.org/2020.2/tutorials/filtering/taxonomy.qza"
wget -c \
-O "sequences.qza" \
"https://data.qiime2.org/2020.2/tutorials/filtering/sequences.qza"
Filtering feature tables
在本教程的这一节中,我们将看到如何从特征表中过滤(例如:删除)样本和特征。特征表有两个轴:样本轴和特征轴。本教程中描述的过滤操作通常分别适用于过滤样本filter-samples
和过滤特征filter-features
对应的样本轴和特征轴。这两种方法都在q2-feature-table
插件中实现。基于分类的过滤也可以使用q2-taxa
插件中的方法从特征表中过滤特征filter-table
。
Total-frequency-based filtering
基于总频率的过滤用于根据样本或特征在特征表中出现的频率进行过滤。
例如,在过滤样本时,可以使用此功能来过滤样本,其总频率在样本频率分布中是一个异常值。在许多16S研究中,一些样本只会获得少数(可能个位数至几百)条序列,这可能是由于样本生物量低导致DNA提取率低。在这种情况下,用户可能希望根据其最小总频率(即样本测序的序列总数)删除样本。可以通过以下方式实现(在本例中,总频率小于1500的样本将被过滤掉)。
time qiime feature-table filter-samples \
--i-table table.qza \
--p-min-frequency 1500 \
--o-filtered-table sample-frequency-filtered-table.qza
输出对象:
distance-matrix.qza
: 距离矩阵。 查看 | 下载taxonomy.qza
: 物种注释。 查看 | 下载sequences.qza
: 代表序列。 查看 | 下载table.qza
: 特征表。 查看 | 下载sample-frequency-filtered-table.qza
: 过滤后的特征表。 查看 | 下载按特征表的数据量过滤,只有特征序列总测序量大于10条以上的才保留
详者注:(实验中会有大量低丰度的特征/OTU,它们会增加计算工作量和影响高丰度结果差异比较时FDR校正Pvalue,导致假阴性,通常需要选择一定的阈值进行筛选,常用的有相对丰度千分之五、千分之一、万分之五、万分之一;也可根据测序总量,reads频率的筛选阈值常用2、5、10等,大项目样本多数据量大,有时甚至超过100,推荐最小丰度为百万分之一)
# 过滤低丰度,< 10, 5s
time qiime feature-table filter-features \
--i-table table.qza \
--p-min-frequency 10 \
--o-filtered-table feature-frequency-filtered-table.qza
feature-frequency-filtered-table.qza
: 包括特征检测至少10次以上的特征表。 查看 | 下载有时也会过滤掉高丰度的特征/ASV/OTU或样本,因为极高样本也可能异常,需要使用--p-max-frequency
参数。
Contingency-based filtering
举个栗子,你有实验和对照组各有十个样品的生物学重复,结果中会有很多OTU/特征只在一个样品中出现,而在其他所有样品中均为零,这种情况一般认为是偶然因素的结果,不具有普遍性,有生物学意义的可能性也比较小,因此通常过滤掉他们,以减少下游分析工作量,降低结果的假阴性率。
# 过滤至少在2个样品中存在的Feature,去除偶然的Feature,5s
time qiime feature-table filter-features \
--i-table table.qza \
--p-min-samples 2 \
--o-filtered-table sample-contingency-filtered-table.qza
ample-contingency-filtered-table.qza
: 包括特征检测至少10次以上的特征表。 查看 | 下载同理,样品中包括极少的特征,也可以过滤掉。去除频率总数小于10个Feature的样品(根据具体情况,有些样品微生物种类极低,可能是异常,如服用过抗生素或PCR扩增出现问题),一般也要筛选后再分析。
# 5s
time qiime feature-table filter-samples \
--i-table table.qza \
--p-min-features 10 \
--o-filtered-table feature-contingency-filtered-table.qza
feature-contingency-filtered-table.qza
: 包括特征检测至少10次以上的特征表。 查看 | 下载同样上面筛选最小值,有时也会筛选最大值,它们的参数为--p-max-features
和--p-max-samples
。
Identifier-based filtering
比如实验中的某些样品发现问题,如生长过程到受胁迫、人或动物吃错药(某些人源样品查出末如实申报的抗生素使用),需要在实验中进行剔除。或挑选指定的样品下游分析。
# 生成一个需要保留或剔除的样品列表(也可以手动编写文本文件)
echo SampleID > samples-to-keep.tsv
echo L1S8 >> samples-to-keep.tsv
echo L1S105 >> samples-to-keep.tsv
然后使用filter-samples
依照样本列表进行过滤。
# 只保留指定的两个样品L1S8和L1S105
time qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file samples-to-keep.tsv \
--o-filtered-table id-filtered-table.qza
feature-contingency-filtered-table.qza
: 包括特征检测至少10次以上的特征表。 查看 | 下载Metadata-based filtering
这是最常用的,重点关注
基于元数据的筛选与基于标识符的筛选类似,只是要保留的ID列表是基于元数据搜索条件而不是由用户直接提供的。这是使用--p-where
参数和--m-metadata-file
参数实现的。用户使用--p-where
提供了基于元数据应保留样本的描述,其描述的语法是SQLite WHERE-clause
语法。
例如,过滤表以仅包含来自分组1(subject 1)
的样本,如下所示。这里,--p-where
参数指定我们要保留sample-metadata.tsv
中分组为subject-1
的所有样本。注意,值subject-1
必须用单引号括起来。
# 筛选某个条件下一类:元数据Subject列中,名为subject-1的所有样品,5s
qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "Subject='subject-1'" \
--o-filtered-table subject-1-filtered-table.qza
筛选后结果:
subject-1-filtered-table.qza
: 某类的特征表。 查看 | 下载如果一个元数据列中想要保留多个分组,则可以使用IN
子句指定这些值。例如,可以使用以下命令保留所有皮肤样本,其中包括的左掌和右掌的值用单引号括起来。
# 筛选某个条件下多类:身体取样部分中左掌和右掌的样品
qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "[body-site] IN ('left palm', 'right palm')" \
--o-filtered-table skin-filtered-table.qza
筛选后结果:
skin-filtered-table.qza
: 某类的特征表。 查看 | 下载--p-where
表达式可以使用AND
和OR
组合关键字。对sample-metadata.tsv
中的样本进行筛选,这里--p-where
参数指定我们只保留其分组为subject-1
且其bodysite
位于gut
的样品。对于要保留的示例,使用AND
关键字时,要计算的两个表达式都必须为true
。这意味着其身体部位是肠道但其Subject是subject-2
的样本不会出现在结果表中。同样,subject为subject-1
但其身体部位不是肠道的样本也不会出现在结果表中。
# 同时筛选两个条件共有(和关系/交集):Subject列中subject-1组且在BodySite中的gut
qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "[subject]='subject-1' AND [body-site]='gut'" \
--o-filtered-table subject-1-gut-filtered-table.qza
筛选后结果:
subject-1-gut-filtered-table.qza
: 某类的特征表。 查看 | 下载OR
关键字语法类似于AND
关键字语法,但指定对于要保留的样本,两个表达式中的任何一个都可以为true即可。由于缺少与此处使用的示例数据更相关的应用,本示例中的OR
关键字将应用于保留body-site
为gut
或在sample-metadata.tsv
中reported-antibiotic-usage
为Yes
的所有样品。与AND
和不同的是,这意味着,如果样本的body-site
是gut
,但其reported-antibiotic-usage
为No
,则会出现在结果表中。同样,reported-antibiotic-usage
是Yes
,但其body-site
不是gut
的样本也将出现在结果表中。
# 同时筛选两个条件并集:BodySite例为gut或ReportedAntibioticUsage为Yes
qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "[body-site]='gut' OR [reported-antibiotic-usage]='Yes'" \
--o-filtered-table gut-abx-positive-filtered-table.qza
筛选后结果:
subject-1-gut-filtered-table.qza
: 某类的特征表。 查看 | 下载此语法还支持否定--p-where
表达式(或整个表达式)的各个子句。这里,在sample-metadata.tsv
中,--p-where
参数指定我们只保留subject
为subject-1
且其body-site
不属于gut
的样本。
# 使用非NOT进行条件筛选:subject-1组中非肠道的样品
qiime feature-table filter-samples \
--i-table table.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "[subject]='subject-1' AND NOT [body-site]='gut'" \
--o-filtered-table subject-1-non-gut-filtered-table.qza
筛选后结果:
subject-1-gut-filtered-table.qza
: 某类的特征表。 查看 | 下载Taxonomy-based filtering of tables and sequences
基于物种注释的过滤(Taxonomy-based filtering)是一种非常常见的过滤feature-metadata-based
方法,因此q2 taxa
插件提供了filter-table
方法来简化这个过程。过滤可以应用于仅使用--p-include
保留特定的分类和/或使用--p-exclude
删除特定的分类。
如果物种分类注释包含某些特定的文本,则可以使用--p-exclude
参数删除这些物种。例如,这里使用-p-exclude
从表中删除注释为线粒体
的所有物种。当使用--p-mode
(默认)进行搜索时,搜索词不区分大小写,因此搜索词线粒体
将返回与搜索词线粒体
Mitochondria相同的结果。
qiime taxa filter-table \
--i-table table.qza \
--i-taxonomy taxonomy.qza \
--p-exclude mitochondria \
--o-filtered-table table-no-mitochondria.qza
筛选后结果:
table-no-mitochondria.qza
: 过滤线粒体的特征表。 查看 | 下载通过在逗号分隔的列表中提供搜索词,可以实现删除与多个搜索词匹配结果。以下命令将删除其分类注释中包含线粒体或叶绿体的所有特征。(在宿主相关的微生物组研究中,去除线粒体和叶绿体是必须的,如扩增叶际微生物时,由于叶片比例高,叶绿体高拷贝数,总数据量中90%,甚至99%可能全是叶绿体)
qiime taxa filter-table \
--i-table table.qza \
--i-taxonomy taxonomy.qza \
--p-exclude mitochondria,chloroplast \
--o-filtered-table table-no-mitochondria-no-chloroplast.qza
筛选后结果:
table-no-mitochondria-no-chloroplast.qza
: 过滤线粒体和叶绿体的特征表。 查看 | 下载使用--p-include
参数过滤表以只保留特定的特性。例如,--p-include
可用于仅保留至少已注释到门级别的功能。在greengenes
分类法中(用于生成这里提供FeatureTable[Taxonomy]
),所有的门注释都以文本p__
开头。如果某个功能没有分配给某个门(即它最多包含一个kingdom/domain
),那么它不应该包含文本p__
。因此,我们可以在这里使用p__
作为--p-include
包含术语,以仅保留包含门级注释的物种。在实践中,这个过滤器对于过滤那些在分类上不太可能提供关于您的样本信息的特性很有用。(相当于只筛选比较确定属于细菌或古菌门的序列,可以有效去除宿主非特异扩增污染和其它未知来源的序列)
qiime taxa filter-table \
--i-table table.qza \
--i-taxonomy taxonomy.qza \
--p-include p__ \
--o-filtered-table table-with-phyla.qza
筛选后结果:
table-with-phyla.qza
: 仅包含已知门的特征表。 查看 | 下载可以组合--p-include
和--p-exclude
参数。以下命令将保留包含门级注释的所有物种,但在其分类注释中排除包含线粒体或叶绿体的所有序列。
重点:筛选16S扩增目标对象,且排除宿主污染
qiime taxa filter-table \
--i-table table.qza \
--i-taxonomy taxonomy.qza \
--p-include p__ \
--p-exclude mitochondria,chloroplast \
--o-filtered-table table-with-phyla-no-mitochondria-no-chloroplast.qza
筛选后结果:
table-with-phyla-no-mitochondria-no-chloroplast.qza
: 仅包含已知门的特征表。 查看 | 下载默认情况下,请为--p-include
或--p-exclude
提供包含在分类注释中可匹配词汇。如果您希望您的词汇只有在它们是完整的分类注释的情况下才匹配,那么可以通过传递--p-mode-exact
(表示搜索需要精确匹配)来实现。当使用-p-mode exact
搜索时,搜索词区分大小写,因此搜索词线粒体不会返回与搜索词线粒体相近的结果。
去除线粒体序列的精确匹配可以实现如下,防止删除其它与线粒体相近的物种。(在greengenes分类中,有时有与线粒体注释相关的科注释,因此该命令可能不会删除所有注释为线粒体的特征。)
qiime taxa filter-table \
--i-table table.qza \
--i-taxonomy taxonomy.qza \
--p-mode exact \
--p-exclude "k__Bacteria; p__Proteobacteria; c__Alphaproteobacteria; o__Rickettsiales; f__mitochondria" \
--o-filtered-table table-no-mitochondria-exact.qza
筛选后结果:
table-no-mitochondria-exact.qza
: 精确匹配过滤线粒体后的特征表。 查看 | 下载基于分类的表过滤也可以使用qiime feature-table filter-features
和--p-where
参数来实现。如果想要高级筛选或查询,可通过qiime taxa filter-table
支持的复杂查询,则应使用qiime feature-table filter-features
。
Filtering sequences
q2-taxa
插件提供了一种方法filter-seqs
,用于根据功能的分类注释过滤代表序列FeatureData[Sequence]
。该功能与qiime taxa filter-table
中提供的功能非常相似,因此您应该参考上面的qiime taxa filter-table
示例,以了解有关基于分类筛选的更多信息。简单地说,filter-seqs
可以保留包含门级注释的所有特征,但在其分类注释中排除包含线粒体或叶绿体的所有特征对应的序列。
qiime taxa filter-seqs \
--i-sequences sequences.qza \
--i-taxonomy taxonomy.qza \
--p-include p__ \
--p-exclude mitochondria,chloroplast \
--o-filtered-sequences sequences-with-phyla-no-mitochondria-no-chloroplast.qza
筛选后结果:
sequences-with-phyla-no-mitochondria-no-chloroplast.qza
: 门水平无线粒体和叶线体的代表序列。 查看 | 下载q2-feature-table
插件还具有一个filter-seqs
方法,允许用户根据各种标准删除序列,包括特征表中存在哪些物种。
另请参见q2-quality-control
插件,它具有一个exclude-seqs
操作,用于根据对一组参考序列或引物的对齐来过滤序列。这样可以只筛选引物特异扩增的序列,去除非特异扩增结果。
Filtering distance matrices
在本教程的这一节中,我们将看到如何使用q2-diversity
插件提供的过滤距离矩阵filter-distance-matrix
方法从距离矩阵中过滤(如删除)样本。
注: 过滤距离矩阵的工作方式与通过标识符或示例元数据过滤特征表的原理相同。本节中提供的示例很简单;有关详细信息,请参阅上面的基于标识符的筛选和基于元数据的筛选。
可以根据标识符过滤距离矩阵。例如,要过滤距离矩阵以保留上面samples-to-keep.tsv
中指定的两个样本(详细请参见基于标识符的过滤Identifier-based filtering
)
# 按样品名过滤
qiime diversity filter-distance-matrix \
--i-distance-matrix distance-matrix.qza \
--m-metadata-file samples-to-keep.tsv \
--o-filtered-distance-matrix identifier-filtered-distance-matrix.qza
筛选后结果:
identifier-filtered-distance-matrix.qza
: 根据样本过滤的距离矩阵。 查看 | 下载还可以基于样品元数据中分组条件过滤距离矩阵。例如,要过滤距离矩阵以仅保留来自subject 2
的样本:
# 按实验设计中的某条件中的组过滤
qiime diversity filter-distance-matrix \
--i-distance-matrix distance-matrix.qza \
--m-metadata-file sample-metadata.tsv \
--p-where "[subject]='subject-2'" \
--o-filtered-distance-matrix subject-2-filtered-distance-matrix.qza
identifier-filtered-distance-matrix.qza
: 根据分组过滤的距离矩阵。 查看 | 下载刘永鑫,博士。2008年毕业于东北农大微生物学,2014年于中科院遗传发育所获生物信息学博士,2016年遗传学博士后出站留所工作,任宏基因组学实验室工程师。目前主要研究方向为宏基因组数据分析和植物微生物组,QIIME 2项目参与人。目前在***Science、Nature Biotechnology、Cell Host & Microbe、Current Opinion in Microbiology*** 等杂志发表论文20+篇。2017年7月创办“宏基因组”公众号,目前分享宏基因组、扩增子原创文章500余篇,代表博文有《扩增子图表解读、分析流程和统计绘图三部曲(21篇)》、《Nature综述:手把手教你分析菌群数据(1.8万字)》、《QIIME2中文教程(22篇)》等,关注人数8万+,累计阅读1200万+。
https://docs.qiime2.org/2020.2/
Evan Bolyen*, Jai Ram Rideout*, Matthew R. Dillon*, Nicholas A. Bokulich*, Christian C. Abnet, Gabriel A. Al-Ghalith, Harriet Alexander, Eric J. Alm, Manimozhiyan Arumugam, Francesco Asnicar, Yang Bai, Jordan E. Bisanz, Kyle Bittinger, Asker Brejnrod, Colin J. Brislawn, C. Titus Brown, Benjamin J. Callahan, Andrés Mauricio Caraballo-Rodríguez, John Chase, Emily K. Cope, Ricardo Da Silva, Christian Diener, Pieter C. Dorrestein, Gavin M. Douglas, Daniel M. Durall, Claire Duvallet, Christian F. Edwardson, Madeleine Ernst, Mehrbod Estaki, Jennifer Fouquier, Julia M. Gauglitz, Sean M. Gibbons, Deanna L. Gibson, Antonio Gonzalez, Kestrel Gorlick, Jiarong Guo, Benjamin Hillmann, Susan Holmes, Hannes Holste, Curtis Huttenhower, Gavin A. Huttley, Stefan Janssen, Alan K. Jarmusch, Lingjing Jiang, Benjamin D. Kaehler, Kyo Bin Kang, Christopher R. Keefe, Paul Keim, Scott T. Kelley, Dan Knights, Irina Koester, Tomasz Kosciolek, Jorden Kreps, Morgan G. I. Langille, Joslynn Lee, Ruth Ley, Yong-Xin Liu, Erikka Loftfield, Catherine Lozupone, Massoud Maher, Clarisse Marotz, Bryan D. Martin, Daniel McDonald, Lauren J. McIver, Alexey V. Melnik, Jessica L. Metcalf, Sydney C. Morgan, Jamie T. Morton, Ahmad Turan Naimey, Jose A. Navas-Molina, Louis Felix Nothias, Stephanie B. Orchanian, Talima Pearson, Samuel L. Peoples, Daniel Petras, Mary Lai Preuss, Elmar Pruesse, Lasse Buur Rasmussen, Adam Rivers, Michael S. Robeson, Patrick Rosenthal, Nicola Segata, Michael Shaffer, Arron Shiffer, Rashmi Sinha, Se Jin Song, John R. Spear, Austin D. Swafford, Luke R. Thompson, Pedro J. Torres, Pauline Trinh, Anupriya Tripathi, Peter J. Turnbaugh, Sabah Ul-Hasan, Justin J. J. van der Hooft, Fernando Vargas, Yoshiki Vázquez-Baeza, Emily Vogtmann, Max von Hippel, William Walters, Yunhu Wan, Mingxun Wang, Jonathan Warren, Kyle C. Weber, Charles H. D. Williamson, Amy D. Willis, Zhenjiang Zech Xu, Jesse R. Zaneveld, Yilong Zhang, Qiyun Zhu, Rob Knight & J. Gregory Caporaso#. Reproducible, interactive, scalable and extensible microbiome data science using QIIME 2. Nature Biotechnology. 2019, 37: 852-857. doi:10.1038/s41587-019-0209-9
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA