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

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

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

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

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

脚本工具的使用方法:

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

  1. <html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK">
  2. <title>Explain SAM Flags</title>
  3. <script type="text/javascript">
  4. lstFlags = [["read paired", 0x1],
  5. ["read mapped in proper pair", 0x2],
  6. ["read unmapped", 0x4],
  7. ["mate unmapped", 0x8],
  8. ["read reverse strand", 0x10],
  9. ["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.  
  51. This utility explains SAM flags in plain English. <br>
  52. <br>
  53.  
  54. <form onsubmit="explainFlags(); return false;">
  55. Flag: &nbsp;
  56. <input id="tb" type="text" size="10"> &nbsp; &nbsp; &nbsp;
  57. <input type="submit" value="Explain"><br>
  58. <br>
  59. Explanation:<br>
  60. <script type="text/javascript">
  61. for(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><input type="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>
  66. Summary:<br>
  67. <div id="summary">
  68. </div></form></body></html>

 

 

评论  3  访客  2
    • freeknighter 0

      挺好用的,本来想自己设计个脚本的,看到这儿还是网页版的!!

      • lx3325360 0

        非常好用哎!Thanks!

      发表评论

      匿名网友

      拖动滑块以完成验证
      加载中...