推荐一个SAM文件或者bam文件中flag含义解释工具

本文提供了一个实用的HTML脚本工具,用于解析SAM文件中的FLAG字段。通过输入FLAG值即可获得其具体含义,并且支持双向操作,即通过勾选项生成对应的FLAG值。

SAM是Sequence Alignment/Map 的缩写。像bwa等软件序列比对结果都会输出这样的文件。samtools网站上有专门的文档介绍SAM文件。具体地址:http://samtools.sourceforge.net/SAM1.pdf

很多人困惑SAM文件中的第二列FLAG值是什么意思。根据文档介绍我们可以计算,但是为了方便大家,下面给大家提供一个脚本工具,大家直接输入flag值就可以知道它代表的含义了。

该脚本的使用方法如下截图所示:

脚本工具的使用方法:

将下面的代码保存在记事本里面,另存为一个html文件,如文件名:FlagExplain.html(拓展名一定要为.html)。双击既可以在浏览器里面打开了。

01<html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK">
02   <title>Explain SAM Flags</title>
03   <script type="text/javascript">
04      lstFlags = [["read paired", 0x1],
05             ["read mapped in proper pair", 0x2],
06             ["read unmapped", 0x4],
07             ["mate unmapped", 0x8],
08             ["read reverse strand", 0x10],
09             ["mate reverse strand", 0x20],
10             ["first in pair", 0x40],
11             ["second in pair", 0x80],
12             ["not primary alignment", 0x100],
13             ["read fails platform/vendor quality checks", 0x200],
14             ["read is PCR or optical duplicate", 0x400]];
15 
16      function explainFlags() {
17         var flagValue = parseInt(document.getElementById('tb').value); //returns 0 or NaN if can't parse
18         var summary = "";
19         for(var i = 0; i < lstFlags.length; i++) {
20            var checkbox document.getElementById('cb' + i)
21            if(lstFlags[i][1] & flagValue) {
22               summary  += " &nbsp; &nbsp; " + lstFlags[i][0] + "<br>";
23               checkbox.checked = true;
24            } else {
25               checkbox.checked = false;
26            }
27         }
28 
29         document.getElementById('summary').innerHTML = summary;
30      }
31 
32      function checkboxClicked() {
33         //compute the new flag value
34         var newFlagValue = 0;
35         for(var i = 0; i < lstFlags.length; i++) {
36            var checkBox document.getElementById('cb' + i);
37            if(checkBox.checked) {
38               newFlagValue |= lstFlags[i][1];
39            }
40         }
41         var textbox document.getElementById('tb');
42         textbox.value newFlagValue;
43         explainFlags();
44      }
45   </script>
46 
47   <noscript>This page requires JavaScript. Please enable it in your browser settings.</noscript>
48</head>
49<body>
50 
51This utility explains SAM flags in plain English. <br>
52<br>
53 
54<form onsubmit="explainFlags(); return false;">
55Flag: &nbsp;
56<input id="tb" type="text" size="10"> &nbsp; &nbsp; &nbsp;
57<input type="submit" value="Explain"><br>
58<br>
59Explanation:<br>
60<script type="text/javascript">
61for(var i = 0; i < lstFlags.length; i++) {
62   document.write("<input type=checkbox name=cb" + i + " id='cb" + i + "' onclick='checkboxClicked();'> &nbsp; " +lstFlags[i][0] + "</input><br>");
63}
64</script><input type="checkbox" name="cb0" id="cb0" onclick="checkboxClicked();"> &nbsp; read paired<br><input type="checkbox" name="cb1" id="cb1"onclick="checkboxClicked();"> &nbsp; read mapped in proper pair<br><inputtype="checkbox" name="cb2" id="cb2" onclick="checkboxClicked();"> &nbsp; read unmapped<br><input type="checkbox" name="cb3" id="cb3" onclick="checkboxClicked();"> &nbsp; mate unmapped<br><input type="checkbox" name="cb4" id="cb4" onclick="checkboxClicked();"> &nbsp; read reverse strand<br><input type="checkbox" name="cb5" id="cb5" onclick="checkboxClicked();"> &nbsp; mate reverse strand<br><input type="checkbox" name="cb6" id="cb6" onclick="checkboxClicked();"> &nbsp; first in pair<br><input type="checkbox" name="cb7" id="cb7" onclick="checkboxClicked();"> &nbsp; second in pair<br><input type="checkbox" name="cb8" id="cb8"onclick="checkboxClicked();"> &nbsp; not primary alignment<br><input type="checkbox" name="cb9" id="cb9" onclick="checkboxClicked();"> &nbsp; read fails platform/vendor quality checks<br><input type="checkbox" name="cb10" id="cb10" onclick="checkboxClicked();"> &nbsp; read is PCR or optical duplicate<br>
65<br>
66Summary:<br>
67<div id="summary">
68</div></form></body></html>

 

 

 

 

参考:https://www.plob.org/article/1697.html

转载于:https://www.cnblogs.com/Formulate0303/p/7844541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值