擴增子分析解讀3格式轉換 去冗餘 聚類

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

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


本節課程,需要完成擴增子分析解讀1質控 實驗設計 雙端序列合併2提取barcode 質控及樣品拆分 切除擴增引物

先看一下擴增子分析的整體流程,從下向上逐層分析

分析前準備
# 進入工作目錄
cd example_PE250
上一節回顧:我們提取barcode,質控及樣品拆分,切除擴增引物,經歷了兩節課6步數據處理才拿到我們擴增的高質量目的片段(貌似基因組/RNA-Seq測序結果直接就是這個階段了,可以直接mapping)   接下來我們將這些序列去冗餘、聚類為OTU、再去除嵌合體,這樣就可以獲得高質量的OTU(類似於參考基因組/轉錄組),用於定量分析每個OTU的豐度。這一階段我們使用著名的擴增子分析流程Usearch。   Usearch簡介 http://drive5.com/usearch/ Usearch之前介紹過http://www.cnblogs.com/freescience/p/7270861.html 軟體作者不僅有Usearch一款軟體,它的Muscle(多序列比對,引用18659+4212次),Uparse(OTU聚類演算法,引用1529次), Uchime(擴增子嵌合體檢測,引用3558次)等眾多流行工具,個人引用超4萬次,而且發的軟體大多由作者一人完成,佩服。   Usearch安裝 這個軟體64位版收費,但32位對任何人免費,可以在下麵網址下載 http://www.drive5.com/usearch/download.html 同意許可協議,選擇軟體版本(5.2 — 10.0),選擇運行平臺(Linux, Windows或Mac OSX)填寫郵箱獲得下載地址。不允許私人傳播。 這裡我選擇10.0版本,系統選擇Linux。 收到的郵件中第一個鏈接即下載地址,後面兩個鏈接為幫助文檔和安裝說明,先不用管,按我下麵的操作來。
# 下載程式並重命名:下載鏈接來自郵件,請用戶自行複製郵件中地址替換下麵代碼中的網址;或者在windows裡面下載並重命名為usearch10
wget -O "usearch10" http://drive5.com/cgi-bin/upload3.py?license=XXXXXX
# 添加可執行許可權
chmod +x usearch10
# 運行程式測試,成功可顯示程式版本、系統信息和用戶授權信息
./usearch10
7. 格式轉換 做生信為什麼要學Python/Perl/Shell這些語言,主要原因是各軟體間要求的具體格式不同,需要進行格式轉換,才能繼續運行。因此想成為高手,不會語言基本寸步難行。   我們現在將QIIME拆分的結果類型,要轉換成Usearch要求的格式。常見的解決思路是讀Usearch幫助看它的格式要求,寫個Python/Perl腳本轉換格式。我這裡使用了Shell腳本一行解決,優點是快,但缺點很多(人不容易看懂、不同Linux系統shell版本不同可能失效)   我們要轉換的序列文件其實一直是fasta格式,只是序列名稱行格式不同
# 目前格式 >KO1_0 HISEQ:419:H55JGBCXY:1:1101:1931:2086 1:N:0:CACGAT orig_bc=TAGCTT new_bc=TAGCTT bc_diffs=0    # Usearch要求的格式 >KO1_0;barcodelabel=KO1;
# 格式轉換
sed 's/ .*/;/g;s/>.*/&&/g;s/;>/;barcodelabel=/g;s/_[0-9]*;$/;/g' temp/PE250_P5.fa > temp/seqs_usearch.fa
上面這條命令有點複雜。sed是linux的一條命令,又是一種語言,擅長文本替換。替換的思路分四步:首先s/ ./;/g將原文件空格後面的內容(全是無用信息)替換為分號;其次s/>./&&/g是將序列名重覆一次;再次s/;>/;barcodelabel=/g將重覆後的;>替換為;barcodelabel=;最後s/_[0-9]*;$/;/g替換序列編號為分號。這隻是我的思路,分析數據如解答數學題,可以有多種解法,你夠聰明還會想出更好的解法。 新人一定感覺這命令每句都不像人話,我告訴你Perl和Shell就是這樣—難讀但高效。改用易讀的Python語言,肯定沒有Shell簡潔。   8. 去冗餘 為什麼要去冗餘? 因為原始序列幾百萬條,聚類計算的時間極其恐怖。而已知擴增子測序結果中序列重覆度高,並且大量出現1次或幾次的序列統計學和功能上意義不大。因此將幾百萬條序列去冗餘,並過濾低豐度序列,一般只剩幾萬條,極大的減少了下游分析的工作量,並可使結果更容易理解。 usearch10的去冗餘命令叫-fastx_uniques,緊跟著輸入文件; -fastaout 接輸出文件; -minuniquesize 參數設置保留的最小豐度reads數,建議最小設置為2,去掉所有的單次出現序列(singletons),數據量大建議設置總數據量的百萬分之一併取整數部分 -sizeout 在序列名稱中添加序列出現的頻率
# 序列去冗餘
./usearch10 -fastx_uniques temp/seqs_usearch.fa -fastaout temp/seqs_unique.fa -minuniquesize 2 -sizeout
計算過程中出現如下信息:
00:06 607Mb   100.0% Reading temp/seqs_usearch.fa 00:06 574Mb  CPU has 96 cores, defaulting to 10 threads 00:08 915Mb   100.0% DF 00:09 935Mb  1268345 seqs, 686530 uniques, 624363 singletons (90.9%) 00:09 935Mb  Min size 1, median 1, max 18774, avg 1.85 62167 uniques written, 182874 clusters size < 2 discarded (26.6%)
主要內容為讀取輸入文件; 檢查到系統有96個CPU,預設使用了10個線程; 總共有1268345條序列,其中非重覆的序列有686530個,非重覆且只出現一次的有624363個(90.9%的非冗餘序列是singletons,多嗎?); 最小值、中位數、最大值、平均值;輸出結果有62167個結果,丟棄掉的數據占26.6%。   本條命令的詳細使用,請閱讀官方文檔 http://www.drive5.com/usearch/manual/cmd_fastx_uniques.html   9. 聚類OTU   為什麼要聚類OTU? 是因為Unique的序列仍然遠多於物種數量,並且擴增的物種可能存在rDNA的多拷貝且存在變異而得到來自同一物種的多條序列擴增結果。目前人為定義序列相似度通常97%以上為OTU,大約是物種分類學種的水平,實際上1個OTU可能包括多個物種,而一個物種也可能擴增出多個OTU。   下麵我們用usearch10將非冗餘的序列聚類 -cluster_otus接輸入文件; -otus後面為輸出的otu文件的fasta格式; -uparseout輸出聚類的具體細節 -relabel Otu為重命名序列以Otu起始
# 聚類OTU
./usearch10 -cluster_otus temp/seqs_unique.fa -otus temp/otus.fa -uparseout temp/uparse.txt -relabel Otu
程式運行過程會顯示運行時間、進度,發現的OTU,以及嵌合體數據;結果如下:
04:11 84Mb    100.0% 5489 OTUs, 9209 chimeras
程式一共運行了3分39秒,聚類發現5486個OTUs,同時發現了9187個嵌合體並已被丟棄。 Usearch聚類演算法之所以能發表在Nature Method上,就是因為其演算法UParse在非常強的嵌合體檢測能力,對人工重組數據評估,更接近真實結果。下一節我們將詳細講嵌合體產生的原因,以及去除的原理。   本條命令的詳細使用,請閱讀官方文檔 http://www.drive5.com/usearch/manual/cmd_cluster_otus.html   小技巧:統計fasta文件中序列的數量 fasta文件每條序列以大於號(>)開始,其數量與序列數量相同,使用grep檢索含有>的行,同時用-c參數對數量進行統計,即可快速獲得fasta文件中序列數量。
# 查看OTU數量
grep '>' -c temp/otus.fa

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在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 ...
  • 本節課程,需要先完成 擴增子分析解讀1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類 先看一下擴增子分析的整體流程,從下向上逐層分析 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們製作了Usearch要求格 ...
  • 1.Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial 2.Linux 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 ...
  • 原文發表於cu:2016-05-18 參考文檔: zabbix監控linux主機:http://www.osyunwei.com/archives/8035.html 一.環境 Server:基於CentOS-7-x86_64-1511,已部署zabbix-3.0.1伺服器端 Server IP: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...