Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31822
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-29 10:29
文章分类

全部博文(4)

文章存档

2016年(4)

我的朋友

分类: 大数据

2016-03-28 17:31:33

The output from short read aligners like Bowtie and BWA is commonly stored in SAM/BAM format. When presented with one of these files a common first task is to calculate the total number of alignments (reads) captured in the file. In this post I show some examples for finding the total number of reads using samtools and directly from Java code. For the examples below, I use the HG00173.chrom11 BAM file from the 1000 genomes project which can be downloaded here.

First, we look at using the samtools command directly. One way to get the total number of alignments is to simply dump the entire SAM file and tell samtools to count instead of print (-c option):

1    ##这里只是统计有多少比对记录,如果一个reads出现了多个比对结果,也没有进行去重复    

2    $ samtools view -c HG00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam

3    5218322

If we’re only interested in counting the total number of mapped reads we can add the -F 4 flag. Alternativley, we can count only the unmapped reads with -f 4:

1    # Mapped reads only

2    $ samtools view -c -F 4 G00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam

3    5068340

4    # Unmapped reads only

5    $ samtools view -c -f 4 HG00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam

6    149982

To understand how this works we first need to inspect the SAM format. The SAM format includes a bitwise FLAG field described here. The -f/-F options to the samtools command allow us to query based on the presense/absence of bits in the FLAG field. So -f 4 only output alignments that are unmapped (flag 0×0004 is set) and -F 4 only output alignments that are not unmapped (i.e. flag 0×0004 is not set), hence these would only include mapped alignments.

An example for paired end reads you could do the following. To count the number of reads having both itself and it’s mate mapped:

1    $ samtools view -c -f 1 -F 12 00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam

2    4906035

The -f 1 switch only includes reads that are paired in sequencing and -F 12 only includes reads that are not unmapped (flag 0×0004 is not set) and where the mate is not unmapped (flag 0×0008 is not set). Here we add 0x0004 + 0x0008 = 12 and use the -F (bits not set), meaning you want to include all reads where neither flag 0×0004 or 0×0008 is set. For help understanding the values for the SAM FLAG field there’s a handy web tool here.

There’s also a nice command included in samtools called flagstat which computes various summary statistics. However, I wasn’t able to find much documentation describing the output and it’s not mentioned anywhere in the man page. This post examines the C code for the flagstat command which provides some insight into the output.

01    $ samtools flagstat HG00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam

02    5218322 + 0 in total ##等于samtools view -c *.bam (QC-passed reads + QC-failed reads)

03    273531 + 0 duplicates

04    5068340 + 0 mapped ##等于samtools view -c -F 4 *.bam (97.13%:-nan%)

05    5205999 + 0 paired in sequencing

06    2603248 + 0 read1

07    2602751 + 0 read2

08    4881994 + 0 properly paired (93.78%:-nan%)

09    4906035 + 0 with itself and mate mapped  ##等于samtools view -c -f 1 -F 12 *.bam

10    149982 + 0 singletons ##等于samtools view -c -f 4 *.bam(2.88%:-nan%)

11    19869 + 0 with mate mapped to a different chr

12    15271 + 0 with mate mapped to a different chr (mapQ>=5)

资料来源:

Counting the number of reads in a BAM file

阅读(3050) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:每日一生信--RNA-Seq数据分析

给主人留下些什么吧!~~