changeset 0:e7fa06931998 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tool_collections/samtools/samtools_collate commit 096bd5549dc8cafde08e9d9b7f7bd90f2e870e5c
author iuc
date Tue, 17 Feb 2026 11:26:53 +0000
parents
children
files macros.xml samtools_collate.xml test-data/fast_collate.sam test-data/input.bam test-data/test01.bam test-data/test02.bam test-data/test03.bam test-data/test04.bam
diffstat 8 files changed, 354 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Tue Feb 17 11:26:53 2026 +0000
@@ -0,0 +1,246 @@
+<macros>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@TOOL_VERSION@">samtools</requirement>
+            <yield/>
+        </requirements>
+    </xml>
+    <!-- NOTE: for some tools only the version of the requirement but not the
+        tool's version is controlled by the TOOL_VERSION token 
+        (because their version is ahead of the requirement version .. 
+         please only bump the minor version in order to let the requirement
+         version catch up eventually). To find the tools check:
+        `grep "<tool" . -r | grep -v VERSION_SUFFIX | cut -d":" -f 1` -->
+    <token name="@TOOL_VERSION@">1.22</token>
+    <token name="@VERSION_SUFFIX@">1</token>
+    <token name="@PROFILE@">24.0</token>
+    <token name="@FLAGS@"><![CDATA[
+        #set $flags = 0
+        #if $filter
+            #set $flags = sum(map(int, str($filter).split(',')))
+        #end if
+    ]]></token>
+    <token name="@PREPARE_IDX@"><![CDATA[
+        ##prepare input and indices
+        ln -s '$input' infile &&
+        #if $input.is_of_type('bam'):
+            #if str( $input.metadata.bam_index ) != "None":
+                ln -s '${input.metadata.bam_index}' infile.bai &&
+            #else:
+                samtools index infile infile.bai &&
+            #end if
+        #elif $input.is_of_type('cram'):
+            #if str( $input.metadata.cram_index ) != "None":
+                ln -s '${input.metadata.cram_index}' infile.crai &&
+            #else:
+                samtools index infile infile.crai &&
+            #end if
+        #end if
+    ]]></token>
+    <token name="@PREPARE_IDX_MULTIPLE@"><![CDATA[
+        ##prepare input and indices
+        #for $i, $bam in enumerate( $input_bams ):
+            ln -s '$bam' '${i}' &&
+            #if $bam.is_of_type('bam'):
+                #if str( $bam.metadata.bam_index ) != "None":
+                    ln -s '${bam.metadata.bam_index}' '${i}.bai' &&
+                #else:
+                    samtools index '${i}' '${i}.bai' &&
+                #end if
+            #elif $bam.is_of_type('cram'):
+                #if str( $bam.metadata.cram_index ) != "None":
+                    ln -s '${bam.metadata.cram_index}' '${i}.crai' &&
+                #else:
+                    samtools index '${i}' '${i}.crai' &&
+                #end if
+            #end if
+        #end for
+    ]]></token>
+    <token name="@PREPARE_FASTA_IDX@"><![CDATA[
+        ## Make the user-selected reference genome, if any, accessible through
+        ## a shell variable $reffa, index the reference if necessary, and make
+        ## the fai-index file available through a shell variable $reffai.
+
+        ## For a cached genome simply sets the shell variables to point to the
+        ## genome file and its precalculated index.
+        ## For a genome from the user's history, if that genome is a plain
+        ## fasta file, the code creates a symlink in the pwd, creates the fai
+        ## index file next to it, then sets the shell variables to point to the
+        ## symlink and its index.
+        ## For a fasta.gz dataset from the user's history, it tries the same,
+        ## but this will only succeed if the file got compressed with bgzip.
+        ## For a regular gzipped file samtools faidx will fail, in which case
+        ## the code falls back to decompressing to plain fasta before
+        ## reattempting the indexing.
+        ## Indexing of a bgzipped file produces a regular fai index file *and*
+        ## a compressed gzi file. The former is identical to the fai index of
+        ## the uncompressed fasta.
+
+        ## If the user has not selected a reference (it's an optional parameter
+        ## in some samtools wrappers), a cheetah boolean use_ref is set to
+        ## False to encode that fact.
+
+        #set use_ref=True
+        #if $addref_cond.addref_select == "history":
+            #if $addref_cond.ref.is_of_type('fasta'):
+                reffa="reference.fa" &&
+                ln -s '${addref_cond.ref}' \$reffa &&
+                samtools faidx \$reffa &&
+            #else:
+                reffa="reference.fa.gz" &&
+                ln -s '${addref_cond.ref}' \$reffa &&
+                {
+                    samtools faidx \$reffa ||
+                    {
+                        echo "Failed to index compressed reference. Trying decompressed ..." 1>&2 &&
+                        gzip -dc \$reffa > reference.fa &&
+                        reffa="reference.fa" &&
+                        samtools faidx \$reffa;
+                    }
+                } &&
+            #end if
+            reffai=\$reffa.fai &&
+        #elif $addref_cond.addref_select == "cached":
+            ## in case of cached the absolute path is used which allows to read 
+            ## a cram file  without specifying the reference
+            reffa='${addref_cond.ref.fields.path}' &&
+            reffai=\$reffa.fai &&
+        #else
+            #set use_ref=False
+        #end if
+    ]]></token>
+
+    <xml name="optional_reference" token_help="" token_argument="">
+        <conditional name="addref_cond">
+            <param name="addref_select" type="select" label="Use a reference sequence">
+                <help>@HELP@</help>
+                <option value="no">No</option>
+                <option value="history">Use a genome/index from the history</option>
+                <option value="cached">Use a built-in genome</option>
+            </param>
+            <when value="no"/>
+            <when value="history">
+                <param name="ref" argument="@ARGUMENT@" type="data" format="fasta,fasta.gz" label="Reference"/>
+            </when>
+            <when value="cached">
+                <param name="ref" argument="@ARGUMENT@" type="select" label="Reference">
+                    <options from_data_table="fasta_indexes">
+                        <filter type="data_meta" ref="input" key="dbkey" column="dbkey"/>
+                    </options>
+                    <validator  type="no_options" message="No reference genome is available for the build associated with the selected input dataset"/>
+                </param>
+            </when>
+        </conditional>
+    </xml>
+    <xml name="mandatory_reference" token_help="" token_argument="">
+        <conditional name="addref_cond">
+            <param name="addref_select" type="select" label="Use a reference sequence">
+                <help>@HELP@</help>
+                <option value="history">Use a genome/index from the history</option>
+                <option value="cached">Use a built-in genome</option>
+            </param>
+            <when value="history">
+                <param name="ref" argument="@ARGUMENT@" type="data" format="fasta,fasta.gz" label="Reference"/>
+            </when>
+            <when value="cached">
+                <param name="ref" argument="@ARGUMENT@" type="select" label="Reference">
+                    <options from_data_table="fasta_indexes">
+                        <filter type="data_meta" ref="input" key="dbkey" column="dbkey"/>
+                        <validator message="No reference genome is available for the build associated with the selected input dataset" type="no_options" />
+                    </options>
+                </param>
+            </when>
+        </conditional>
+    </xml>
+
+
+    <token name="@ADDTHREADS@"><![CDATA[
+        ##compute the number of ADDITIONAL threads to be used by samtools (-@)
+        addthreads=\${GALAXY_SLOTS:-1} && (( addthreads-- )) &&
+    ]]></token>
+    <token name="@ADDMEMORY@"><![CDATA[
+        ##compute the number of memory available to samtools sort (-m)
+        ##use only 75% of available: https://github.com/samtools/samtools/issues/831
+        addmemory=\${GALAXY_MEMORY_MB_PER_SLOT:-768} &&
+        ((addmemory=addmemory*75/100)) &&
+    ]]></token>
+    <xml name="seed_input">
+       <param name="seed" type="integer" optional="True" label="Seed for random number generator" help="If empty a random seed is used." />
+    </xml>
+
+    <!-- Include/exclude by flags + flag options -->
+    <xml name="inclusive_filter_macro" token_argument="">
+        <param name="inclusive_filter" argument="@ARGUMENT@" type="select" multiple="True" label="Require that these flags are set">
+            <expand macro="flag_options" />
+        </param>
+    </xml>
+    <xml name="exclusive_filter_macro" token_argument="">
+        <param name="exclusive_filter" argument="@ARGUMENT@" type="select" multiple="True" label="Exclude reads with any of the following flags set">
+            <expand macro="flag_options" />
+        </param>
+    </xml>
+    <xml name="flag_options" token_s1="false" token_s2="false" token_s4="false" token_s8="false" token_s16="false" token_s32="false" token_s64="false" token_s128="false" token_s256="false" token_s512="false" token_s1024="false" token_s2048="false">
+        <option value="1" selected="@S1@">Read is paired</option>
+        <option value="2" selected="@S2@">Read is mapped in a proper pair</option>
+        <option value="4" selected="@S4@">Read is unmapped</option>
+        <option value="8" selected="@S8@">Mate is unmapped</option>
+        <option value="16" selected="@S16@">Read is mapped to the reverse strand of the reference</option>
+        <option value="32" selected="@S32@">Mate is mapped to the reverse strand of the reference</option>
+        <option value="64" selected="@S64@">Read is the first in a pair</option>
+        <option value="128" selected="@S128@">Read is the second in a pair</option>
+        <option value="256" selected="@S256@">Alignment of the read is not primary</option>
+        <option value="512" selected="@S512@">Read fails platform/vendor quality checks</option>
+        <option value="1024" selected="@S1024@">Read is a PCR or optical duplicate</option>
+        <option value="2048" selected="@S2048@">Alignment is supplementary</option>
+    </xml>
+
+    <!-- region specification macros and tokens for tools that allow the specification
+         of region by bed file / space separated list of regions -->
+    <token name="@REGIONS_FILE@"><![CDATA[
+        #if $cond_region.select_region == 'tab':
+            -t '$cond_region.targetregions'
+        #end if
+    ]]></token>
+    <token name="@REGIONS_MANUAL@"><![CDATA[
+        #if $cond_region.select_region == 'text':
+            #for $i, $x in enumerate($cond_region.regions_repeat):
+               '${x.region}'
+            #end for
+        #end if
+    ]]></token>
+    <xml name="regions_macro">
+        <conditional name="cond_region">
+            <param name="select_region" type="select" label="Filter by regions" help="restricts output to only those alignments which overlap the specified region(s)">
+                <option value="no" selected="True">No</option>
+                <option value="text">Manualy specify regions</option>
+                <option value="tab">Regions from tabular file</option>
+            </param>
+            <when value="no"/>
+            <when value="text">
+                <repeat name="regions_repeat" min="1" default="1" title="Regions">
+                    <param name="region" type="text" label="region" help="format chr:from-to">
+                        <validator type="regex" message="Required format: CHR[:FROM[-TO]]; where CHR: string containing any character except quotes, whitespace and colon; FROM and TO: any integer">^[^\s'\":]+(:\d+(-\d+){0,1}){0,1}$</validator>
+                    </param>
+                </repeat>
+            </when>
+            <when value="tab">
+                <param name="targetregions" argument="-t/--target-regions" type="data" format="tabular" label="Target regions file" help="Do stats in these regions only. Tab-delimited file chr,from,to (1-based, inclusive)" />
+            </when>
+        </conditional>
+    </xml>
+
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1093/gigascience/giab008</citation>
+            <citation type="doi">10.1093/bioinformatics/btr076</citation>
+        </citations>
+    </xml>
+    <xml name="version_command">
+        <version_command><![CDATA[samtools 2>&1 | grep Version]]></version_command>
+    </xml>
+    <xml name="stdio">
+        <stdio>
+            <exit_code range="1:" level="fatal" description="Error" />
+        </stdio>
+    </xml>
+</macros>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/samtools_collate.xml	Tue Feb 17 11:26:53 2026 +0000
@@ -0,0 +1,81 @@
+<tool id="samtools_collate" name="Samtools collate" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
+    <description>shuffle and group reads together by their names</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements"/>
+    <expand macro="stdio"/>
+    <expand macro="version_command"/>
+    <command detect_errors="exit_code"><![CDATA[
+        @ADDTHREADS@
+        samtools collate
+        $no_pg
+        $fast_mode
+        '$input'
+        --output-fmt BAM
+        -o '$output_file'
+    ]]></command>
+    <inputs>
+        <param name="input" type="data" format="sam,bam" label="Input File"/>
+        <param argument="--no-pg" type="boolean" label="Add @PG in Header" checked="true" truevalue="" falsevalue="--no-PG" help="Add a @PG line to the header of the output file. "/>
+        <param name="fast_mode" argument="-f" type="boolean" label="Fast Mode" truevalue="-f" falsevalue="" checked="false" help="Fast mode will output only primary alignments that have either the READ1 or READ2 flags set (but not both). Any other alignment records will be filtered out. The collation will only work correctly if there are no more than two reads for any given QNAME after filtering. "/>
+    </inputs>
+    <outputs>
+        <data name="output_file" format="unsorted.bam"/>
+    </outputs>
+    <tests>
+        <!-- Test 01: Default Test -->
+        <test expect_num_outputs="1">
+            <param name="input" value="fast_collate.sam" ftype="sam"/>
+            <output name="output_file" file="test01.bam" ftype="unsorted.bam" lines_diff="4"/>
+        </test>
+        <!-- Test 02: Testing NO PG -->
+        <test expect_num_outputs="1">
+            <param name="input" value="fast_collate.sam" ftype="sam"/>
+            <param name="no_pg" value="true"/>
+            <output name="output_file" file="test02.bam" ftype="unsorted.bam" lines_diff="4"/>
+        </test>
+        <!-- Test 03: Testing Fast mode-->
+        <test expect_num_outputs="1">
+            <param name="input" value="fast_collate.sam" ftype="sam"/>
+            <param name="no_pg" value="false"/>
+            <param name="fast_mode" value="true"/>
+            <output name="output_file" file="test03.bam" ftype="unsorted.bam" lines_diff="4"/>
+        </test>
+        <!-- Test 04: BAM file as input -->
+        <test expect_num_outputs="1">
+            <param name="input" value="input.bam" ftype="bam"/>
+            <param name="no_pg" value="false"/>
+            <param name="fast_mode" value="true"/>
+            <output name="output_file" file="test04.bam" ftype="unsorted.bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+**What it does**
+  
+Samtools collate shuffles and groups reads in a BAM file together by their read names (QNAME). 
+This is useful as a preprocessing step for tools that need reads from the same template (pairs or 
+multiple segments) to be grouped together.
+
+Note: The tools makes no guarantees about the order of read names between groups.
+
+**Fast Mode** : Only processes primary alignments, which speeds up collation but may lose secondary/supplementary alignments
+
+**Note**: Unlike 'samtools sort -n', collate does not produce a fully sorted output. Reads with the same 
+name are grouped but groups appear in pseudo-random order. This is sufficient for tools that 
+need paired reads together but is faster than full name sorting.
+
+.. class:: infomark
+
+**More information**
+
+For more details, see the samtools documentation at http://www.htslib.org/doc/samtools-collate.html
+
+    ]]></help>
+    <expand macro="citations"/>
+    <creator>
+        <organization name="Galaxy Europe"/>
+        <person givenName="Ahmad" familyName="Mahagna" url="https://github.com/Smkingsize"/>
+        <person givenName="Saim" familyName="Momin" url="https://github.com/SaimMomin12"/>
+    </creator>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fast_collate.sam	Tue Feb 17 11:26:53 2026 +0000
@@ -0,0 +1,27 @@
+@HD	VN:1.4	SO:coordinate
+@SQ	SN:contig_000000000	LN:11391
+@SQ	SN:contig_000000008	LN:29043
+entry1	163	contig_000000000	109	60	250M	=	137	278	GATTGATATTTATTTATTATTTTATTATGTTTATTTCTTTATTTATTATCATTATTATTATTATTCTTATTATTGTTATATAAAAACATCGTAAACACAGTAAACGATAGTACTAATACTACTACTAATAAAGATAGATTTTTTTATATATATATATGTATGATCTTTTAACGTTACTTATTCAAATGCTATGTCATTTTGTAATATTTGTCATGGCAAGTATCAAACTGCTTCGGTTCTCATTGATTAG	1111>DD3DFFF3B333B3FBG3D3A33BG3D3F3333AFG3DF3D33B22D22222222D2B2A2ADE2AA2DAG222BD22D11//11//00B110ABB2FD1?>/>A2@2@2@F2@F21GB11FDDF21111111B2B11>/?1FB22>>>22>B2BG22B12B>F>11/0<0/2B2222B2@G11>22@22@G222201?1??1<?DF1FG1001<1>1F1=11>111>1-....000=0000=00	NM:i:18	AS:i:164	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:6744
+entry11	227	contig_000000000	109	60	250M	=	137	278	GATTGATATTTATTTATTATTTTATTATGTTTATTTCTTTATTTATTATCATTATTATTATTATTCTTATTATTGTTATATAAAAACATCGTAAACACAGTAAACGATAGTACTAATACTACTACTAATAAAGATAGATTTTTTTATATATATATATGTATGATCTTTTAACGTTACTTATTCAAATGCTATGTCATTTTGTAATATTTGTCATGGCAAGTATCAAACTGCTTCGGTTCTCATTGATTAG	1111>DD3DFFF3B333B3FBG3D3A33BG3D3F3333AFG3DF3D33B22D22222222D2B2A2ADE2AA2DAG222BD22D11//11//00B110ABB2FD1?>/>A2@2@2@F2@F21GB11FDDF21111111B2B11>/?1FB22>>>22>B2BG22B12B>F>11/0<0/2B2222B2@G11>22@22@G222201?1??1<?DF1FG1001<1>1F1=11>111>1-....000=0000=00	NM:i:18	AS:i:164	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:6744
+entry2	163	contig_000000000	109	60	250M	=	137	278	TATTGATATTTATTTATTATTTTATTATGTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATACAAACATAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCATGTATCAAACTGCCTGGGTTATCATTGATTAG	BBBBB5F5DFFFGGGFGGGGGGHHHHHHHHHGHHGHHHHHHHHHHHHGGHHHHHHHEHHGHHGHHFHHHHHGHHHHHFHHHD5A33FBGBFHGGGFGGEGGGBGGAEGAEHH5GD5FEGFD5GGFGHFHE4GHGGHHHHHHHDEEA?FGHHGHGHFBEFFHEGHH4GGHHCFFFHHFHHHHHHBFHG1FFBFF01BGHHHFCFF@1GHHBGGFHFF1?1?FBGGF11FD110FG.<FFGGH1FGH0DG00	NM:i:2	AS:i:240	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9279
+entry3	99	contig_000000000	116	60	250M	=	222	356	ATTTATTTATTATTTTATTATGTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATAAAAACATAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAG	BBBBBFFFFFFFGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGHHHHHHHHHHHHHHHHHHGGHGGHGHHHHHGHHHHHHHHHFHHHGHHGHHHHGHHHGGHHHHHHHHHHHHHGHHHHHGHHHHIHHHIIHHHHHHHGHGHHHGHHHHGHHHGHHGHHHHGHHHHHHGHBFFHHHHHHHGHHHGHEHHHFFGGHHHHHHHEHHHFH=GHHHF	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9509
+entry4	163	contig_000000000	116	60	250M	=	222	356	ATTTATTTATTATTTTATTATGTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATAAAAACATAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAG	BCCCCFFFFFFFGGGGGGGGGGEHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHGHHGHHHHHEEF5FEGFGFHHGHHFHHHHFHFDEGHAEGHHHFHHFHFFHHGBGGHHFHHFHFHHHGGHGHFGEFHDGGHGHHHHGDHHFFHHGHHHDFDHGHHHHHGHGBHGHHFBDHGGF2FDHHHBGD2@DHHFEHHFFHEC2<FD1GF<DDGHHB0GHAAFFCGGDHHG1FGF0DDGGFH0	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9604
+entry1	83	contig_000000000	137	60	250M	=	109	-278	TTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATAAGAACCTAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATTTATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCACACTGCCTGGGTTATCATTGATTCGGTACTAGAGATAGTGTTTAAATAATACG	;0C0G;0C0:0FFGDD00D==00000D=00D1D=1DDDF>11=<<1><111<?1<111?1D1??00<>@@11F//0A>2HG>B>2B22222B2FFB2BB22>>2B22BFBEEFGHHG2FGBB22FFB2DB1100F/1FG@G1BHHFGGAGB1DB@22EB00GCEADB1AFHHHGD21BEDF1AF1FA11DAA221BD1AA/EF00FF1FF2EDEBGEA0B03AD3D33AB1A1GEFGEFB3DB31>>11>	NM:i:7	AS:i:222	XS:i:19	MQ:i:60	MC:Z:250M	ms:i:5687
+entry11	211	contig_000000000	137	60	250M	=	109	-278	TTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATAAGAACCTAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATTTATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCACACTGCCTGGGTTATCATTGATTCGGTACTAGAGATAGTGTTTAAATAATACG	;0C0G;0C0:0FFGDD00D==00000D=00D1D=1DDDF>11=<<1><111<?1<111?1D1??00<>@@11F//0A>2HG>B>2B22222B2FFB2BB22>>2B22BFBEEFGHHG2FGBB22FFB2DB1100F/1FG@G1BHHFGGAGB1DB@22EB00GCEADB1AFHHHGD21BEDF1AF1FA11DAA221BD1AA/EF00FF1FF2EDEBGEA0B03AD3D33AB1A1GEFGEFB3DB31>>11>	NM:i:7	AS:i:222	XS:i:19	MQ:i:60	MC:Z:250M	ms:i:5687
+entry2	83	contig_000000000	137	60	250M	=	109	-278	GTTTATTTATTTATTTATTATCATTATTATTATTATTATTATTATTGTTATATAAAAACATAGTAAACACAGTAAACGATAGTAGTAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAGAGATAGTGTTTAAATAATAAG	0GHHHBD0DFGHHHG<D0FD0BD0FHHHG=GGBGG1DGDGHFFGFDHDHGFGAGGHHHGHHHHHHHGGFHHHEGHHGHHGHHGHHHHDBHHHHHHGFGHHHHFHHHFHFG@EBGG4BHGGHHHHHHHHGHHHHHHGHFGBHHHHHHHHHHFHFFHHHHEHFHHHHHHGAFHHHFGHHG2HFHHHGHHHHHHHGHEHHHHGEHGHGHHHHGHHHHHHHHHHHHHGFGHFGFGGGGGGGGFFFFFDFBBBBB	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:8804
+entry3	147	contig_000000000	222	60	250M	=	116	-356	TAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAGAGATAGTGTTTAAATAATAAGTGCCCATCAAAGAGCAGAACAGCTGCGTGTTTGCGTGTGTGTGTGTGTGAGTTTGAAAGCAATAGACAGAGGGTAAGACTGTGTA	9BGC0FFBGFFGGGGFFGFEGGHGHGCGHHHHGHGGHGHHHGHHHHGHHGGGHHHHFHGHGHHHHHHGHHFHHHHHHHHHGHHHHGHHGHHHHG2HHGFHHGHHHHHHDFHHHGGHHGHGHHHFHHDHHHHHHHHHHHHFHHHHHGHHHHHHHHHHHHFFHHHHGHHHHHHFHHHHHHHHHHHHHHGCGGGHHHGGGGGGGGGGGGGGGHHHHHGHHHHHHHHHHHHHGGGGGGGGGGFFFFFFFBBBBB	NM:i:1	AS:i:245	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9634
+entry4	83	contig_000000000	222	60	250M	=	116	-356	TAATACTACTACTAATAAATATATATTTTTTTATATATATATATGTATGTTCTTTTAATGTTAATTTTTCAAATGCTTTGGCATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAGAGATAGTGTTTAAATAATAAGTGTCCATCAAAGAGCAGAACAGCTGCGTGTTTGCGTGTGTGTGTGTGTGAGTTTGAAAGCAATAGACAGAGGGTAAGACTGTGTA	GGGGGGGGGGGGGGGGGFFGHHHHHGGHHGHHHHGFHHHHGHHHHHHHHHGGHHFEHHHHHHHHHGGHHHHHHHHHHHFHHGFHGHHHGFFHFHHHHHHHHHFHHEHHHHHHHGGHHGHGHHHHHHHHHFGGHHHHHHGFHFHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHGHHHHHHHHHHHGGGGGHHHGGGGGGGGGGGGGGGHHHHHHHGHHHHHGHHHHHGGGGGGGGGGFFFFFFFACCBB	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9217
+entry5	163	contig_000000000	304	60	250M	=	422	368	ATTTTGTAACATTTGTCATGCCAAGTATCAAACTGCCTGGGTTATCATTGATTAGGTACTAGAGATAGTGTTTAAATAATAAGTGTCCATCAAAGAGCAGAACAGCTGCGTGTTTGCGTGTGTGTGTGTGTGAGTTTGAAAGCAATAGACAGAGGGTAAGACTGTGTAATAGAGTGTAAGAGAGTGTCAGAGTGAGTGTGTAAATGGACGCCTATCATTTAGCATGGGTCAATCTAGTGAAAGCTCGCAG	AABBBFFFFFFFGGGFGGGGGGHHHHHHHHHGHHHHHHHGGHGHHHHHHHHHHGHHHHHHHHFHFGHHHHHHHHHGHGGHFHHHHHHHHHHGFFHHHHHEHHHGHHHHHGDEEGHGHGEGGHHHHHHHHHGHHHFGHHHHHHHFGHHHHHGG?GGGAGHHFFHHFFGG2>@FGGFGFBGGHFHGHHHHHFFF?FGHHGGGGFGEGGHHGGGGHGFGDGHGHHFHEGFHGFGFFHFFHHFHGHFHBFGGF?	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9562
+entry6	69	contig_000000000	304	0	*	=	304	0	GCGGTGGAACGCCGCTTCGGCAACGATCTTCCGTCGTCTCCAGTGGAGTGGCTGACGGATAATGGTTCATGCTACCGGGCTAATGAAACACGCCAGTTCGCCCGGATGTTGGGACTTGAACCGAAGAACACGGCGGTGCGGAGTCCGGAGAGTAACGGAATAGCAGAGAGCTTCGTGAAAACGATAAAGCGTGACTACATCAGTATCATGCCCAAACCAGACGGGTTAACGGCAGCAAAGAACCTTGCAG	BCCCBCBCFFDDGGGGGGGGGGGHGGHHHHHHGHHGGGHHHHHHHHHHHHGGHGGHGGGGGHHHHHHHHHHHHHHHGGGGGHHHHHHHHHHGGGGGHHHGGGGGGDGGHHHHGHHGHHHGHHGGGGGGGHHGGGGGGGGGGAGGGGGGDGAGFGGGGFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEFFFFFFFFFEFFFFFFEFFFFFF	AS:i:0	XS:i:0	MQ:i:49	MC:Z:35M215S	ms:i:9339
+entry6	137	contig_000000000	304	49	35M215S	=	304	0	ATTTTGTAACATTTGTCATGCCAAGTATCAAACTGGATTTGCCCCTATATTTCCAGACATCTGTTATCACTTAACCCATTACAAGCCCGCTGCCGCAGATATTCCCGTGGCGAGCGATAACCCAGCGCACTATGCGGATGCCATTCGTTATAATGCTCGAACGCCTCTGCAAGGTTCTTTGCTGCCGTTAACCCGTCTGGTTTGGGCATGATACTGATGTAGTCACGCTTTATCGTTTTCACGAAGCTCT	ABBBBFFFFFFFGGGGGGGGGGHHHHHHHHGHGHHHHHHHGHHHGHGHHHHHHFGHHGHHHIHHHHHIHHHHHHHHHGHHHHHHHHGHGGGGGHGGGGGHHHHHHHGG1EGGGGGGFHGGHHHGHGGGGGGHHHHGGCGFHHGHHHHFHEHHHHHHHGGGHHGGGHGEGHGFHGCGCFHHHHHHHGGGGD?FFGA9EFFGCGG?AGGFGGGGGGFFFFFFFFFFFFFFFFFBFFEF?FEBBFED.ACFF0	NM:i:0	AS:i:35	XS:i:0	MC:Z:*	ms:i:9398
+entry5	83	contig_000000000	422	60	250M	=	304	-368	TGTGTGTGTGTGTGAGTTTGAAAGCAATAGACAGAGGGTAAGACTGTGTAATAGAGTGTAAGAGAGTGTCAGAGTGAGTGTGTAAATGGACGCCTATCATTTAGCATGGGTCAATCTAGTGAAAGCTCGCAGCAGCTCTCTAAGTGTCTGGCATTGCAGCAAATTGAGCCGAATGCATTTCTGCACACGTAAACACGGCAGAATACAGATTAGCCAAGCCCAATCTCTCATTAAATCCACATTTAATAGA	.DDFGEAGGGFGFHGHHFFHHHHHHHHHHGCHHHHHHFFHHHHHHHHHHHHHHHHHHGHHFHHHHHHGHHHHHHHHHGHHHHHHHHGGGGGHGHHHFHHHHFHHHHHHHHHGHHHHHHHHHHHEEEEGHHHHHHHGHHHHHHHHHGHGHHHHHHHHHHHHHHHHHGGGHHHHHHHHHHHHHHHHHHHGHFHHHGGGHHHHHHHHHHHHHHGHHGGHHHHHHFHEFCHHGGGGGGGGGGFFFFFFFCCCCC	NM:i:0	AS:i:250	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:9461
+entry7	121	contig_000000000	3891	60	250M	=	3891	0	ACACCACCAGCACCAGCCTAAACCGTTGATACAAGGCAGGATGGATCCGTGCTTTCATGTTGTTGATGCTAAATTCTGACTCACATCTGAATATTCCAGCAGAAATCGAGACTCATCAGAGCAGGCAACGTTTTTACAATCTTTTATTGTCCAATTTTGGTGAGCCTGTGTGAATTGTAGTCTCAGTTTCCTGTTCTTAGCTGACAGGAGTGGCACCCGGTGTGGTCTTCTGCTGCTGTAGCCCATCCGC	99;GFC/0FC;/AFGFC0BDA.?BGFFC0FB9G0C/HHGBFHG:.GFCGEHGHGHFHHHEFHHGBGDF1EHF1GFGGFDFHFHHHFHHG1BG1HHGHHEHGBC>2<2HHHHFHHFHHHHFEGD2EFHHGEF4EHHFFG?/GGF3GFFCE3HGHFHGAHFGF1AGHHGGHHGD5HGF3HF3HHFHHHGHG1FEHHHFHHHEHHGFHHHFHHHHFGGCECEEGHHHGHHHGGGGFGGFFGFFF4BBBBBABB	NM:i:0	AS:i:250	XS:i:0	MC:Z:*	ms:i:4569
+entry7	181	contig_000000000	3891	0	*	=	3891	0	CAGTCACTCGCCTCCCGCTAACAGTCCAACTCTTCTGGTTCATCTGCGAGTCATGGTGTACCGATGTTTTGTTCTCTAGAAAGCGAAAACATTGATATGGCTGAGGGGGGCTAGCAATTTTGGCCTGATAATGGGTGTGAAATATTCAAACTGTTATGATGCTAGCCCAAATAAAACTGTTGGGACTATCTCGGGAAGAAAAATCATGATCAGAGAAGCTAGGAAAGTGTCCTTGGTATGGTAAGCACTG	////-------;----0090;.9/0/000A//::.;.0000::.?@<=0/0=0./00..<..11>00>>0111<?111<////<20GF@212222<1F011B?//<E0FGFB211B1?0/??01BB22210?>?1@222B22@211122B11E@22112110000/B222A222ADB//0FB2DDBA///A/01D11011ADD211D1211BA11A311331D1A10B1FAFB1A1B3111@33111>11	AS:i:0	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:8580
+entry8	121	contig_000000000	3891	60	250M	=	3891	0	ACACCACCAGCACCAGCCTAAACCGTTGATACAAGGCAGGATGGATCCGTGCTTTCATGTTGTTGATGCTAAATTCTGACTCACATCTGAATATTCCAGCAGAAATCGAGACTCATCAGAGCAGGCAACGTTTTTACAATCTTTTATTGTCCAATTTTGGTGAGCCTGTGTGAATTGTAGTCTCAGTTTCCTGTTCTTAGCTGACAGGAGTGGCACCCGGTGTGGTCTTCTGCTGCTGTAGCCCATCCGC	99;.9//FFF9/GFB9FBGBC.A.FCFGFGFBHHGB:0GHFCG-AA@CHGC0FFGGC.HC>><BGFFHHGGHEHFHHFGFFGHHGF1?11<1HHG<CFGBFGEHFGFGDHHG2FGEHFHCGGDGGHGFGGFDFHHFHHGGFHGEEHFBGEHHHGGEFHHHHGAGHFE1BFHHHGHGGGFHFHFDDFFCAEFFGEFHHHHHHFHGGBFHFHFFEEA?CEEAHHHHHCGF0CFFGFFF1FFF1AA@DAAA@A	NM:i:0	AS:i:250	XS:i:0	MC:Z:*	ms:i:3281
+entry8	181	contig_000000000	3891	0	*	=	3891	0	GACGGCGCCTGGAGCGCGTAGGCAAAGCATGATCATCTGAGCACGGCGAACGAGAGTCAGACAAAGGGTTGATCGCCAGTAACGCTCGAGAAAGACACTCCCCCGCAACAACAATCAAACCAACAGTGCACTTTCATTTGCGAATCATGGAATAATGTTGGTTTGGGCTGTAGAAGGCCAAGATATATAAATTGCTGTAGAGGGTTGGGCATGTGGACCGTAAAATGGGTGGGAAGTATAAGAACTTTGT	9;-----/;;--------/;9//////////////////-9------;...C09000;00090/...90.;---./00....-..<.000=0<00..---////1</00211221/B?//122011211111B111//>//2221122222@11>///CE?>/>//1112211111012B22222AD22110011111B/0A///B01111111ABB0013ED10FE1B111333A3333@33D>>1111	AS:i:0	XS:i:0	MQ:i:60	MC:Z:250M	ms:i:8542
+entry9	163	contig_000000008	28855	12	54S189M7S	=	28855	189	CAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATGTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGTGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTACTTTGT	BCCBBFFCBCCFGGGGGGGGGGGHHHHHHHHGGGGGHHHHHHHHHHHHF5DGG5BGFDG5GFHFEHF5F553GHA1GEGHFEAFAF5FEGHFHFF1EGGHHHHHGCEFEEGFHFHFHFHHHH4444?44FE4B4?4D44D444433B20/??FH2?/?/32222D2FB//F>2FDHF00???/??CHGGGHFHBGHB<>1<<1DF1D0=<0FDGB0=000</<.G:CHB:.;;000;00CH0;0;0;00;	NM:i:3	AS:i:174	XS:i:159	SA:Z:contig_000000008,28949,+,95M155S,12,1;	MQ:i:30	MC:Z:34S189M27S	ms:i:8529
+entry10	99	contig_000000008	28855	15	54S189M7S	=	28855	189	CAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTACTTTGT	DDECDFFDCCCFGGGGGGGGGGHHHHHHHHHGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHGGGHHHHHHHHHHHEHGHHHHHGHGFFGGHHFHHHHHHHHHHGFEFDFHHHHHHHHHHHHGHFGFHHFEHDGGHCCFEHFHHFHHHHH/FFFHGHHHCCGGGGFHGHGHHHHHHEDDFDHFFHHHHFGHFGFDHDGEDFHHCEECFGHEEFAHFCGH1CF1E1FBFFGF	NM:i:1	AS:i:184	XS:i:164	SA:Z:contig_000000008,28949,+,95M155S,15,1;	MQ:i:32	MC:Z:34S189M27S	ms:i:8035
+entry9	83	contig_000000008	28855	30	34S189M27S	=	28855	-189	TACTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTACTTTGTTGGGTTGTTTATAACCTTTA	:0FGEEGGGGGGEEHHHHC:00C:CGGGC0GBFGD0<DHFEHHHD=00<<.1<0GFE.FCG1FDF11BHGFCAHFFBFCEGCF</HFDGDHDFFB22GDHFHHG4?3?B?4?4F4FFH?D4BF3/333HHGGEEGBHBHHFFHEHHEGF2HHFEGHGGGHHFHHHFDGBAHHFHHHHHFHFHHFGHHEHHHHGHG5HHGGGGGHGHGHHHHHHHHHHHHHHHGFHHHGGGGGGGGGGGFFFFFFFDDDDD	NM:i:1	AS:i:184	XS:i:145	MQ:i:12	MC:Z:54S189M7S	ms:i:7507
+entry10	147	contig_000000008	28855	32	34S189M27S	=	28855	-189	TGTTTTGTTGGGTTGTTTTTTACATTTATTTAGTTATTTATATTATATCTCAACCAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTTCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGTACTTTGTTGGGTTGTTTATAACCTTTA	<:.:.<.EEA..A:<-000<00000<:000DGFDH0H=0HD00H===.10.11<BCDHGGDGHF11GBFHEFEFGCFF//C/FA?AHEGFDG?B?BD3GG4FHHGDDG4BHDFHEDEF?F4?GB/3B3HGGHGHHHHHHHFHHHHHHFB3HFEGGHGCGHGHHGFGG5BHHHGHFFHHBFGHFHHF5FHHHHHHGDHG2G5FHHGHGHHHHHHHHHHHHHHHGGHHHGGGGGGGGGGGFFFFFFFCDDDC	NM:i:2	AS:i:179	XS:i:137	MQ:i:15	MC:Z:54S189M7S	ms:i:9375
+entry9	2211	contig_000000008	28949	12	95M155H	=	28855	95	CAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGT	BCCBBFFCBCCFGGGGGGGGGGGHHHHHHHHGGGGGHHHHHHHHHHHHF5DGG5BGFDG5GFHFEHF5F553GHA1GEGHFEAFAF5FEGHFHFF	NM:i:1	AS:i:90	XS:i:0	SA:Z:contig_000000008,28855,+,54S189M7S,12,3;
+entry10	2147	contig_000000008	28949	15	95M155H	=	28855	95	CAGTTGGGTTAAATATTTGGTGCTTTGTTGGGTTGTTTATAACCTTTATTTAGTTATTTATATTATAACTCAACCAGTTGGGTTAAATATTTGGT	DDECDFFDCCCFGGGGGGGGGGHHHHHHHHHGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHGGGHHHHHHHHHHH	NM:i:1	AS:i:90	XS:i:0	SA:Z:contig_000000008,28855,+,54S189M7S,15,1;
Binary file test-data/input.bam has changed
Binary file test-data/test01.bam has changed
Binary file test-data/test02.bam has changed
Binary file test-data/test03.bam has changed
Binary file test-data/test04.bam has changed