今天在运行 bwa mem 命令时,出现如下错误提示:
bwa mem -t 50 ref.fa $i ${i%%_R1.fastq.gz}_R2.fastq.gz > ${i%%_R1.fastq.gz}.sam
[bns_restore_core] Parse error reading ref.fa.amb
报错是因为 ref.fa 文件里存在着空格、空行,一般是出现在> 行
。
这其实是一个很小的问题,但是很容易忽略,特别是分析一个新物种的时候。以前也遇到过几次类似的问题,都是因为基因组文件中含有空格而报错。
解决方法
- 既然原因出现在
> 行
,那么每行只保留第一个字段的话,也等价于删除空格了。
代码如下:# 选择空格分隔的第一列作为名称 awk '{print $1}' ref.fa > ref_awk.fa
- 那问题不是出现在
> 行
呢?将所有空格替换就行了,这种解决方法可以覆盖上一种方法,但是会造成> 行
很长且难读,所以建议用第一种方法。
代码如下:sed -i 's/\s*$//g' ref.fa
最后再重新建立索引、比对就可以了。