每次遇到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&
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)