如何理解BAM文件的flags

如何理解BAM文件的flags,第1张

每次遇到BAM文件flag值都有一些困惑,时间越或运久越迷惑。

在此,针对BAM文件中的flag信息进行梳理和解释:

记录于BAM文件的第2列,以巧芦 bwa 软件比对结果为例

可以使用samtools查询:

samtools view test.bam | cut -f2 | uniq

问题来了,这些数字的意义是什么呢?

首先可以参考SAM/BAM文件的解释文档:

http://samtools.sourceforge.net/SAMv1.pdf

其中,对于FLAG有如下说明:

FLAG: bitwise FLAG. Each bit is explained in the following table:

| Bit | Description |

| 0x1 | template having multiple segments in sequencing |

| 0x2 | each segment properly aligned according to the aligner |

| 0x4 | segment unmapped |

| 0x8 | next segment in the template unmapped |

| 0x10 | SEQ being reverse complemented |

| 0x20 | SEQ of the next segment in the template being reversed |

| 0x40 | the first segment in the template |

| 0x80 | the last segment in the template |

| 0x100 | secondary alignment |

| 0x200 | not passing quality controls |

| 0x400 | PCR or optical duplicate |

| 0x800 | supplementary alignment |

上述0x1, 0x2, …是 十六进制 的数值与十进制的数字截然不同。

对应的十进制数值描述如下:

| 十进制 | 描述 |

| 1 | template having multiple segments in sequencing |

| 2 | each segment properly aligned according to the aligner |

| 4 | segment unmapped |

| 8 | next segment in the template unmapped |

| 16 | SEQ being reverse complemented |

| 32 | SEQ of the next segment in the template being reversed |

| 64 | the first segment in the template |

| 128 | the last segment in the template |

| 256 | secondary alignment |

| 512 | not passing quality controls |

| 1024 | PCR or optical duplicate |

| 2048 | supplementary alignment |

回过头来看,比如16和1024分别是比对到互孝团带补链的片段,对于1024指的是PCR重复片段。

那其他数字的含义呢,他们只是简单数字组合而已,例如:1040是1024 + 16,Read比对到反义链且是一个PCR重复,简单的数字相加而已。

也可以借助 flag解释链接 来解析上述数字的含义,如把1040输入到该网站会返回:

“read reverse strand”和“read is PCR or optical duplicate”。

不过,SAM说明文档中FLAG的代号均使用按位符号显示。bit是信息的基本单元且只有2个数值,1和0。

这谁能搞的懂啊?!

直接用linux bc转换吧:

按下表对10000010000从右到左依次读取:

故BAM flag转换为元字符,轻松获取各种类型BAM flag值背后的信息。

参考资料

https://davetang.org/muse/2014/03/06/understanding-bam-flags/

Flags 属性(“打开”、“另存为”对话框

为“打开”和“另存为”对话框返回或设置选项。

语法

object.Flags [= value]

Flags 属性语法有下列部分:

部分 描述

object 对象表达式,其值是“应用于”列表中的对象。

value 如“设置值”中所描述,扒橘是为“打开”和“另存为”对话框指定选项的常数或值。

设置值

Value 的设置值是:

常数 值 描述

cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择。

运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此 *** 作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。

cdlOFNCreatePrompt &H2000 当文件不存在时对话框要提示创建文件。该标志自动设置 cdlOFNPathMustExist 和 cdlOFNFileMustExist 标志。

cdlOFNExplorer &H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。

CdlOFNExtensionDifferent &H400 它指示返回的文件扩展名与 DefaultExt 属性指定的扩展名不一致。如果 DefaultExt 属性是 Null,或者扩展相匹配,或者没有扩展时,此标志不设置。当关闭对话框时,可以检查这个标志的值。

cdlOFNFileMustExist &H1000 它指定只能输入文件名文本框已经存在的文件名。如果该标志被设置,盯兄则当用户输入非法的文件名时,要显示一个警告凯此袭。该标志自动设置 cdlOFNPathMustExist 标志。

cdlOFNHelpButton &H10 使对话框显示帮助按钮。

cdlOFNHideReadOnly &H4 隐藏只读复选框。

cdlOFNLongNames &H200000 使用长文件名。

cdlOFNNoChangeDir &H8 强制对话框将对话框打开时的目录置成当前目录。

CdlOFNNoDereferenceLinks &H100000 不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用。

cdlOFNNoLongNames &H40000 无长文件名。

CdlOFNNoReadOnlyReturn &H8000 它指定返回的文件不能具有只读属性,也不能在写保护目录下面。

cdlOFNNoValidate &H100 它指定公共对话框允许返回的文件名中含有非法字符。

cdlOFNOverwritePrompt &H2 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件。

cdlOFNPathMustExist &H800 它指定只能输入有效路径。如果设置该标志,输入非法路径时,应显示一个警告信息。

cdlOFNReadOnly &H1 建立对话框时,只读复选框初始化为选定。该标志也指示对话框关闭时只读复选框的状态。

cdlOFNShareAware &H4000 它指定忽略共享冲突错误。

说明

cdlOFNExplorer 和 cdlOFNNoDereferenceLinks 标志适用于 Windows 95 和 Windows NT 4.0。Windows 95 中 cdlOFNExplorer 的公共对话框使用字符作为分隔符;而在没有 Windows 95 外壳的 Windows NT 的早期版本中,多重选择是使用空格作为分隔符(固而不能支持长文件名)。

无论是在 Windows NT 4.0 还是在 Windows 95 中,如果不选取 cdlOFNAllowMultiselect 标志,cdlOFNExplorer 和 cdlOFNLongNames 标志均没有意义,并且实际上是缺省值。

无论是在 Windows NT 4.0 还是在 Windows 95 中,如果 cdlOFNAllowMultiselect 标志被单独使用,都不能支持长文件名。这是因为多重文件名要复现空格分隔符,而长文件名也可能包括空格符。在 Windows NT 3.5 中,无法避免这种情况。如果使用 cdlOFNAllowMultiselect,就不能看到长文件名。如果在 Windows 95 中添加 cdlOFNExplorer 标志,就可以既能文件多选,又能看到长文件名。但是,这些文件名显现空字符分隔符,而不是空格分隔符隔开。因此,cdlOFNAllowMultiselect 和 cdlOFNExplorer 一起使用时,在 Windows 95 和 Windows NT 4.0 中需要不同的文件名所得结果的语法分析。

这些常数在对象浏览器中的 Microsoft CommonDialog 控件 (MSComDlg) 对象库中列出。

也可以定义所选择的标志。应使用启动窗体声明部分的 Const 关键字来定义想使用的标志。例如:

Const ReadOnly = &H00000001&

Const Effects = &H00000100&

CommonDialog1.Flags = &H10&Or &H200&

将所需常数值能相加产生同样的结果。下例与上例等效:

CommonDialog1.Flags = &H210&


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12256175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存