Mercurial > repos > iuc > bcftools_call
changeset 24:c277260d3fab draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/bcftools commit f6efda26965eb73c9107d367fd5ffdf246ed0dbc
| author | iuc |
|---|---|
| date | Tue, 02 Dec 2025 08:04:14 +0000 |
| parents | 07396b423218 |
| children | |
| files | bcftools_call.xml macros.xml |
| diffstat | 2 files changed, 280 insertions(+), 177 deletions(-) [+] |
line wrap: on
line diff
--- a/bcftools_call.xml Sun Aug 18 10:21:29 2024 +0000 +++ b/bcftools_call.xml Tue Dec 02 08:04:14 2025 +0000 @@ -1,15 +1,12 @@ -<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy5" profile="@PROFILE@"> +<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description>SNP/indel variant calling from VCF/BCF</description> <macros> <token name="@EXECUTABLE@">call</token> <import>macros.xml</import> <xml name="macro_novel_rate"> - <param name="novel_rate_snp" type="float" value="" optional="true" label="Novel rate for SNPs" - help="Likelihood of novel mutation for constrained trio calling, see man page for details" /> - <param name="novel_rate_del" type="float" value="" optional="true" label="Novel rate for deletions" - help="Likelihood of novel mutation for constrained trio calling, see man page for details" /> - <param name="novel_rate_ins" type="float" value="" optional="true" label="Novel rate for insertions" - help="Likelihood of novel mutation for constrained trio calling, see man page for details" /> + <param name="novel_rate_snp" type="float" value="" optional="true" label="Novel rate for SNPs" help="Likelihood of novel mutation for constrained trio calling, see man page for details"/> + <param name="novel_rate_del" type="float" value="" optional="true" label="Novel rate for deletions" help="Likelihood of novel mutation for constrained trio calling, see man page for details"/> + <param name="novel_rate_ins" type="float" value="" optional="true" label="Novel rate for insertions" help="Likelihood of novel mutation for constrained trio calling, see man page for details"/> </xml> <token name="@NOVEL_RATE@"> #set $novel_rate = [] @@ -27,20 +24,18 @@ #end if </token> </macros> - <expand macro="bio_tools" /> - <expand macro="requirements" /> - <expand macro="version_command" /> + <expand macro="bio_tools"/> + <expand macro="requirements"/> + <expand macro="version_command"/> <command detect_errors="aggressive"><![CDATA[ -@PREPARE_ENV@ @PREPARE_INPUT_FILE@ #set $section = $sec_consensus_variant_calling.variant_calling #set $targets_path = None #if $section.method == 'multiallelic': - #if $section.genotypes.constrain == 'alleles': - #set $section = $sec_consensus_variant_calling.variant_calling.genotypes - @PREPARE_TARGETS_FILE@ - #end if + #set $section = $sec_consensus_variant_calling.variant_calling.genotypes #end if +@PREPARE_TARGETS_FILE@ + #set $section = $sec_restrict @PREPARE_REGIONS_FILE@ @@ -75,6 +70,7 @@ #if str($section.pval_threshold): --pval-threshold $section.pval_threshold #end if + @TARGETS@ #end if #set $section = $sec_restrict @@ -115,10 +111,10 @@ > '$output_file' ]]></command> <inputs> - <expand macro="macro_input" /> + <expand macro="macro_input"/> <section name="sec_restrict" expanded="false" title="Restrict to"> - <expand macro="macro_restrict" /> - <expand macro="macro_samples" /> + <expand macro="macro_region_restrict"/> + <expand macro="macro_samples"/> </section> <section name="sec_consensus_variant_calling" expanded="true" title="Consensus/variant calling Options"> <conditional name="variant_calling"> @@ -134,20 +130,16 @@ <option value="trio">trio - call genotypes given the father-mother-child constraint</option> </param> <when value="none"> - <expand macro="macro_restrict" type="target" label_type="Target"> - <expand macro="macro_invert_targets"/> - </expand> + <expand macro="macro_target_restrict_simple" /> </when> <when value="alleles"> - <expand macro="macro_restrictions_file" type="target" label_type="Target" /> + <expand macro="macro_restrictions_file" type="target" label_type="Target"/> <expand macro="macro_invert_targets"/> - <param argument="--insert-missed" type="boolean" truevalue="--insert-missed" falsevalue="" label="Insert missed" help="Output also sites missed by mpileup but present in -T" /> + <param argument="--insert-missed" type="boolean" truevalue="--insert-missed" falsevalue="" label="Insert missed" help="Output also sites missed by mpileup but present in -T"/> </when> <when value="trio"> - <expand macro="macro_restrict" type="target" label_type="Target"> - <expand macro="macro_invert_targets"/> - </expand> - <expand macro="macro_novel_rate" /> + <expand macro="macro_target_restrict_simple"/> + <expand macro="macro_novel_rate"/> </when> </conditional> <param argument="--prior-freqs" type="text" value="" optional="true" label="Use prior knowledge of population allele frequencies"> @@ -161,8 +153,8 @@ </help> <validator type="regex" message="The INFO tags (separated by a comma), e.g. AN,AC">^(\w+,\w+)?$</validator> </param> - <param argument="--prior" type="float" value="1.1e-3" optional="true" label="Prior" help="Expected substitution rate" /> - <param argument="--gvcf" type="integer" optional="true" label="Output also gVCF blocks of homozygous REF calls" help="The parameter value is the minimum per-sample depth required to include a site in the non-variant block" /> + <param argument="--prior" type="float" value="1.1e-3" optional="true" label="Prior" help="Expected substitution rate"/> + <param argument="--gvcf" type="integer" optional="true" label="Output also gVCF blocks of homozygous REF calls" help="The parameter value is the minimum per-sample depth required to include a site in the non-variant block"/> </when> <when value="consensus"> <conditional name="genotypes"> @@ -170,15 +162,13 @@ <option value="none">Do not constrain</option> <option value="trio">trio - call genotypes given the father-mother-child constraint</option> </param> - <when value="none" /> + <when value="none"/> <when value="trio"> - <expand macro="macro_novel_rate" /> + <expand macro="macro_novel_rate"/> </when> </conditional> - <expand macro="macro_restrict" type="target" label_type="Target"> - <expand macro="macro_invert_targets" type="target" label_type="Target" /> - </expand> - <param argument="--pval-threshold" type="float" value="0.5" optional="true" label="Pval Threshold" help="Accept variant if P(ref|D)<FLOAT" /> + <expand macro="macro_target_restrict_simple" /> + <param argument="--pval-threshold" type="float" value="0.5" optional="true" label="Pval Threshold" help="Accept variant if P(ref|D)<FLOAT"/> </when> </conditional> </section> @@ -190,139 +180,187 @@ <option value="Y">Y - Treat male samples as haploid and female as no-copy, regardless of the chromosome name"</option> <option value="1">1 - Treat all samples as haploid</option> </param> - <param argument="--ploidy-file" type="data" format="tabular" optional="true" label="Ploidy file" help="Space/tab-delimited list of CHROM,FROM,TO,SEX,PLOIDY" /> - <expand macro="macro_restrict" /> - <expand macro="macro_samples" /> + <param argument="--ploidy-file" type="data" format="tabular" optional="true" label="Ploidy file" help="Space/tab-delimited list of CHROM,FROM,TO,SEX,PLOIDY"/> + <expand macro="macro_region_restrict"/> + <expand macro="macro_samples"/> </section> <section name="sec_input_output" expanded="false" title="Input/output Options"> - <param argument="--group-samples" type="boolean" truevalue="--group-samples -" falsevalue="" label="Single Sample Calling" help="Group samples by population for single-sample calling (-G - is the only option implemented so far)" /> - <param argument="--keep-alts" type="boolean" truevalue="--keep-alts" falsevalue="" label="Keep alts" help="Output all alternate alleles present in the alignments even if they do not appear in any of the genotypes" /> - <param argument="--format-fields" type="text" value="" optional="true" label="Comma-separated list of FORMAT fields to output for each sample" - help="Currently GQ and GP fields are supported" > + <param argument="--group-samples" type="boolean" truevalue="--group-samples -" falsevalue="" label="Single Sample Calling" help="Group samples by population for single-sample calling (-G - is the only option implemented so far)"/> + <param argument="--keep-alts" type="boolean" truevalue="--keep-alts" falsevalue="" label="Keep alts" help="Output all alternate alleles present in the alignments even if they do not appear in any of the genotypes"/> + <param argument="--format-fields" type="text" value="" optional="true" label="Comma-separated list of FORMAT fields to output for each sample" help="Currently GQ and GP fields are supported"> <validator type="regex" message="FORMAT terms separated by commas">^([A-Za-z]+(,[A-Za-z]+)*)?$</validator> </param> - <param argument="--keep-masked-ref" type="boolean" truevalue="--keep-masked-ref" falsevalue="" label="Keep masked reference alleles" help="Output sites where REF allele is N" /> + <param argument="--keep-masked-ref" type="boolean" truevalue="--keep-masked-ref" falsevalue="" label="Keep masked reference alleles" help="Output sites where REF allele is N"/> <param argument="--skip-variants" type="select" optional="true" label="Skip variants" help="Skip indels/SNP sites"> <option value="indels">indels</option> <option value="snps">snps</option> </param> - <param argument="--variants-only" type="boolean" truevalue="--variants-only" falsevalue="" label="Output variant sites only" /> + <param argument="--variants-only" type="boolean" truevalue="--variants-only" falsevalue="" label="Output variant sites only"/> <expand macro="macro_output_tags"> <option value="INFO/PV4">INFO/PV4: P-values for strand bias, baseQ bias, mapQ bias and tail</option> <option value="FORMAT/GQ">FORMAT/GQ: Phred-scaled genotype quality</option> <option value="FORMAT/GP">FORMAT/GP: Phred-scaled genotype posterior probabilities</option> </expand> </section> - <expand macro="macro_select_output_type" /> + <expand macro="macro_select_output_type"/> </inputs> <outputs> <expand macro="macro_vcf_output"/> </outputs> <tests> <test> - <param name="input_file" ftype="vcf" value="mpileup.vcf" /> - <param name="method" value="multiallelic" /> - <param name="variants_only" value="true" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + </conditional> + </section> + <section name="sec_input_output"> + <param name="variants_only" value="true"/> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="DP4=2,4,8,11;MQ=49" /> + <has_text text="DP4=2,4,8,11;MQ=49"/> + </assert_contents> + </output> + </test> + <test> + <param name="input_file" ftype="vcf" value="mpileup.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + <param name="gvcf" value="0"/> + </conditional> + </section> + <param name="output_type" value="v"/> + <output name="output_file"> + <assert_contents> + <has_text text="MIN_DP"/> + <has_text text="DP4=2,4,8,11;MQ=49"/> </assert_contents> </output> </test> <test> - <param name="input_file" ftype="vcf" value="mpileup.vcf" /> - <param name="method" value="multiallelic" /> - <param name="gvcf" value="0" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.X.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + </conditional> + </section> + <section name="sec_file_format"> + <param name="ploidy_file" value="mpileup.ploidy"/> + </section> + <section name="sec_restrict"> + <param name="samples_file" value="mpileup.samples"/> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="MinDP" /> - <has_text text="DP4=2,4,8,11;MQ=49" /> + <has_text text="DP4=2,4,8,11;MQ=49"/> </assert_contents> </output> </test> <test> - <param name="input_file" ftype="vcf" value="mpileup.X.vcf" /> - <param name="method" value="multiallelic" /> - <param name="ploidy_file" value="mpileup.ploidy" /> - <param name="samples_file" value="mpileup.samples" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.X.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="consensus"/> + </conditional> + </section> + <param name="output_type" value="v"/> + <section name="sec_file_format"> + <param name="ploidy_file" value="mpileup.ploidy"/> + </section> <output name="output_file"> <assert_contents> - <has_text text="DP4=2,4,8,11;MQ=49" /> - </assert_contents> - </output> - </test> - <test> - <param name="input_file" ftype="vcf" value="mpileup.X.vcf" /> - <param name="method" value="consensus" /> - <param name="output_type" value="v" /> - <param name="ploidy_file" value="mpileup.ploidy" /> - <output name="output_file"> - <assert_contents> - <has_text text="DP4=2,4,8,11" /> - <has_text text="PV4=1,1,1,1" /> + <has_text text="DP4=2,4,8,11"/> + <has_text text="PV4=1,1,1,1"/> </assert_contents> </output> </test> <!-- Test annotate --> <test> - <param name="input_file" ftype="vcf" value="mpileup.X.vcf" /> - <param name="method" value="consensus" /> - <param name="output_type" value="v" /> - <param name="ploidy_file" value="mpileup.ploidy" /> + <param name="input_file" ftype="vcf" value="mpileup.X.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="consensus"/> + </conditional> + </section> + <param name="output_type" value="v"/> + <section name="sec_file_format"> + <param name="ploidy_file" value="mpileup.ploidy"/> + </section> <section name="sec_input_output"> <param name="output_tags" value="INFO/PV4"/> </section> <output name="output_file"> <assert_contents> - <has_text text="DP4=2,4,8,11" /> - <has_text text="PV4=1,1,1,1" /> + <has_text text="DP4=2,4,8,11"/> + <has_text text="PV4=1,1,1,1"/> </assert_contents> </output> <assert_command> - <has_text text="--annotate" /> + <has_text text="--annotate"/> </assert_command> </test> <!-- Test region overlap--> <test> - <param name="input_file" ftype="vcf" value="mpileup.vcf" /> - <param name="method" value="multiallelic" /> - <param name="variants_only" value="true" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + </conditional> + </section> + <section name="sec_input_output"> + <param name="variants_only" value="true"/> + </section> + <param name="output_type" value="v"/> <section name="sec_restrict"> - <param name="regions_overlap" value="1"/> + <conditional name="regions"> + <param name="regions_src" value="regions" /> + <repeat name="region_specs"> + <param name="chrom" value="17" /> + </repeat> + </conditional> </section> <output name="output_file"> <assert_contents> - <has_text text="DP4=2,4,8,11;MQ=49" /> + <has_text text="DP4=2,4,8,11;MQ=49"/> </assert_contents> </output> <assert_command> - <has_text text="--regions-overlap" /> + <has_text text="--regions-overlap"/> </assert_command> </test> <!-- Test group samples option--> <test> - <param name="input_file" ftype="vcf" value="mpileup.AD.vcf" /> - <param name="method" value="multiallelic" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.AD.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + </conditional> + </section> + <param name="output_type" value="v"/> <section name="sec_input_output"> - <param name="group_samples" value="true" /> + <param name="group_samples" value="true"/> </section> <output name="output_file"> <assert_contents> - <has_text text="bcftools_callCommand=call -m --prior 0.0011 --group-samples - " /> - <has_text text="DP=1;ADF=1;ADR=0;DPR=1;MQ0F=0;AN=2;DP4=1,0,0,0;MQ=37" /> + <has_text text="bcftools_callCommand=call -m --prior 0.0011 --group-samples - "/> + <has_text text="DP=1;ADF=1;ADR=0;DPR=1;MQ0F=0;AN=2;DP4=1,0,0,0;MQ=37"/> </assert_contents> </output> </test> <test> <!-- Test targets-file option--> - <param name="input_file" ftype="vcf" value="mpileup.AD.vcf" /> - <param name="method" value="multiallelic" /> - <param name="output_type" value="v" /> + <param name="input_file" ftype="vcf" value="mpileup.AD.vcf"/> + <section name="sec_consensus_variant_calling"> + <conditional name="variant_calling"> + <param name="method" value="multiallelic"/> + </conditional> + </section> + <param name="output_type" value="v"/> <section name="sec_consensus_variant_calling"> <conditional name="variant_calling"> <conditional name="genotypes"> @@ -335,8 +373,8 @@ </section> <output name="output_file"> <assert_contents> - <has_text text="--targets-file" /> - <not_has_text text="DP=1;ADF=1;ADR=0;DPR=1;MQ0F=0;AN=2;DP4=1,0,0,0;MQ=37" /> + <has_text text="--targets-file"/> + <not_has_text text="DP=1;ADF=1;ADR=0;DPR=1;MQ0F=0;AN=2;DP4=1,0,0,0;MQ=37"/> </assert_contents> </output> </test> @@ -360,8 +398,8 @@ @BCFTOOLS_MANPAGE@#@EXECUTABLE@ -@BCFTOOLS_WIKI@ +@BCFTOOLS_HOWTOS@ ]]> </help> - <expand macro="citations" /> + <expand macro="citations"/> </tool>
--- a/macros.xml Sun Aug 18 10:21:29 2024 +0000 +++ b/macros.xml Tue Dec 02 08:04:14 2025 +0000 @@ -1,7 +1,7 @@ <macros> - <token name="@TOOL_VERSION@">1.15.1</token> - <token name="@VERSION_SUFFIX@">4</token> - <token name="@PROFILE@">20.01</token> + <token name="@TOOL_VERSION@">1.22</token> + <token name="@VERSION_SUFFIX@">0</token> + <token name="@PROFILE@">24.1</token> <xml name="bio_tools"> <xrefs> <xref type="bio.tools">bcftools</xref> @@ -10,15 +10,15 @@ <xml name="requirements"> <requirements> <requirement type="package" version="@TOOL_VERSION@">bcftools</requirement> - <requirement type="package" version="1.15.1">htslib</requirement> + <requirement type="package" version="1.22.1">htslib</requirement> <yield /> </requirements> </xml> <xml name="samtools_requirement"> - <requirement type="package" version="1.15.1">samtools</requirement> + <requirement type="package" version="1.22.1">samtools</requirement> </xml> <xml name="matplotlib_requirement"> - <requirement type="package" version="3.5.3">matplotlib</requirement> + <requirement type="package" version="3.10.7">matplotlib</requirement> </xml> <xml name="version_command"> <version_command>bcftools 2>&1 | grep 'Version:'</version_command> @@ -30,16 +30,11 @@ <yield /> </citations> </xml> - <token name="@BCFTOOLS_WIKI@">https://github.com/samtools/bcftools/wiki</token> - <token name="@BCFTOOLS_MANPAGE@">http://samtools.github.io/bcftools/bcftools.html</token> + <token name="@BCFTOOLS_HOWTOS@">https://samtools.github.io/bcftools/howtos/index.html</token> + <token name="@BCFTOOLS_MANPAGE@">https://www.htslib.org/doc/bcftools.html</token> <token name="@THREADS@"> --threads \${GALAXY_SLOTS:-4} </token> - <token name="@PREPARE_ENV@"> -<![CDATA[ -export BCFTOOLS_PLUGINS=`which bcftools | sed 's,bin/bcftools,libexec/bcftools,'`; -]]> - </token> <xml name="macro_input"> <!-- REQUIRES https://github.com/galaxyproject/galaxy/pull/14605/files @@ -294,8 +289,8 @@ help="inverts the query/filtering applied by the targets" /> </xml> - <xml name="macro_restriction_spec" token_type="region" token_label_type="Region"> - <repeat name="@TYPE@s" title="@LABEL_TYPE@ Filter" default="1" min="1"> + <xml name="macro_restriction_spec" tokens="type,label_type"> + <repeat name="@TYPE@_specs" title="@LABEL_TYPE@ Filter" default="1" min="1"> <param name="chrom" type="text" label="@LABEL_TYPE@ chromosome"> <validator type="expression" message="A chromosome identifier is required when specifying a @LABEL_TYPE@ filter">value.strip()</validator> </param> @@ -305,36 +300,85 @@ <param name="stop" type="text" label="@LABEL_TYPE@ end position"> <validator type="expression" message="an integer number is required">not value or value.isdigit()</validator> </param> - <yield /> </repeat> </xml> - <xml name="macro_restrictions_file" token_type="region" token_label_type="Region"> + <xml name="macro_restrictions_file" tokens="type,label_type"> <param name="@TYPE@s_file" type="data" format="tabular" label="@LABEL_TYPE@s File" help="restrict to @LABEL_TYPE@s listed in a file" /> </xml> - <xml name="macro_restrict" token_type="region" token_label_type="Region" > + <xml name="__macro_restrict__" tokens="type,label_select,label_type,pos_is_default,rec_is_default"> <conditional name="@TYPE@s"> - <param name="@TYPE@s_src" type="select" label="@LABEL_TYPE@s"> - <option value="__none__">Do not restrict to @LABEL_TYPE@s</option> - <option value="@TYPE@s">Specify one or more @LABEL_TYPE@(s) directly</option> - <option value="@TYPE@s_file">Operate on @LABEL_TYPE@s specified in a history dataset</option> + <param name="@TYPE@s_src" type="select" label="@LABEL_SELECT@"> + <option value="__none__">Do not restrict to @LABEL_TYPE@s</option> + <option value="@TYPE@s">Specify one or more @LABEL_TYPE@(s) directly</option> + <option value="@TYPE@s_file">Operate on @LABEL_TYPE@s specified in a history dataset</option> + </param> + <when value="__none__"/> + <when value="@TYPE@s"> + <expand macro="macro_restriction_spec" type="@TYPE@" label_type="@LABEL_TYPE@" /> + <yield /> + <param argument="--@TYPE@s-overlap" type="select" label="Consider variant calls with partial overlap with @LABEL_TYPE@(s) if ..." help="Set to 0 if the record has to have POS inside a region; set to 1 if also overlapping records with POS outside a region should be included (this includes indels with POS at the end of a region, which are technically outside the region); or set to 2 to include only true overlapping variation (compare the full VCF representation 'TA>T-' vs the true sequence variation 'A>-')."> + <option value="0" selected="@POS_IS_DEFAULT@">0: the variant's POS falls in the region</option> + <option value="1" selected="@REC_IS_DEFAULT@">1: any part of the variant's representation overlaps the region</option> + <option value="2">2: the variant's actual sequence change falls in the region</option> + </param> + </when> + <when value="@TYPE@s_file"> + <expand macro="macro_restrictions_file" type="@TYPE@" label_type="@LABEL_TYPE@" /> + <yield /> + <param argument="--@TYPE@s-overlap" type="select" label="@LABEL_TYPE@ overlap" help="Include if POS in the region (0), record overlaps (1), variant overlaps (2)"> + <option value="0" selected="@POS_IS_DEFAULT@">0: POS in the region</option> + <option value="1" selected="@REC_IS_DEFAULT@">1: Record overlaps</option> + <option value="2">2: Variant overlaps</option> </param> - <when value="__none__"/> - <when value="@TYPE@s"> - <expand macro="macro_restriction_spec" type="@TYPE@" label_type="@LABEL_TYPE@" /> - <yield /> - </when> - <when value="@TYPE@s_file"> - <expand macro="macro_restrictions_file" type="@TYPE@" label_type="@LABEL_TYPE@" /> - <yield /> - </when> + </when> + </conditional> + </xml> + + <xml name="__macro_restrict_simple__" tokens="type,label_select,label_type"> + <conditional name="@TYPE@s"> + <param name="@TYPE@s_src" type="select" label="@LABEL_SELECT@"> + <option value="__none__">Do not restrict to @LABEL_TYPE@s</option> + <option value="@TYPE@s">Specify one or more @LABEL_TYPE@(s) directly</option> + <option value="@TYPE@s_file">Operate on @LABEL_TYPE@s specified in a history dataset</option> + </param> + <when value="__none__"/> + <when value="@TYPE@s"> + <expand macro="macro_restriction_spec" type="@TYPE@" label_type="@LABEL_TYPE@" /> + <yield /> + </when> + <when value="@TYPE@s_file"> + <expand macro="macro_restrictions_file" type="@TYPE@" label_type="@LABEL_TYPE@" /> + <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> + + <xml name="macro_region_restrict" token_label_select="Regions"> + <expand macro="__macro_restrict__" type="region" label_select="@LABEL_SELECT@" label_type="Region" pos_is_default="false" rec_is_default="true" /> + </xml> + + <xml name="macro_region_restrict_simple" token_label_select="Regions"> + <!-- To be used with subcommands that don't support the 'regions-overlap' option. Currently only mpileup? --> + <expand macro="__macro_restrict_simple__" type="region" label_select="@LABEL_SELECT@" label_type="Region" /> + </xml> + + <xml name="macro_target_restrict"> + <expand macro="__macro_restrict__" type="target" label_select="Target" label_type="Target" pos_is_default="true" rec_is_default="false"> + <expand macro="macro_invert_targets" /> + </expand> + </xml> + + <xml name="macro_target_restrict_simple"> + <!-- To be used with subcommands that don't support the 'regions-overlap' option. Currently only mpileup and call? --> + <expand macro="__macro_restrict_simple__" type="target" label_select="Target" label_type="Target"> + <expand macro="macro_invert_targets" /> + </expand> + </xml> + + <xml name="macro_mask_restrict"> + <expand macro="__macro_restrict__" type="mask" label_select="Mask" label_type="Mask" pos_is_default="false" rec_is_default="true" /> </xml> <token name="@PARSE_INTERVALS@"> @@ -345,7 +389,7 @@ #set $start = str($i.start).strip() #set $stop = str($i.stop).strip() #if $start or $stop: - $components.append($chrom + ':' + ($start or '0') + '-' + $stop) + $components.append($chrom + ':' + ($start or '1') + '-' + $stop) #else: $components.append($chrom) #end if @@ -357,18 +401,14 @@ <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: + #if $section.conditional_soft_filter.masks.masks_src != '__none__': + #if $section.conditional_soft_filter.masks.masks_src == 'masks': + #set $intervals = $section.conditional_soft_filter.masks.mask_specs + @PARSE_INTERVALS@ + --mask '$intervals_spec' + #elif $section.conditional_soft_filter.masks.masks_src == 'masks_file': --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 @@ -378,37 +418,42 @@ <token name="@REGIONS@"> <![CDATA[ -#if $section.regions.regions_src == 'regions': - #set $intervals = $section.regions.regions - @PARSE_INTERVALS@ - --regions '$intervals_spec' -#elif $section.regions.regions_src == 'regions_file' and $section.regions.regions_file: - #if $regions_path is not None: - --regions-file '$regions_path' - #else: - --regions-file '$section.regions.regions_file' +#if $section.regions.regions_src != '__none__': + #if $section.regions.regions_src == 'regions': + #set $intervals = $section.regions.region_specs + @PARSE_INTERVALS@ + --regions '$intervals_spec' + #elif $section.regions.regions_src == 'regions_file': + #if $regions_path is not None: + --regions-file '$regions_path' + #else: + --regions-file '$section.regions.regions_file' + #end if + #end if + #if 'regions_overlap' in $section.regions: + --regions-overlap $section.regions.regions_overlap #end if #end if -#if $section.regions_overlap - --regions-overlap $section.regions_overlap -#end if - ]]> </token> <token name="@TARGETS@"> <![CDATA[ -#if $targets_path: - --targets-file "${section.targets.invert_targets_file}${targets_path}" -#elif $section.targets.targets_src == 'targets': - #set $intervals = $section.targets.targets - @PARSE_INTERVALS@ - --targets '${section.targets.invert_targets_file}$intervals_spec' -#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 +#if $section.targets.targets_src != '__none__': + #if $section.targets.targets_src == 'targets': + #set $intervals = $section.targets.target_specs + @PARSE_INTERVALS@ + --targets '${section.targets.invert_targets_file}$intervals_spec' + #elif $section.targets.targets_src == 'targets_file': + #if $targets_path: + --targets-file '${section.targets.invert_targets_file}${targets_path}' + #else: + --targets-file '${section.targets.invert_targets_file}${section.targets.targets_file}' + #end if + #end if + #if 'targets_overlap' in $section.targets: + --targets-overlap $section.targets.targets_overlap + #end if #end if ]]> </token> @@ -417,7 +462,7 @@ <![CDATA[ #set $regions_path = None #if 'regions' in $section - #if $section.regions.regions_src == 'regions_file' and $section.regions.regions_file: + #if $section.regions.regions_src == 'regions_file': #if $section.regions.regions_file.ext.startswith('bed'): #set $regions_path = 'regions_file.bed' ln -s '$section.regions.regions_file' $regions_path && @@ -461,11 +506,31 @@ </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)" /> - <param argument="--samples_file" type="data" format="tabular" optional="true" label="Samples file" - help="File of samples to include" /> + <param argument="--samples_file" type="data" format="tabular" optional="true" label="Samples file" help="File of samples to include" /> <param name="invert_samples_file" type="boolean" truevalue="^" falsevalue="" checked="false" label="Invert Samples file" help="inverts the query/filtering applied by Samples file" /> </xml> + + <xml name="macro_samples_enhanced" token_all_samples="" token_file_help="File listing samples to include one per line."> + <conditional name="specify_samples"> + <param name="how" type="select" label="How do you want to select samples?"> + <option value="-s">Specify samples manually</option> + <option value="-S">Provide sample file</option> + <option value="@ALL_SAMPLES@" selected="true">No selection; just use all samples found in input</option> + </param> + <when value="-s"> + <param argument="--samples" name="samples_spec" type="text" optional="false" label="Sample(s)" help="Specify a single sample by name or a comma-separated list of sample names."> + <validator type="expression" message="Please specify a single sample by name or a comma-separated list of sample names">value.strip() and value[0] not in "^," and ",," not in value</validator> + </param> + <param name="invert_samples" type="boolean" truevalue="^" falsevalue="" label="Exclude these samples instead of including them?" help="Equivalent to prefixing the list of samples with "^" on the command line."/> + </when> + <when value="-S"> + <param argument="--samples_file" type="data" format="tabular" optional="@IS_OPTIONAL@" label="Samples file" help="@FILE_HELP@" /> + <param name="invert_samples" type="boolean" truevalue="^" falsevalue="" label="Exclude the samples listed in the file instead of including them?" help="Equivalent to prefixing the file with "^" on the command line."/> + </when> + <when value="@ALL_SAMPLES@" /> + </conditional> + </xml> <token name="@SAMPLES@"> #set $samples_defined = False #if str($section.samples) != '': @@ -478,8 +543,8 @@ #end if </token> - <xml name="macro_sample"> - <param name="sample" type="text" optional="true" label="Sample" help="Apply variants of the given sample" /> + <xml name="macro_sample" token_help="Apply variants of the given sample"> + <param name="sample" type="text" optional="true" label="Sample" help="@HELP@" /> </xml> <token name="@SAMPLE@"> #if $section.sample:
