更新NT数据库的二三事

最近被要求更新一下NT数据库,然后踩了好多坑,想记录下来,避免以后再犯。

首先去官网上直接下载nt.fasta(wget -c ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gz),解压后发现只有Accession ID,没有gi号,这样建完的index,用blast分析是没有办法得到scientific name的,所以就想办法怎么解决这个问题。

我想要的格式:

下载下来的格式:

于是跑过去问小伙伴,他告诉我用blast软件里的update_blastdb.pl下载下来NT的index文件,再用blastdbcmd软件提取fasta文件就好了,然后就开始我的踩坑之旅,我先运行命令行:perl update_blastdb.pl nt,不久就报错:Unable to close datastream at update_blastdb.pl line 202. Failed to download nt.00.tar.gz.md5!

看了一下update_blastdb.pl的使用说明,才发现如果按照我之前的命令行下下来的还是旧的V4版的NT库,修改了参数再次尝试,虽然撑得久了点,但还是相似的报错,估计被公司IT限制了网络。代码默认从NCBI上下载,换了一个source,从Google Cloud Platform上下载:

perl update_blastdb.pl --blastdb_version 5 --decompress nt --source gcp --passive。

但是我是白天在公司下载的数据,导致其他同事上网特别慢,被IT找上门来。。。还是放弃了。

参考链接:

https://www.ncbi.nlm.nih.gov/books/NBK537770/

https://colab.research.google.com/drive/1HLFq3mC75dc5aYZCYDpTgaj_GAUASs8x#scrollTo=XnlYgZWQhCnS

看了一下update_blastdb.pl的代码,其实下载的还是ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.*.tar.gz的内容,于是晚上的时候用wget很快就下来了,我是分批次下的,例如:wget -c ftp://ftp.ncbi.nlm.nih.gov/blast/db/nt.0[0-9].tar.gz

用blastdbcmd提序列又悲剧了,提出来的fasta的表头格式和我直接在官网上下的一样:

blastdbcmd -entry all -db nt -dbtype 'nucl' -out nt.fasta

向小伙伴求助,小伙伴说可以在NCBI网页上下载gi号,然后根据gi号用blastdb_aliastool直接提取建好的库,我试着下了一下细菌的gi号,都下了好几M了还在下载,咬咬牙,还是重新研究了一下blastdbcmd的用法,终于尝试出了我想要的格式,默认output format是%f,但是修改成 ">gi|%g|%i %t\n%s" 就能得到我想要格式:

blastdbcmd -entry all -db nt -dbtype 'nucl' -outfmt ">gi|%g|%i %t\n%s" | sed -e 's/\\n/\n/g' > nt.fasta

参考链接:http://blog.sina.com.cn/s/blog_16152d7d70102xnc3.html

总结:碰到软件要好好的看使用说明,不要急吼吼的问被人或者上网上查,网上信息不全有可能被误导,导致不必要的弯路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。