本節課程,需要先完成《擴增子分析解讀》系列之前的操作 1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類 4去嵌合體 非細菌序列 生成代表性序列和OTU表 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們學習了 ...
本節課程,需要先完成《擴增子分析解讀》系列之前的操作 1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類 4去嵌合體 非細菌序列 生成代表性序列和OTU表 分析前準備
# 進入工作目錄 cd example_PE250上一節回顧:我們學習了嵌合體的形成,以及基於參考資料庫去嵌合體;也學習了基於資料庫比對來篩選細菌或真菌;最後基於最確定的OTU,我們生成代表性序列和OTU表,這是每種高通量測序都有的結果,後續的結果將全部基於這兩個文件。 接下來我們學習對OTU進行物種註釋;OTU的操作,包括格式轉換、篩選添加物種信息、數據量篩選樣品、篩選高豐度的OTU、物種篩選等。 OTU表常用的BIOM格式 主頁:http://biom-format.org/ 。BIOM是英文The Biological Observation Matrix的縮寫,中文翻譯為生物觀測矩陣,是一種通過格式,用於生物學樣品對應觀測值的表格。它主要採用json/HD5F文件格式標準,即多維散列結構,保存表格結構數據結果。目前主流的巨集基因組軟體均支持此格式文件,如QIIME、MG-RAST、PICRUSt、Mothur、phyloseq、MEGAN、VAMPS、metagenomeSeq、Phinch、RDP Classifier、USEARCH、PhyloToAST、EBI Metagenomics、GCModeller、MetaPhlAn 2。知道它有多重要了吧。 Biom文件處理系統biom程式是QIIME的必裝包,如果沒有安裝好,可嘗試下麵步驟重裝
# 安裝依賴包 pip install numpy # 安裝biom格式轉換包 pip install biom-format # 安裝2.0格式支持 pip install h5py # 測序程式是否安裝成功 biom13. 物種註釋 對於擴增子分析,最重要的就是物種信息。我們基於上節分析得到的代表性序列,採用上次已經下載的greengene的參考序列和物種註釋信息,比對軟體選擇rdp方法,進行註釋。
# 物種註釋 assign_taxonomy.py -i result/rep_seqs.fa \ -r gg_13_8_otus/rep_set/97_otus.fasta \ -t gg_13_8_otus/taxonomy/97_otu_taxonomy.txt \ -m rdp -o result註:如果是ITS/18S數據,建議資料庫更改為UNITE,方法改為blast。詳細使用說明,請讀官方文檔http://qiime.org/scripts/assign_taxonomy.html 14. OTU表統計、格式轉換、添加信息 將OTU表轉換為Biom格式,這樣便於其它軟體對其操作。可添加上面獲得的物種信息,這樣表格的信息就更豐富了,再轉換為文本,便於人類可讀,同時使用summarize-table查看OTU表的基本信息。
# 文本OTU表轉換為BIOM:方便操作 biom convert -i temp/otu_table.txt \ -o result/otu_table.biom \ --table-type="OTU table" --to-json # 添加物種信息至OTU表最後一列,命名為taxonomy biom add-metadata -i result/otu_table.biom \ --observation-metadata-fp result/rep_seqs_tax_assignments.txt \ -o result/otu_table_tax.biom \ --sc-separated taxonomy --observation-header OTUID,taxonomy # 轉換biom為txt格式,帶有物種註釋:人類可讀 biom convert -i result/otu_table_tax.biom -o result/otu_table_tax.txt --to-tsv --header-key taxonomy # 查看OTU表的基本信息:樣品,OUT數量統計 biom summarize-table -i result/otu_table_tax.biom -o result/otu_table_tax.sum現在我們獲得了OTU表的基本統計信息,用less result/otu_table_tax.sum查看一下吧,內容如下:
Num samples: 27 # 樣品數據 Num observations: 975 # OTU數據 Total count: 409647 # 總數據量 Table density (fraction of non-zero values): 0.464 # 非零的單元格 Counts/sample summary: Min: 2352.0 # 樣品數據量最小值 Max: 35955.0 # 樣品數據量最大值 Median: 14851.000 # 樣品數據量中位數 Mean: 15172.111 # 樣品數據量平均數 Std. dev.: 10691.823 # 樣品數據量標準變異 Sample Metadata Categories: None provided # 樣品分類信息:末提供 Observation Metadata Categories: taxonomy # 觀察值分類:物種信息 Counts/sample detail: # 每個樣品的數據量 OE4: 2352.0 OE3: 2353.0 OE8: 3091.0 OE2: 3173.0 OE1: 3337.0 OE5: 3733.0 OE6: 4289.0 OE9: 4648.0 OE7: 5185.0 WT3: 10741.0 WT8: 12117.0 WT6: 14316.0 WT2: 14798.0 WT7: 14851.0 KO1: 14926.0 WT9: 15201.0 WT1: 15422.0 WT5: 15773.0 WT4: 16708.0 KO2: 17607.0 KO6: 23949.0 KO5: 26570.0 KO8: 27250.0 KO4: 32303.0 KO7: 33086.0 KO9: 35913.0 KO3: 35955.0biom的詳細使用說明,可以biom查看具體的功能,如添加註釋功能biom add-metadata --help可查看詳細說明。也可閱讀官網http://biom-format.org/ 15. OTU表篩選 實驗中會有各種影響因素,我們要綜合各種背景知識來判斷如何篩選數據表,起到去偽存真,去粗取粗,由此及彼,有表及理的來回答科學問題。數據篩選是會運行分析流程和數據分析師的分水嶺。 看上面的的統計結果,樣本數據量從2k-35k,我們應去除過小的數據量樣本,提供更可能高的樣品最低豐度的數據用於下游標準化分析。這裡我們選擇只保留數據量大於3000的樣品。
# 按樣品數據量過濾:選擇counts>3000的樣品 filter_samples_from_otu_table.py -i result/otu_table_tax.biom -o result/otu_table2.biom -n 3000 # 查看過濾後結果:只有25個樣品,975個OTU biom summarize-table -i result/otu_table2.biom同時還要過濾低豐度的OTU,一般低於萬分之一豐度的菌,在功能研究可能還是比較困難的(早期文章454測序數據量少,通常只關註豐度千分之五以上的OTU)。
# 按OTU豐度過濾:選擇相對豐度均值大於萬分之一的OTU filter_otus_from_otu_table.py --min_count_fraction 0.0001 -i result/otu_table2.biom -o result/otu_table3.biom # 查看過濾後結果:只有25個樣品,346個OTU biom summarize-table -i result/otu_table3.biom有些研究手段在特定有實驗中存在偏差,如2012Nature報導V5-V7在植物中擴增會偏好擴增Chloroflexi菌門,建議去除。
# 按物種篩選OTU表:去除p__Chloroflexi菌門 filter_taxa_from_otu_table.py -i result/otu_table3.biom -o result/otu_table4.biom -n p__Chloroflexi # 查看過濾後結果:只有25個樣品,307個OTU biom summarize-table -i result/otu_table4.biom以上過濾條件是根據經驗、相關文獻設計的,如果不清楚,也不要隨便過濾,容易引起假陰性。 得到的最終結果,還要轉換為文本格式,和提取OTU表對應的序列,用於下游分析。
# 轉換最終biom格式OTU表為文本OTU表格 biom convert -i result/otu_table4.biom -o result/otu_table4.txt --table-type="OTU table" --to-tsv # OTU表格式調整方便R讀取 sed -i '/# Const/d;s/#OTU //g;s/ID.//g' result/otu_table4.txt # 篩選最終OTU表中對應的OTU序列 filter_fasta.py -f result/rep_seqs.fa -b result/otu_table4.biom -o result/rep_seqs4.fa