woodcorpse的个人博客分享 http://blog.sciencenet.cn/u/woodcorpse

博文

QIIME 2教程. 12数据筛选Filtering data(2020.11)

已有 2143 次阅读 2021-1-24 20:48 |个人分类:QIIME2|系统分类:科研笔记

QIIME 2用户文档. 12数据筛选

Filtering data

https://docs.qiime2.org/2020.11/tutorials/filtering/

注:此实例需要完成本系列文章《1简介和安装》

本教程介绍如何过滤QIIME 2中的特征表、序列和距离矩阵,软件将随着更新,新增可用的过滤功能,从而不断扩大其应用范围。

详者注:复杂的实验通常会有非常多的条件和分组,具体分析中会根据批次、处理条件、基因型等信息进行反复筛选和分析,是分析中常用的操作。本文主讲特征表(Feature/OTU table)和距离矩阵的筛选,是分析大项目中常用的技术。

下载实验相关数据

Obtain the data

# 创建工作目录并进入
mkdir -p filtering
cd filtering

# 下载实验设计、特征表和距离矩阵
wget -c http://210.75.224.110/github/QIIME2ChineseManual/2020.11/moving-pictures/sample-metadata.tsv
wget -c https://data.qiime2.org/2020.11/tutorials/filtering/table.qza
wget -c https://data.qiime2.org/2020.11/tutorials/filtering/distance-matrix.qza
wget -c https://data.qiime2.org/2020.11/tutorials/filtering/taxonomy.qza
wget -c https://data.qiime2.org/2020.11/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的样本将被过滤掉)。

qiime feature-table filter-samples \
  --i-table table.qza \
  --p-min-frequency 1500 \
  --o-filtered-table sample-frequency-filtered-table.qza

输出对象:

按特征表的数据量过滤,只有特征序列总测序量大于10条以上的才保留

详者注:(实验中会有大量低丰度的特征/OTU,它们会增加计算工作量和影响高丰度结果差异比较时FDR校正Pvalue,导致假阴性,通常需要选择一定的阈值进行筛选,常用的有相对丰度千分之五、千分之一、万分之五、万分之一;也可根据测序总量,reads频率的筛选阈值常用2、5、10等,大项目样本多数据量大,有时甚至超过100,推荐最小丰度为百万分之一)

# 过滤低丰度,< 10
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
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扩增出现问题),一般也要筛选后再分析。

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
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表达式可以使用ANDOR组合关键字。对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-sitegut或在sample-metadata.tsvreported-antibiotic-usageYes的所有样品。与AND和不同的是,这意味着,如果样本的body-sitegut,但其reported-antibiotic-usageNo,则会出现在结果表中。同样,reported-antibiotic-usageYes,但其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参数指定我们只保留subjectsubject-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: 根据分组过滤的距离矩阵。 查看 | 下载

译者简介

刘永鑫,博士,中科院青促会会员,QIIME 2项目参与人。2008年毕业于东北农业大学微生物学专业,2014年于中国科学院大学获生物信息学博士,2016年遗传学博士后出站留所工作,任工程师。目前主要研究方向为宏基因组数据分析。目前在Science、Nature Biotechnology、Protein & Cell、Current Opinion in Microbiology等杂志发表论文30余篇,被引2千余次。2017年7月创办“宏基因组”公众号,目前分享宏基因组、扩增子原创文章2400余篇,代表作有《扩增子图表解读、分析流程和统计绘图三部曲(21篇)》《微生物组实验手册》《微生物组数据分析》等,关注人数11万+,累计阅读2100万+。

Reference

https://docs.qiime2.org/2020.11/

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



https://m.sciencenet.cn/blog-3334560-1268754.html

上一篇:QIIME 2教程. 11元数据Metadata(2020.11)
下一篇:QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 22:41

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部