使用bcftools mpileup时出现索引格式错误,如何解决?
问题根源与解决方法
核心错误原因
你在bcftools mpileup命令里犯了一个基础参数错误:-f参数需要指定的是原始参考基因组序列文件(index.fna),而不是samtools faidx生成的索引文件(index.fna.fai)。
bcftools会自动读取参考序列对应的.fai索引(只要它和fasta文件在同一目录下),但你直接把索引文件传给-f,程序会尝试把它当作fasta序列解析——而.fai文件的第一行是序列ID(比如你的示例里的NM_001248012.2),不是fasta格式要求的>开头的序列头,所以才会触发[E::fai_build_core] Format error, unexpected "N" at line 1的报错。
正确操作步骤
直接修正mpileup命令,把-f指向原始fasta文件即可:
bcftools mpileup -Ou -f index.fna file_sorted_md.bam > raw.bcf
如果后续需要直接调用变异,可以把结果管道传给bcftools call:
bcftools mpileup -Ou -f index.fna file_sorted_md.bam | bcftools call -mv -Ov -o variants.vcf
关于你之前的无效操作说明
- 修改
.fai文件内容完全没必要,因为这个索引是samtools faidx自动生成的,格式固定,手动修改只会破坏索引有效性; - 生成BAM列表文件的操作和当前报错无关,单BAM文件直接传入命令本身是没问题的,问题出在参考序列参数的错误指定。
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

