echo-i 2024-03-01 21:51 采纳率: 100%
浏览 24
已结题

No alias or index file found for protein database [CARD] in search p

使用本地blast时出现的问题

构建数据库

makeblastdb -dbtype nucl -in protein_fasta_protein_homolog_model.fasta -parse_seqids -out CARD

img


去除-parse_seqids参数后可正常建库

出现.nsq、.nin和.nhr后缀的3个文件

将contig序列比对至核苷酸数据库

blastp -query S14.contigs.fa -db blastdb/CARD -evalue 1e-6 -outfmt 6 -num_threads 6 -out S14

img


尝试网上常见的报错方法仍未解决

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-01 21:53
    关注

    引自免费微信小程序:皆我百晓生

    问题分析: 您在尝试使用makeblastdb命令创建基于蛋白质序列的本地BLAST数据库时,遇到了找不到CARD数据库的别名或索引文件的问题。然而,从您的描述和代码片段来看,实际上您是用一个核酸(nucl)类型的数据库参数 -dbtype nucl 去构建一个蛋白质(protein_fasta_protein_homolog_model.fasta)序列的数据库。

    解决方案及详细步骤:

    1. 正确指定数据库类型: 当处理蛋白质序列时,应当将-dbtype设置为prot而不是nucl。以下是修正后的构建数据库命令:
    makeblastdb -dbtype prot -in protein_fasta_protein_homolog_model.fasta -out CARD
    

    这里去除了-parse_seqids参数,因为根据您的描述,在没有这个参数的情况下可以成功创建数据库。

    1. 运行BLAST比对: 既然您的目标是对核苷酸contig序列进行比对,那么应该使用适合核酸序列比对的BLAST工具(如blastn),而非blastp(用于蛋白质序列比对)。假设您确实需要将核苷酸序列与蛋白质数据库比对(虽然这不常见,但在某些情况下可能有用,比如翻译后比对),则仍可保留您的blastp命令,但请确保使用的数据库是针对蛋白质构建的,并且数据合理。

    2. 如果确实要进行蛋白质比对: 如果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文件的格式是否正确,以及文件路径是否无误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 创建了问题 3月1日