samtoolsflagstat:从多个方面进行详细阐述

一、原理解析

samtoolsflagstat命令是SAMtools软件包中用于检查SAM/BAM格式文件的工具。SAM(Sequence Alignment/Mapping)格式是常用于存储测序数据的文件格式之一,而BAM格式是SAM格式的压缩版本。samtoolsflagstat命令能够快速统计测序数据的关键指标,通常用于质量控制、评估测序数据的成果以及后续分析的数据处理。

具体来说,samtoolsflagstat可以针对SAM/BAM文件中的一系列flag标志进行统计,其中包括:

  • Total:总的序列数
  • Secondary:次要的序列数,即没有通过重名比对或没有通过质量阈值筛选的序列数
  • Supplementary:补充的序列数,即通过重名比对但不是最优比对或没有通过质量阈值筛选的序列数
  • Duplicates:复制的序列数,即PCR扩增引入的序列重复次数
  • Mapped:比对上的序列数
  • Paired in sequencing:成对测序的序列数
  • Read1/Read2:成对测序中Read1或Read2比对上的序列数
  • Properly paired:正常成对测序的序列数,即成对测序中两个序列一前一后比对上了相同染色体的不同位置,并且方向正确
  • With itself and mate mapped:两个序列都比对上了相同染色体的不同位置,并且方向一致的序列数
  • Singletons:只有一个序列比对上了相同染色体的不同位置的序列数
  • With mate mapped to a different chr:成对测序中两个序列比对上了不同染色体的序列数
  • With mate mapped to a different chr (mapQ>=5):比对质量大于等于5的成对测序中两个序列比对上了不同染色体的序列数

通过以上标志位的统计,我们可以翻译得到很多关键的测序参数,如比对率、重复率、成对比对率以及单端比对率等重要参数,这些参数能够帮助我们更好地判断测序数据的质量,进行下一步进一步的数据分析并会更精细。

二、使用方法

为了使读者更好地了解如何使用samtoolsflagstat,下面将使用三个例子进行阐述。

1. 统计BAM文件的总序列数和比对上的序列数

$ samtools flagstat example.bam

运行以上命令后,samtoolsflagstat会统计BAM文件example.bam中各个标志位的信息,并输出统计结果,如下所示:

1000 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
1000 + 0 mapped (100.00% : N/A)
1000 + 0 paired in sequencing
500 + 0 read1
500 + 0 read2
1000 + 0 properly paired (100.00% : N/A)
1000 + 0 with itself and mate mapped
0 + 0 singletons (0.00% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

可以看到,在example.bam文件中,共有1000个序列,全部通过了质量控制,没有次要序列或补充序列,也没有PCR复制序列。其中1000个序列比对上了基因组序列,且比对成功率达到了100%。成对测序的数据中,read1和read2数量都是500,所有序列都正常成对比对。

2. 比较两个BAM文件的比对率和重复率

$ samtools flagstat -@ 4 -r example.bam control.bam > compare.txt

通过以上命令可以比较example.bam和control.bam两个BAM文件的比对率和重复率,-@选项指定使用4个线程处理任务,-r选项表示只考虑比对上的序列。结果会输出到compare.txt文件中。比对结果如下所示:

1000 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
1000 + 0 mapped (100.00% : N/A)
1000 + 0 paired in sequencing
500 + 0 read1
500 + 0 read2
1000 + 0 properly paired (100.00% : N/A)
1000 + 0 with itself and mate mapped
0 + 0 singletons (0.00% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

900 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
900 + 0 mapped (100.00% : N/A)
900 + 0 paired in sequencing
450 + 0 read1
450 + 0 read2
900 + 0 properly paired (100.00% : N/A)
900 + 0 with itself and mate mapped
0 + 0 singletons (0.00% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

可以看出,两个文件中序列数都是900和1000,全部通过质量控制,并且没有次要序列或补充序列。example.bam文件中有1000个比对上了基因组序列的序列,比对成功率达到了100%。control.bam文件中有900个序列比对成功了。这样,我们可以发现两个文件中比对率的差异,以及bame文件的重复率。

3. 计算比对质量分数大于20的序列比对率

$ samtools view -q 20 example.bam | samtools flagstat -

以上命令首先使用samtoolsview命令筛选出比对质量分数大于20的序列,并将结果传递给samtoolsflagstat命令进行统计。结果如下所示:

610 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
610 + 0 mapped (100.00% : N/A)
610 + 0 paired in sequencing
305 + 0 read1
305 + 0 read2
610 + 0 properly paired (100.00% : N/A)
610 + 0 with itself and mate mapped
0 + 0 singletons (0.00% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

可以看到,example.bam文件中有1000个序列,其中610个比对质量分数大于20。在这610个序列中,全部通过了质量控制,没有次要序列或补充序列,也没有PCR复制序列。其中610个序列比对成功,比对成功率达到了100%。成对测序的数据中,read1和read2数量都是305,所有序列都正常成对比对。

三、常见问题

1. samtoolsflagstat能统计哪些参数?

samtoolsflagstat统计能够统计的参数包括:总序列数、次要序列数、补充序列数、PCR复制序列数、比对上的序列数、成对测序序列数、正常成对测序序列数、两个序列比对上了相同染色体的不同位置的序列数以及成对测序中两个序列比对上了不同染色体的序列数。

2. samtoolsflagstat的输出结果是什么?

samtoolsflagstat的输出结果包括各项标志,如Total、Secondary、Supplementary、Duplicates、Mapped、Paired in sequencing等,以及每项标志的统计数量,并添加统计比例。

3. samtoolsflagstat是否可用于统计单端测序数据?

可以,但是值得一提的是,实验室往往在关注单端测序数据比对情况时,不会统计properly paired、with itself and mate mapped、with mate mapped to a different chr连接器,因为单端数据自带信息有限。

结语

samtoolsflagstat是SAMtools软件包中非常常用的工具之一,能够方便地统计不同标志位的测序数据,获取测序数据的重要质量指标,并进行数据分析和后续的数据处理。运用相应的命令并正确解读输出信息,可以在测序分析过程中发挥重要作用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/159943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-20 00:16
下一篇 2024-11-20 00:17

相关推荐

  • 为什么Python不能编译?——从多个方面浅析原因和解决方法

    Python作为很多开发人员、数据科学家和计算机学习者的首选编程语言之一,受到了广泛关注和应用。但与之伴随的问题之一是Python不能编译,这给基于编译的开发和部署方式带来不少麻烦…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python合并多个相同表头文件

    对于需要合并多个相同表头文件的情况,我们可以使用Python来实现快速的合并。 一、读取CSV文件 使用Python中的csv库读取CSV文件。 import csv with o…

    编程 2025-04-29
  • 从多个方面用法介绍yes,but let me review and configure level of access

    yes,but let me review and configure level of access是指在授权过程中,需要进行确认和配置级别控制的全能编程开发工程师。 一、授权确…

    编程 2025-04-29
  • 从多个方面zmjui

    zmjui是一个轻量级的前端UI框架,它实现了丰富的UI组件和实用的JS插件,让前端开发更加快速和高效。本文将从多个方面对zmjui做详细阐述,帮助读者深入了解zmjui,以便更好…

    编程 2025-04-28
  • 学Python用什么编辑器?——从多个方面评估各种Python编辑器

    选择一个适合自己的 Python 编辑器并不容易。除了我们开发的应用程序类型、我们面临的软件架构以及我们的编码技能之外,选择编辑器可能也是我们编写代码时最重要的决定之一。随着许多不…

    编程 2025-04-28
  • 使用easypoi创建多个动态表头

    本文将详细介绍如何使用easypoi创建多个动态表头,让表格更加灵活和具有可读性。 一、创建单个动态表头 easypoi是一个基于POI操作Excel的Java框架,支持通过注解的…

    编程 2025-04-28
  • 创建列表的多个方面

    本文将从多个方面对创建列表进行详细阐述。 一、列表基本概念 列表是一种数据结构,其中元素以线性方式组织,并且具有特殊的序列位置。该位置可以通过索引或一些其他方式进行访问。在编程中,…

    编程 2025-04-28
  • Python多个sheet表合并用法介绍

    本文将从多个方面对Python多个sheet表合并进行详细的阐述。 一、xlrd与xlwt模块的基础知识 xlrd与xlwt是Python中处理Excel文件的重要模块。xlrd模…

    编程 2025-04-27
  • 从多个角度用法介绍lower down

    lower down是一个常用于编程开发中的操作。它可以对某个值或变量进行降低精度的处理,非常适合于一些需要精度不高但速度快的场景。那么,在本文中,我们将从多个角度解析lower …

    编程 2025-04-27

发表回复

登录后才能评论