Mercurial > repos > iuc > mosdepth
diff mosdepth.xml @ 0:b08cd2e5e61a draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/mosdepth commit e1c7e5f10bb679ae9987bb63aece4b8b006d3b76
author | iuc |
---|---|
date | Mon, 31 Jul 2023 06:09:19 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mosdepth.xml Mon Jul 31 06:09:19 2023 +0000 @@ -0,0 +1,293 @@ +<tool id="mosdepth" name="mosdepth" version="@TOOL_VERSION@+galaxy0" profile="21.05"> + <description>- fast and flexible depth coverage calculation</description> + <macros> + <xml name="bam_identifier"> + <!-- this is based on section 1.2.1 of the SAM/BAM specification https://samtools.github.io/hts-specs/SAMv1.pdf --> + <sanitizer invalid_char="'"> + <valid initial="string.ascii_letters,string.digits,string.punctuation"> + <remove value="{" /> + <remove value="}" /> + <remove value="=" /> + <remove value="*" /> + <remove value="`" /> + <remove value=")" /> + <remove value="<" /> + <remove value="'" /> + <remove value='"' /> + <remove value="(" /> + <remove value="\" /> + <remove value="[" /> + <remove value=">" /> + <remove value="]" /> + <remove value="," /> + <yield /> + </valid> + </sanitizer> + <validator type="regex">([0-9A-Za-z!#$%&+./:;?@^_|~-][0-9A-Za-z!#$%&*+./:;=?@^_|~-]*)?</validator> + </xml> + <token name="@TOOL_VERSION@">0.3.4</token> + </macros> + <requirements> + <requirement type="package" version="@TOOL_VERSION@">mosdepth</requirement> + <requirement type="package" version="1.12">gzip</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + #if $advanced.options == "yes" and len($advanced.quantize) + #set $quantize_depths = [] + #for $i, $quant_group in enumerate($advanced.quantize) + #set $quantize_depths = $quantize_depths + [str ($quant_group.quant_group_mindepth)] + #set $quant_group_name = str($quant_group.quant_group_name) + export MOSDEPTH_Q${i}=$quant_group.quant_group_name && + #end for + #set $quant_groups_depths_str = ":".join($quantize_depths) + ':' + #end if + ln -s '$input_alignment' input_alignment && + #if $input_alignment.is_of_type('bam'): + ln -s '${input_alignment.metadata.bam_index}' input_alignment.bai && + #elif $input_alignment.is_of_type('cram'): + ln -s '${input_alignment.metadata.cram_index}' input_alignment.crai && + #end if + mosdepth -t \${GALAXY_SLOTS:-1} + #if $window.window_mode == 'window' + --by $window.window_size + #elif $window.window_mode == 'bed' + --by '$window.region_file' + #end if + $per_base_coverage + #if $advanced.options == "yes" + #if str($advanced.chrom) + --chrom '$advanced.chrom' + #end if + #if $advanced.exclude_flag + --flag $advanced.exclude_flag + #end if + #if $advanced.include_flag + --include-flag $advanced.include_flag + #end if + --mapq $advanced.mapq + $advanced.no_fast + #if str($advanced.thresholds) + --thresholds '$advanced.thresholds' + #end if + $advanced.use_median + #if str($advanced.read_groups) + --read-groups '$read_groups' + #end if + #if len($advanced.quantize) + --quantize '$quant_groups_depths_str' + #end if + #end if + output input_alignment + #if $per_base_coverage + && gunzip output.per-base.bed.gz + #end if + #if $window.window_mode == "bed" or $window.window_mode == "window" + && gunzip output.regions.bed.gz + #end if + #if $advanced.options == "yes" + #if str($advanced.thresholds) + && gunzip output.thresholds.bed.gz + #end if + #if len($advanced.quantize) + && gunzip output.quantized.bed.gz + #end if + #end if + ]]></command> + <inputs> + <param name="input_alignment" type="data" format="bam,cram" label="Input BAM (or CRAM)" help="BAM or CRAM format mapped reads" /> + <param argument="--no-per-base" name="per_base_coverage" type="boolean" truevalue="" falsevalue="--no-per-base" checked="false" label="Output per base depth" help="Skipping depth output for individual bases substantially decreases runtime" /> + <conditional name="window"> + <param name="window_mode" type="select" label="Compute depth by region" help="A BED file or window size can be provided to compute average depth by region"> + <option value="no">Don't compute depth by region</option> + <option value="window">Compute average depth using a fixed size window</option> + <option value="bed">Compute depth in regions specified by a BED file</option> + </param> + <when value="no"> + </when> + <when value="window"> + <param name="window_size" type="integer" min="2" value="400" label="Window size for region calculation" help="Average depth will be computed for non-overlapping regions of this size" /> + </when> + <when value="bed"> + <param name="region_file" type="data" format="bed" label="BED file specifying regions" help="Average depth will be computed for regions specified in the BED file. If the BED file has a 4th column, it is used for the region name" /> + </when> + </conditional> + <conditional name="advanced"> + <param name="options" type="select" label="Advanced Options"> + <option value="no" selected="true">Hide Advanced Options</option> + <option value="yes">Show Advanced Options</option> + </param> + <when value="no"> + </when> + <when value="yes"> + <param argument="--chrom" type="text" label="Restrict depth calculations to chromosome" optional="true" help="Enter a chromosome name to only count depth for reads mapping to this chromosome"> + <expand macro="bam_identifier" /> + </param> + <param argument="--flag" name="exclude_flag" type="integer" min="0" value="0" label="Exclude reads with these bits set in FLAG" help="Exclude reads where any of these bits are set in the value of the read flags column" /> + <param argument="--include-flag" type="integer" min="1" optional="true" label="Only include reads with these bits set in FLAG" help="Only include reads where any of these bits are set in the value of the read flags column" /> + <param argument="--fast-mode" name="no_fast" type="boolean" truevalue="" falsevalue="-x" label="Disable fast mode" help="Fast mode doesn't look up internal cigar operations or correct mate overlaps. Disabling it is not recommended" /> + <param argument="--mapq" type="integer" min="0" value="0" label="Minimum mapping quality" help="Reads with a mapping quality lower than this value are ignored" /> + <param argument="--thresholds" type="text" value="" label="Specify thresholds for output when using region output" help="The number of bases covered by these thresholds will be reported. Multiple thresholds can be separated by commas"> + <sanitizer invalid_char=""> + <valid initial="string.digits"> + <add value="," /> + </valid> + </sanitizer> + <validator type="regex">[0-9,]*</validator> + </param> + <param argument="--use-median" type="boolean" truevalue="--use-median" falsevalue="" checked="false" label="Use median depth of region" help="When computing depth of region, use median of depth rather than mean" /> + <param argument="--read-groups" type="text" value="" label="" help="only calculate depth for these comma-separated read groups IDs"> + <!-- while read group IDs are not well specified in the BAM specification, they appear to be like IDs but with spaces allowed --> + <expand macro="bam_identifier"> + <add value=" " /> + </expand> + </param> + <repeat name="quantize" title="Read depth thresholds for depth-defined regions"> + <param name="quant_group_mindepth" type="integer" min="0" value="0" label="Minimum depth for depth-defined region" help="Regions with this depth or lower will be included in this depth-defined region" /> + <param name="quant_group_name" type="text" label="Depth-defined region name" help="Name include in BED output for regions in this depth-defined region"> + <sanitizer invalid_char=""> + <valid initial="string.letters,string.digits"> + <add value="_" /> + </valid> + </sanitizer> + <validator type="regex">[0-9a-zA-Z_]*</validator> + </param> + </repeat> + </when> + </conditional> + </inputs> + <outputs> + <data name="output_global_dist" format="tabular" from_work_dir="output.mosdepth.global.dist.txt" label="mosdepth depth distribution on ${on_string}" /> + <data name="output_summary" format="tabular" from_work_dir="output.mosdepth.summary.txt" label="mosdepth summary on ${on_string}"> + <actions> + <action type="metadata" name="column_names" default="chrom,length,bases,mean,min,max" /> + </actions> + </data> + <data name="output_region_dist" format="tabular" from_work_dir="output.mosdepth.region.dist.txt" label="mosdepth region depth distribution on ${on_string}"> + <filter>window['window_mode'] == "bed" or window['window_mode'] == "window"</filter> + </data> + <data name="output_per_base_depth" format="bedgraph" from_work_dir="output.per-base.bed" label="mosdepth per base depth on ${on_string}"> + <filter>per_base_coverage</filter> + </data> + <data name="output_regions_bed" format="bed" from_work_dir="output.regions.bed" label="mosdepth regions BED on ${on_string}"> + <filter>window['window_mode'] == "bed" or window['window_mode'] == "window"</filter> + </data> + <data name="output_quantized_bed" format="bed" from_work_dir="output.quantized.bed" label="mosdepth quantized BED on ${on_string}"> + <filter>advanced['options'] == "yes" and len(advanced['quantize'])</filter> + </data> + <data name="output_thresholds_bed" format="bed" from_work_dir="output.thresholds.bed" label="mosdepth thresholds BED on ${on_string}"> + <filter>advanced['options'] == "yes" and advanced['thresholds']</filter> + </data> + </outputs> + <tests> + <!-- test 1 --> + <test expect_num_outputs="2"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <output name="output_summary" file="output_summary.tabular" ftype="tabular" /> + <output name="output_global_dist" file="output_distribution.tabular" ftype="tabular" /> + </test> + <!-- test 2 --> + <test expect_num_outputs="3"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <param name="per_base_coverage" value="True" /> + <output name="output_per_base_depth" file="output_per_base_depth.bed" ftype="bedgraph" /> + </test> + <!-- test 3 --> + <test expect_num_outputs="4"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <conditional name="window"> + <param name="window_mode" value="bed" /> + <param name="region_file" value="input_regions.bed" ftype="bed" /> + </conditional> + <output name="output_region_dist" file="output_region_distribution_bed.tabular" ftype="tabular" /> + <output name="output_summary" file="output_region_summary.tabular" ftype="tabular" /> + <output name="output_regions_bed" file="output_region_depths.bed" ftype="bed" /> + </test> + <!-- test 4 --> + <test expect_num_outputs="4 "> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <conditional name="window"> + <param name="window_mode" value="window" /> + <param name="window_size" value="200" /> + </conditional> + <output name="output_region_dist" file="output_region_distribution.tabular" ftype="tabular" /> + <output name="output_summary" file="output_region_summary_windowed.tabular" ftype="tabular" /> + <output name="output_regions_bed" file="output_window_depths.bed" ftype="bed" /> + </test> + <!-- test 5 --> + <test expect_num_outputs="4"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <conditional name="window"> + <param name="window_mode" value="window" /> + <param name="window_size" value="200" /> + </conditional> + <conditional name="advanced"> + <param name="options" value="yes" /> + <param name="use_median" value="yes" /> + </conditional> + <output name="output_region_dist" file="output_region_distribution_median.tabular" ftype="tabular" /> + <output name="output_summary" file="output_region_summary_windowed_median.tabular" ftype="tabular" /> + <output name="output_regions_bed" file="output_window_depths_median.bed" ftype="bed" /> + </test> + <!-- test 6 --> + <test expect_num_outputs="3"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <conditional name="advanced"> + <param name="options" value="yes" /> + <repeat name="quantize"> + <param name="quant_group_mindepth" value="0" /> + <param name="quant_group_name" value="NO_COVERAGE" /> + </repeat> + <repeat name="quantize"> + <param name="quant_group_mindepth" value="1" /> + <param name="quant_group_name" value="LOW_COVERAGE" /> + </repeat> + <repeat name="quantize"> + <param name="quant_group_mindepth" value="20" /> + <param name="quant_group_name" value="SUFFICIENT_COVERAGE" /> + </repeat> + </conditional> + <output name="output_quantized_bed" file="output_quantized.bed" ftype="bed" /> + </test> + <!-- test 7 --> + <test expect_num_outputs="5"> + <param name="input_alignment" value="input.bam" ftype="bam" /> + <conditional name="window"> + <param name="window_mode" value="bed" /> + <param name="region_file" value="input_regions.bed" ftype="bed" /> + </conditional> + <conditional name="advanced"> + <param name="options" value="yes" /> + <param name="thresholds" value="20,40" /> + </conditional> + <output name="output_thresholds_bed" file="output_thresholds.bed" ftype="bed" /> + </test> + <!-- test 7 --> + <test expect_num_outputs="2"> + <param name="input_alignment" value="input.cram" ftype="cram" /> + <output name="output_summary" file="output_summary.tabular" ftype="tabular" /> + <output name="output_global_dist" file="output_distribution.tabular" ftype="tabular" /> + </test> + </tests> + <help><![CDATA[ +mosdepth_ is a tool for fast and flexible calculation of read depths from BAM or CRAM files. + +It can compute: + +* mean (or median) depth in fixed sized windows +* mean (or median) depth in regions specified by a BED file +* per base depths +* a histogram of read depths +* the mean or median coverage histogram for windows / regions +* a distribution of proportion of based covered over a particular threshold +* a BED format report on regions that are defined by coverage thresholds + +By default only a summary and depth histogram is computed, but the other options mentioned above can +be enabled using different options in the "Compute depth by region" selector and some of the Advanced +options. + +.. _mosdepth: https://github.com/brentp/mosdepth + ]]></help> + <citations> + <citation type="doi">10.1093/bioinformatics/btx699</citation> + </citations> +</tool> \ No newline at end of file