1. 程式人生 > >QIIME 2使用者文件. 11資料篩選Filtering data(2018.11)

QIIME 2使用者文件. 11資料篩選Filtering data(2018.11)

文章目錄

前情提要

QIIME 2使用者文件. 11資料篩選

Filtering data

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

注:此例項需要要求完成本系列文章《1簡介和安裝》

本教程介紹如何過濾qiime 2中的特徵表、序列和距離矩陣,軟體將隨著新增可用的過濾功能的而不斷擴大其應用範圍。

詳者注:複雜的實驗通常會有非常多的組,具體分析中會根據批次、處理條件、基因型等資訊進行反覆篩選和分析,是分析中常用的操作。本文主講特徵表(Feature/OTU table)和距離矩陣的篩選,是分析大專案中常用的技術。

下載實驗相關資料

Obtain the data

# 建立工作目錄並進入
mkdir qiime2-filtering-tutorial
cd qiime2-filtering-tutorial

# 下載實驗設計、特徵表和距離矩陣
wget \
  -O "sample-metadata.tsv" \
  "https://data.qiime2.org/2018.11/tutorials/moving-pictures/sample_metadata.tsv"
wget \
  -O "table.qza" \
  "https://data.qiime2.org/2018.11/tutorials/filtering/table.qza"
wget \
  -O "distance-matrix.qza" \
  "https://data.qiime2.org/2018.11/tutorials/filtering/distance-matrix.qza"
wget \
  -O "taxonomy.qza" \
  "https://data.qiime2.org/2018.11/tutorials/filtering/taxonomy.qza"
wget \
  -O "sequences.qza" \
  "https://data.qiime2.org/2018.11/tutorials/filtering/sequences.qza"

過濾特徵表

Filtering feature tables

在本教程的這一節中,我們將看到如何從特徵表中過濾(即刪除)樣本和特徵。特徵表有兩個軸:樣本軸和特徵軸。本教程中描述的過濾操作通常分別適用於過濾樣本和過濾特徵對應的樣本軸和特徵軸。這兩種方法都在q2-feature-table外掛中實現。基於分類的過濾也可以使用q2-taxa外掛中的方法從特徵表中過濾特徵。

按資料量過濾

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

輸出物件:

  • distance-matrix.qza: 距離矩陣
  • taxonomy.qza: 物種註釋
  • sequences.qza: 代表序列
  • table.qza: 特徵表
  • sample-frequency-filtered-table.qza: 過濾後的特徵表

按特徵表的資料量過濾,只有特徵序列總測序量大於10條以上的才保留

詳者注:(實驗中會有大量低丰度的特徵/OTU,它們會增加計算工作量和影響高丰度結果差異比較時FDR校正pvale,導致假陰性,通常需要選擇一定的閾值進行篩選,常用的有相對丰度千分之五、千分之一、萬分之五、萬分之一;也可根據測序總量,reads頻率的篩選閾值常用2、5、10等,大專案有時甚至超過100)

qiime feature-table filter-features \
  --i-table table.qza \
  --p-min-frequency 10 \
  --o-filtered-table feature-frequency-filtered-table.qza

有時也會過濾掉高丰度的特徵/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

# 去除頻率總數小於10個Feature的樣品(根據具體情況,有些樣品微生物種類極低,可能是異常,如服用過抗生素或PCR擴增出現問題),一般也要篩選後再分析
qiime feature-table filter-samples \
  --i-table table.qza \
  --p-min-features 10 \
  --o-filtered-table feature-contingency-filtered-table.qza

同樣上面篩選最小值,有時也會篩選最大值,它們的引數為--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

# 只保留指定的兩個樣品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

基於元資料的篩選

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的所有樣品
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 "BodySite 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 BodySite='gut'" \
  --o-filtered-table subject-1-gut-filtered-table.qza

OR關鍵字語法類似於AND關鍵字語法,但指定對於要保留的樣本,兩個表示式中的任何一個都可以為true即可。由於缺少與此處使用的示例資料更相關的應用,本示例中的OR關鍵字將應用於保留BodySitegut或在sample-metadata.tsvreportedantibiocusageyes的所有樣品。與AND和不同的是,這意味著,如果樣本的身體部位是腸道,但其報告的抗生物庫容為“否”,則會出現在結果表中。同樣,報告的抗生物活性是“是”,但其身體部位不是腸道的樣本也將出現在結果表中。

# 同時篩選兩個條件並集:BodySite例為gut或ReportedAntibioticUsage為Yes
qiime feature-table filter-samples \
  --i-table table.qza \
  --m-metadata-file sample-metadata.tsv \
  --p-where "BodySite='gut' OR ReportedAntibioticUsage='Yes'" \
  --o-filtered-table gut-abx-positive-filtered-table.qza

此語法還支援否定--p-where表示式(或整個表示式)的各個子句。這裡,在sample-metadata.tsv中,--p-where引數指定我們只保留主題為subject-1且其bodysite不屬於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 BodySite='gut'" \
  --o-filtered-table subject-1-non-gut-filtered-table.qza

基於物種過濾表和序列

Taxonomy-based filtering of tables and sequences

基於物種註釋的過濾是feature-metadata-based一種非常常見的過濾方法,因此q2 taxa外掛提供了filter-table方法來簡化這個過程。過濾可以應用於僅使用--p-include保留特定的taxa和/或使用--p-exclude刪除特定的taxa

如果物種分類註釋包含某些特定的文字,則可以使用--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

通過在逗號分隔的列表中提供搜尋詞,可以實現刪除與多個搜尋詞匹配結果。以下命令將刪除其分類註釋中包含線粒體或葉綠體的所有特徵。(在宿主相關的微生物組研究中,去除線粒體和葉綠體是必須的,如擴增葉際微生物時,由於葉片比例高,葉綠體高拷貝數,總資料量中90%以上可能全是葉綠體)

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

使用--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

可以組合--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

預設情況下,為--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

基於分類的表過濾也可以使用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

q2-feature-table外掛還具有一個filter-seqs方法,允許使用者根據各種標準刪除序列,包括特徵表中存在哪些物種。

另請參見q2-quality-control外掛,它具有一個exclude-seqs操作,用於根據對一組參考序列或引物的對齊來過濾序列

過濾距離矩陣

Filtering distance matrices

在本教程的這一節中,我們將看到如何使用q2-diversity外掛提供的過濾距離矩陣filter-distance-matrix方法從距離矩陣中過濾(即刪除)樣本。

注: 過濾距離矩陣的工作方式與通過識別符號或示例元資料過濾特徵表的原理相同。本節中提供的示例很簡單;有關詳細資訊,請參閱上面的基於識別符號的篩選和基於元資料的篩選。

可以根據識別符號過濾距離矩陣。例如,要過濾距離矩陣以保留上面samples-to-keep.tsv中指定的兩個樣本(詳細請參見基於識別符號的過濾)

# 按樣品名過濾
qiime diversity filter-distance-matrix \
  --i-distance-matrix distance-matrix.qza \
  --m-metadata-file samples-to-keep.tsv \
  --o-filtered-distance-matrix index-filtered-distance-matrix.qza

還可以基於樣品元資料中分組條件過濾距離矩陣。例如,要過濾距離矩陣以僅保留來自分組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

Reference

Bolyen E, Rideout JR, Dillon MR, Bokulich NA, Abnet C, Al-Ghalith GA, Alexander H, Alm EJ, Arumugam M, Asnicar F, Bai Y, Bisanz JE, Bittinger K, Brejnrod A, Brislawn CJ, Brown CT, Callahan BJ, Caraballo-Rodríguez AM, Chase J, Cope E, Da Silva R, Dorrestein PC, Douglas GM, Durall DM, Duvallet C, Edwardson CF, Ernst M, Estaki M, Fouquier J, Gauglitz JM, Gibson DL, Gonzalez A, Gorlick K, Guo J, Hillmann B, Holmes S, Holste H, Huttenhower C, Huttley G, Janssen S, Jarmusch AK, Jiang L, Kaehler B, Kang KB, Keefe CR, Keim P, Kelley ST, Knights D, Koester I, Kosciolek T, Kreps J, Langille MG, Lee J, Ley R, Liu Y, Loftfield E, Lozupone C, Maher M, Marotz C, Martin BD, McDonald D, McIver LJ, Melnik AV, Metcalf JL, Morgan SC, Morton J, Naimey AT, Navas-Molina JA, Nothias LF, Orchanian SB, Pearson T, Peoples SL, Petras D, Preuss ML, Pruesse E, Rasmussen LB, Rivers A, Robeson, II MS, Rosenthal P, Segata N, Shaffer M, Shiffer A, Sinha R, Song SJ, Spear JR, Swafford AD, Thompson LR, Torres PJ, Trinh P, Tripathi A, Turnbaugh PJ, Ul-Hasan S, van der Hooft JJ, Vargas F, Vázquez-Baeza Y, Vogtmann E, von Hippel M, Walters W, Wan Y, Wang M, Warren J, Weber KC, Williamson CH, Willis AD, Xu ZZ, Zaneveld JR, Zhang Y, Zhu Q, Knight R, Caporaso JG. 2018. QIIME 2: Reproducible, interactive, scalable, and extensible microbiome data science. PeerJ Preprints 6:e27295v2 https://doi.org/10.7287/peerj.preprints.27295v2

譯者簡介

劉永鑫,博士。2008年畢業於東北農大微生物學專業。2014年中科院遺傳發育所獲生物資訊學博士學位,2016年博士後出站留所工作,任巨集基因組學實驗室工程師,目前主要研究方向為巨集基因組學、資料分析與可重複計算和植物微生物組、QIIME 2專案參與人。發於論文12篇,SCI收錄9篇。2017年7月創辦“巨集基因組”公眾號,目前分享巨集基因組、擴增子原創文章400+篇,代表博文有《擴增子圖表解讀、分析流程和統計繪圖三部曲》,關注人數3.2萬+,累計閱讀500萬+。

猜你喜歡

寫在後面

為鼓勵讀者交流、快速解決科研困難,我們建立了“巨集基因組”專業討論群,目前己有國內外3000+ 一線科研人員加入。參與討論,獲得專業解答,歡迎分享此文至朋友圈,並掃碼加主編好友帶你入群,務必備註“姓名-單位-研究方向-職稱/年級”。技術問題尋求幫助,首先閱讀《如何優雅的提問》學習解決問題思路,仍末解決群內討論,問題不私聊,幫助同行。
image

學習擴增子、巨集基因組科研思路和分析實戰,關注“巨集基因組”
image

image

點選閱讀原文,跳轉最新文章目錄閱讀
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA