擴增子分析解讀4去嵌合體 非細菌序列 生成代表性序列和OTU表

来源:http://www.cnblogs.com/freescience/archive/2017/08/22/7407455.html
-Advertisement-
Play Games

本節課程,需要先完成 擴增子分析解讀1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類 先看一下擴增子分析的整體流程,從下向上逐層分析 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們製作了Usearch要求格 ...


本節課程,需要先完成 擴增子分析解讀1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類   先看一下擴增子分析的整體流程,從下向上逐層分析 分析前準備
# 進入工作目錄
cd example_PE250
上一節回顧:我們製作了Usearch要求格式的Fasta文件,對所有序列進行去冗餘和低豐度過濾,並聚類生成了OTU。   接下來我們對OTU進一步去除嵌合體,並生成代表性序列和OTU表。   什麼是chimeras(嵌合體)? 嵌合體序列由來自兩條或者多條模板鏈的序列組成,示意圖如下: 在PCR反應中,延伸階段由於不完全延伸,就會導致嵌合體序列的出現,以上圖為例,在擴增序列X的過程中,在序列延伸階段,只產生了部分X序列延伸階段就結束了,在下一輪的PCR反應中,這部分序列作為序列Y的引物接著延伸,擴增就會形成X和Y的嵌合體序列;   在放一張具體一點的示意圖,不完全延伸產生的序列作為下一輪PCR反應的產物,進行延伸 通常在PCR過程中,大概有1%的幾率會出現嵌合體序列,在16S/18S/ITS 擴增子測序的分析中,系統相似度極高,嵌合體可達1%-20%,需要去除嵌合體序列。   嵌合體的比例與PCR迴圈數相關,迴圈數越高,嵌合體比例越高。   有玩過魔獸有小伙伴記得精靈族的終極兵種雙頭龍奇美拉嗎?它的英文就是chimera,即中文的嵌合體,奇美拉是音譯。 10. 基於資料庫去嵌合體(可選) 上文第9步,聚OTU時,已經按照組內的序列相似情況,直接denovo去除了大量嵌合體。目前這步基於資料庫去嵌合體,在以前的分析中是必做的,但隨著技術發展,發現這步可能也會造成假陰性。讀者可以實驗設計、初步結果和預期來判斷是否需要這步處理。本文示例對每一步均進行操作,即是個人風格,又是為了給大家展現一個比較全面的流程。之前Usearch作者推薦使用RDP數據去嵌合,並提供了下載鏈接;現在作者建議,如果做,就用Sliva或Unite這種全面的大資料庫,不推薦用RDP這種小資料庫,以前的建議是錯的。軟體方法均是不斷進步的,我還沒有系統比較作者的新建議有多大改進,這裡還是按照原來的方法進行,讀者可以自行嘗試新方法。
# 下載Usearch推薦的參考資料庫RDP
wget http://drive5.com/uchime/rdp_gold.fa
# 基於RDP資料庫比對去除已知序列的嵌合體
./usearch10 -uchime2_ref temp/otus.fa \
 -db rdp_gold.fa \
 -chimeras temp/otus_chimeras.fa \
 -notmatched temp/otus_rdp.fa \
 -uchimeout temp/otus_rdp.uchime \
 -strand plus -mode sensitive -threads 96
採用-uchime2_ref參數去嵌合體,後面接OTU序列(輸入文件); -db 指定參考資料庫,這裡用RDP; -chimeras 輸出檢測為嵌合體的序列; -notmatched 輸出不匹配資料庫的結果,即非嵌合,非相同序列; -uchimeout 輸入嵌合體的檢測詳細信息,如每個嵌合體的來源,與那幾個親本相似等; -strand 指定鏈方向,一般為正; -mode 選擇模式,敏感的代價是嵌合體鑒定的高假陽性率; -threads 設計線程數,程式預設系統小於10個線程為單線程;多於10個線程為10線程,根據實際情況設置,不清楚不用更好。   上面計算結果Chimeras 2669/5489 (48.6%), in db 51 (0.9%), not matched 2769 (50.4%),即5489個OTU有2669檢測為嵌合、51個與資料庫序列一致為非嵌合,另外2769與資料庫不匹配不確定是否為嵌合。對應temp/otus_rdp.uchime文件中第三列的Y/N/?   我們想要是的排除嵌合的部分,即51+2769=2820。思路是將全部OTU中鑒定為嵌合的排除掉。
# 獲得嵌合體的序列ID
grep '>' temp/otus_chimeras.fa | sed 's/>//g' > temp/otus_chimeras.id
# 剔除嵌合體的序列
filter_fasta.py -f temp/otus.fa -o temp/otus_non_chimera.fa -s temp/otus_chimeras.id -n
# 檢查是否為預期的序列數量2820
grep '>' -c temp/otus_non_chimera.fa
11. 去除非細菌序列(可選) 此步也是非必須的,容易造成假陰性。分析中有很多個人習慣的因素在裡面,所以不同人的分析結果,也會略有不同。也缺少系統的評估到底那些更好,因為好與不好是有條件的,如何判斷也不容易説清楚,這就是經驗;項目經驗是經過大量的項目反覆研究積累出來的。 個人習慣在大數據面前,結果再多也沒用,得找到有意義的東西,所以原則上是能舍即舍,更容易發現規律。萬一沒有發現,再回去把扔掉的撿回來試試。如果什麼都不仍,規律可能永遠藏在大數據的海洋中。   這步的原理是將OTU與Greengene (http://greengenes.secondgenome.com)的Align資料庫比對,篩選序列相似性大於75%以上的序列作為細菌序列;此步可以排除外源非細菌的污染,非細菌序列在接下來的分析中無法註釋物種分類,也很難分析。
# 下載Greengene最新資料庫,320MB
wget -c ftp://greengenes.microbio.me/greengenes_release/gg_13_5/gg_13_8_otus.tar.gz
# 解壓數據包後大小3.4G
tar xvzf gg_13_8_otus.tar.gz
# 將OTU與97%相似聚類的代表性序列多序列比對,大約8min
time align_seqs.py -i temp/otus_non_chimera.fa -t gg_13_8_otus/rep_set_aligned/97_otus.fasta -o temp/aligned/
# 無法比對細菌的數量
grep -c '>' temp/aligned/otus_non_chimera_failures.fasta # 1860
# 獲得不像細菌的OTU ID
grep '>' temp/aligned/otus_non_chimera_failures.fasta|cut -f 1 -d ' '|sed 's/>//g' > temp/aligned/otus_non_chimera_failures.id
# 過濾非細菌序列
filter_fasta.py -f temp/otus_non_chimera.fa -o temp/otus_rdp_align.fa -s temp/aligned/otus_non_chimera_failures.id -n
# 看我們現在還有多少OTU:975
grep '>' -c temp/otus_rdp_align.fa
經過這一步過濾,從2820非嵌合的OTU,只剩下975個與細菌相似的OTU,這種數量才更接近真相。有些研究經常搞幾千、幾萬的OTU,假陽性結果90%以上,你覺得意義何在,如何指導下游實驗。   對於真菌ITS/18S,一般不建議用Unite資料庫去嵌合,因為ITS/18S在所有真核生物中都有,有待物種註釋後進一步確認。 12. 產生代表性序列和OTU表 代表性序列(representative sequences)即為確定的最終版的OTU,類似於參考基因組/cDNA將為索引的字典。然後將所有數據mapping於OTU上來確定各物種的豐度。   OTU表,是每個OTU在每樣品中的豐度值,本質上每種高通量測序結果,都會有一個類似的表,如RNA-Seq是基因表達與樣品的表
# 重命名OTU,這就是最終版的代表性序列,即Reference(可選,個人習慣)
awk 'BEGIN {n=1}; />/ {print ">OTU_" n; n++} !/>/ {print}' temp/otus_rdp_align.fa > result/rep_seqs.fa
# 生成OTU表
./usearch10 -usearch_global temp/seqs_usearch.fa -db result/rep_seqs.fa -otutabout temp/otu_table.txt -biomout temp/otu_table.biom -strand plus -id 0.97 -threads 10
# 結果信息 01:20 141Mb   100.0% Searching seqs_usearch.fa, 32.3% matched
# 預設10線程,用時1分20秒,有32.3%的序列匹配到OTU上;用30線程反而用時3分04秒,不是線程越多越快,分發任務也是很費時間的
現在我們獲得了OTU表,用less temp/otu_table.txt查看一下吧。同時還有biom可處理的標準json格式文件,用於後續分析
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • mysql "ON DUPLICATE KEY UPDATE" 語法如果在INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重覆值,則在出現重覆值的行執行UPDATE;如果不會導致唯一值列重覆的問題,則插入 ...
  • 1 欄位屬性 主鍵、唯一鍵和自增長。 1.1 主鍵 主鍵:primary key,一張表中只能有一個欄位可以使用對應的鍵,用來唯一的約束該欄位裡面的數據,不能重覆。 一張表只能有最多一個主鍵。 1.1.1 增加主鍵 在SQL操作中歐有多種方式可以給表增加主鍵,大體分為三種: 方案1:在創建表的時候, ...
  • 一·、前言:這篇博文內容非原創,是我們公司的架構師給我們做技術培訓的時候講的內容,我稍微整理了下,借花獻佛。這篇博文只是做一個大概的科普介紹,畢竟SQL優化的知識太大了,幾乎可以用一本書來介紹。另外,博主對SQL優化也是剛剛接觸,也有很多不瞭解的地方,說的不對的地方,還請大家指正,共勉! 二、ora ...
  • 在PostgreSQL中,表空間實際上是為表指定一個存儲目錄,這樣方便我們把不同的表放在不同的存儲介質或者文件系統中。在創建資料庫、表、索引時都可以指定表空間。 1. 創建表空間 2. 創建資料庫,指定表空間 3. 修改資料庫的表空間 4. 建表時,指定表空間 5. 創建索引時,指定表空間 6. 增 ...
  • 首先瞭解下updatexml()函數 UPDATEXML (XML_document, XPath_string, new_value); 第一個參數:XML_document是String格式,為XML文檔對象的名稱,文中為Doc 第二個參數:XPath_string (Xpath格式的字元串) ...
  • 1 概述 1 概述 本篇這文章主要概述SqlServer表達式。 2 具體內容 2 具體內容 2.1 使用範圍 SQL Server(2008開始) ;Azure SQL資料庫;Azure SQL數據倉庫;並行數據倉庫 2.2 語法 是SQL Server資料庫引擎評估以獲取單個數據值的符號和運算符 ...
  • #!/bin/bash fruit=apricot area=beijing #輸出為apriot\nbeijing echo "$fruit\n$area" #輸出為apriot\beijing echo "$fruit\\$area" #輸出為aprioteijing echo -e "$fru ...
  • KVM是Kernel-based Virtual Machine的簡稱,是一個開源的虛擬化模塊,今天我將在CentOS7的操作系統上安裝KVM,以下是我的安裝步驟. 一.環境信息 系統: CentOS 7.2 IP: 10.0.0.12/24 在虛擬機安裝時,需要啟用CPU的虛擬化功能 二. KVM ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...