Mercurial > repos > devteam > samtools_stats
diff samtools_stats.xml @ 2:24c5d43cb545 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tool_collections/samtools/samtools_stats commit 411130b45dc30f7f24f41cdeec5e148c5d8faf40
author | iuc |
---|---|
date | Tue, 09 May 2017 11:19:01 -0400 |
parents | 0d71d9467847 |
children | 95a7ddf617e7 |
line wrap: on
line diff
--- a/samtools_stats.xml Wed Nov 11 12:55:15 2015 -0500 +++ b/samtools_stats.xml Tue May 09 11:19:01 2017 -0400 @@ -1,144 +1,171 @@ -<tool id="samtools_stats" name="Stats" version="2.0"> +<tool id="samtools_stats" name="Stats" version="2.0.1"> <description>generate statistics for BAM dataset</description> <macros> - <import>macros.xml</import> - </macros> - <expand macro="requirements"></expand> - <expand macro="stdio"></expand> - <expand macro="version_command"></expand> + <import>macros.xml</import> + </macros> + <expand macro="requirements"/> + <expand macro="stdio"/> + <expand macro="version_command"/> <command><![CDATA[ #if $use_reference.use_ref_selector == "yes": #if $use_reference.reference_source.reference_source_selector == "history": - ln -s "${use_reference.reference_source.ref_file}" && samtools faidx `basename "${use_reference.reference_source.ref_file}"` && samtools stats - #else: - samtools stats - #end if - #else: - samtools stats - #end if - "${input_file}" - --coverage ${coverage_min},${coverage_max},${coverage_step} - ${remove_dups} - #if str( $filter_by_flags.filter_flags ) == "filter": - #if $filter_by_flags.require_flags: - --required-flag ${sum([int(flag) for flag in str($filter_by_flags.require_flags).split(',')])} - #end if - #if $filter_by_flags.exclude_flags: - --filtering-flag ${sum([int(flag) for flag in str($filter_by_flags.exclude_flags).split(',')])} + ln -s '${use_reference.reference_source.ref_file}' && + samtools faidx `basename '${use_reference.reference_source.ref_file}'` && #end if #end if - --GC-depth ${gc_depth} - --insert-size ${insert_size} + + samtools stats + '${input_file}' + --coverage ${coverage_min},${coverage_max},${coverage_step} + ${remove_dups} - ## The code below is commented out because using -I/--id options causes the following exception - ## Samtools-htslib: init_group_id() header parsing not yet implemented + #if str( $filter_by_flags.filter_flags ) == "filter": + #if $filter_by_flags.require_flags: + --required-flag ${sum([int(flag) for flag in str($filter_by_flags.require_flags).split(',')])} + #end if + #if $filter_by_flags.exclude_flags: + --filtering-flag ${sum([int(flag) for flag in str($filter_by_flags.exclude_flags).split(',')])} + #end if + #end if - ##if str($read_group) != "": - ## -I "${read_group}" - ##end if + --GC-depth ${gc_depth} + --insert-size ${insert_size} - #if str($read_length) != "0": - --read-length "${read_length}" - #end if - --most-inserts ${most_inserts} - --trim-quality ${trim_quality} - #if $use_reference.use_ref_selector == "yes": - #if $use_reference.reference_source.reference_source_selector != "history": - --ref-seq "${use_reference.reference_source.ref_file.fields.path}" - #else: - --ref-seq "${use_reference.reference_source.ref_file}" + ## The code below is commented out because using -I/--id options causes the following exception + ## Samtools-htslib: init_group_id() header parsing not yet implemented + ##if str($read_group) != "": + ## -I "${read_group}" + ##end if + + #if str($read_length): + --read-length ${read_length} #end if - #end if - > "${output}" + + --most-inserts ${most_inserts} + --trim-quality ${trim_quality} + + #if $use_reference.use_ref_selector == "yes": + #if $use_reference.reference_source.reference_source_selector != "history": + --ref-seq '${use_reference.reference_source.ref_file.fields.path}' + #else: + --ref-seq '${use_reference.reference_source.ref_file}' + #end if + #end if + > '${output}' + #if $split_output.split_output_selector == "yes": #set outputs_to_split = str($split_output.generate_tables).split(',') - && mkdir split && echo ${split_output.generate_tables} && + && mkdir split && + echo ${split_output.generate_tables} #if 'sn' in $outputs_to_split: - echo "# Summary Numbers\n" > "split/Summary numbers.tab" && - grep -q ^SN "${output}" ; if [ $? = 0 ] ; then grep ^SN "${output}" | cut -f 2- >> "split/Summary numbers.tab" ; fi && + && echo "# Summary Numbers" > 'split/Summary numbers.tab' && + echo "" >> 'split/Summary numbers.tab' && + if grep -q ^SN '${output}'; then + grep ^SN '${output}' | cut -f 2- >> 'split/Summary numbers.tab'; + fi #end if #if 'ffq' in $outputs_to_split: - echo "# Columns correspond to qualities and rows to cycles. First column is the cycle number\n" > "split/First Fragment Qualities.tab" && - grep -q ^FFQ "${output}" ; if [ $? = 0 ] ; then grep ^FFQ "${output}" | cut -f 2- >> "split/First Fragment Qualities.tab" ; fi && + && echo "# Columns correspond to qualities and rows to cycles. First column is the cycle number\n" > 'split/First Fragment Qualities.tab' && + if grep -q ^FFQ '${output}'; then + grep ^FFQ '${output}' | cut -f 2- >> 'split/First Fragment Qualities.tab'; + fi #end if #if 'lfq' in $outputs_to_split: - echo "# Columns correspond to qualities and rows to cycles. First column is the cycle number" > "split/Last Fragment Qualities.tab" && - grep -q ^LFQ "${output}" ; if [ $? = 0 ] ; then grep ^LFQ "${output}" | cut -f 2- >> "split/Last Fragment Qualities.tab" ; fi && + && echo "# Columns correspond to qualities and rows to cycles. First column is the cycle number" > 'split/Last Fragment Qualities.tab' && + if grep -q ^LFQ '${output}'; then + grep ^LFQ '${output}' | cut -f 2- >> 'split/Last Fragment Qualities.tab'; + fi #end if #if 'mpc' in $outputs_to_split: - echo "# Columns correspond to qualities, rows to cycles. First column is the cycle number, second is the number of N's and the rest is the number of mismatches" > "split/Mismatches per cycle.tab" && - grep -q ^MPC "${output}" ; if [ $? = 0 ] ; then grep ^MPC "${output}" | cut -f 2- >> "split/Mismatches per cycle.tab" ; fi && + && echo "# Columns correspond to qualities, rows to cycles. First column is the cycle number, second is the number of N's and the rest is the number of mismatches" > 'split/Mismatches per cycle.tab' && + if grep -q ^MPC '${output}'; then + grep ^MPC '${output}' | cut -f 2- >> 'split/Mismatches per cycle.tab'; + fi #end if #if 'gcf' in $outputs_to_split: - echo "# GC Content of first fragments" > "split/GC Content of first fragments.tab" && - grep -q ^GCF "${output}" ; if [ $? = 0 ] ; then grep ^GCF "${output}" | cut -f 2- >> "split/GC Content of first fragments.tab" ; fi && + && echo "# GC Content of first fragments" > 'split/GC Content of first fragments.tab' && + if grep -q ^GCF '${output}'; then + grep ^GCF '${output}' | cut -f 2- >> 'split/GC Content of first fragments.tab'; + fi #end if #if 'gcl' in $outputs_to_split: - echo "# GC Content of last fragments" > "split/GC Content of last fragments.tab" && - grep -q ^GCL "${output}" ; if [ $? = 0 ] ; then grep ^GCL "${output}" | cut -f 2- >> "split/GC Content of last fragments.tab" ; fi && + && echo "# GC Content of last fragments" > 'split/GC Content of last fragments.tab' && + if grep -q ^GCL '${output}'; then + grep ^GCL '${output}' | cut -f 2- >> 'split/GC Content of last fragments.tab'; + fi #end if #if 'gcc' in $outputs_to_split: - echo "# ACGT content per cycle. The columns are: cycle, and A,C,G,T counts (percent)" > "split/ACGT content per cycle.tab" && - grep -q ^GCC "${output}" ; if [ $? = 0 ] ; then grep ^GCC "${output}" | cut -f 2- >> "split/ACGT content per cycle.tab" ; fi && + && echo "# ACGT content per cycle. The columns are: cycle, and A,C,G,T counts (percent)" > 'split/ACGT content per cycle.tab' && + if grep -q ^GCC '${output}'; then + grep ^GCC '${output}' | cut -f 2- >> 'split/ACGT content per cycle.tab'; + fi #end if #if 'is' in $outputs_to_split: - echo "# Insert sizes. The columns are: insert size, pairs total, inward oriented pairs, outward oriented pairs, other pairs" > "split/Insert sizes.tab" && - grep -q ^IS "${output}" ; if [ $? = 0 ] ; then grep ^IS "${output}" | cut -f 2- >> "split/Insert sizes.tab" ; fi && + && echo "# Insert sizes. The columns are: insert size, pairs total, inward oriented pairs, outward oriented pairs, other pairs" > 'split/Insert sizes.tab' && + if grep -q ^IS '${output}'; then + grep ^IS '${output}' | cut -f 2- >> 'split/Insert sizes.tab'; + fi #end if #if 'rl' in $outputs_to_split: - echo "# Read lengths. The columns are: read length, count" > "split/Read lengths.tab" && - grep -q ^RL "${output}" ; if [ $? = 0 ] ; then grep ^RL "${output}" | cut -f 2- >> "split/Read lengths.tab" ; fi && + && echo "# Read lengths. The columns are: read length, count" > 'split/Read lengths.tab' && + if grep -q ^RL '${output}'; then + grep ^RL '${output}' | cut -f 2- >> 'split/Read lengths.tab'; + fi #end if #if 'id' in $outputs_to_split: - echo "# Indel distribution. The columns are: length, number of insertions, number of deletions" > "split/Indel distribution.tab" && - grep -q ^ID "${output}" ; if [ $? = 0 ] ; then grep ^ID "${output}" | cut -f 2- >> "split/Indel distribution.tab" ; fi && + && echo "# Indel distribution. The columns are: length, number of insertions, number of deletions" > 'split/Indel distribution.tab' && + if grep -q ^ID '${output}'; then + grep ^ID '${output}' | cut -f 2- >> 'split/Indel distribution.tab'; + fi #end if #if 'ic' in $outputs_to_split: - echo "# Indels per cycle. The columns are: cycle, number of insertions (fwd), .. (rev) , number of deletions (fwd), .. (rev)" > "split/Indels per cycle.tab" && - grep -q ^IC "${output}" ; if [ $? = 0 ] ; then grep ^IC "${output}" | cut -f 2- >> "split/Indels per cycle.tab" ; fi && + && echo "# Indels per cycle. The columns are: cycle, number of insertions (fwd), .. (rev) , number of deletions (fwd), .. (rev)" > 'split/Indels per cycle.tab' && + if grep -q ^IC '${output}'; then + grep ^IC '${output}' | cut -f 2- >> 'split/Indels per cycle.tab'; + fi #end if #if 'cov' in $outputs_to_split: - echo "# Coverage distribution" > "split/Coverage distribution.tab" && - grep -q ^COV "${output}" ; if [ $? = 0 ] ; then grep ^COV "${output}" | cut -f 2- >> "split/Coverage distribution.tab" ; fi && + && echo "# Coverage distribution" > 'split/Coverage distribution.tab' && + if grep -q ^COV '${output}'; then + grep ^COV '${output}' | cut -f 2- >> 'split/Coverage distribution.tab'; + fi #end if #if 'gcd' in $outputs_to_split: - echo "# GC-depth. The columns are: GC%, unique sequence percentiles, 10th, 25th, 50th, 75th and 90th depth percentile" > "split/GC depth.tab" && - grep -q ^GCD "${output}" ; if [ $? = 0 ] ; then grep ^GCD "${output}" | cut -f 2- >> "split/GC depth.tab" ; fi && + && echo "# GC-depth. The columns are: GC%, unique sequence percentiles, 10th, 25th, 50th, 75th and 90th depth percentile" > 'split/GC depth.tab' && + if grep -q ^GCD '${output}'; then + grep ^GCD '${output}' | cut -f 2- >> 'split/GC depth.tab'; + fi #end if - - ## Unix true command below - - true - #end if ]]></command> <inputs> <param name="input_file" type="data" format="sam,bam" label="BAM file" /> - <param name="coverage_min" type="integer" value="1" label="Minimum coverage" help="minimum coverage value for --coverage option"/> - <param name="coverage_max" type="integer" value="1000" label="Maximum coverage" help="maximum coverage value for --coverage option"/> - <param name="coverage_step" type="integer" value="1" label="Coverage step" help="step value for --coverage option"/> - <param name="remove_dups" type="boolean" truevalue="--remove-dups" falsevalue="" checked="False" label="Exclude reads marked as duplicates" help="--remove-dups; default = False"/> + <param name="coverage_min" type="integer" value="1" label="Minimum coverage" help="Minimum coverage" /> + <param name="coverage_max" type="integer" value="1000" label="Maximum coverage" help="Maximum coverage" /> + <param name="coverage_step" type="integer" value="1" label="Coverage step" help="Step value for coverage" /> + <param name="remove_dups" argument="--remove-dups" type="boolean" truevalue="--remove-dups" falsevalue="" checked="False" + label="Exclude reads marked as duplicates" /> <conditional name="split_output"> - <param name="split_output_selector" type="select" label="Output" help="Select between a single output or separate outputs for each statistics"> - <option value="no" selected="True">a single summary file</option> - <option value="yes">separate datasets for each statistics</option> + <param name="split_output_selector" type="select" label="Output" help="Select between one single output or separate outputs for each statistics"> + <option value="no" selected="True">One single summary file</option> + <option value="yes">Separate datasets for each statistic</option> </param> <when value="no" /> <when value="yes"> - <param name="generate_tables" type="select" display="checkboxes" multiple="True" label="Statistics to extract"> + <param name="generate_tables" type="select" display="checkboxes" multiple="True" label="Desired output files"> <option value="sn">Summary numbers</option> <option value="ffq">First Fragment Qualities</option> <option value="lfq">Last Fragment Qualities</option> @@ -156,12 +183,12 @@ </when> </conditional> <conditional name="filter_by_flags"> - <param name="filter_flags" type="select" label="Set filter by flags" help="-f and -F options"> + <param name="filter_flags" type="select" label="Filter by SAM flags" help="More info on the flags: https://samtools.github.io/hts-specs/SAMv1.pdf"> <option value="nofilter" selected="True">Do not filter</option> <option value="filter">Filter by flags to exclude or require</option> </param> <when value="filter"> - <param name="require_flags" type="select" display="checkboxes" multiple="True" label="Require" help="-f"> + <param name="require_flags" argument="-f" type="select" display="checkboxes" multiple="True" label="Require"> <option value="1">Read is paired</option> <option value="2">Read is mapped in a proper pair</option> <option value="4">The read is unmapped</option> @@ -174,7 +201,7 @@ <option value="512">The read fails platform/vendor quality checks</option> <option value="1024">The read is a PCR or optical duplicate</option> </param> - <param name="exclude_flags" type="select" display="checkboxes" multiple="True" label="Exclude" help="-F"> + <param name="exclude_flags" argument="-F" type="select" display="checkboxes" multiple="True" label="Exclude"> <option value="1">Read is paired</option> <option value="2">Read is mapped in a proper pair</option> <option value="4">The read is unmapped</option> @@ -191,19 +218,18 @@ <when value="nofilter" /> </conditional> - <param name="gc_depth" type="float" value="20000" label="GC-depth bin size" help="--GC-depth; decreasing bin size increases memory requirement; default = 20000.0"/> - <param name="insert_size" type="integer" value="8000" label="Maximum insert size" help="--insert-size; default = 8000"/> + <param name="gc_depth" argument="--GC-depth" type="float" value="20000" label="Size of GC-depth bins" help="Decreasing bin size increases memory requirement" /> + <param name="insert_size" argument="--insert-size" type="integer" value="8000" label="Maximum insert size" /> + <!-- - <!-- - The -I option of samtools stats returns the following message in version 1.2: Samtools-htslib: init_group_id() header parsing not yet implemented Abort trap: 6 - + Because of this the section below is commented out until this stats bug is fixed - <param name="read_group" type="select" optional="true" label="Limit to a specific read group name" > + <param name="read_group" type="select" optional="true" label="Limit to a specific read group name" > <options> <filter type="data_meta" ref="input_file" key="read_groups" /> </options> @@ -211,12 +237,12 @@ --> - <param name="read_length" type="integer" value="0" label="Minimum read length to generate statistics for" help="--read-length; default = no cutoff"/> - <param name="most_inserts" type="float" value="0.99" label="Report only the main part of inserts" help="--most-inserts; default = 0.99"/> - <param name="trim_quality" type="integer" value="0" label="BWA trim parameter" help="--trim-quality; default = 0"/> - + <param name="read_length" argument="--read-length" type="integer" value="" optional="true" label="Minimum read length to generate statistics for" help="No cutoff if left empty"/> + <param name="most_inserts" argument="--most-inserts" type="float" value="0.99" label="Report only the main part of inserts" /> + <param name="trim_quality" argument="--trim-quality" type="integer" value="0" label="BWA trim parameter" /> + <conditional name="use_reference"> - <param name="use_ref_selector" type="select" label="Use reference sequence" help="--ref-seq; required for GC-depth and mismatches-per-cycle calculation"> + <param name="use_ref_selector" argument="--ref-seq" type="select" label="Use reference sequence" help="Required for GC-depth and mismatches-per-cycle calculation"> <option value="yes">Use reference</option> <option selected="True" value="no">Do not use reference</option> </param> @@ -228,8 +254,9 @@ </param> <when value="cached"> <param name="ref_file" type="select" label="Using genome"> - <options from_data_table="fasta_indexes" /> - <filter type="data_meta" ref="input_file" key="dbkey" column="1" /> + <options from_data_table="fasta_indexes"> + <filter type="data_meta" ref="input_file" key="dbkey" column="1" /> + </options> </param> </when> <when value="history"> @@ -243,7 +270,7 @@ </inputs> <outputs> - <data format="tabular" name="output" label="${tool.name} on ${on_string}"> + <data name="output" format="tabular" label="${tool.name} on ${on_string}"> <discover_datasets pattern="(?P<designation>.+)\.tab" ext="tabular" visible="true" directory="split" /> </data> </outputs> @@ -263,34 +290,17 @@ <param name="split_output_selector" value="yes" /> <param name="generate_tables" value="sn,mpc,gcc" /> <output name="output" file="samtools_stats_out2.tab" lines_diff="4"> - <discovered_dataset designation="Summary numbers" ftype="tabular" file="samtools_stats_out2/sn.tab" /> - <discovered_dataset designation="ACGT content per cycle" ftype="tabular" file="samtools_stats_out2/gcc.tab" /> - <discovered_dataset designation="Mismatches per cycle" ftype="tabular" file="samtools_stats_out2/mpc.tab" /> + <discovered_dataset designation="Summary numbers" ftype="tabular" file="samtools_stats_out2__sn.tab" /> + <discovered_dataset designation="ACGT content per cycle" ftype="tabular" file="samtools_stats_out2__gcc.tab" /> + <discovered_dataset designation="Mismatches per cycle" ftype="tabular" file="samtools_stats_out2__mpc.tab" /> </output> </test> </tests> <help><![CDATA[ **What it does** -This tool runs the ``samtools stats`` command. It has the following options:: - - -c, --coverage <int>,<int>,<int> Coverage distribution min,max,step [1,1000,1] - -d, --remove-dups Exclude from statistics reads marked as duplicates - -f, --required-flag <str|int> Required flag, 0 for unset. See also `samtools flags` [0] - -F, --filtering-flag <str|int> Filtering flag, 0 for unset. See also `samtools flags` [0] - --GC-depth <float> the size of GC-depth bins (decreasing bin size increases memory requirement) [2e4] - -h, --help This help message - -i, --insert-size <int> Maximum insert size [8000] - -I, --id <string> Include only listed read group or sample name - -l, --read-length <int> Include in the statistics only reads with the given read length [] - -m, --most-inserts <float> Report only the main part of inserts [0.99] - -q, --trim-quality <int> The BWA trimming parameter [0] - -r, --ref-seq <file> Reference sequence (required for GC-depth and mismatches-per-cycle calculation). Galaxy - will provide options for selecting a reference cached as this Galaxy instance or choosing - one from history. - - +This tool runs the ``samtools stats`` command. ]]></help> - <expand macro="citations"></expand> + <expand macro="citations"/> </tool>