使用MetaWRAP进行Binning时遇SAM头格式错误,求解决方案
MetaWRAP分箱操作Samtools排序报错解决方案
执行命令
metawrap binning -o bin_out -t 24 -m 200 -a all_contig/all_merge.fasta --metabat2 --maxbin2 --concoct all_fastq/*fastq
报错信息
sorting the SRR10492802 alignment file [bam_sort_core] merging from 24 files and 24 in-memory blocks... [E::sam_hdr_sanitise] Malformed SAM header at line 2 samtools sort: failed to read header from "bin_out/work_files/tmp-samtools.0000.bam" somthing went wrong with sortin the alignments Exiging
补充信息:SRR10492802.sam头文件(前10行)
执行命令:
samtools view -H SRR10492802.sam|head -10
输出:
@SQ SN:k141_390421 LN:651 @SQ SN:k141_39985 LN:538 @SQ SN:k141_334641 LN:682 @SQ SN:k141_55776 LN:692 @SQ SN:k141_39781 LN:589 @SQ SN:k141_450722 LN:843 @SQ SN:k141_563831 LN:707 @SQ SN:k141_350441 LN:651 @SQ SN:k141_270821 LN:1427 @SQ SN:k141_111552 LN:779
问题分析
报错核心原因是SAM文件缺少**@HD头行**——SAM格式规范要求文件必须以@HD开头,用于定义版本和排序信息,缺失会导致samtools无法正常解析头文件,进而排序失败。
解决方案
方法1:手动补全SAM头
- 编辑
SRR10492802.sam,在第一行添加标准@HD头:@HD VN:1.6 SO:coordinate - 转换为BAM并验证排序:
samtools view -Sb SRR10492802.sam > SRR10492802.bam samtools sort SRR10492802.bam -o SRR10492802_sorted.bam - 确认无报错后,重新运行MetaWRAP分箱命令。
方法2:重新生成标准BAM文件
如果手动修改后仍有异常,建议重新比对生成合规的BAM:
- 构建contig索引:
bowtie2-build all_contig/all_merge.fasta contig_index - 重新比对reads:
bowtie2 -x contig_index -1 all_fastq/SRR10492802_1.fastq -2 all_fastq/SRR10492802_2.fastq -S SRR10492802_new.sam - 转为BAM并排序:
samtools view -Sb SRR10492802_new.sam | samtools sort -o SRR10492802_new_sorted.bam - 替换临时文件或重新运行MetaWRAP分箱。
方法3:调整线程数
多线程合并时可能触发头文件异常,尝试降低线程数:
metawrap binning -o bin_out -t 12 -m 200 -a all_contig/all_merge.fasta --metabat2 --maxbin2 --concoct all_fastq/*fastq
内容的提问来源于stack exchange,提问作者xiaokalami
相关产品推荐
相关产品推荐

