samtools按区域bam转fastq

第一步

1
2
$ samtools index test.bam # 构建索引
$ samtools sort -n test.bam # 按名称将bam文件排序

第二步

1
$ samtools view -h -b test.bam chr1:1000-2000 -o region.bam # 按区域取比对数据

第三步

1
2
$ samtools fastq -1 read_1.fq -2 read_2.fq -s singleton.fq -N region.bam 
# -s 只有单端匹配上的序列,-N 在1 2 序列名称后加/1,/2,-n 参数会使序列名维持原样

软件对比

picard

1
2
$ java -jar picard.jar SamToFastq I=test.bam F=read1.fq F2=read2.fq R1_TRIM=1 R1_MAX_BASES=100 R2_TRIM=1 R2_MAX_BASES=100
# picard 虽然可以进行转换但是无法选择区域,提供的参数TRIM和MAX_BASES是截取序列的长度

bcftools

1
2
$ bedtools bamtofastq -i test.bam -fq read1.fq -fq2 test.read2.fq
# 同picard,参数更少