samtools merge命令

samtools merge命令的功能描述:

当有多个样本的bam文件时,可以使用samtools的merge命令将这些bam文件进行合并为一个bam文件。Merge命令将多个已经排序后的bam文件合并成为一个排序的且保持所有输入记录并保持现有排序顺序的bam文件。
若使用-h参数,则将输入文件的@SQ文件头合并到指定的文件头中。否则,所有的文件头都被合并。如果在合并以按照坐标排序的输入文件@SQ行时,可能在顺序上发生冲突。结果输出文件将被重新按照以前的顺序排列。

待合并的bam文件,必须有与其对应的index文件。

merge命令格式:

samtools merge [-nur1f] [-h inh.sam] [-R reg] [-b <list>] <out.bam> <in1.bam> [<in2.bam><in3.bam>…<inN.bam]
   参数:

              -l 指定压缩等级;

              -b FILE 输入文件列表,一个文件一行;

              -f 强制覆盖同名输出文件;

              -h FILE 指定FILE内的’@’头复制到输出bam文件中并替换输出文件的文件头。否则,输出文件的文件头将从第一个输入文件复制过来;

              -n 设定输入比对文件是以read名进行排序的而不是以染色体坐标排序的;

              -R STRING 合并输入文件的指定区域;

              -r 使RG标签添加到每一个比对文件上,标签值来自文件名;

              -u 输出的bam文件不压缩;

              -c 当多个输入文件包含相同的@RG头ID时,只保留第一个到合并后输出的文件。当合并多个相同样本的不同文件时,非常有用。

              -p 与-c参数类似,对于要合并的每一个文件中的@PG ID只保留第一个文件中的@PG。
#! /bin/bash
#合并test_L1.bam和test_L2.bam文件
samtools merge -h test.sam \
test_L1_L2.bam \
test_L1.sorted.bam \
test_L2.sroted.bam
#合并test_L1.bam和test_L2.bam文件中的指定区域chr7
samtools merge -h test.sam \
-R chr7
test_L1_L2.bam \
test_L1.sorted.bam \
test_L2.sroted.bam