Introduction
blast是目前使用最為廣泛矗愧、接受度最高的一個序列比對軟件柱徙。尤其適用于尋找兩條序列之間最為相似的片段席怪,以及對大型核酸或氨基酸序列數(shù)據(jù)庫的檢索。
我們在使用NCBI的網(wǎng)頁版blast進行檢索時蛀序,會發(fā)現(xiàn)blast的速度很快欢瞪。但在自己本地使用的時候,有時卻會慢得出奇徐裸。
造成這種情況的原因就是NCBI的網(wǎng)頁版blast在檢索時默認對簡單重復(fù)序列以及在全基因組范圍出現(xiàn)次數(shù)過多的片段進行了屏蔽遣鼓,這樣就可以大大提高速度,而那些repeat序列通常也不是我們要研究的對象重贺。但是我們在自己本地做blast的時候骑祟,直接用makeblastdb建的索引是沒有repeat信息的回懦,所以在你的query序列包含過多repeat序列時,程序執(zhí)行的時間可能就會超出你承受的范圍次企。
How to create a masked BLAST database
建立一個masked blast database主要有兩步:
1.使用blast自帶的幾個程序得到mask的信息(Collect mask information files)
2.把上一步得到的mask信息提供給makeblastdb怯晕,建立一個masked blastdatabase(Create BLAST database with the masking information)
這兩步既可以從fasta文件開始做,也可以用之間建好的blastbase做抒巢。
接下來我們詳細介紹一下具體該怎么做:
1. Collect mask information files
blast產(chǎn)生repeat mask信息的程序有三個贫贝,windowmasker和dustmasker用于核酸序列,segmasker用于氨基酸序列蛉谜。
- windowmasker可以mask全基因組范圍內(nèi)出現(xiàn)次數(shù)過多的序列,同時它也可以mask掉低復(fù)雜度區(qū)域(low complexity)崇堵,而duskmasker只用于mask低復(fù)雜度區(qū)域型诚。
- 過程中有一個parse sequence id的參數(shù)-parse_seqids,這個參數(shù)如果加就在整個過程中都加上鸳劳,如果不加就每步都不要加狰贯。
1.1 Create masking information using dustmasker
- 如果把fasta文件作為輸入文件的話:
dustmasker -in hs_chr.fa -infmt fasta -parse_seqids -outfmt maskinfo_asn1_bin -out hs_chr_dust.asnb
- 如果把之前建好的blast database(沒mask的)作為輸入文件:
dustmasker -in hs_chr -infmt blastdb -parse_seqids -outfmt maskinfo_asn1_bin -out hs_chr_dust.asnb
1.2 Create masking information using windowmasker
- 先生成一個counts文件:
- 如果把fasta作為輸入文件:
windowmasker -in hs_chr.fa -infmt fasta -mk_counts -parse_seqids -out hs_chr_mask.counts –sformat obinary
- 如果把blast database作為輸入文件:
windowmasker -in hs_chr -infmt blastdb -mk_counts -parse_seqids -out hs_chr_mask.counts –sformat obinary
- 然后用上一步的counts文件生成一個包含mask信息的文件:
- 如果把fasta作為輸入:
windowmasker -in hs_chr.fa -infmt fasta -ustat hs_chr.counts -outfmt maskinfo_asn1_bin -parse_seqids -out hs_chr_mask.asnb
- 如果把database作為輸入:
windowmasker -in hs_chr -infmt blastdb -ustat hs_chr_mask.counts -outfmt maskinfo_asn1_bin -parse_seqids -out hs_chr_mask.asnb
1.3 Create masking information using segmasker
- fasta作為輸入:
segmasker -in refseq_protein.fa -infmt fasta -parse_seqids -outfmt maskinfo_asn1_bin -out refseq_seg.asnb
- database作為輸入:
segmasker -in refseq_protein -infmt blastdb -parse_seqids -outfmt maskinfo_asn1_bin -out refseq_seg.asnb
1.4 Extract masking information from FASTA sequences with lowercase masking
其實除了使用blast自帶的三個程序之外,我們還可以根據(jù)fasta文件的小寫字母進行mask赏廓,一般fasta文件會把repeat序列用小寫字母標(biāo)識出來涵紊。
convert2blastmask -in hs_chr.mfa -parse_seqids -masking_algorithm repeat -masking_options "repeatmasker, default" -outfmt maskinfo_asn1_bin -out hs_chr_mfa.asnb
2. Create BLAST database with the masking information
使用上面得到的mask信息,我們就可以建立masked database了幔摸。
makeblastdb -in hs_chr –input_type blastdb -dbtype nucl -parse_seqids -mask_data hs_chr_mask.asnb -out hs_chr -title "Human Chromosome, Ref B37.1"
上面是從已經(jīng)建好的沒mask的database中建立masked database的命令摸柄,但同樣也可以輸入fasta文件來進行這一步。
3. Search with database masking enabled
如果建好masked database之后繼續(xù)用原來的參數(shù)進行檢索既忆,程序并不會應(yīng)用masked信息驱负。需要再加一個選項才能調(diào)用mask信息。
-db_soft_mask或者-db_hard_mask患雇。
這個選項后面跟的參數(shù)是Algorithm ID跃脊,也就是之間mask時用的算法編號。
這個可以對建好的maskeddatabase使用命令:
blastdbcmd -db hs_chr -info
就可以查看到對應(yīng)的Algorithm ID苛吱。
而-db_soft_mask和-db_hard_mask的區(qū)別在于酪术,softmask只是在blast檢索的最初的word-finding階段屏蔽掉了repeat區(qū)域,而hardmask是在整個blast檢索過程中都把這些repeat屏蔽掉了翠储。
一般使用-db_soft_mask得到的結(jié)果才是你想要的绘雁。