如何讓BLAST返回最優(yōu)的一個搜索結(jié)果谴轮,看看你沒有有進坑

大部分時候,我們都是看著別人的教程吹埠,然后嘗試處理自己的數(shù)據(jù)第步,結(jié)果跑完了,如果和預期相符合就不會懷疑這個工具有啥問題缘琅。如果你要學習生物信息學粘都,那么有一個信條一定要記住,不要盲目相信軟件的輸出結(jié)果刷袍,多多檢查翩隧。

BLAST作為最常用的一個序列比對工具,對于大多數(shù)用戶而言呻纹,都是用于找找一個基因在其他物種的同源基因堆生,或者看看一條引物在基因組上是否有多處匹配专缠,大多不會限制輸出的匹配數(shù)目。

但是對于一些分析流程淑仆,你可能希望只要輸出一個最佳匹配就好涝婉,這個時候你可能會用到兩個參數(shù),一個是-max_target_seqs蔗怠,另一個是-num_alignments, 它們的參數(shù)說明如下

 -max_target_seqs <Integer, >=1>                                                                                                                
   Maximum number of aligned sequences to keep                                                                                                  
   Not applicable for outfmt <= 4
  * Incompatible with:  num_descriptions, num_alignments
 -num_alignments <Integer, >=0>                                                                                                                 
   Number of database sequences to show alignments for
   * Incompatible with:  max_target_seqs

如果你認為" aligned sequences" 或者"database sequences" 指的每個序列只會輸出一個匹配的話墩弯,那么你掉進坑了。

首先給定一個檢索序列, 命名為"query.fa"

>query1
CTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGC

選擇擬南芥的前1000行序列作為 測試集1

head -n 1000 Athaliana.fa > test1.fa
makeblastdb -in  test1.fa -out test/test1  -dbtype nucl

直接搜索寞射,找不到任何的結(jié)果

blastn -query query.fa -db test/test1 -outfmt 6

將搜索的序列加入 測試集1渔工,得到 測試集2

cat query.fa test1.fa > test2.fa
makeblastdb -in test2.fa -out test/test2  -dbtype nucl

此時搜索,可以找到一個結(jié)果

blastn -query query.fa -db test/test2 -outfmt 6

如果將同一段序列怠惶,重復多次涨缚,中間加入一些無意義的序列(如下),之后再加入到 測試集1 中策治,得 測試集3

>query2
CTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGCCCCTAAACCCTAAACCCTAAACCCTAAACCTCTGAATCCTTAATCCCTAAATCCCTAAATCTTTAAATCCTACATCCAT
GAATCCCTAAATACCTAATTCCCTAAACCCGAAACCGGTTTCTCTGGTTGAAAATCATTGTGTATATAATGATAATTTT
ATCGTTTTTATGTAATTGCTTATTGTTGTGTGTAGATTTTTTAAAAATATCATTTGAGGTCAATACAAATCCTATTTCT
TGTGGTTTTCTTTCCTTCACTTAGCTATGGATGGTTTATCTTCATTTGTTATATTGGATACAAGCTTTGCTACGATCTA
CATTTGGGAATGTGAGTCTCTTATTGTAACCTTAGGGTTGGTTTATCTCAAGAATCTTATTAATTGTTTGGACTGTTTA
TGTTTGGACATTTATTGTCATTCTTACTCCTTTGTGGAAATGTTTGTTCTATCAATTTATCTTTTGTGGGAAAATTATT
TAGTTGTAGGGATGAAGTCTTTCTTCGTTGTTGTTACGCTTGTCATCTCATCTCTCAATGATATGGGATGGTCCTTTAG
CATTTATTCTGAAGTTCTTCTGCTTGATGATTTTATCCTTAGCCAAAAGGATTGGTGGTTTGAAGACACATCATATCAA
AAAAGCTATCGCCTCGACGATGCTCTATTTCTATCCTTGTAGCACACATTTTGGCACTCAAAAAAGTATTTTTAGATGTCTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGC
CCCTAAACCCTAAACCCTAAACCCTAAACCTCTGAATCCTTAATCCCTAAATCCCTAAATCTTTAAATCCTACATCCAT
GAATCCCTAAATACCTAATTCCCTAAACCCGAAACCGGTTTCTCTGGTTGAAAATCATTGTGTATATAATGATAATTTT
ATCGTTTTTATGTAATTGCTTATTGTTGTGTGTAGATTTTTTAAAAATATCATTTGAGGTCAATACAAATCCTATTTCT
TGTGGTTTTCTTTCCTTCACTTAGCTATGGATGGTTTATCTTCATTTGTTATATTGGATACAAGCTTTGCTACGATCTA
CATTTGGGAATGTGAGTCTCTTATTGTAACCTTAGGGTTGGTTTATCTCAAGAATCTTATTAATTGTTTGGACTGTTTA
TGTTTGGACATTTATTGTCATTCTTACTCCTTTGTGGAAATGTTTGTTCTATCAATTTATCTTTTGTGGGAAAATTATT
TAGTTGTAGGGATGAAGTCTTTCTTCGTTGTTGTTACGCTTGTCATCTCATCTCTCAATGATATGGGATGGTCCTTTAG
CATTTATTCTGAAGTTCTTCTGCTTGATGATTTTATCCTTAGCCAAAAGGATTGGTGGTTTGAAGACACATCATATCAA
AAAAGCTATCGCCTCGACGATGCTCTATTTCTATCCTTGTAGCACACATTTTGGCACTCAAAAAAGTATTTTTAGATGT
CTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGC

此時搜索脓魏,會得到三個結(jié)果

cat query2.fa test1.fa > test3.fa
makeblastdb -in test3.fa -out test/test3 -dbtype nucl
blastn -query query.fa -db test/test3 -outfmt 6
# 結(jié)果如下
query1  query2  100.000 100 0   0   1   100 1   100 8.11e-50    185
query1  query2  100.000 100 0   0   1   100 812 911 8.11e-50    185
query1  query2  100.000 100 0   0   1   100 1623    1722    8.11e-50    185

加入我希望只要一個結(jié)果,根據(jù)我之前的經(jīng)驗通惫,我加入一個參數(shù)-num_alignments 1, 幫助里寫的是 "Number of database sequences to show alignments for" 我一直認為是茂翔,只返回第一個找到的序列,但是運行如下代碼履腋,結(jié)果出乎我意料

blastn -query query.fa -db test/test3 -outfmt 6 -num_alignments 1
# 結(jié)果如下
query1  query2  100.000 100 0   0   1   100 1   100 8.11e-50    185
query1  query2  100.000 100 0   0   1   100 812 911 8.11e-50    185
query1  query2  100.000 100 0   0   1   100 1623    1722    8.11e-50    185

他居然會得到三個結(jié)果. 為什么會出現(xiàn)這種情況珊燎?

我的猜想是:這里的 Number of database sequencessequences 不是匹配上的序列,而是匹配上的序列對應所在整條序列遵湖。那么根據(jù)我的猜想悔政, 當數(shù)據(jù)庫中中有A,B,C三條序列,其中A有三個潛在匹配延旧,B有兩個潛在匹配谋国,C沒有匹配,A, B, C在建立搜索數(shù)據(jù)庫的順序會影響最終的輸出結(jié)果迁沫,也就是當-num_alignments 1時芦瘾,blastn搜索到A后,就會輸出A里面的三個檢索結(jié)果就不再繼續(xù)集畅,如果先搜索到B近弟,就會輸出一個匹配,不再繼續(xù)挺智。當-num_alignments 1會輸出四個匹配祷愉。

為了驗證假設,我將query.fa 和 query2.fa 以不同排列順序構(gòu)建測試數(shù)據(jù)集,發(fā)現(xiàn)輸出結(jié)果的確和順序有關(guān)谣辞。

#順序1
cat query.fa query2.fa test1.fa > test4.fa
makeblastdb -in test4.fa -out test/test4 -dbtype nucl
blastn -query query.fa -db test/test4 -outfmt 6 -num_alignments 1
# 結(jié)果如下
query1  query2  100.000 100 0   0   1   100 1   100 8.12e-50    185
query1  query2  100.000 100 0   0   1   100 812 911 8.12e-50    185
query1  query2  100.000 100 0   0   1   100 1623    1722    8.12e-50    185
# 順序2 
cat   query2.fa  query.fa   test1.fa > test5.fa
makeblastdb -in test5.fa -out test/test5 -dbtype nucl
blastn -query query.fa -db test/test5 -outfmt 6 -num_alignments 1
# 結(jié)果如下
query1  query1  100.000 100 0   0   1   100 1   100 8.12e-50    185

這個情況是我用一條短序列搜索全基因組數(shù)據(jù)時出現(xiàn)(如果是CDS序列庫則不會出現(xiàn)一條序列出現(xiàn)多個匹配的情況), 在你設計引物的時候迫摔,如果在一條染色體上能夠找到多個相似序列,那么這種引物序列就是不合格的泥从。

但是如果你一定要保證每條序列在每個染色體都只要第一個高質(zhì)量匹配,那么如何解決呢沪摄?

我們用到一個不怎么起眼的參數(shù)躯嫉,-max_hsps 1, 根據(jù)說明"Set maximum number of HSPs per subject sequence to save for each query", 也就是保留query中最佳的前幾個匹配

繼續(xù)測試杨拐,隨機刪除query2的一些序列得到query3祈餐,保證最后一個是最佳匹配,用來驗證返回的是一個序列中最好連配哄陶,而不是位置相關(guān)結(jié)果

>query3
CTCAAGAAAAGGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGCCCCTAAACCCTAAACCCTAAACCCT    AAACCTCTGAATCCTTAATCCCTAAATCCCTAAATCTTTAAATCCTACATCCAT]GAATCCCTAAATACCTAATTCCCTAAACCCGAAACCGGTTTCTCTGGTTGAAAATCATTGTGTATATAATGATAATTTT
ATCGTTTTTATGTAATTGCTTATTGTTGTGTGTAGATTTTTTAAAAATATCATTTGAGGTCAATACAAATCCTATTTCT
TGTGGTTTTCTTTCCTTCACTTAGCTATGGATGGTTTATCTTCATTTGTTATATTGGATACAAGCTTTGCTACGATCTA
CATTTGGGAATGTGAGTCTCTTATTGTAACCTTAGGGTTGGTTTATCTCAAGAATCTTATTAATTGTTTGGACTGTTTA
TGTTTGGACATTTATTGTCATTCTTACTCCTTTGTGGAAATGTTTGTTCTATCAATTTATCTTTTGTGGGAAAATTATT
TAGTTGTAGGGATGAAGTCTTTCTTCGTTGTTGTTACGCTTGTCATCTCATCTCTCAATGATATGGGATGGTCCTTTAG
CATTTATTCTGAAGTTCTTCTGCTTGATGATTTTATCCTTAGCCAAAAGGATTGGTGGTTTGAAGACACATCATATCAA
AAAAGCTATCGCCTCGACGATGCTCTATTTCTATCCTTGTAGCACACATTTTGGCACTCAAAAAAGTATTTTTAGATGTCTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTC    TCTGTGAATTTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGC
CCCTAAACCCTAAACCCTAAACCCTAAACCTCTGAATCCTTAATCCCTAAATCCCTAAATCTTTAAATCCTACATCCAT
GAATCCCTAAATACCTAATTCCCTAAACCCGAAACCGGTTTCTCTGGTTGAAAATCATTGTGTATATAATGATAATTTT
ATCGTTTTTATGTAATTGCTTATTGTTGTGTGTAGATTTTTTAAAAATATCATTTGAGGTCAATACAAATCCTATTTCT
TGTGGTTTTCTTTCCTTCACTTAGCTATGGATGGTTTATCTTCATTTGTTATATTGGATACAAGCTTTGCTACGATCTA
CATTTGGGAATGTGAGTCTCTTATTGTAACCTTAGGGTTGGTTTATCTCAAGAATCTTATTAATTGTTTGGACTGTTTA
TGTTTGGACATTTATTGTCATTCTTACTCCTTTGTGGAAATGTTTGTTCTATCAATTTATCTTTTGTGGGAAAATTATT
TAGTTGTAGGGATGAAGTCTTTCTTCGTTGTTGTTACGCTTGTCATCTCATCTCTCAATGATATGGGATGGTCCTTTAG
CATTTATTCTGAAGTTCTTCTGCTTGATGATTTTATCCTTAGCCAAAAGGATTGGTGGTTTGAAGACACATCATATCAA
AAAAGCTATCGCCTCGACGATGCTCTATTTCTATCCTTGTAGCACACATTTTGGCACTCAAAAAAGTATTTTTAGATGT
CTCAAGAAAAGCAAGGTTTTTGTTTCTCTCTCTCTCTCTGTGAATTGACTATGTTATTCTTCCATCTCCTAAAAATCTTGGTTTCTGCAGCTTACATGGC

構(gòu)建索引數(shù)據(jù)庫帆阳,進行檢索,會找到每個序列中的最好匹配屋吨,如果你設置了-num_alignments 1蜒谤,那么最后結(jié)果就真的只有一個。

#順序1
cat query.fa query3.fa test1.fa > test5.fa
makeblastdb -in test5.fa -out test/test5 -dbtype nucl
blastn -query query.fa -db test/test5 -outfmt 6 -max_hsps 1
# 結(jié)果如下
query1  query3  100.000 100 0   0   1   100 1606    1705    8.11e-50    185
query1  query1  100.000 100 0   0   1   100 1   100 8.11e-50    185

最后的結(jié)論如下:

還有 2% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
支付 ¥1.90 繼續(xù)閱讀
  • 序言:七十年代末至扰,一起剝皮案震驚了整個濱河市鳍徽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敢课,老刑警劉巖阶祭,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異直秆,居然都是意外死亡濒募,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門圾结,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑰剃,“玉大人,你說我怎么就攤上這事疫稿∨嗨” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵遗座,是天一觀的道長舀凛。 經(jīng)常有香客問我,道長途蒋,這世上最難降的妖魔是什么猛遍? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上懊烤,老公的妹妹穿的比我還像新娘梯醒。我一直安慰自己,他們只是感情好腌紧,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布茸习。 她就那樣靜靜地躺著,像睡著了一般壁肋。 火紅的嫁衣襯著肌膚如雪号胚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天浸遗,我揣著相機與錄音猫胁,去河邊找鬼。 笑死跛锌,一個胖子當著我的面吹牛弃秆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播髓帽,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼菠赚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了氢卡?” 一聲冷哼從身側(cè)響起锈至,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎译秦,沒想到半個月后峡捡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡筑悴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年们拙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阁吝。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡砚婆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出突勇,到底是詐尸還是另有隱情装盯,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布甲馋,位于F島的核電站埂奈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏定躏。R本人自食惡果不足惜账磺,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一芹敌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垮抗,春花似錦氏捞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辞嗡,卻和暖如春豁护,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欲间。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留断部,地道東北人猎贴。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蝴光,于是被迫代替她去往敵國和親她渴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蔑祟,服務發(fā)現(xiàn)趁耗,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評論 0 5
  • 我有一個老爹篇亭。他天天墨菲我缠捌。 今天一大早上廁所蹲個坑兒寶寶差點被自己的親老爹坑了。一大早來到單位剛上廁所剛準備臥倒...
    張簡亦閱讀 556評論 0 0
  • 和幺哥(陳啟基)見過三次面:兩次在219文化創(chuàng)意廣場译蒂,一次在金陽新世界曼月。金陽新世界那邊是幺哥的工作室,堆放著創(chuàng)作于...
    文心訪藝閱讀 496評論 0 0
  • 第七章:新學期開始 林奇再一次回到原來的空間柔昼。 這時空間里哑芹,還有著林奇用1銀幣購來五行如來神掌神通和一些銀幣≡浪看到...
    我愛叉燒包閱讀 285評論 0 0