寫(xiě)在前面
用過(guò) BLAST 進(jìn)行基因功能注釋的朋友應(yīng)該常常遇到兩個(gè)問(wèn)題:
- BLAST 輸出格式較多,選擇哪一類(lèi)輸出格式更為實(shí)用?
- 輸出結(jié)果信息較多,如果方便下游數(shù)據(jù)分析?
BLAST 的輸出文件格式建議
基于我個(gè)人生信數(shù)據(jù)分析項(xiàng)目經(jīng)驗(yàn),一般用戶(hù)會(huì)選擇以下四種格式:
- pairwise
- blast tab ,即 -outfmt 6
- ASN
- XML
以下逐個(gè)解讀。
Pairwise 格式
這一個(gè)是常見(jiàn)于絕大多數(shù)網(wǎng)站自行搭建的 BLAST 服務(wù)。比如擬南芥 TAIR 的 Blast 輸出,大體如下,
清晰明了,對(duì)于少量序列,比如 一兩個(gè)序列的 比對(duì)結(jié)果查看,那么這一格式非常合適。但一旦數(shù)據(jù)較多,比如我們上千個(gè)差異表達(dá)基因或者是關(guān)聯(lián)出來(lái)的基因列表,那么就不太合適。于是一般會(huì)用 Table (--outfmt 6 或 7 )
Blast Tab 格式
Blast Tab 格式,這個(gè)名字,是我自己給的。因?yàn)檫@個(gè)格式其實(shí)就是純粹的 制表符分隔 的 表格。一般情況下,blast+ 設(shè)置輸出格式為 -outfmt 6 或者 7 (后者包含表頭)即可。大體格式可以看看下方,
直接在 Excel 中查看即可。可以看出,一列一列擺放,以 HSP (也就是 高度相似片片段)為單位。這個(gè)序列的比對(duì)結(jié)果不太直觀(具體見(jiàn)下文)。
ASN 格式
說(shuō)實(shí)話(huà),我估計(jì)絕大部分號(hào)稱(chēng)自己搞數(shù)據(jù)分析的,其實(shí)也不知道有這個(gè)格式。
ASN格式,類(lèi)似 JSON,是 NCBI 自定義的格式,存儲(chǔ)信息最全面,可以直接使用 Blast 軟件轉(zhuǎn)換為其他格式。唯一麻煩的可能是,用戶(hù)需要轉(zhuǎn)換一次,有些人不喜歡。當(dāng)然我也不喜歡,畢竟...XML相對(duì)容易解析。
XML 格式
一直以來(lái),我最新?lián)Q的就是 XML 格式。主要原因有:
- 相比于 Pairwise 和 ASN 格式來(lái)說(shuō),XML 更容易使用 程序解析
- 相比于 Table 格式來(lái)說(shuō),XML 信息更全面
具體可看
對(duì)應(yīng)所有 TBtools 用戶(hù)來(lái)說(shuō),我個(gè)人是建議,如果只是一兩條序列的 BLAST ,那么建議 Pairwise 格式,而其他所有情況,直接輸出 XML 格式。因?yàn)?TBtools 下面有系列功能可以可視化 和 解析。
大體功能介紹
XML 轉(zhuǎn)換為 BLAST Tab 格式
所有 BLAST XML 輸出文件,可以直接使用 TBtools,轉(zhuǎn)換為 BLAST Tab。非常方便。
TBtools Table 格式
正如前面體積,BLAST 默認(rèn)的輸出以 HSP 為單位,有時(shí)候并不太合適。比如,有些時(shí)候比對(duì)結(jié)果是這樣的(即超過(guò) 1 個(gè) HSP)
這種情況下,如果是 NCBI BLAST 默認(rèn)的 表格輸出,那么就是
我們完全可以想想,有不少時(shí)候,可能有 N 個(gè)hsp。而這些信息,本身冗余。此外,也無(wú)法直接看到比對(duì)覆蓋率。為此.... 很久很久以前,我就開(kāi)放了一個(gè)功能,自定義了一個(gè) TBtools Table。具體如下,
可以看出,多個(gè) HSP 的信息被整合為一行,也補(bǔ)充了覆蓋率的計(jì)算等等。每行就是一個(gè) Hit ,更符合實(shí)際用戶(hù)觀測(cè)數(shù)據(jù)需求。
僅僅如此?
當(dāng)然不是。這兩天,我又在折騰一些生物學(xué)問(wèn)題相關(guān)的課題。于是需要看一堆基因大體注釋信息。盡管上述說(shuō)到的 TBtoosl Table 相對(duì)簡(jiǎn)潔。但還是不夠直觀,畢竟一個(gè)人序列還是對(duì)應(yīng)了多個(gè) hits。所以最好的做法就是,進(jìn)一步把所有的 hits 整合成 一行(這個(gè)想法在三四年前,夏老師提過(guò),不過(guò)...我一直懶得實(shí)現(xiàn))。索性寫(xiě)了一下,輸出結(jié)果如下。
說(shuō)實(shí)話(huà),不能太完美...
而且具體使用一樣簡(jiǎn)單:
- 輸入BLAST的XML格式輸出文件,支持 DIAMOND XML,建議比對(duì)到 Swissprot
- 輸出文件路徑
具體界面如下,注意到新版本的 TBtools,直接整合了 三個(gè)表格轉(zhuǎn)換功能
一切,就這么簡(jiǎn)單....
當(dāng)然,其實(shí)新版本修復(fù)了一小部分 BLAST XML to Table 的小bug,建議各位更新,盡管,我已經(jīng)推送了自動(dòng)更新.....
寫(xiě)在后面
TBtools 的序列提取 和 BLAST 相關(guān)功能,是最老的功能,意味著他們的具體界面化和實(shí)現(xiàn)邏輯,都是一個(gè)具有不到半年 Java 編程經(jīng)驗(yàn)(接觸編程剛過(guò)一年)的小孩子寫(xiě)的。現(xiàn)在看來(lái),多少顯得粗糙。但回過(guò)頭來(lái),這個(gè)跟不少大佬說(shuō)的一樣:
- 以前,有時(shí)間,但是沒(méi)經(jīng)費(fèi)
- 現(xiàn)在,有經(jīng)費(fèi),但是沒(méi)時(shí)間
而大佬終歸是大佬嘛。對(duì)于我,那么情況是:沒(méi)時(shí)間,也沒(méi)經(jīng)費(fèi)。
哈哈哈哈哈哈哈哈