Mercurial > repos > iuc > bcftools_mpileup
changeset 21:43f0efd586c4 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:25:15 +0000 |
| parents | 0a5dcc9a8ec2 |
| children | |
| files | bcftools_mpileup.xml macros.xml |
| diffstat | 2 files changed, 300 insertions(+), 207 deletions(-) [+] |
line wrap: on
line diff
--- a/bcftools_mpileup.xml Sun Aug 18 10:02:02 2024 +0000 +++ b/bcftools_mpileup.xml Tue Dec 02 08:25:15 2025 +0000 @@ -1,4 +1,4 @@ -<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy4" profile="@PROFILE@"> +<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> <description>Generate VCF or BCF containing genotype likelihoods for one or multiple alignment (BAM or CRAM) files</description> <macros> <token name="@EXECUTABLE@">mpileup</token> @@ -17,11 +17,11 @@ <option value="1024">The read is a PCR or optical duplicate</option> </xml> </macros> - <expand macro="bio_tools" /> + <expand macro="bio_tools"/> <expand macro="requirements"> <expand macro="samtools_requirement"/> </expand> - <expand macro="version_command" /> + <expand macro="version_command"/> <command detect_errors="aggressive"><![CDATA[ #import re #set bam_list = [] @@ -182,20 +182,18 @@ </configfile> </configfiles> <inputs> - <conditional name="input"> <param name="input_number" type="select" label="Alignment Inputs"> - <option value="single">Single BAM/CRAM</option> - <option value="multiple">Multiple BAM/CRAMs</option> + <option value="single">Single BAM/CRAM</option> + <option value="multiple">Multiple BAM/CRAMs</option> </param> <when value="single"> - <param name="input_bam" type="data" format="bam,cram" label="Input BAM/CRAM" /> + <param name="input_bam" type="data" format="bam,cram" label="Input BAM/CRAM"/> </when> <when value="multiple"> - <param name="input_bams" type="data" format="bam,cram" multiple="true" label="Input BAM/CRAMs" /> + <param name="input_bams" type="data" format="bam,cram" multiple="true" label="Input BAM/CRAMs"/> </when> </conditional> - <conditional name="reference_source"> <param name="reference_source_selector" type="select" label="Choose the source for the reference genome"> <option value="cached">Locally cached</option> @@ -208,11 +206,10 @@ </param> </when> <when value="history"> - <param name="ref_file" type="data" format="fasta" label="Genome Reference" /> + <param name="ref_file" type="data" format="fasta" label="Genome Reference"/> </when> <when value="none"/> </conditional> - <section name="sec_indel" expanded="false" title="Indel Calling"> <conditional name="perform_indel_calling"> <param name="perform_indel_calling_selector" type="select" label="Perform INDEL calling"> @@ -220,7 +217,7 @@ <option value="perform_indel_calling">Perform INDEL calling and set advanced options</option> <option value="do_not_perform_indel_calling">Do not perform INDEL calling</option> </param> - <when value="perform_indel_calling_def" /> + <when value="perform_indel_calling_def"/> <when value="perform_indel_calling"> <param name="gap_open_sequencing_error_probability" type="integer" value="40" label="Phred-scaled gap open sequencing error probability" help="--open-prob; Reducing this value leads to more indel calls; default=40"/> <param name="gap_extension_sequencing_error_probability" type="integer" value="20" label="Phred-scaled gap extension sequencing error probability" help="--ext-prob; Reducing this value leads to longer indels. default=20"/> @@ -234,17 +231,16 @@ <param name="platform_entry" type="text" value="" label="Platform to use for INDEL candidates" help="It is recommended to collect indel candidates from sequencing technologies that have low indel error rate such as ILLUMINA"/> </repeat> </when> - <when value="do_not_perform_indel_calling" /> + <when value="do_not_perform_indel_calling"/> </conditional> <param argument="--ambig-reads" type="select" optional="true" label="Ambiguous indel reads" help="What to do with ambiguous indel reads that do not span an entire short tandem repeat region: discard ambiguous reads from calling and do not increment high-quality AD depth counters (drop), exclude from calling but increment AD counters proportionally (incAD), exclude from calling and increment the first value of the AD counter (incAD0) "> <option value="drop">Drop</option> <option value="incAD">IncAD</option> <option value="incAD0">IncAD0</option> </param> - <param argument="--indel-bias" type="float" min="0" value="" optional="true" label="Indel bias" help="Skews the indel scores up or down, trading recall (low false-negative) vs precision (low false-positive) [1.0]. In Bcftools 1.12 and earlier this parameter didn’t exist, but had an implied value of 1.0. If you are planning to do heavy filtering of variants, selecting the best quality ones only (favouring precision over recall), it is advisable to set this lower (such as 0.75) while higher depth samples or where you favour recall rates over precision may work better with a higher value such as 2.0" /> - <param argument="--indel-size" type="integer" min="0" value="" optional="true" label="Indel size" help="Indel window size to use when assessing the quality of candidate indels. Note that although the window size approximately corresponds to the maximum indel size considered, it is not an exact threshold. Default: 110" /> + <param argument="--indel-bias" type="float" min="0" value="" optional="true" label="Indel bias" help="Skews the indel scores up or down, trading recall (low false-negative) vs precision (low false-positive) [1.0]. In Bcftools 1.12 and earlier this parameter didn’t exist, but had an implied value of 1.0. If you are planning to do heavy filtering of variants, selecting the best quality ones only (favouring precision over recall), it is advisable to set this lower (such as 0.75) while higher depth samples or where you favour recall rates over precision may work better with a higher value such as 2.0"/> + <param argument="--indel-size" type="integer" min="0" value="" optional="true" label="Indel size" help="Indel window size to use when assessing the quality of candidate indels. Note that although the window size approximately corresponds to the maximum indel size considered, it is not an exact threshold. Default: 110"/> </section> - <section name="sec_filtering" expanded="false" title="Input Filtering Options"> <param name="max_reads_per_bam" type="integer" value="250" min="1" label="Max reads per BAM" help="--max-depth; default=250"/> <param name="ignore_overlaps" type="boolean" truevalue="-x" falsevalue="" checked="False" label="Disable read-pair overlap detection" help="--ignore-overlaps"/> @@ -256,19 +252,19 @@ </param> <when value="filter"> <param argument="--skip-all-set" type="select" display="checkboxes" label="Skip reads with all of the FLAG bits set" multiple="True" help="--skip-all-set"> - <expand macro="bam_flag_options" /> + <expand macro="bam_flag_options"/> </param> <param argument="--skip-any-set" type="select" display="checkboxes" label="Skip reads with any of the FLAG bits set" multiple="True" help="--skip-any-set"> - <expand macro="bam_flag_options" /> + <expand macro="bam_flag_options"/> </param> <param argument="--skip-all-unset" type="select" display="checkboxes" label="Skip reads with all of the FLAG bits unset" multiple="True" help="--skip-all-unset"> - <expand macro="bam_flag_options" /> + <expand macro="bam_flag_options"/> </param> <param argument="--skip-any-unset" type="select" display="checkboxes" label="Skip reads with any of the FLAG bits unset" multiple="True" help="--skip-any-unset"> - <expand macro="bam_flag_options" /> + <expand macro="bam_flag_options"/> </param> </when> - <when value="nofilter" /> + <when value="nofilter"/> </conditional> <conditional name="quality"> <param label="Quality Options" name="quality_settings" type="select"> @@ -291,7 +287,6 @@ </when> <when value="none"/> </conditional> - <conditional name="read_groups"> <param name="read_groups_selector" type="select" label="Select read groups to include or exclude" help="--read-groups"> <option value="no_limit" selected="True">use defaults</option> @@ -301,7 +296,7 @@ </param> <when value="history"> <param name="read_groups" format="txt" label="Text file" type="data"> - <validator type="dataset_ok_validator" /> + <validator type="dataset_ok_validator"/> </param> <param name="rg_action" type="select" label="Include or Exclude these Read Groups"> <option value="" selected="true">Include</option> @@ -309,27 +304,23 @@ </param> </when> <when value="paste"> - <param name="group_paste" type="text" size="10x35" area="true" label="Read groups" help="Paste a list of read groups" /> + <param name="group_paste" type="text" size="10x35" area="true" label="Read groups" help="Paste a list of read groups"/> <param name="rg_action" type="select" label="Include or Exclude these Read Groups"> <option value="" selected="true">Include</option> <option value="^">Exclude</option> </param> </when> - <when value="ignore_rg" /> - <when value="no_limit" /> + <when value="ignore_rg"/> + <when value="no_limit"/> </conditional> </section> - <section name="sec_restrict" expanded="false" title="Restrict to"> - <expand macro="macro_restrict" /> - <expand macro="macro_restrict" type="target" label_type="Target"> - <expand macro="macro_invert_targets" /> - </expand> + <expand macro="macro_region_restrict_simple"/> + <expand macro="macro_target_restrict_simple"/> </section> <section name="sec_subset" expanded="false" title="Subset Options"> - <expand macro="macro_samples" /> + <expand macro="macro_samples"/> </section> - <section name="sec_output_options" expanded="false" title="Output options"> <expand macro="macro_output_tags"> <option value="DP">DP (Number of high-quality bases)</option> @@ -353,172 +344,209 @@ <validator type="regex" message="integers separated by commas">^(\d+(,\d+)*)?$</validator> </param> </section> - - <expand macro="macro_select_output_type" /> - + <expand macro="macro_select_output_type"/> </inputs> <outputs> - <expand macro="macro_vcf_output" /> + <expand macro="macro_vcf_output"/> </outputs> <tests> <test> - <param name="input_number" value="single" /> - <param name="input_bam" ftype="bam" value="mpileup.1.bam" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> - <param name="output_type" value="v" /> + <conditional name="input"> + <param name="input_number" value="single"/> + <param name="input_bam" ftype="bam" value="mpileup.1.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;"/> </assert_contents> </output> </test> <test> - <param name="input_number" value="single" /> - <param name="input_bam" ftype="bam" value="mpileup.1.bam" /> - <param name="reference_source_selector" value="cached" /> - <param name="ref_file" value="mpileup" /> - <param name="quality_settings" value="adjust" /> - <param name="output_type" value="v" /> + <conditional name="input"> + <param name="input_number" value="single"/> + <param name="input_bam" ftype="bam" value="mpileup.1.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="cached"/> + <param name="ref_file" value="mpileup"/> + </conditional> + <section name="sec_filtering"> + <conditional name="quality"> + <param name="quality_settings" value="adjust"/> + </conditional> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;"/> </assert_contents> </output> </test> <test> - <param name="input_number" value="single" /> - <param name="input_bam" ftype="cram" value="mpileup.3.cram" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> - <param name="output_type" value="v" /> + <conditional name="input"> + <param name="input_number" value="single"/> + <param name="input_bam" ftype="cram" value="mpileup.3.cram"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00102" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=5;" /> + <has_text text="mpileup"/> + <has_text text="HG00102"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=5;"/> </assert_contents> </output> </test> <test> - <param name="input_number" value="multiple" /> - <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> + <conditional name="input"> + <param name="input_number" value="multiple"/> + <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> <section name="sec_restrict"> <conditional name="regions"> - <param name="regions_src" value="regions" /> - <repeat name="regions"> - <param name="chrom" value="17" /> - <param name="start" value="100" /> - <param name="stop" value="110" /> + <param name="regions_src" value="regions"/> + <repeat name="region_specs"> + <param name="chrom" value="17"/> + <param name="start" value="100"/> + <param name="stop" value="110"/> </repeat> </conditional> </section> - <param name="output_tags" value="DP,INFO/AD,DV" /> - <param name="output_type" value="v" /> + <section name="sec_output_options"> + <param name="output_tags" value="DP,INFO/AD,DV"/> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text text="HG00101" /> - <has_text text="HG00102" /> - <has_text text="ID=DP," /> - <not_has_text text="17\t111" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=18;AD=17,0;" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text text="HG00101"/> + <has_text text="HG00102"/> + <has_text text="ID=DP,"/> + <not_has_text text="17\t111"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=18;AD=17,0;"/> </assert_contents> </output> </test> <test> - <param name="input_number" value="multiple" /> - <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> + <conditional name="input"> + <param name="input_number" value="multiple"/> + <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> <section name="sec_restrict"> <conditional name="targets"> - <param name="targets_src" value="targets" /> - <repeat name="targets"> - <param name="chrom" value="17" /> - <param name="start" value="100" /> - <param name="stop" value="104" /> + <param name="targets_src" value="targets"/> + <repeat name="target_specs"> + <param name="chrom" value="17"/> + <param name="start" value="100"/> + <param name="stop" value="104"/> </repeat> </conditional> </section> - <param name="output_tags" value="DP,INFO/AD,DV" /> - <param name="output_type" value="v" /> + <section name="sec_output_options"> + <param name="output_tags" value="DP,INFO/AD,DV"/> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text text="HG00101" /> - <has_text text="HG00102" /> - <has_text text="ID=DP," /> - <not_has_text text="17\t105" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=18;AD=17,0;" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text text="HG00101"/> + <has_text text="HG00102"/> + <has_text text="ID=DP,"/> + <not_has_text text="17\t105"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=18;AD=17,0;"/> </assert_contents> </output> </test> <test> - <param name="input_number" value="multiple" /> - <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> + <conditional name="input"> + <param name="input_number" value="multiple"/> + <param name="input_bams" ftype="bam" value="mpileup.1.bam,mpileup.2.bam,mpileup.3.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> <section name="sec_restrict"> <conditional name="regions"> - <param name="regions_src" value="regions" /> - <repeat name="regions"> - <param name="chrom" value="17" /> - <param name="start" value="1050" /> - <param name="stop" value="1060" /> + <param name="regions_src" value="regions"/> + <repeat name="region_specs"> + <param name="chrom" value="17"/> + <param name="start" value="1050"/> + <param name="stop" value="1060"/> </repeat> </conditional> </section> - <param name="filter_flags" value="filter" /> - <param name="skip_all_set" value="4,16" /> - <param name="output_type" value="v" /> + <section name="sec_filtering"> + <conditional name="filter_by_flags"> + <param name="filter_flags" value="filter"/> + <param name="skip_all_set" value="4,16"/> + </conditional> + </section> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text_matching expression="17\t1050\t.\tA\t" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text_matching expression="17\t1050\t.\tA\t"/> </assert_contents> </output> <assert_command> - <has_text text="--skip-all-set" /> + <has_text text="--skip-all-set"/> </assert_command> </test> <!-- Test indel options--> <test> - <param name="input_number" value="single" /> - <param name="input_bam" ftype="bam" value="mpileup.1.bam" /> - <param name="reference_source_selector" value="history" /> - <param name="ref_file" ftype="fasta" value="mpileup.ref.fa" /> + <conditional name="input"> + <param name="input_number" value="single"/> + <param name="input_bam" ftype="bam" value="mpileup.1.bam"/> + </conditional> + <conditional name="reference_source"> + <param name="reference_source_selector" value="history"/> + <param name="ref_file" ftype="fasta" value="mpileup.ref.fa"/> + </conditional> <section name="sec_indel"> <param name="ambig_reads" value="drop"/> <param name="indel_bias" value="1"/> <param name="indel_size" value="110"/> </section> - <param name="output_type" value="v" /> + <param name="output_type" value="v"/> <output name="output_file"> <assert_contents> - <has_text text="mpileup" /> - <has_text text="HG00100" /> - <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;" /> - <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;" /> + <has_text text="mpileup"/> + <has_text text="HG00100"/> + <has_text_matching expression="17\t1\t.\tA\t...\t0\t.\tDP=5;"/> + <has_text_matching expression="17\t100\t.\tC\t...\t0\t.\tDP=9;"/> </assert_contents> </output> <assert_command> - <has_text text="--ambig-reads" /> - <has_text text="--indel-bias" /> - <has_text text="--indel-size" /> + <has_text text="--ambig-reads"/> + <has_text text="--indel-bias"/> + <has_text text="--indel-size"/> </assert_command> - </test> </tests> <help><![CDATA[ @@ -544,7 +572,7 @@ @BCFTOOLS_MANPAGE@#@EXECUTABLE@ -@BCFTOOLS_WIKI@ +@BCFTOOLS_HOWTOS@ ]]></help> - <expand macro="citations" /> + <expand macro="citations"/> </tool>
--- a/macros.xml Sun Aug 18 10:02:02 2024 +0000 +++ b/macros.xml Tue Dec 02 08:25:15 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:
