Mercurial > repos > jjohnson > bamtools_split
view bamtools-split.xml.save @ 0:8c17ddca0eee draft
Uploaded
author | jjohnson |
---|---|
date | Mon, 15 May 2017 16:27:18 -0400 |
parents | |
children |
line wrap: on
line source
<tool id="bamSplit" name="Split" version="2.4.1"> <description>BAM datasets on variety of attributes</description> <macros> <xml name="macro_output_type"> <param name="output_type" type="select" label="output as"> <option value="history_items">history items</option> <option value="dataset_collection">dataset_collection</option> </param> </xml> </macros> <requirements> <requirement type="package" version="2.4.0">bamtools</requirement> </requirements> <command> <![CDATA[ echo "BAM" > $report && #for $bam_count, $input_bam in enumerate( $input_bams ): ln -s "${input_bam}" "localbam_${bam_count}.bam" && ln -s "${input_bam.metadata.bam_index}" "localbam_${bam_count}.bam.bai" && #end for bamtools split #if str ( $analysis_type.analysis_type_selector ) == "-tag" : ${analysis_type.analysis_type_selector} "${analysis_type.tag_name}" #else ${analysis_type.analysis_type_selector} #end if -stub split_bam #for $bam_count, $input_bam in enumerate( $input_bams ): -in "localbam_${bam_count}.bam" #end for #if str ( $analysis_type.analysis_type_selector ) == "-reference" and $analysis_type.output_type == "dataset_collection": #import re #set $name = $re.sub('\W','_',$re.sub('\.bam$','',$input_bams[0].name)) #set $ref_list = ' '.join([$re.sub('^.*__sq__(.+)__sq__.*$','\\1',n) if n.find('__sq__') >= 0 else n for n in str($input_bam.metadata.reference_names).split(',')]) && (export I=0; for i in $ref_list; do I=\$((++I)); SN=`printf "split_bam.REF_%s.bam" "\$i"`; if [ -e \$SN ]; then FN=`printf "split_bam%05d%s.%s.bam" \$((I)) "$name" "\$i"`; mv \$SN \$FN; fi; done) #end if ]]> </command> <inputs> <param name="input_bams" type="data" format="bam" label="BAM dataset(s) to filter" min="1" multiple="True"/> <conditional name="analysis_type"> <param name="analysis_type_selector" type="select" label="Split BAM dataset(s) by" help="See help below for explanation of each option"> <option value="-mapped">Mapping status (-mapped)</option> <option value="-paired">Pairing status (-paired)</option> <option value="-reference">Reference name (-reference)</option> <option value="-tag">Specific tag (-tag)</option> </param> <when value="-mapped" /> <when value="-paired" /> <when value="-reference" > <expand macro="macro_output_type" /> </when> <when value="-tag"> <param name="tag_name" type="text" value="NM" label="Enter tag name here" help="For example, to split on NM tag enter "NM""/> <expand macro="macro_output_type" /> </when> </conditional> </inputs> <outputs> <data format="txt" name="report" label="BAMSplitter Run" hidden="true"> <discover_datasets pattern="split_bam\.(?P<designation>.+)\.bam" ext="bam" visible="true"/> <filter>analysis_type['analysis_type_selector'] in ('-mapped','-paired') or analysis_type['output_type'] != 'dataset_collection'</filter> </data> <collection name="output_bams" type="list" label="${input_bams[0].name} by ${analysis_type.analysis_type_selector.replace('-','')}"> <discover_datasets pattern="split_bam\d*(?P<designation>.+)\.bam" ext="bam" visible="false"/> <filter>analysis_type['analysis_type_selector'] in ('-reference','-tag') and analysis_type['output_type'] == 'dataset_collection'</filter> </collection> </outputs> <tests> <test> <param name="input_bams" ftype="bam" value="bamtools-input1.bam"/> <param name="analysis_type_selector" value="-mapped"/> <output name="report"> <assert_contents> <has_line line="BAM" /> </assert_contents> <discovered_dataset designation="MAPPED" file="bamtools-split-test1.bam" ftype="bam"/> </output> </test> <test> <param name="input_bams" ftype="bam" value="bamtools-input2.bam"/> <param name="analysis_type_selector" value="-reference"/> <param name="output_type" value="dataset_collection"/> <output_collection name="output_bams" type="list"> <element name="bamtools_input2.chr1" file="bamtools_input2.chr1" compare="sim_size" delta="500" /> </output_collection> </test> </tests> <help> **What is does** BAMTools split is a utility for splitting BAM files. It is based on BAMtools suite of tools by Derek Barnett (https://github.com/pezmaster31/bamtools). ----- .. class:: warningmark **DANGER: Multiple Outputs** As described below, splitting a BAM dataset(s) on reference name or a tag value can produce very large numbers of outputs. Read below and know what you are doing. ----- **How it works** The following options can be specified via "**Split BAM dataset(s) by**" dropdown:: Mapping status (-mapped) split mapped/unmapped and generate two output files named (MAPPED) and (UNMAPPED) containing mapped and unmapped reads, respectively. Pairing status (-paired) split single-end/paired-end alignments and generate two output files named (SINGLE_END) and (PAIRED_END) containing paired and unpaired reads, respectively. Reference name (-reference) split alignments by reference name. In cases of unfinished genomes with very large number of reference sequences (scaffolds) it can generate thousands (if not millions) of output datasets. Specific tag (-tag) split alignments based on all values of TAG encountered. Choosing this option from the menu will allow you to enter the tag name. As was the case with the reference splitting above, this option can produce very large number of outputs if a tag has a large number of unique values. ----- .. class:: infomark **More information** Additional information about BAMtools can be found at https://github.com/pezmaster31/bamtools/wiki </help> <citations> <citation type="doi">10.1093/bioinformatics/btr174</citation> </citations> </tool>