Blast网页版做生物信息的应该都用过,输入你想比对的序列或者fasta文件提交网页就能出来结果。
但如果你想用blast的命令行模式,用法会跟网页版非常不一样。新手会遇到很多问题,遇到频率最高的应该就是我这篇文章想说的问题BLAST Database error: No alias or index file found for nucleotide database [nt] in search path。
你搜索百度或者谷歌的话,几乎没什么关于这个问题的QA,有的话解决办法说得也是不明不白。
其实这个错误说得是blast没有找到你的index文件,有两个解决办法。1.手动建库索引。2.下载preformated database。
手动建库索引的话,需要使用blast自带的模块makeblastdb,使用方法如下:
makeblastdb -in gzy191029C.gzy19102852_g_PK.realigned.recal.factera.blastquery.fa -dbtype nucl -input_type fasta -out dna
上面的是dna序列比对,如果你是想比对protein序列的话,需要替换-dbtype参数为prot,-out是个比较重要的参数,设置一个你喜欢的名字并记住,我这里命名为dna,后面需要用到这个名字。
如果这一步没报错的话,会生成几个文件,nhr,nin,nsq。
下面就可以比对了,
blastn -query gzy191029C.gzy19102852_g_PK.realigned.recal.factera.blastquery.fa -db dna
这一步-db的参数使用到了之前建立的索引库dna或者你的命名。
成功执行的话会打印比对结果到屏幕上,与blast的网页接口结果类似。
2.下载preformatted的数据库
这个preformatted的具体什么意思也不用去研究,就按照blast的官方安装指示去安装就行。需要找到blast包里的update_blastdb.pl文件,用perl执行一下就行。执行前可以先预览你可以下载什么数据库和它的名字。
perl update_blastdb.pl --showall
下面你想下载哪个替换那个名字就行
perl update_blastdb.pl nt
会进入一段漫长的下载过程,建议nohup后端运行,中途如果超时的话重新执行命令就行,之前下载好的不用重新执行。
下载好了之后是一大堆tar.gz文件,这里推荐使用批量解压命令:ls *.tar.gz | xargs -n1 tar xzvf
解压完了之后是一堆文件:
之后直接执行blastn命令行比对就行。