Repository 'sam_bitwise_flag_filter'
hg clone https://toolshed.g2.bx.psu.edu/repos/devteam/sam_bitwise_flag_filter

Changeset 0:0b2424a404d9 (2013-08-26)
Commit message:
Uploaded tool tarball.
added:
sam_bitwise_flag_filter.py
sam_bitwise_flag_filter.xml
test-data/sam_bw_filter.sam
test-data/sam_bw_filter_0002-yes.sam
b
diff -r 000000000000 -r 0b2424a404d9 sam_bitwise_flag_filter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sam_bitwise_flag_filter.py Mon Aug 26 15:11:25 2013 -0400
[
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+# Refactored on 11/13/2010 by Kanwei Li
+
+import sys
+import optparse
+
+def stop_err( msg ):
+    sys.stderr.write( msg )
+    sys.exit()
+
+def main():
+    usage = """%prog [options]
+    
+options (listed below) default to 'None' if omitted
+    """
+    parser = optparse.OptionParser(usage=usage)
+    
+    parser.add_option(
+        '--0x0001','--is_paired',
+        choices = ( '0','1' ),
+        dest='is_paired',
+        metavar="<0|1>",
+        help='The read is paired in sequencing')
+
+    parser.add_option(
+        '--0x0002','--is_proper_pair',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_proper_pair',
+        help='The read is mapped in a proper pair')
+
+    parser.add_option(
+        '--0x0004','--is_unmapped',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_unmapped',
+        help='The query sequence itself is unmapped')
+
+    parser.add_option(
+        '--0x0008','--mate_is_unmapped',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='mate_is_unmapped',
+        help='The mate is unmapped')
+
+    parser.add_option(
+        '--0x0010','--query_strand',
+        dest='query_strand',
+        metavar="<0|1>",
+        choices = ( '0','1' ),
+        help='Strand of the query: 0 = forward, 1 = reverse.')
+
+    parser.add_option(
+        '--0x0020','--mate_strand',
+        dest='mate_strand',
+        metavar="<0|1>",
+        choices = ('0','1'),
+        help='Strand of the mate: 0 = forward, 1 = reverse.')
+
+    parser.add_option(
+        '--0x0040','--is_first',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_first',
+        help='The read is the first read in a pair')
+
+    parser.add_option(
+        '--0x0080','--is_second',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_second',
+        help='The read is the second read in a pair')
+
+    parser.add_option(
+        '--0x0100','--is_not_primary',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_not_primary',
+        help='The alignment for the given read is not primary')
+
+    parser.add_option(
+        '--0x0200','--is_bad_quality',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_bad_quality',
+        help='The read fails platform/vendor quality checks')
+
+    parser.add_option(
+        '--0x0400','--is_duplicate',
+        choices = ( '0','1' ),
+        metavar="<0|1>",
+        dest='is_duplicate',
+        help='The read is either a PCR or an optical duplicate')
+        
+    parser.add_option(
+        '-f','--input_sam_file',
+        metavar="INPUT_SAM_FILE",
+        dest='input_sam',
+        default = False,
+        help='Name of the SAM file to be filtered. STDIN is default')
+            
+    parser.add_option(
+        '-c','--flag_column',
+        dest='flag_col',
+        default = '2',
+        help='Column containing SAM bitwise flag. 1-based')
+
+    options, args = parser.parse_args()
+
+    if options.input_sam:
+ infile = open ( options.input_sam, 'r')
+    else:
+     infile = sys.stdin
+        
+    opt_ary = [
+        options.is_paired,
+        options.is_proper_pair,
+        options.is_unmapped,
+        options.mate_is_unmapped,
+        options.query_strand,
+        options.mate_strand,
+        options.is_first,
+        options.is_second,
+        options.is_not_primary,
+        options.is_bad_quality,
+        options.is_duplicate
+    ]
+    
+    opt_map = { '0': False, '1': True }
+    used_indices = [(index, opt_map[opt]) for index, opt in enumerate(opt_ary) if opt is not None]
+    flag_col = int( options.flag_col ) - 1
+    
+    for line in infile:
+        line = line.rstrip( '\r\n' )
+        if line and not line.startswith( '#' ) and not line.startswith( '@' ) :
+            fields = line.split( '\t' )
+            flags = int( fields[flag_col] )
+            
+            valid_line = True
+            for index, opt_bool in used_indices:
+                if bool(flags & 0x0001 << index) != opt_bool:
+                    valid_line = False
+                    break
+                    
+            if valid_line:
+                print line
+
+if __name__ == "__main__": main()
+
b
diff -r 000000000000 -r 0b2424a404d9 sam_bitwise_flag_filter.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sam_bitwise_flag_filter.xml Mon Aug 26 15:11:25 2013 -0400
b
@@ -0,0 +1,97 @@
+<tool id="sam_bw_filter" name="Filter SAM" version="1.0.0">
+  <description>on bitwise flag values</description>
+  <parallelism method="basic"></parallelism>
+  <command interpreter="python">
+    sam_bitwise_flag_filter.py  
+      --input_sam_file=$input1
+      --flag_column=2
+      #for $bit in $bits
+       '${bit.flags}=${bit.states}'
+      #end for
+      > $out_file1
+  </command>
+  <inputs>
+    <param format="sam" name="input1" type="data" label="Select dataset to filter"/>
+    <repeat name="bits" title="Flag">
+      <param name="flags" type="select" label="Type">
+        <option value="--0x0001">Read is paired</option>
+        <option value="--0x0002">Read is mapped in a proper pair</option>
+        <option value="--0x0004">The read is unmapped</option>
+        <option value="--0x0008">The mate is unmapped</option>
+        <option value="--0x0010">Read strand</option>
+        <option value="--0x0020">Mate strand</option>
+        <option value="--0x0040">Read is the first in a pair</option>
+        <option value="--0x0080">Read is the second in a pair</option>
+        <option value="--0x0100">The alignment or this read is not primary</option>
+        <option value="--0x0200">The read fails platform/vendor quality checks</option>
+        <option value="--0x0400">The read is a PCR or optical duplicate</option>
+      </param>
+      <param name="states" type="select" display="radio" label="Set the states for this flag">
+         <option value="0">No</option>
+         <option value="1">Yes</option>
+       </param>
+    </repeat>
+  </inputs>
+  <outputs>
+    <data format="sam" name="out_file1" />
+  </outputs>
+  <tests>
+    <test>
+      <param name="input1" value="sam_bw_filter.sam" ftype="sam"/>
+      <param name="flags" value="Read is mapped in a proper pair"/>
+      <param name="states" value="1"/>
+      <output name="out_file1" file="sam_bw_filter_0002-yes.sam" ftype="sam"/>
+    </test>
+  </tests>
+  <help>
+
+**What it does**
+
+Allows parsing of SAM datasets using bitwise flag (the second column). The bits in the flag are defined as follows::
+
+    Bit Info
+ ------ --------------------------------------------------------------------------   
+ 0x0001 the read is paired in sequencing, no matter whether it is mapped in a pair 
+ 0x0002 the read is mapped in a proper pair (depends on the protocol, normally 
+        inferred during alignment) 1 
+ 0x0004 the query sequence itself is unmapped 
+ 0x0008 the mate is unmapped 1 
+ 0x0010 strand of the query (0 for forward; 1 for reverse strand) 
+ 0x0020 strand of the mate 1 
+ 0x0040 the read is the first read in a pair (see below)
+ 0x0080 the read is the second read in a pair (see below) 
+ 0x0100 the alignment is not primary (a read having split hits may 
+        have multiple primary alignment records) 
+ 0x0200 the read fails platform/vendor quality checks 
+ 0x0400 the read is either a PCR duplicate or an optical duplicate
+
+Note the following:
+
+- Flag 0x02, 0x08, 0x20, 0x40 and 0x80 are only meaningful when flag 0x01 is present. 
+- If in a read pair the information on which read is the first in the pair is lost in the upstream analysis, flag 0x01 should be set, while 0x40 and 0x80 should both be zero.
+
+-----
+
+**Example**
+
+Suppose the following dataset was generated with BWA mapper::
+
+ r001 163 ref  7 30 8M2I4M1D3M = 37  39 TTAGATAAAGGATACTA *
+ r002   0 ref  9 30 3S6M1P1I4M *  0   0 AAAAGATAAGGATA    *
+ r003   0 ref  9 30       5H6M *  0   0 AGCTAA            * NM:i:1
+ r004   0 ref 16 30    6M14N5M *  0   0 ATAGCTTCAGC       *
+ r003  16 ref 29 30       6H5M *  0   0 TAGGC             * NM:i:0
+ r001  83 ref 37 30         9M =  7 -39 CAGCGCCAT         *
+
+To select properly mapped pairs, click the **Add new Flag** button and set *Read mapped in a proper pair* to **Yes**. The following two reads will be returned::
+
+ r001 163 ref  7 30 8M2I4M1D3M = 37  39 TTAGATAAAGGATACTA *
+ r001  83 ref 37 30         9M =  7 -39 CAGCGCCAT         *
+
+For more information, please consult the `SAM format description`__.
+
+.. __: http://www.ncbi.nlm.nih.gov/pubmed/19505943
+
+
+  </help>
+</tool>
b
diff -r 000000000000 -r 0b2424a404d9 test-data/sam_bw_filter.sam
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sam_bw_filter.sam Mon Aug 26 15:11:25 2013 -0400
b
b'@@ -0,0 +1,1000 @@\n+HWI-EAS91_1_30788AAXX:1:2:1670:915\t99\tchr9\t58119878\t60\t36M\t=\t58120234\t392\tGACCCCTACCCCACCGTGCTCTGGATCTCAGTGTTT\tIIIIIIIIIIIIIIIIEIIIIIII7IIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1670:915\t147\tchr9\t58120234\t60\t36M\t=\t58119878\t-392\tATGAGTCGAATTCTATTTTCCAAACTGTTAACAAAA\tIFIIDI;IIICIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:835:1201\t83\tchr19\t7640648\t60\t36M\t=\t7640277\t-407\tAATTTTATTAACAAATGCTAAAACTTGGAAGCAACC\tIIIIIIIIIIIIIIIHIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:25\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:835:1201\t163\tchr19\t7640277\t60\t36M\t=\t7640648\t407\tTGAGCCGATGACCTTAACCAAGACTTCATCAAGAAG\tIIIIIIIHIIIIIIIIIII:@I49IGF88:0EI>7-\tXT:A:U\tNM:i:2\tSM:i:25\tAM:i:25\tX0:i:1\tX1:i:0\tXM:i:2\tXO:i:0\tXG:i:0\tMD:Z:6A21C7\n+HWI-EAS91_1_30788AAXX:1:2:1402:1012\t99\tchr15\t67776677\t60\t36M\t=\t67777024\t383\tGTCTTAACACAAGAATCATGAGATTGACCTTCATGC\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1402:1012\t147\tchr15\t67777024\t60\t36M\t=\t67776677\t-383\tTTTAGTGTCCATCCCTGGAAGTCTTTGGGTCGTCCA\t<8/II5I;?CG0IIIFIIIII?IIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1428:881\t99\tchr5\t78959538\t60\t36M\t=\t78959849\t347\tGGATAAATGGGAATAAGACAATAAAGGACCTAAGAG\tIIIIIIIIIIIIIIIIIIIIIIII>IIIIIII>IAI\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1428:881\t147\tchr5\t78959849\t60\t36M\t=\t78959538\t-347\tCCTTTGTAGAGTGGAACGGTCATAGATCTAAGTTTC\tIII>5ICII9I:IIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1624:138\t99\tchr14\t19993808\t60\t36M\t=\t19994089\t317\tGTGGATTTGGGCCGTAGTACACAAAGGGATCAATTG\tIIIIIIIIIIIIIIIIIIIIIIIICIIICII9IIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1624:138\t147\tchr14\t19994089\t60\t36M\t=\t19993808\t-317\tCCTGGGAAGGCAGAAAGTTATTTGGGAGGTTATTAC\t>2-IIIIIIIIIIIIIIIII3IIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:600:851\t83\tchr15\t52551374\t60\t36M\t=\t52550994\t-416\tGGAATCTTCTCAGACTTACCTTACCCATTTTCAATC\tIEEIIIIII?8IIIIIIIII4I;IIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:600:851\t163\tchr15\t52550994\t60\t36M\t=\t52551374\t416\tTCCACCATCCCTGGGTCCCTGAATGGGCCTGAGTCT\tIIIIIIIIIIII/II+I5.II.A2D%0A*I15A2=I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1189:764\t83\tchr3\t50738340\t60\t36M\t=\t50737960\t-416\tCACTAGCTGGCAAAAAAATAGGAACCTCAGTCATAC\tII7>IIGIII<IIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1189:764\t163\tchr3\t50737960\t60\t36M\t=\t50738340\t416\tAATAGCTACTGTGTCAGATACTAATTCTGTTCAATT\tIIIIIIIIIIIIIII:III7HD58IICC9AI?+2IF\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:737:1501\t81\tchrM\t933\t37\t36M\tchr1\t21812681\t0\tGTCACCCTACTTAAATATCACAAATCATAACATAAC\t5D+I.,\'@%$IIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:0\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:8C27\n+HWI-EAS91_1_30788AAXX:1:2:737:1501\t161\tchr1\t21812681\t0\t36M\tchrM\t933\t0\tAAGGACTTGGCGGTGCTTTACATCCCTCTAGAGGAG\tIIIIIIIIIIIIII;H@II9-*;5II482$$-6.35\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:3\tX1:i:1\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:535:15\t69\t*\t0\t0\t*\t*\t0\t0\tGNNNNNNCTGTAAACTTCNNTNNAAAGTNNNNANAA\tI""""""IIIIIIIIIII""I""II9II""""I"II\n+HWI-EAS91_1_30788AAXX:1:2:535:15\t133\t*\t0\t0\t*\t*\t0\t0\tNNNNNNATCTNNNNNNNNTAGATGTATACTNNTANN\t""""""IIII""""""""IGI8IIIHI7<I""I/""\n+HWI-EAS91_1_30788AAXX:1:2:1713:538\t69\tchrUn\t67420542\t0\t36M\t=\t67420542\t0\tGCATGCCCGACAGGTGTTTCTGGACTTTCCGCCACG\tIIIIIIIIIIIIIIIIIIIIII=8IIIIIIIII3II\n+HWI-EAS91_1_3078'..b"2:740:1110\t99\tchr26\t28484134\t60\t36M\t=\t28484454\t356\tGAAATGACTGTATTAAGTATTTAAGAACAACTTCGT\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIII'I\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:8A27\n+HWI-EAS91_1_30788AAXX:1:2:740:1110\t147\tchr26\t28484454\t60\t36M\t=\t28484134\t-356\tCTGCGTTTTCCCTGAAGTGGCAGTTTGTGGAGAAAC\t76I;I,I=2IHI2IIIIIIIIII=IIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1688:233\t83\tchr28\t14171283\t60\t36M\t=\t14170902\t-417\tCAAAAATAAAAAACCTAGAAATCAGAGGTACTTTTC\t3IIIIIIIIIIIIIIIIIIIIGIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1688:233\t163\tchr28\t14170902\t60\t36M\t=\t14171283\t417\tAACCTGTGGACCCAGGCTGCTGAAGTGGAGCATGCC\tIIIIIIIIIIIIIIIIIIIIII6IIGII7IIIII1I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1167:1000\t99\tchr2\t99368079\t60\t36M\t=\t99368455\t412\tGTTCCTCCAGAGAAACAGATTCAGTAGGGGAAAAGA\tIIIIIIIIIIGIIIHIII;IIIII9IIIIII>III4\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1167:1000\t147\tchr2\t99368455\t60\t36M\t=\t99368079\t-412\tTTTCCCATAAAAATTACCATCACATTGGCATACACA\tAIC*H%I=IIIIICIIIIIII9IIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1609:1692\t113\tchrUn\t79778129\t0\t36M\t=\t37727851\t-42050278\tCCTGGGATAATTTGGACAGCATTAGATTGTTTTACC\tIIGIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:37\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1609:1692\t177\tchrUn\t37727851\t0\t36M\t=\t79778129\t42050278\tGCTGCTCTCTGCCTCAGACACGGTGCCCTCTGCGTG\tBI8IIHI@IIIIIIIIIIIBIIIIIIIIIIIIIIII\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:79\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1447:703\t97\tchrUn\t98336078\t0\t36M\t=\t86781748\t-11554294\tGAGACGTTCCCGGTAGGCTGTCAGAGCACTGTGCAG\tIIIIIIIIIIIIIIIIIIIIII2>E86)II@IIA*&\tXT:A:R\tNM:i:1\tSM:i:0\tAM:i:0\tX0:i:136\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:21A14\n+HWI-EAS91_1_30788AAXX:1:2:1447:703\t145\tchrUn\t86781748\t0\t36M\t=\t98336078\t11554294\tCAGAAGTCCTACTTCAGCCAGATCAGGCCTGCAAAG\t6IIIGIII@EI90@IIII&IIIIIIIIIIIIIIIII\tXT:A:R\tNM:i:0\tSM:i:0\tAM:i:0\tX0:i:34311\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1461:1145\t83\tchrX\t69768894\t60\t36M\t=\t69768541\t-389\tAAATAAATAACACCTTGATGTTAAGATATTAGATGC\tIIIIIII<IIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1461:1145\t163\tchrX\t69768541\t60\t36M\t=\t69768894\t389\tTAAAGGCAATTTGATTGGACAATATTGGCAATGCCT\tIIIIIIIIIIIIIIIII0IE?2IIHFIIII*IB@8+\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1702:751\t83\tchr3\t29339305\t60\t36M\t=\t29338902\t-439\tTGCTCTTCTCCCACCCCTGGCTCCCTGGGGAGCTCC\tAHIEIIDIIIIIDIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1702:751\t163\tchr3\t29338902\t60\t36M\t=\t29339305\t439\tCAGCAGTTTGCAGCTGGCGCTGCCCGGCGCCGCCTA\tIIIIIIIIIIIIIIIIIIIIHIIII.DI,III>D8/\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:690:1215\t99\tchr4\t46913196\t60\t36M\t=\t46913525\t365\tGAAGTTTATTCACATGTGACAAATGAGATCAAAGTG\tIIIIIIIIIIIIIII7I3III8AII4EIIII>5&@-\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:690:1215\t147\tchr4\t46913525\t60\t36M\t=\t46913196\t-365\tCACAGATGAGCATATTCCTAAAAAGAAGGACAATGA\t*@;III+III.IIIII'E2IIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1719:746\t83\tchr20\t18695923\t60\t36M\t=\t18695597\t-362\tCAAAACAAACATCCCAGGTATCTTAACTGACCATCC\t1IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1719:746\t163\tchr20\t18695597\t60\t36M\t=\t18695923\t362\tTGCTTTTAAGAAGGAAAACTATGGTGCCAATAGTCT\tIIIIIIIIIIIIIIIII9IIIIII(I@I6-III(8I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n"
b
diff -r 000000000000 -r 0b2424a404d9 test-data/sam_bw_filter_0002-yes.sam
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sam_bw_filter_0002-yes.sam Mon Aug 26 15:11:25 2013 -0400
b
b"@@ -0,0 +1,646 @@\n+HWI-EAS91_1_30788AAXX:1:2:1670:915\t99\tchr9\t58119878\t60\t36M\t=\t58120234\t392\tGACCCCTACCCCACCGTGCTCTGGATCTCAGTGTTT\tIIIIIIIIIIIIIIIIEIIIIIII7IIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1670:915\t147\tchr9\t58120234\t60\t36M\t=\t58119878\t-392\tATGAGTCGAATTCTATTTTCCAAACTGTTAACAAAA\tIFIIDI;IIICIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:835:1201\t83\tchr19\t7640648\t60\t36M\t=\t7640277\t-407\tAATTTTATTAACAAATGCTAAAACTTGGAAGCAACC\tIIIIIIIIIIIIIIIHIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:25\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:835:1201\t163\tchr19\t7640277\t60\t36M\t=\t7640648\t407\tTGAGCCGATGACCTTAACCAAGACTTCATCAAGAAG\tIIIIIIIHIIIIIIIIIII:@I49IGF88:0EI>7-\tXT:A:U\tNM:i:2\tSM:i:25\tAM:i:25\tX0:i:1\tX1:i:0\tXM:i:2\tXO:i:0\tXG:i:0\tMD:Z:6A21C7\n+HWI-EAS91_1_30788AAXX:1:2:1402:1012\t99\tchr15\t67776677\t60\t36M\t=\t67777024\t383\tGTCTTAACACAAGAATCATGAGATTGACCTTCATGC\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1402:1012\t147\tchr15\t67777024\t60\t36M\t=\t67776677\t-383\tTTTAGTGTCCATCCCTGGAAGTCTTTGGGTCGTCCA\t<8/II5I;?CG0IIIFIIIII?IIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1428:881\t99\tchr5\t78959538\t60\t36M\t=\t78959849\t347\tGGATAAATGGGAATAAGACAATAAAGGACCTAAGAG\tIIIIIIIIIIIIIIIIIIIIIIII>IIIIIII>IAI\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1428:881\t147\tchr5\t78959849\t60\t36M\t=\t78959538\t-347\tCCTTTGTAGAGTGGAACGGTCATAGATCTAAGTTTC\tIII>5ICII9I:IIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1624:138\t99\tchr14\t19993808\t60\t36M\t=\t19994089\t317\tGTGGATTTGGGCCGTAGTACACAAAGGGATCAATTG\tIIIIIIIIIIIIIIIIIIIIIIIICIIICII9IIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1624:138\t147\tchr14\t19994089\t60\t36M\t=\t19993808\t-317\tCCTGGGAAGGCAGAAAGTTATTTGGGAGGTTATTAC\t>2-IIIIIIIIIIIIIIIII3IIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:600:851\t83\tchr15\t52551374\t60\t36M\t=\t52550994\t-416\tGGAATCTTCTCAGACTTACCTTACCCATTTTCAATC\tIEEIIIIII?8IIIIIIIII4I;IIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:600:851\t163\tchr15\t52550994\t60\t36M\t=\t52551374\t416\tTCCACCATCCCTGGGTCCCTGAATGGGCCTGAGTCT\tIIIIIIIIIIII/II+I5.II.A2D%0A*I15A2=I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1189:764\t83\tchr3\t50738340\t60\t36M\t=\t50737960\t-416\tCACTAGCTGGCAAAAAAATAGGAACCTCAGTCATAC\tII7>IIGIII<IIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1189:764\t163\tchr3\t50737960\t60\t36M\t=\t50738340\t416\tAATAGCTACTGTGTCAGATACTAATTCTGTTCAATT\tIIIIIIIIIIIIIII:III7HD58IICC9AI?+2IF\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:984:1321\t83\tchr22\t20811874\t60\t36M\t=\t20811543\t-367\tAAGCGCAGCAATTCCACTGTCTGCCTCAGAAGACAC\t(I5I='IIIIIIHIIII@IIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:0C35\n+HWI-EAS91_1_30788AAXX:1:2:984:1321\t163\tchr22\t20811543\t60\t36M\t=\t20811874\t367\tGCCTTCTTCTGTTCCCCCTCCCTTCCCTGAATCGGG\tIIIIIIIIIIIIIIIIIIIIIIIIIIII/A2>A5(0\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:959:227\t99\tchr2\t101947377\t60\t36M\t=\t101947673\t332\tGCACAGATGTCAGCTCAGCGCAAACCTTCCTCAGCA\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:959:227\t147\tchr2\t101947673\t60\t36M\t=\t101947377\t-332\tCCCGTTCCCGACTTGAGCCCCTTTGTTACCGTAATC\tII>I@GIIIIHIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i"..b"49\t83\tchr22\t45999765\t60\t36M\t=\t45999385\t-416\tCAATAAGGGGTCGGCTATATCAAATGTGGTATGTTC\t+IIDIIIIIICFIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:806:1149\t163\tchr22\t45999385\t60\t36M\t=\t45999765\t416\tGACCAAGGAAGTAGTCATTGTGCATGATGCTCTGGG\tIIIIIIII?HIIIIII?IIFIAI.I<:IG9>I?,.<\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1452:1353\t99\tchr10\t58807606\t60\t36M\t=\t58807990\t420\tGAATTTAAAGTTCAGTATCCAGTTCATAAAAGATTT\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1452:1353\t147\tchr10\t58807990\t60\t36M\t=\t58807606\t-420\tCTCAGACCTATCTAAGCTGAAATGACAGGAAAGAAA\t7?6III5E+III<IIDD7IIII3IIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:740:1110\t99\tchr26\t28484134\t60\t36M\t=\t28484454\t356\tGAAATGACTGTATTAAGTATTTAAGAACAACTTCGT\tIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIFIII'I\tXT:A:U\tNM:i:1\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:1\tXO:i:0\tXG:i:0\tMD:Z:8A27\n+HWI-EAS91_1_30788AAXX:1:2:740:1110\t147\tchr26\t28484454\t60\t36M\t=\t28484134\t-356\tCTGCGTTTTCCCTGAAGTGGCAGTTTGTGGAGAAAC\t76I;I,I=2IHI2IIIIIIIIII=IIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1688:233\t83\tchr28\t14171283\t60\t36M\t=\t14170902\t-417\tCAAAAATAAAAAACCTAGAAATCAGAGGTACTTTTC\t3IIIIIIIIIIIIIIIIIIIIGIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1688:233\t163\tchr28\t14170902\t60\t36M\t=\t14171283\t417\tAACCTGTGGACCCAGGCTGCTGAAGTGGAGCATGCC\tIIIIIIIIIIIIIIIIIIIIII6IIGII7IIIII1I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1167:1000\t99\tchr2\t99368079\t60\t36M\t=\t99368455\t412\tGTTCCTCCAGAGAAACAGATTCAGTAGGGGAAAAGA\tIIIIIIIIIIGIIIHIII;IIIII9IIIIII>III4\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1167:1000\t147\tchr2\t99368455\t60\t36M\t=\t99368079\t-412\tTTTCCCATAAAAATTACCATCACATTGGCATACACA\tAIC*H%I=IIIIICIIIIIII9IIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1461:1145\t83\tchrX\t69768894\t60\t36M\t=\t69768541\t-389\tAAATAAATAACACCTTGATGTTAAGATATTAGATGC\tIIIIIII<IIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1461:1145\t163\tchrX\t69768541\t60\t36M\t=\t69768894\t389\tTAAAGGCAATTTGATTGGACAATATTGGCAATGCCT\tIIIIIIIIIIIIIIIII0IE?2IIHFIIII*IB@8+\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1702:751\t83\tchr3\t29339305\t60\t36M\t=\t29338902\t-439\tTGCTCTTCTCCCACCCCTGGCTCCCTGGGGAGCTCC\tAHIEIIDIIIIIDIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1702:751\t163\tchr3\t29338902\t60\t36M\t=\t29339305\t439\tCAGCAGTTTGCAGCTGGCGCTGCCCGGCGCCGCCTA\tIIIIIIIIIIIIIIIIIIIIHIIII.DI,III>D8/\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:690:1215\t99\tchr4\t46913196\t60\t36M\t=\t46913525\t365\tGAAGTTTATTCACATGTGACAAATGAGATCAAAGTG\tIIIIIIIIIIIIIII7I3III8AII4EIIII>5&@-\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:690:1215\t147\tchr4\t46913525\t60\t36M\t=\t46913196\t-365\tCACAGATGAGCATATTCCTAAAAAGAAGGACAATGA\t*@;III+III.IIIII'E2IIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1719:746\t83\tchr20\t18695923\t60\t36M\t=\t18695597\t-362\tCAAAACAAACATCCCAGGTATCTTAACTGACCATCC\t1IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n+HWI-EAS91_1_30788AAXX:1:2:1719:746\t163\tchr20\t18695597\t60\t36M\t=\t18695923\t362\tTGCTTTTAAGAAGGAAAACTATGGTGCCAATAGTCT\tIIIIIIIIIIIIIIIII9IIIIII(I@I6-III(8I\tXT:A:U\tNM:i:0\tSM:i:37\tAM:i:37\tX0:i:1\tX1:i:0\tXM:i:0\tXO:i:0\tXG:i:0\tMD:Z:36\n"