Mercurial > repos > iuc > bcftools_filter
changeset 16:e7452697afd9 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bcftools commit db275932cbb485cb44ae91e0b421d6f57698db49
| author | iuc |
|---|---|
| date | Tue, 20 Sep 2022 13:17:14 +0000 |
| parents | 33bd9301568c |
| children | 6ea7170a016d |
| files | bcftools_filter.xml macros.xml test-data/mpileup.AD.vcf test-data/summary.pdf |
| diffstat | 4 files changed, 4291 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/bcftools_filter.xml Sat Jul 23 13:39:59 2022 +0000 +++ b/bcftools_filter.xml Tue Sep 20 13:17:14 2022 +0000 @@ -1,5 +1,5 @@ <?xml version='1.0' encoding='utf-8'?> -<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@"> +<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description>Apply fixed-threshold filters</description> <macros> <token name="@EXECUTABLE@">filter</token> @@ -29,8 +29,9 @@ #set $mode = str($section.mode).replace(',','') --mode '$mode' #end if -#if $section.soft_filter: - --soft-filter "${section.soft_filter}" +#if $section.conditional_soft_filter.selector == 'enabled': + --soft-filter '${section.conditional_soft_filter.soft_filter}' + @MASK@ #end if #if $section.select_set_GTs: --set-GTs "${section.select_set_GTs}" @@ -70,11 +71,22 @@ <option value="+">(+) append new FILTER strings of failed sites instead of replacing them</option> <option value="x">(x) resets filters of sites which pass to "PASS"</option> </param> - <param name="soft_filter" type="text" value="" label="Soft Filter" optional="true"> - <help><![CDATA[ (-s) - Annotate FILTER column with STRING or, with +, a unique filter name generated by the program ("Filter%d"). - ]]></help> - </param> + <conditional name="conditional_soft_filter"> + <param name="selector" type="select" label="Perform soft filtering"> + <option value="disabled">Disabled</option> + <option value="enabled">Enabled</option> + </param> + <when value="disabled"/> + <when value="enabled"> + <param argument="--soft-filter" type="text" value="" label="Soft Filter" optional="true"> + <help><![CDATA[ (-s) + Annotate FILTER column with STRING or, with +, a unique filter name generated by the program ("Filter%d"). + ]]></help> + </param> + <expand macro="macro_restrict" type="mask" label_type="Mask"/> + </when> + </conditional> + <param name="select_set_GTs" type="select" label="Set genotypes of failed samples" optional="true" help="(-S)"> <option value=".">to missing (.)</option> <option value="0">to REF (0)</option> @@ -107,9 +119,9 @@ <param name="output_type" value="v" /> <output name="output_file"> <assert_contents> - <has_text text="Modified" /> + <has_text text="genotypes" /> <has_text text="AN=2;AC=1" /> - <has_text_matching expression="TAAAA\tTA,T\t61.5\tModified" /> + <has_text_matching expression="TAAAA\tTA,T\t61.5\tPASS" /> </assert_contents> </output> </test> @@ -128,7 +140,12 @@ <test> <param name="input_file" ftype="vcf" value="filter.3.vcf" /> <param name="exclude" value="INFO/DP=19" /> - <param name="soft_filter" value="XX" /> + <section name="sec_filter"> + <conditional name="conditional_soft_filter"> + <param name="selector" value="enabled"/> + <param name="soft_filter" value="XX" /> + </conditional> + </section> <param name="output_type" value="v" /> <output name="output_file"> <assert_contents> @@ -140,12 +157,17 @@ <test> <param name="input_file" ftype="vcf" value="filter.3.vcf" /> <param name="exclude" value="INFO/DP=19" /> - <param name="soft_filter" value="XX" /> - <param name="mode" value="+" /> + <section name="sec_filter"> + <conditional name="conditional_soft_filter"> + <param name="selector" value="enabled"/> + <param name="soft_filter" value="XX" /> + <param name="mode" value="+" /> + </conditional> + </section> <param name="output_type" value="v" /> <output name="output_file"> <assert_contents> - <has_text_matching expression="\tq20;XX\tDP=19" /> + <has_text_matching expression="238\tXX\tDP=19" /> <has_text_matching expression="\tq20\tAO" /> </assert_contents> </output> @@ -153,26 +175,36 @@ <test> <param name="input_file" ftype="vcf" value="filter.3.vcf" /> <param name="exclude" value="INFO/DP=19" /> - <param name="soft_filter" value="XX" /> - <param name="mode" value="x" /> + <section name="sec_filter"> + <conditional name="conditional_soft_filter"> + <param name="selector" value="enabled"/> + <param name="soft_filter" value="XX" /> + <param name="mode" value="+" /> + </conditional> + </section> <param name="output_type" value="v" /> <output name="output_file"> <assert_contents> <has_text_matching expression="\tXX\tDP=19" /> - <has_text_matching expression="\tPASS\tAO" /> + <has_text_matching expression="\tq20\tAO=52101" /> </assert_contents> </output> </test> <test> <param name="input_file" ftype="vcf" value="filter.3.vcf" /> <param name="exclude" value="INFO/DP=19" /> - <param name="soft_filter" value="XX" /> - <param name="mode" value="+,x" /> + <section name="sec_filter"> + <conditional name="conditional_soft_filter"> + <param name="selector" value="enabled"/> + <param name="soft_filter" value="XX" /> + <param name="mode" value="+" /> + </conditional> + </section> <param name="output_type" value="v" /> <output name="output_file"> <assert_contents> - <has_text_matching expression="\tq20;XX\tDP=19" /> - <has_text_matching expression="\tPASS\tAO" /> + <has_text_matching expression="\t238\tXX\tDP=19" /> + <has_text_matching expression="\t238\tq20\tAO" /> </assert_contents> </output> </test> @@ -198,6 +230,48 @@ </assert_contents> </output> </test> + <!-- Test region overlap --> + <test> + <param name="input_file" ftype="vcf" value="filter.2.vcf" /> + <param name="include" value="FMT/GT="0/0" && AC[*]=2" /> + <param name="output_type" value="v" /> + <section name="sec_restrict"> + <param name="regions_overlap" value="1"/> + </section> + <output name="output_file"> + <assert_contents> + <has_text text="AN=4;AC=2" /> + <not_has_text text="AN=4;AC=0" /> + </assert_contents> + </output> + <assert_command> + <has_text text="--regions-overlap" /> + </assert_command> + </test> + <!-- Test mask options--> + <test> + <param name="input_file" ftype="vcf" value="filter.3.vcf" /> + <param name="exclude" value="INFO/DP=19" /> + <section name="sec_filter"> + <param name="mode" value="+,x" /> + <conditional name="conditional_soft_filter"> + <param name="selector" value="enabled"/> + <param name="soft_filter" value="XX" /> + <param name="masks_overlap" value="1"/> + </conditional> + </section> + + <param name="output_type" value="v" /> + <output name="output_file"> + <assert_contents> + <has_text_matching expression="\tq20;XX\tDP=19" /> + <has_text_matching expression="\tPASS\tAO" /> + </assert_contents> + </output> + <assert_command> + <has_text text="--mask-overlap" /> + </assert_command> + </test> </tests> <help><![CDATA[ =====================================
--- a/macros.xml Sat Jul 23 13:39:59 2022 +0000 +++ b/macros.xml Tue Sep 20 13:17:14 2022 +0000 @@ -1,5 +1,7 @@ <macros> - <token name="@TOOL_VERSION@">1.10</token> + <token name="@TOOL_VERSION@">1.15.1</token> + <token name="@VERSION_SUFFIX@">0</token> + <token name="@PROFILE@">20.01</token> <xml name="bio_tools"> <xrefs> <xref type="bio.tools">bcftools</xref> @@ -8,15 +10,15 @@ <xml name="requirements"> <requirements> <requirement type="package" version="@TOOL_VERSION@">bcftools</requirement> - <requirement type="package" version="1.10">htslib</requirement> + <requirement type="package" version="1.15.1">htslib</requirement> <yield /> </requirements> </xml> <xml name="samtools_requirement"> - <requirement type="package" version="1.10">samtools</requirement> + <requirement type="package" version="1.15.1">samtools</requirement> </xml> <xml name="matplotlib_requirement"> - <requirement type="package" version="3.4.3">matplotlib</requirement> + <requirement type="package" version="3.5.3">matplotlib</requirement> </xml> <xml name="version_command"> <version_command>bcftools 2>&1 | grep 'Version:'</version_command> @@ -39,6 +41,10 @@ ]]> </token> <xml name="macro_input"> + <!-- + REQUIRES https://github.com/galaxyproject/galaxy/pull/14605/files + <param name="input_files" type="data" format="vcf,vcf.gz,vcf_bgzip,bcf" label="Other VCF/BCF Datasets" multiple="True" /> + --> <param name="input_file" type="data" format="vcf,vcf_bgzip,bcf" label="VCF/BCF Data" /> </xml> <token name="@PREPARE_INPUT_FILE@"> @@ -48,6 +54,7 @@ #if $input_file.is_of_type('vcf') bgzip -c '$input_file' > $input_vcf && bcftools index $input_vcf && +##elif $input_file.is_of_type('vcf_bgzip') or $input_file.is_of_type('vcf.gz') #elif $input_file.is_of_type('vcf_bgzip') ln -s '$input_file' $input_vcf && #if $input_file.metadata.tabix_index: @@ -71,6 +78,10 @@ </token> <xml name="macro_inputs"> + <!-- + REQUIRES https://github.com/galaxyproject/galaxy/pull/14605/files + <param name="input_files" type="data" format="vcf,vcf.gz,vcf_bgzip,bcf" label="Other VCF/BCF Datasets" multiple="True" /> + --> <param name="input_files" type="data" format="vcf,vcf_bgzip,bcf" label="Other VCF/BCF Datasets" multiple="True" /> </xml> <token name="@PREPARE_INPUT_FILES@"> @@ -83,7 +94,8 @@ #if $input_file.is_of_type('vcf') bgzip -c '$input_file' > $input_vcf && bcftools index $input_vcf && - #elif $input_file.is_of_type('vcf_bgzip') + ##elif $input_file.is_of_type('vcf_bgzip') or $input_file.is_of_type('vcf.gz') -> REQUIRES https://github.com/galaxyproject/galaxy/pull/14605 + #elif $input_file.is_of_type('vcf_bgzip') or $input_file.is_of_type('vcf.gz') ln -s '$input_file' $input_vcf && #if $input_file.metadata.tabix_index: ln -s '${input_file.metadata.tabix_index}' ${input_vcf}.tbi && @@ -318,6 +330,11 @@ <yield /> </when> </conditional> + <param argument="--@TYPE@s-overlap" type="select" optional="true" label="@LABEL_TYPE@ overlap" help="Include if POS in the region (0), record overlaps (1), variant overlaps (2)"> + <option value="0">0: POS in the region</option> + <option value="1">1: Record overlaps</option> + <option value="2">2: Variant overlaps</option> + </param> </xml> <token name="@PARSE_INTERVALS@"> @@ -337,6 +354,28 @@ ]]> </token> + <token name="@MASK@"> +<![CDATA[ +#if $section.conditional_soft_filter.selector == 'enabled' and $section.conditional_soft_filter.soft_filter + #if $section.conditional_soft_filter.masks.masks_src == 'regions': + #set $intervals = $section.conditional_soft_filter.masks.masks + @PARSE_INTERVALS@ + --mask '$intervals_spec' + #elif $section.conditional_soft_filter.masks.masks_src == 'masks_file' and $section.conditional_soft_filter.masks.masks_file: + #if $masks_path is not None: + --mask-file '$masks_path' + #else: + --mask-file '$section.conditional_soft_filter.masks.masks_file' + #end if + #end if + #if $section.conditional_soft_filter.masks_overlap + --mask-overlap $section.conditional_soft_filter.masks_overlap + #end if +#end if + +]]> + </token> + <token name="@REGIONS@"> <![CDATA[ #if $section.regions.regions_src == 'regions': @@ -350,6 +389,10 @@ --regions-file '$section.regions.regions_file' #end if #end if +#if $section.regions_overlap + --regions-overlap $section.regions_overlap +#end if + ]]> </token> @@ -364,6 +407,9 @@ #elif $section.targets.targets_src == 'targets_file' and $section.targets.targets_file: --targets-file "${section.targets.invert_targets_file}${section.targets.targets_file}" #end if +#if $section.targets_overlap + --targets-overlap $section.targets_overlap +#end if ]]> </token> @@ -410,8 +456,8 @@ <xml name="macro_samples"> <param argument="--samples" type="text" value="" optional="true" label="Samples" - help="Comma separated list of samples to annotate (or exclude)"> - <validator type="regex" message="">^(\w+(,\w+)*)?$</validator> + help="Comma-separated list of samples to annotate (or exclude) or - to include all samples"> + <validator type="regex" message="Comma-separated list of samples or - to include all samples">^(-|\w+(,\w+)*)?$</validator> </param> <param name="invert_samples" type="boolean" truevalue="^" falsevalue="" checked="false" label="Invert Samples" help="Inverts the query/filtering applied by Samples (adds "^" prefix to exclude)" /> @@ -476,7 +522,7 @@ <xml name="macro_columns"> <param name="columns" type="text" value="" optional="true" label="Columns" help="List of columns in the annotation file, e.g. CHROM,POS,REF,ALT,-,INFO/TAG. See man page for details"> - <validator type="regex" message="COLUMN names separated by commas">^([^,]+(,[^,]+)*)?$</validator> + <validator type="regex" message="COLUMN names separated by commas">^([^,]+(,[^,]+)*)?$</validator> </param> </xml> <token name="@COLUMNS@"> @@ -496,7 +542,18 @@ ${section.vcf_ids} </token> +<xml name="macro_output_tags"> + <param name="output_tags" argument="--annotate" type="select" optional="true" multiple="True" display="checkboxes" label="Optional tags to output" help="--annotate"> + <yield /> + </param> +</xml> + +<xml name="macro_overlap" token_argument="" token_label=""> +</xml> + + <token name="@OUTPUT_HELP@"> + <