引自免费微信小程序:皆我百晓生
问题分析:
您在尝试使用makeblastdb命令创建基于蛋白质序列的本地BLAST数据库时,遇到了找不到CARD数据库的别名或索引文件的问题。然而,从您的描述和代码片段来看,实际上您是用一个核酸(nucl)类型的数据库参数 -dbtype nucl 去构建一个蛋白质(protein_fasta_protein_homolog_model.fasta)序列的数据库。
解决方案及详细步骤:
- 正确指定数据库类型:
当处理蛋白质序列时,应当将
-dbtype设置为prot而不是nucl。以下是修正后的构建数据库命令:
makeblastdb -dbtype prot -in protein_fasta_protein_homolog_model.fasta -out CARD
这里去除了-parse_seqids参数,因为根据您的描述,在没有这个参数的情况下可以成功创建数据库。
-
运行BLAST比对:
既然您的目标是对核苷酸contig序列进行比对,那么应该使用适合核酸序列比对的BLAST工具(如blastn),而非blastp(用于蛋白质序列比对)。假设您确实需要将核苷酸序列与蛋白质数据库比对(虽然这不常见,但在某些情况下可能有用,比如翻译后比对),则仍可保留您的blastp命令,但请确保使用的数据库是针对蛋白质构建的,并且数据合理。
-
如果确实要进行蛋白质比对:
如果S14.contigs.fa实际上是蛋白质序列,并且您希望将其与CARD蛋白质数据库比对,则应保持如下blastp命令:
blastp -query S14.contigs.fa -db blastdb/CARD -evalue 1e-6 -outfmt 6 -num_threads 6 -out S14_results.tab
总结一下,关键在于确认输入序列类型与构建/搜索数据库时指定的类型一致。请检查并根据实际情况调整上述命令。若问题依然存在,请检查原始fasta文件的格式是否正确,以及文件路径是否无误。