changeset 6:35c00763cb5c draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/gatk2 commit cf399638ebca4250bcc15f468238a9964de97b33
author iuc
date Mon, 04 Jun 2018 05:38:15 -0400
parents 84584664264c
children
files base_recalibrator.xml depth_of_coverage.xml gatk2_macros.xml gatk2_wrapper.py haplotype_caller.xml indel_realigner.xml print_reads.xml readme.rst realigner_target_creator.xml reduce_reads.xml test-data/phiX.fasta tool_data_table_conf.xml.sample tool_dependencies.xml unified_genotyper.xml variant_annotator.xml variant_apply_recalibration.xml variant_combine.xml variant_eval.xml variant_filtration.xml variant_recalibrator.xml variant_select.xml variant_validate.xml
diffstat 22 files changed, 448 insertions(+), 376 deletions(-) [+]
line wrap: on
line diff
--- a/base_recalibrator.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/base_recalibrator.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_base_recalibrator" name="Base Recalibrator" version="@VERSION@.0">
   <description>calculates covariates used to recalibrate base quality scores of reads</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -36,7 +37,7 @@
         #end for
     #end if
    '
-    
+
     #set $snp_dataset_provided = False
     #set $rod_binding_names = dict()
     #for $rod_binding in $rod_bind:
@@ -51,9 +52,9 @@
         #set $rod_binding_names[$rod_bind_name] = $rod_binding_names.get( $rod_bind_name, -1 ) + 1
         -d "--knownSites:${rod_bind_name},%(file_type)s" "${rod_binding.rod_bind_type.input_rod}" "${rod_binding.rod_bind_type.input_rod.ext}" "input_${rod_bind_name}_${rod_binding_names[$rod_bind_name]}"
     #end for
-    
+
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
@@ -72,10 +73,10 @@
         ${analysis_param_type.exception_if_no_tile}
         #if str( $analysis_param_type.solid_options_type.solid_options_type_selector ) == "set":
             #if str( $analysis_param_type.solid_options_type.solid_recal_mode ) != "default":
-                --solid_recal_mode "${analysis_param_type.solid_options_type.solid_recal_mode}" 
+                --solid_recal_mode "${analysis_param_type.solid_options_type.solid_recal_mode}"
             #end if
             #if str( $analysis_param_type.solid_options_type.solid_nocall_strategy ) != "default":
-                --solid_nocall_strategy "${analysis_param_type.solid_options_type.solid_nocall_strategy}" 
+                --solid_nocall_strategy "${analysis_param_type.solid_options_type.solid_nocall_strategy}"
             #end if
         #end if
         --window_size_nqs "${analysis_param_type.window_size_nqs}"
@@ -120,13 +121,13 @@
       <option value="RepeatUnitCovariate" />
       <option value="RepeatUnitAndLengthCovariate" />
       <!--
-      Note: ReadGroupCovariate and QualityScoreCovariate are required covariates and will 
+      Note: ReadGroupCovariate and QualityScoreCovariate are required covariates and will
       be added for the user regardless of whether or not they were specified.
       <option value="QualityScoreCovariate" />
       <option value="ReadGroupCovariate" />
       -->
     </param>
-    
+
     <repeat name="rod_bind" title="Known Variants" help="Using data sets of known variants (-knownSites,--knownSites &amp;lt;knownSites&amp;gt;)">
         <conditional name="rod_bind_type">
           <param name="rod_bind_type_selector" type="select" label="Variant Type">
@@ -156,7 +157,7 @@
     </repeat>
 
     <expand macro="gatk_param_type_conditional" />
-    
+
     <conditional name="analysis_param_type">
       <param name="analysis_param_type_selector" type="select" label="Basic or Advanced Analysis options">
         <option value="basic" selected="True">Basic</option>
@@ -247,7 +248,7 @@
           <param name="covariates" value="ReadGroupCovariate,HomopolymerCovariate,MinimumNQSCovariate,PositionCovariate" />
           <param name="gatk_param_type_selector" value="basic" />
           <param name="analysis_param_type_selector" value="basic" />
-          <output name="output_recal" file="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" /> 
+          <output name="output_recal" file="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" />
           <output name="output_log" file="gatk/gatk_count_covariates/gatk_count_covariates_out_1.log.contains" compare="contains" />
       </test>
   </tests>
@@ -256,7 +257,7 @@
 
 "This calculation is critically dependent on being able to skip over known variant sites. Please provide a dbSNP ROD or a VCF file containing known sites of genetic variation."
 However, if you do not provide this file, the '--run_without_dbsnp_potentially_ruining_quality' flag will be automatically used, and the command will be allowed to run.
-  
+
 **What it does**
 
 This walker is designed to work as the first pass in a two-pass processing step. It does a by-locus traversal operating only at sites that are not in dbSNP. We assume that all reference mismatches we see are therefore errors and indicative of poor base quality. This walker generates tables based on various user-specified covariates (such as read group, reported quality score, cycle, and dinucleotide) Since there is a large amount of data one can then calculate an empirical probability of error given the particular covariates seen at this site, where p(error) = num mismatches / num observations The output file is a CSV list of (the several covariate values, num observations, num mismatches, empirical quality score) The first non-comment line of the output file gives the name of the covariates that were used for this calculation.  Note: ReadGroupCovariate and QualityScoreCovariate are required covariates and will be added for the user regardless of whether or not they were specified Note: This walker is designed to be used in conjunction with TableRecalibrationWalker.
--- a/depth_of_coverage.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/depth_of_coverage.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,18 +1,14 @@
-<tool id="gatk2_depth_of_coverage" name="Depth of Coverage" version="@VERSION@.0">
+<tool id="gatk2_depth_of_coverage" name="Depth of Coverage" version="@VERSION@.1">
   <description>on BAM files</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">gatk2_wrapper.py
    ##--max_jvm_heap_fraction "1"
    --stdout "${output_log}"
-   #for $i, $input_bam in enumerate( $reference_source.input_bams ):
-       -d "-I" "${input_bam.input_bam}" "${input_bam.input_bam.ext}" "gatk_input_${i}"
-       #if str( $input_bam.input_bam.metadata.bam_index ) != "None":
-           -d "" "${input_bam.input_bam.metadata.bam_index}" "bam_index" "gatk_input_${i}" ##hardcode galaxy ext type as bam_index
-       #end if
-   #end for
+   @BAM_INPUTS@
    -p '
    @JAR_PATH@
     -T "DepthOfCoverage"
@@ -32,13 +28,13 @@
         #end for
     #end if
     --out "${output_per_locus_coverage}"
-    
+
     #for $ct_group in $summary_coverage_threshold_group:
         --summaryCoverageThreshold "${ct_group.summary_coverage_threshold}"
     #end for
     --outputFormat "${output_format}"
    '
-   
+
     #include source=$standard_gatk_options#
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
@@ -84,7 +80,7 @@
             &amp;&amp; mv ${output_per_locus_coverage}.sample_cumulative_coverage_proportions ${output_cumulative_coverage_proportions_sample}
         #end if
     #end if
-    
+
     #if 'readgroup' in $partition_types and ( str( $analysis_param_type.analysis_param_type_selector ) == "basic" or str( $analysis_param_type.print_bin_endpoints_and_exit ) == "" ):
         #if str( $analysis_param_type.analysis_param_type_selector ) == "basic" or str( $analysis_param_type.omit_per_sample_stats ) == "":
             &amp;&amp; mv ${output_per_locus_coverage}.read_group_summary ${output_summary_readgroup}
@@ -103,7 +99,7 @@
             &amp;&amp; mv ${output_per_locus_coverage}.read_group_cumulative_coverage_proportions ${output_cumulative_coverage_proportions_readgroup}
         #end if
     #end if
-    
+
     #if 'library' in $partition_types and ( str( $analysis_param_type.analysis_param_type_selector ) == "basic" or str( $analysis_param_type.print_bin_endpoints_and_exit ) == "" ):
         #if str( $analysis_param_type.analysis_param_type_selector ) == "basic" or str( $analysis_param_type.omit_per_sample_stats ) == "":
             &amp;&amp; mv ${output_per_locus_coverage}.library_summary ${output_summary_library}
@@ -122,54 +118,47 @@
             &amp;&amp; mv ${output_per_locus_coverage}.library_cumulative_coverage_proportions ${output_cumulative_coverage_proportions_library}
         #end if
     #end if
-    
 
   </command>
   <inputs>
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-            <param name="input_bam" type="data" format="bam" label="BAM file">
-              <validator type="unspecified_build" />
-              <validator type="dataset_metadata_in_data_table" table_name="gatk2_picard_indexes" metadata_name="dbkey" metadata_column="dbkey" message="Sequences are not currently available for the specified build." /> <!-- fixme!!! this needs to be a select -->
-            </param>
-        </repeat>
+        <expand macro="input_bams_cached" />
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;">
           <options from_data_table="gatk2_picard_indexes">
-            <!-- <filter type="data_meta" key="dbkey" ref="input_bam" column="dbkey"/> does not yet work in a repeat...--> 
+            <!-- <filter type="data_meta" key="dbkey" ref="input_bam" column="dbkey"/> does not yet work in a repeat...-->
           </options>
           <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
         </param>
       </when>
       <when value="history"> <!-- FIX ME!!!! -->
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-            <param name="input_bam" type="data" format="bam" label="BAM file" />
-        </repeat>
+
+        <expand macro="input_bams_history" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <param name="input_calculate_coverage_over_genes" type="data" format="data" label="RefSeq Rod" optional="True" help="-geneList,--calculateCoverageOverGenes &amp;lt;calculateCoverageOverGenes&amp;gt;" />
-    
+
     <param name="partition_type" type="select" label="Partition type for depth of coverage" multiple="True" display="checkboxes" help="-pt,--partitionType &amp;lt;partitionType&amp;gt;">
       <option value="sample" selected="True">sample</option>
       <option value="readgroup">readgroup</option>
       <option value="library">library</option>
     </param>
-    
+
     <repeat name="summary_coverage_threshold_group" title="Summary coverage threshold" help="-ct,--summaryCoverageThreshold &amp;lt;summaryCoverageThreshold&amp;gt;">
         <param name="summary_coverage_threshold" type="integer" value="15" label="for summary file outputs, report the % of bases covered to &gt;= this number" />
     </repeat>
-    
+
     <param name="output_format" type="select" label="Output format" help="--outputFormat &amp;lt;outputFormat&amp;gt;" >
       <option value="csv">csv</option>
       <option value="table">table</option>
       <option value="rtable" selected="True">rtable</option>
     </param>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
     <expand macro="analysis_type_conditional">
         <param name="ignore_deletion_sites" type="boolean" truevalue="--ignoreDeletionSites" falsevalue="" checked="False" label="Ignore sites consisting only of deletions" help="--ignoreDeletionSites" />
         <param name="include_deletions" type="boolean" truevalue="--includeDeletions" falsevalue="" checked="False" label="Include information on deletions" help="-dels,--includeDeletions" />
@@ -358,7 +347,7 @@
             </conditional>
         </actions>
     </data>
-    
+
     <data format="tabular" name="output_summary_readgroup" label="${tool.name} on ${on_string} (output summary readgroup)" >
         <filter>analysis_param_type['analysis_param_type_selector'] == "basic" or analysis_param_type['omit_per_sample_stats'] == False</filter>
         <filter>analysis_param_type['analysis_param_type_selector'] == "basic" or analysis_param_type['print_bin_endpoints_and_exit'] == False</filter>
@@ -511,7 +500,7 @@
             </conditional>
         </actions>
     </data>
-    
+
     <data format="tabular" name="output_summary_library" label="${tool.name} on ${on_string} (output summary library)" >
         <filter>analysis_param_type['analysis_param_type_selector'] == "basic" or analysis_param_type['omit_per_sample_stats'] == False</filter>
         <filter>analysis_param_type['analysis_param_type_selector'] == "basic" or analysis_param_type['print_bin_endpoints_and_exit'] == False</filter>
@@ -664,7 +653,7 @@
             </conditional>
         </actions>
     </data>
-    
+
     <data format="tabular" name="output_log" label="${tool.name} on ${on_string} (log)" />
   </outputs>
   <trackster_conf/>
@@ -690,7 +679,7 @@
   <help>
 **What it does**
 
-DepthOfCoverage processes a set of bam files to determine coverage at different levels of partitioning and aggregation. Coverage can be analyzed per locus, per interval, per gene, or in total; can be partitioned by sample, by read group, by technology, by center, or by library; and can be summarized by mean, median, quartiles, and/or percentage of bases covered to or beyond a threshold. Additionally, reads and bases can be filtered by mapping or base quality score. 
+DepthOfCoverage processes a set of bam files to determine coverage at different levels of partitioning and aggregation. Coverage can be analyzed per locus, per interval, per gene, or in total; can be partitioned by sample, by read group, by technology, by center, or by library; and can be summarized by mean, median, quartiles, and/or percentage of bases covered to or beyond a threshold. Additionally, reads and bases can be filtered by mapping or base quality score.
 
 For more information on the GATK Depth of Coverage, see this `tool specific page &lt;http://www.broadinstitute.org/gatk/gatkdocs/org_broadinstitute_sting_gatk_walkers_coverage_DepthOfCoverage.html&gt;`_.
 
--- a/gatk2_macros.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/gatk2_macros.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -9,6 +9,9 @@
       <yield />
     </requirements>
   </xml>
+  <xml name="version_command">
+    <version_command>java -jar "$GATK2_PATH/GenomeAnalysisTK.jar" --help|grep '^The Genome'</version_command>
+  </xml>
   <token name="@THREADS@">
     --num_threads \${GALAXY_SLOTS:-4}
   </token>
@@ -21,11 +24,31 @@
         -d "--dbsnp:${dbsnp_rod_bind_type.dbsnp_rod_name},%(file_type)s" "${dbsnp_rod_bind_type.dbsnp_input_rod}" "${dbsnp_rod_bind_type.dbsnp_input_rod.ext}" "input_dbsnp_${dbsnp_rod_bind_type.dbsnp_rod_name}"
     #end if
   </token>
+  <token name="@BAM_INPUTS@">
+   #for $i, $input_bam in enumerate( $reference_source.input_bams ):
+       -d "-I" "${input_bam}" "${input_bam.ext}" "gatk_input_${i}"
+       #if str( $input_bam.metadata.bam_index ) != "None":
+           -d "" "${input_bam.metadata.bam_index}" "bam_index" "gatk_input_${i}" ##hardcode galaxy ext type as bam_index
+       #end if
+   #end for
+  </token>
+  <xml name="input_variants" token_help="-input,--input &amp;lt;input&amp;gt;">
+    <param name="input_variants" type="data" format="vcf" label="Variant file to annotate" multiple="True" min="1" help="@HELP@"/>
+  </xml>
+  <xml name="input_bams_history">
+    <param name="input_bams" type="data" format="bam" label="BAM file" multiple="True" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;"/>
+  </xml>
+  <xml name="input_bams_cached">
+    <param name="input_bams" type="data" format="bam" label="BAM file" multiple="True" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
+      <validator type="unspecified_build" />
+      <validator type="dataset_metadata_in_data_table" table_name="gatk2_picard_indexes" metadata_name="dbkey" metadata_column="dbkey" message="Sequences are not currently available for the specified build." /> <!-- fixme!!! this needs to be a select -->
+    </param>
+  </xml>
   <template name="standard_gatk_options">
     ##start standard gatk options
     #if $gatk_param_type.gatk_param_type_selector == "advanced":
-        #for $pedigree in $gatk_param_type.pedigree:
-            -p '--pedigree "${pedigree.pedigree_file}"'
+        #for $pedigree in $gatk_param_type.pedigree_files:
+            -p '--pedigree "${pedigree}"'
         #end for
         #for $pedigree_string in $gatk_param_type.pedigree_string_repeat:
             -p '--pedigreeString "${pedigree_string.pedigree_string}"'
@@ -48,12 +71,12 @@
             #end for
             '
         #end for
-        #for $interval_count, $input_intervals in enumerate( $gatk_param_type.input_interval_repeat ):
-            -d "--intervals" "${input_intervals.input_intervals}" "${input_intervals.input_intervals.ext}" "input_intervals_${interval_count}"
+        #for $interval_count, $input_interval in enumerate( $gatk_param_type.input_intervals ):
+            -d "--intervals" "${input_interval}" "${input_interval.ext}" "input_intervals_${interval_count}"
         #end for
-        
-        #for $interval_count, $input_intervals in enumerate( $gatk_param_type.input_exclude_interval_repeat ):
-            -d "--excludeIntervals" "${input_intervals.input_exclude_intervals}" "${input_intervals.input_exclude_intervals.ext}" "input_exlude_intervals_${interval_count}"
+
+        #for $interval_count, $input_interval in enumerate( $gatk_param_type.input_exclude_intervals ):
+            -d "--excludeIntervals" "${input_interval}" "${input_interval.ext}" "input_exlude_intervals_${interval_count}"
         #end for
 
         -p '--interval_set_rule "${gatk_param_type.interval_set_rule}"'
@@ -81,7 +104,7 @@
             #end if
         #end for
     #end if
-    
+
     #if str( $reference_source.reference_source_selector ) == "history":
         -d "-R" "${reference_source.ref_file}" "${reference_source.ref_file.ext}" "gatk_input"
     #end if
@@ -97,9 +120,7 @@
         <!-- Do nothing here -->
       </when>
       <when value="advanced">
-        <repeat name="pedigree" title="Pedigree file" help="-ped,--pedigree &amp;lt;pedigree&amp;gt;">
-            <param name="pedigree_file" type="data" format="txt" label="Pedigree files for samples"/>
-        </repeat>
+        <param name="pedigree_files" type="data" format="txt" label="Pedigree files for samples" multiple="True" help="-ped,--pedigree &amp;lt;pedigree&amp;gt;"/>
         <repeat name="pedigree_string_repeat" title="Pedigree string" help="-pedString,--pedigreeString &amp;lt;pedigreeString&amp;gt;">
             <param name="pedigree_string" type="text" value="" label="Pedigree string for samples"/>
         </repeat>
@@ -209,13 +230,9 @@
               </when>
             </conditional>
         </repeat>
-        <repeat name="input_interval_repeat" title="Operate on Genomic intervals" help="-L,--intervals &amp;lt;intervals&amp;gt;">
-          <param name="input_intervals" type="data" format="bed,gatk_interval,picard_interval_list,vcf" label="Genomic intervals" />
-        </repeat>
-        <repeat name="input_exclude_interval_repeat" title="Exclude Genomic intervals" help="-XL,--excludeIntervals &amp;lt;excludeIntervals&amp;gt;">
-          <param name="input_exclude_intervals" type="data" format="bed,gatk_interval,picard_interval_list,vcf" label="Genomic intervals" />
-        </repeat>
-        
+        <param name="input_intervals" multiple="True" type="data" format="bed,gatk_interval,picard_interval_list,vcf" label="Operate on Genomic intervals" help="-L,--intervals &amp;lt;intervals&amp;gt;" />
+        <param name="input_exclude_intervals" multiple="True" type="data" format="bed,gatk_interval,picard_interval_list,vcf" label="Exclude Genomic intervals" help="-XL,--excludeIntervals &amp;lt;excludeIntervals&amp;gt;" />
+
         <param name="interval_set_rule" type="select" label="Interval set rule" help="-isr,--interval_set_rule &amp;lt;interval_set_rule&amp;gt;">
           <option value="UNION" selected="True">UNION</option>
           <option value="INTERSECTION">INTERSECTION</option>
@@ -279,7 +296,7 @@
           <option value="ALL" selected="True">ALL</option>
           <option value="OVERLAPPING_ONLY">OVERLAPPING_ONLY</option>
         </param>
-        
+
         <repeat name="read_group_black_list_repeat" title="Read group black list" help="-rgbl,--read_group_black_list &amp;lt;read_group_black_list&amp;gt;">
           <conditional name="read_group_black_list_type">
             <param name="read_group_black_list_type_selector" type="select" label="Type of reads read group black list">
@@ -294,7 +311,7 @@
             </when>
           </conditional>
         </repeat>
-        
+
         <param name="disable_experimental_low_memory_sharding" type="boolean" truevalue="--disable_experimental_low_memory_sharding" falsevalue="" label="Disable experimental low-memory sharding functionality." checked="False" help="--disable_experimental_low_memory_sharding"/>
         <param name="non_deterministic_random_seed" type="boolean" truevalue="--nonDeterministicRandomSeed" falsevalue="" label="Makes the GATK behave non deterministically, that is, the random numbers generated will be different in every run" checked="False"  help="-ndrs,--nonDeterministicRandomSeed"/>
         <param name="fix_misencoded_quality_scores" type="boolean" truevalue="--fix_misencoded_quality_scores" falsevalue="" label="Fix mis-encoded base quality scores. Q0 == ASCII 33 according to the SAM specification, whereas Illumina encoding starts at Q64. The idea here is simple: we just iterate over all reads and subtract 31 from every quality score." checked="False"  help="-fixMisencodedQuals / --fix_misencoded_quality_scores"/>
@@ -322,6 +339,12 @@
       <option value="history">History</option>
     </param>
   </xml>
+
+  <xml name="allow_n_cigar_reads">
+    <param name="allow_n_cigar_reads" type="boolean" truevalue="-U ALLOW_N_CIGAR_READS" falsevalue=""
+        label="Allow N in CIGAR strings" help="This is required for RNA-seq data. (-U ALLOW_N_CIGAR_READS)" />
+  </xml>
+
   <xml name="dbsnp_param">
     <conditional name="dbsnp_rod_bind_type">
       <param name="dbsnp_rod_bind_type_selector" type="select" label="Provide a dbSNP Reference-Ordered Data (ROD) file" help="-D,--dbsnp &amp;lt;dbsnp&amp;gt;">
--- a/gatk2_wrapper.py	Mon Aug 25 17:44:53 2014 -0400
+++ b/gatk2_wrapper.py	Mon Jun 04 05:38:15 2018 -0400
@@ -1,17 +1,21 @@
 #!/usr/bin/env python
-#David Hoover, based on gatk by Dan Blankenberg
-
+# David Hoover, based on gatk by Dan Blankenberg
 """
 A wrapper script for running the GenomeAnalysisTK.jar commands.
 """
 
-import sys, optparse, os, tempfile, subprocess, shutil
+import optparse
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
 from binascii import unhexlify
 
-GALAXY_EXT_TO_GATK_EXT = { 'gatk_interval':'intervals', 'bam_index':'bam.bai', 'gatk_dbsnp':'dbSNP', 'picard_interval_list':'interval_list' } #items not listed here will use the galaxy extension as-is
-GALAXY_EXT_TO_GATK_FILE_TYPE = GALAXY_EXT_TO_GATK_EXT #for now, these are the same, but could be different if needed
+GALAXY_EXT_TO_GATK_EXT = { 'gatk_interval': 'intervals', 'bam_index': 'bam.bai', 'gatk_dbsnp': 'dbSNP', 'picard_interval_list': 'interval_list' }  # items not listed here will use the galaxy extension as-is
+GALAXY_EXT_TO_GATK_FILE_TYPE = GALAXY_EXT_TO_GATK_EXT  # for now, these are the same, but could be different if needed
 DEFAULT_GATK_PREFIX = "gatk_file"
-CHUNK_SIZE = 2**20 #1mb
+CHUNK_SIZE = 2**20  # 1mb
 
 
 def cleanup_before_exit( tmp_dir ):
@@ -19,7 +23,7 @@
         shutil.rmtree( tmp_dir )
 
 
-def gatk_filename_from_galaxy( galaxy_filename, galaxy_ext, target_dir = None, prefix = None ):
+def gatk_filename_from_galaxy( galaxy_filename, galaxy_ext, target_dir=None, prefix=None ):
     suffix = GALAXY_EXT_TO_GATK_EXT.get( galaxy_ext, galaxy_ext )
     if prefix is None:
         prefix = DEFAULT_GATK_PREFIX
@@ -31,12 +35,12 @@
 
 
 def gatk_filetype_argument_substitution( argument, galaxy_ext ):
-    return argument % dict( file_type = GALAXY_EXT_TO_GATK_FILE_TYPE.get( galaxy_ext, galaxy_ext ) )
+    return argument % dict( file_type=GALAXY_EXT_TO_GATK_FILE_TYPE.get( galaxy_ext, galaxy_ext ) )
 
 
-def open_file_from_option( filename, mode = 'rb' ):
+def open_file_from_option( filename, mode='rb' ):
     if filename:
-        return open( filename, mode = mode )
+        return open( filename, mode=mode )
     return None
 
 
@@ -51,8 +55,8 @@
     for bam_filename in bam_filenames:
         bam_index_filename = "%s.bai" % bam_filename
         if not os.path.exists( bam_index_filename ):
-            #need to index this bam file
-            stderr_name = tempfile.NamedTemporaryFile( prefix = "bam_index_stderr" ).name
+            # need to index this bam file
+            stderr_name = tempfile.NamedTemporaryFile( prefix="bam_index_stderr" ).name
             command = 'samtools index %s %s' % ( bam_filename, bam_index_filename )
             try:
                 subprocess.check_call( args=command, shell=True, stderr=open( stderr_name, 'wb' ) )
@@ -63,8 +67,9 @@
             finally:
                 os.unlink( stderr_name )
 
+
 def __main__():
-    #Parse Command Line
+    # Parse Command Line
     parser = optparse.OptionParser()
     parser.add_option( '-p', '--pass_through', dest='pass_through_options', action='append', type="string", help='These options are passed through directly to GATK, without any modification.' )
     parser.add_option( '-o', '--pass_through_options', dest='pass_through_options_encoded', action='append', type="string", help='These options are passed through directly to GATK, with decoding from binascii.unhexlify.' )
@@ -93,7 +98,7 @@
     try:
         if options.datasets:
             for ( dataset_arg, filename, galaxy_ext, prefix ) in options.datasets:
-                gatk_filename = gatk_filename_from_galaxy( filename, galaxy_ext, target_dir = tmp_dir, prefix = prefix )
+                gatk_filename = gatk_filename_from_galaxy( filename, galaxy_ext, target_dir=tmp_dir, prefix=prefix )
                 if dataset_arg:
                     cmd = '%s %s "%s"' % ( cmd, gatk_filetype_argument_substitution( dataset_arg, galaxy_ext ), gatk_filename )
                 if galaxy_ext == "bam":
@@ -102,10 +107,10 @@
                     subprocess.check_call( 'samtools faidx "%s"' % gatk_filename, shell=True )
                     subprocess.check_call( 'java -jar %s R=%s O=%s QUIET=true' % ( os.path.join(os.environ['JAVA_JAR_PATH'], 'CreateSequenceDictionary.jar'), gatk_filename, os.path.splitext(gatk_filename)[0] + '.dict' ), shell=True )
         index_bam_files( bam_filenames )
-        #set up stdout and stderr output options
-        stdout = open_file_from_option( options.stdout, mode = 'wb' )
-        stderr = open_file_from_option( options.stderr, mode = 'wb' )
-        #if no stderr file is specified, we'll use our own
+        # set up stdout and stderr output options
+        stdout = open_file_from_option( options.stdout, mode='wb' )
+        stderr = open_file_from_option( options.stderr, mode='wb' )
+        # if no stderr file is specified, we'll use our own
         if stderr is None:
             stderr = tempfile.NamedTemporaryFile( prefix="gatk-stderr-", dir=tmp_dir )
 
@@ -128,7 +133,7 @@
     finally:
         cleanup_before_exit( tmp_dir )
 
-    #generate html reports
+    # generate html reports
     if options.html_report_from_directory:
         for ( html_filename, html_dir ) in options.html_report_from_directory:
             html_report_from_directory( open( html_filename, 'wb' ), html_dir )
--- a/haplotype_caller.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/haplotype_caller.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,18 +1,14 @@
-<tool id="gatk2_haplotype_caller" name="Haplotype Caller" version="@VERSION@.0">
+<tool id="gatk2_haplotype_caller" name="Haplotype Caller" version="@VERSION@.2">
   <description>Call SNPs and indels simultaneously via local de-novo assembly of haplotypes in an active region</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
-    #for $i, $input_bam in enumerate( $reference_source.input_bams ):
-        -d "-I" "${input_bam.input_bam}" "${input_bam.input_bam.ext}" "gatk_input_${i}"
-        #if str( $input_bam.input_bam.metadata.bam_index ) != "None":
-            -d "" "${input_bam.input_bam.metadata.bam_index}" "bam_index" "gatk_input_${i}" ##hardcode galaxy ext type as bam_index
-        #end if
-    #end for
+    @BAM_INPUTS@
     -p '
     @JAR_PATH@
     -T "HaplotypeCaller"
@@ -30,8 +26,9 @@
     #end if
    '
     @DBSNP_OPTIONS@
+    $allow_n_cigar_reads
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
@@ -53,7 +50,7 @@
         #if str($analysis_param_type.comp) != 'None':
             --comp "$analysis_param_type.comp"
         #end if
-        ##  
+        ##
         #if str( $analysis_param_type.annotation ) != "None":
             #for $annotation in str( $analysis_param_type.annotation.fields.gatk_value ).split( ','):
                 --annotation "${annotation}"
@@ -117,12 +114,7 @@
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-          <param name="input_bam" type="data" format="bam" label="BAM file">
-            <validator type="unspecified_build" />
-            <validator type="dataset_metadata_in_data_table" table_name="gatk2_picard_indexes" metadata_name="dbkey" metadata_column="dbkey" message="Sequences are not currently available for the specified build." /> <!-- fixme!!! this needs to be a select -->
-          </param>
-        </repeat>
+        <expand macro="input_bams_cached" />
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" >
           <options from_data_table="gatk2_picard_indexes">
             <!-- <filter type="data_meta" key="dbkey" ref="input_bam" column="dbkey"/> does not yet work in a repeat...-->
@@ -131,14 +123,13 @@
         </param>
       </when>
       <when value="history">
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-          <param name="input_bam" type="data" format="bam" label="BAM file" />
-        </repeat>
+        <expand macro="input_bams_history" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
     <expand macro="dbsnp_param" />
-    
+
+    <expand macro="allow_n_cigar_reads" />
     <expand macro="gatk_param_type_conditional" />
 
     <conditional name="analysis_param_type">
@@ -213,8 +204,6 @@
             <param name="input_alleles_rod" type="data" format="vcf" label="Alleles ROD file" help="-alleles,--alleles &amp;lt;alleles&amp;gt;" />
           </when>
         </conditional>
-
-
         <param name="graphOutput" type="boolean" checked="False" truevalue="" falsevalue="" label="graphOutput" help="--graphOutput / -graph  File to which debug assembly graph information should be written"/>
         <param name="heterozygosity" type="float" value="0.0010" optional="true" label="heterozygosity" help="--heterozygosity / -hets  Heterozygosity value used to compute prior likelihoods for any locus"/>
         <param name="minPruning" type="integer" value="1" optional="true" label="minPruning" help="--minPruning / -minPruning  The minimum allowed pruning factor in assembly graph. Paths with &gt;= X supporting kmers are pruned from the graph">
@@ -254,7 +243,7 @@
   </outputs>
   <tests>
       <test>
-          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" /> 
+          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" />
           <param name="reference_source_selector" value="history" />
           <param name="ref_file" value="phiX.fasta" ftype="fasta" />
           <param name="input_bam" value="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.bam" ftype="bam" />
--- a/indel_realigner.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/indel_realigner.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
-<tool id="gatk2_indel_realigner" name="Indel Realigner" version="@VERSION@.0">
+<tool id="gatk2_indel_realigner" name="Indel Realigner" version="@VERSION@.1">
   <description>- perform local realignment</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -27,7 +28,7 @@
    -LOD "${lod_threshold}"
     ${knowns_only}
    '
-   
+
     #set $rod_binding_names = dict()
     #for $rod_binding in $rod_bind:
         #if str( $rod_binding.rod_bind_type.rod_bind_type_selector ) == 'custom':
@@ -38,7 +39,8 @@
         #set $rod_binding_names[$rod_bind_name] = $rod_binding_names.get( $rod_bind_name, -1 ) + 1
         -d "-known:${rod_bind_name},%(file_type)s" "${rod_binding.rod_bind_type.input_rod}" "${rod_binding.rod_bind_type.input_rod.ext}" "input_${rod_bind_name}_${rod_binding_names[$rod_bind_name]}"
     #end for
-   
+
+    $allow_n_cigar_reads
     #include source=$standard_gatk_options#
     ##start analysis specific options
     -d "-targetIntervals" "${target_intervals}" "${target_intervals.ext}" "gatk_target_intervals"
@@ -60,7 +62,7 @@
     #end if
   </command>
   <inputs>
-    
+
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
@@ -110,11 +112,12 @@
     </repeat>
     <param name="lod_threshold" type="float" value="5.0" label="LOD threshold above which the realigner will proceed to realign" help="-LOD,--LODThresholdForCleaning &amp;lt;LODThresholdForCleaning&amp;gt;" />
     <param name="knowns_only" type="boolean" checked="False" truevalue="-knownsOnly" falsevalue="" label="Use only known indels provided as RODs" help="-knownsOnly"/>
-    
+
+    <expand macro="allow_n_cigar_reads" />
     <expand macro="gatk_param_type_conditional" />
-    
+
     <expand macro="analysis_type_conditional">
-        
+
         <param name="entropy_threshold" type="float" value="0.15" label="percentage of mismatching base quality scores at a position to be considered having high entropy" help="-entropy,--entropyThreshold &amp;lt;entropyThreshold&amp;gt;" />
         <param name="simplify_bam" type="boolean" checked="False" truevalue="-simplifyBAM" falsevalue="" label="Simplify BAM" help="-simplifyBAM,--simplifyBAM"/>
         <param name="consensus_determination_model" type="select" label="Consensus Determination Model" help="-model,--consensusDeterminationModel &amp;lt;consensusDeterminationModel&amp;gt;">
@@ -127,7 +130,7 @@
         <param name="max_consensuses" type="integer" value="30" label="Max alternate consensuses to try" help="-maxConsensuses,--maxConsensuses &amp;lt;maxConsensuses&amp;gt;" />
         <param name="max_reads_for_consensuses" type="integer" value="120" label="Max reads (chosen randomly) used for finding the potential alternate consensuses" help="-greedy,--maxReadsForConsensuses &amp;lt;maxReadsForConsensuses&amp;gt;" />
         <param name="max_reads_for_realignment" type="integer" value="20000" label="Max reads allowed at an interval for realignment" help="-maxReads,--maxReadsForRealignment &amp;lt;maxReadsForRealignment&amp;gt;" />
-        <param name="no_original_alignment_tags" type="boolean" checked="False" truevalue="--noOriginalAlignmentTags" falsevalue="" label="Don't output the original cigar or alignment start tags for each realigned read in the output bam" help="-noTags,--noOriginalAlignmentTags"/> 
+        <param name="no_original_alignment_tags" type="boolean" checked="False" truevalue="--noOriginalAlignmentTags" falsevalue="" label="Don't output the original cigar or alignment start tags for each realigned read in the output bam" help="-noTags,--noOriginalAlignmentTags"/>
     </expand>
   </inputs>
   <outputs>
@@ -155,7 +158,7 @@
           <param name="max_reads_for_consensuses" value="120" />
           <param name="max_reads_for_realignment" value="20000" />
           <param name="no_original_alignment_tags" />
-          <output name="output_bam" file="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.bam" ftype="bam" lines_diff="2" /> 
+          <output name="output_bam" file="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.bam" ftype="bam" lines_diff="2" />
           <output name="output_log" file="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.log.contains" compare="contains" />
       </test>
   </tests>
--- a/print_reads.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/print_reads.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_print_reads" name="Print Reads" version="@VERSION@.0">
   <description>on BAM files</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -20,7 +21,6 @@
     ## according to http://www.broadinstitute.org/gatk/guide/article?id=1975
     --num_cpu_threads_per_data_thread \${GALAXY_SLOTS:-6}
 
-
     #if $reference_source.reference_source_selector != "history":
         -R "${reference_source.ref_file.fields.path}"
     #end if
@@ -29,9 +29,9 @@
     #end if
     --disable_bam_indexing
    '
-   
+
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
@@ -50,10 +50,10 @@
         ${analysis_param_type.exception_if_no_tile}
         #if str( $analysis_param_type.solid_options_type.solid_options_type_selector ) == "set":
             #if str( $analysis_param_type.solid_options_type.solid_recal_mode ) != "default":
-                --solid_recal_mode "${analysis_param_type.solid_options_type.solid_recal_mode}" 
+                --solid_recal_mode "${analysis_param_type.solid_options_type.solid_recal_mode}"
             #end if
             #if str( $analysis_param_type.solid_options_type.solid_nocall_strategy ) != "default":
-                --solid_nocall_strategy "${analysis_param_type.solid_options_type.solid_nocall_strategy}" 
+                --solid_nocall_strategy "${analysis_param_type.solid_options_type.solid_nocall_strategy}"
             #end if
         #end if
         ${analysis_param_type.simplify_bam}
@@ -67,7 +67,7 @@
     #end if
   </command>
   <inputs>
-    <param name="input_recal" type="data" format="gatk_report" optional="true" label="Covariates table recalibration file" 
+    <param name="input_recal" type="data" format="gatk_report" optional="true" label="Covariates table recalibration file"
         help="The input covariates table file which enables on-the-fly base quality score recalibration (intended for use with BaseRecalibrator files) (-BQSR,--BQSR)" />
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
@@ -92,10 +92,9 @@
         </param>
       </when>
     </conditional>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
-    
+
     <conditional name="analysis_param_type">
       <param name="analysis_param_type_selector" type="select" label="Basic or Advanced Analysis options">
         <option value="basic" selected="True">Basic</option>
@@ -182,7 +181,7 @@
   </outputs>
   <tests>
       <test>
-          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" /> 
+          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" />
           <param name="reference_source_selector" value="history" />
           <param name="ref_file" value="phiX.fasta" ftype="fasta" />
           <param name="input_bam" value="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.bam" ftype="bam" />
--- a/readme.rst	Mon Aug 25 17:44:53 2014 -0400
+++ b/readme.rst	Mon Jun 04 05:38:15 2018 -0400
@@ -52,14 +52,23 @@
 http://www.broadinstitute.org/gatk/guide/article?id=1250
 
 Optionally, you may also want to add some commands to be executed before GATK (e.g. to load modules) to the file:
+::
+    <tool_dependency_dir>/gatk2/default/env.sh
 
-<tool_dependency_dir>/gatk2/default/env.sh
+Note that due to the manual nature of the GATK2 installation you will be getting the 
+following warnings in the Galaxy log (unless you specified the env.sh in the previous paragraph):
+::
+    Failed to resolve dependency on 'gatk2', ignoring.
+
+This is because the 
+::
+    <requirement type="package">gatk2</requirement>
+is specified but never resolved in the tool_dependencies.xml. It is safe to ignore.
 
 Finally, you should fill in additional information about your genomes and 
 annotations in the gatk2_picard_index.loc and gatk2_annotations.txt. 
 You can find them in the tool-data/ Galaxy directory.
 
-
 History
 =======
 
--- a/realigner_target_creator.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/realigner_target_creator.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
-<tool id="gatk2_realigner_target_creator" name="Realigner Target Creator" version="@VERSION@.0">
+<tool id="gatk2_realigner_target_creator" name="Realigner Target Creator" version="@VERSION@.1">
   <description>for use in local realignment</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -37,7 +38,8 @@
         #set $rod_binding_names[$rod_bind_name] = $rod_binding_names.get( $rod_bind_name, -1 ) + 1
         -d "-known:${rod_bind_name},%(file_type)s" "${rod_binding.rod_bind_type.input_rod}" "${rod_binding.rod_bind_type.input_rod.ext}" "input_${rod_bind_name}_${rod_binding_names[$rod_bind_name]}"
     #end for
-   
+
+    $allow_n_cigar_reads
     #include source=$standard_gatk_options#
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
@@ -73,12 +75,12 @@
         </param>
       </when>
     </conditional>
-    
+
     <repeat name="rod_bind" title="Known Variants" help="Using data sets of known variants (-known,--known &amp;lt;known&amp;gt;)">
         <conditional name="rod_bind_type">
           <param name="rod_bind_type_selector" type="select" label="Variant Type">
             <option value="dbsnp" selected="True">dbSNP</option>
-            <option value="snps">SNPs</option>  
+            <option value="snps">SNPs</option>
             <option value="indels">INDELs</option>
             <option value="custom">Custom</option>
           </param>
@@ -97,13 +99,17 @@
           </when>
         </conditional>
     </repeat>
-    
+
+    <expand macro="allow_n_cigar_reads" />
     <expand macro="gatk_param_type_conditional" />
-    
+
     <expand macro="analysis_type_conditional">
-        <param name="windowSize" type="integer" value="10" label="Window size for calculating entropy or SNP clusters (windowSize)" help="-window,--windowSize &amp;lt;windowSize&amp;gt;" />
-        <param name="mismatchFraction" type="float" value="0.15" label="Fraction of base qualities needing to mismatch for a position to have high entropy (mismatchFraction)" help="to disable set to &lt;= 0 or &gt; 1 (-mismatch,--mismatchFraction &amp;lt;mismatchFraction&amp;gt;)"/>
-        <param name="minReadsAtLocus" type="integer" value="4" label="Minimum reads at a locus to enable using the entropy calculation (minReadsAtLocus)" help="-minReads,--minReadsAtLocus &amp;lt;minReadsAtLocus&amp;gt;" />
+        <param name="windowSize" type="integer" value="10" label="Window size for calculating entropy or SNP clusters (windowSize)"
+            help="-window,--windowSize &amp;lt;windowSize&amp;gt;" />
+        <param name="mismatchFraction" type="float" value="0.15" label="Fraction of base qualities needing to mismatch for a position to have high entropy (mismatchFraction)"
+            help="to disable set to &lt;= 0 or &gt; 1 (-mismatch,--mismatchFraction &amp;lt;mismatchFraction&amp;gt;)"/>
+        <param name="minReadsAtLocus" type="integer" value="4" label="Minimum reads at a locus to enable using the entropy calculation (minReadsAtLocus)"
+            help="-minReads,--minReadsAtLocus &amp;lt;minReadsAtLocus&amp;gt;" />
         <param name="maxIntervalSize" type="integer" value="500" label="Maximum interval size" help="-maxInterval,--maxIntervalSize &amp;lt;maxIntervalSize&amp;gt;" />
     </expand>
   </inputs>
@@ -124,7 +130,7 @@
           <param name="mismatchFraction" value="0.15" />
           <param name="minReadsAtLocus" value="4" />
           <param name="maxIntervalSize" value="500" />
-          <output name="output_interval" file="gatk/gatk_realigner_target_creator/gatk_realigner_target_creator_out_1.gatk_interval" /> 
+          <output name="output_interval" file="gatk/gatk_realigner_target_creator/gatk_realigner_target_creator_out_1.gatk_interval" />
           <output name="output_log" file="gatk/gatk_realigner_target_creator/gatk_realigner_target_creator_out_1.log.contains" compare="contains"/>
       </test>
   </tests>
--- a/reduce_reads.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/reduce_reads.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_reduce_reads" name="Reduce Reads" version="@VERSION@.0">
   <description>in BAM files</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -30,7 +31,7 @@
     --disable_bam_indexing
    '
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
@@ -90,9 +91,9 @@
         </param>
       </when>
     </conditional>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
     <conditional name="analysis_param_type">
       <param name="analysis_param_type_selector" type="select" label="Basic or Advanced Analysis options">
         <option value="basic" selected="True">Basic</option>
@@ -136,7 +137,7 @@
   </outputs>
   <tests>
       <test>
-          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" /> 
+          <param name="input_recal" value="gatk/gatk_count_covariates/gatk_count_covariates_out_1.csv" ftype="csv" />
           <param name="reference_source_selector" value="history" />
           <param name="ref_file" value="phiX.fasta" ftype="fasta" />
           <param name="input_bam" value="gatk/gatk_indel_realigner/gatk_indel_realigner_out_1.bam" ftype="bam" />
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/phiX.fasta	Mon Jun 04 05:38:15 2018 -0400
@@ -0,0 +1,79 @@
+>phiX174
+GAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTT
+GATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAA
+ATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTG
+TCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTA
+GATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATC
+TGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTT
+TCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTT
+CGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCT
+TGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCG
+TCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTAC
+GGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTA
+CGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCAGAAGGAG
+TGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACT
+AAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGC
+CCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCA
+TCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGAC
+TCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTA
+CTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAA
+GGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTT
+GGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACA
+ACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGC
+TCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTT
+TCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGC
+ATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCGTGATGTTATTTCTTCATTTGGAGGTAAAAC
+CTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTT
+GATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGC
+CGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGAC
+TAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTG
+TATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGT
+TTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGA
+AGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGAT
+TATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGTGACCGTTT
+ATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGAGTGTGAGGTTATAAC
+GCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGC
+TTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGT
+TCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTA
+TATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTG
+TCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGC
+CTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTG
+AATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGC
+CGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGT
+TTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTG
+CTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAA
+AGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCT
+GGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTG
+GTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGA
+TAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTAT
+CTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGG
+TTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGA
+GATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGAC
+CAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTA
+TGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCA
+AACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGAC
+TTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTT
+CTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGA
+TACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCG
+TCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTT
+CTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTAT
+TGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGC
+ATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATG
+TTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGA
+ATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGG
+GACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCC
+CTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATT
+GCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTACTATTCAGCGTTTGATGAATGCAATGCGACAG
+GCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTT
+ATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCG
+CAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGC
+CGTCTTCATTTCCATGCGGTGCATTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTC
+GTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCAT
+CGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAG
+CCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATA
+TGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACT
+TCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTG
+TCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGC
+AGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACC
+TGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCA
+
--- a/tool_data_table_conf.xml.sample	Mon Aug 25 17:44:53 2014 -0400
+++ b/tool_data_table_conf.xml.sample	Mon Jun 04 05:38:15 2018 -0400
@@ -1,11 +1,11 @@
 <tables>
     <!-- Location of Picard dict files valid for GATK -->
-    <table name="gatk2_picard_indexes" comment_char="#">
+    <table name="gatk2_picard_indexes" comment_char="#" allow_duplicate_entries="False">
         <columns>value, dbkey, name, path</columns>
         <file path="tool-data/gatk2_picard_index.loc" />
     </table>
     <!-- Available of GATK references -->
-    <table name="gatk2_annotations" comment_char="#">
+    <table name="gatk2_annotations" comment_char="#" allow_duplicate_entries="False">
         <columns>value, name, gatk_value, tools_valid_for</columns>
         <file path="tool-data/gatk2_annotations.txt" />
     </table>
--- a/tool_dependencies.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/tool_dependencies.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -3,11 +3,11 @@
     <set_environment version="1.0">
         <environment_variable action="set_to" name="GATK2_PATH">/please set the path to your GATK2 dir in the corresponding env.sh file/</environment_variable>
     </set_environment>
-    <!-- 
+    <!--
     Use GATK2_SITE_OPTIONS to set additional parameters that should be inserted in every GATK2 call.
     The intended use case was to prohibit GATK2 to collect and send data.
     For example:
-    
+
     -et "NO_ET" -K "/data/gatk2_key_file" ##ET no phone home
     -->
     <set_environment version="1.0">
@@ -15,12 +15,12 @@
     </set_environment>
 
     <package name="samtools" version="0.1.19">
-        <repository changeset_revision="923adc89c666" name="package_samtools_0_1_19" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
+        <repository changeset_revision="c9bd782f5342" name="package_samtools_0_1_19" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
     </package>
     <package name="picard" version="1.56.0">
-        <repository changeset_revision="61e41d21cb6f" name="package_picard_1_56_0" owner="devteam" toolshed="https://toolshed.g2.bx.psu.edu" />
+        <repository changeset_revision="99a28567c3a3" name="package_picard_1_56_0" owner="devteam" toolshed="https://toolshed.g2.bx.psu.edu" />
     </package>
     <package name="ggplot2" version="0.9.3">
-        <repository changeset_revision="87a27fc31fb5" name="package_r_ggplot2_0_9_3" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
+        <repository changeset_revision="07de191649b4" name="package_r_ggplot2_0_9_3" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
     </package>
 </tool_dependency>
--- a/unified_genotyper.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/unified_genotyper.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,18 +1,14 @@
-<tool id="gatk2_unified_genotyper" name="Unified Genotyper" version="@VERSION@.0">
+<tool id="gatk2_unified_genotyper" name="Unified Genotyper" version="@VERSION@.2">
   <description>SNP and indel caller</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
-    #for $i, $input_bam in enumerate( $reference_source.input_bams ):
-        -d "-I" "${input_bam.input_bam}" "${input_bam.input_bam.ext}" "gatk_input_${i}"
-        #if str( $input_bam.input_bam.metadata.bam_index ) != "None":
-            -d "" "${input_bam.input_bam.metadata.bam_index}" "bam_index" "gatk_input_${i}" ##hardcode galaxy ext type as bam_index
-        #end if
-    #end for
+    @BAM_INPUTS@
     -p '
     @JAR_PATH@
     -T "UnifiedGenotyper"
@@ -32,7 +28,7 @@
     --standard_min_confidence_threshold_for_emitting "${standard_min_confidence_threshold_for_emitting}"
    '
     @DBSNP_OPTIONS@
-
+    $allow_n_cigar_reads
     #include source=$standard_gatk_options#
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
@@ -88,44 +84,38 @@
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-            <param name="input_bam" type="data" format="bam" label="BAM file">
-              <validator type="unspecified_build" />
-              <validator type="dataset_metadata_in_data_table" table_name="gatk2_picard_indexes" metadata_name="dbkey" metadata_column="dbkey" message="Sequences are not currently available for the specified build." /> <!-- fixme!!! this needs to be a select -->
-            </param>
-        </repeat>
+        <expand macro="input_bams_cached" />
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;">
           <options from_data_table="gatk2_picard_indexes">
-            <!-- <filter type="data_meta" key="dbkey" ref="input_bam" column="dbkey"/> does not yet work in a repeat...--> 
+            <!-- <filter type="data_meta" key="dbkey" ref="input_bam" column="dbkey"/> does not yet work in a repeat...-->
           </options>
           <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
         </param>
       </when>
       <when value="history"> <!-- FIX ME!!!! -->
-        <repeat name="input_bams" title="BAM file" min="1" help="-I,--input_file &amp;lt;input_file&amp;gt;">
-            <param name="input_bam" type="data" format="bam" label="BAM file" >
-            </param>
-        </repeat>
+        <expand macro="input_bams_history" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
     <expand macro="dbsnp_param" />
-    
+
     <param name="genotype_likelihoods_model" type="select" label="Genotype likelihoods calculation model to employ" help="-glm,--genotype_likelihoods_model &amp;lt;genotype_likelihoods_model&amp;gt;">
       <option value="BOTH" selected="True">BOTH</option>
       <option value="SNP">SNP</option>
       <option value="INDEL">INDEL</option>
     </param>
-    
+
     <param name="standard_min_confidence_threshold_for_calling" type="float" value="30.0" label="The minimum phred-scaled confidence threshold at which variants not at 'trigger' track sites should be called" help="-stand_call_conf,--standard_min_confidence_threshold_for_calling &amp;lt;standard_min_confidence_threshold_for_calling&amp;gt;" />
     <param name="standard_min_confidence_threshold_for_emitting" type="float" value="30.0" label="The minimum phred-scaled confidence threshold at which variants not at 'trigger' track sites should be emitted (and filtered if less than the calling threshold)" help="-stand_emit_conf,--standard_min_confidence_threshold_for_emitting &amp;lt;standard_min_confidence_threshold_for_emitting&amp;gt;" />
 
-    
+    <expand macro="allow_n_cigar_reads" />
     <expand macro="gatk_param_type_conditional" />
-    
+
     <expand macro="analysis_type_conditional">
-        <param name="heterozygosity" type="float" value="1e-3" label="Heterozygosity value used to compute prior likelihoods for any locus" help="-hets,--heterozygosity &amp;lt;heterozygosity&amp;gt;" />
-        <param name="pcr_error_rate" type="float" value="1e-4" label="The PCR error rate to be used for computing fragment-based likelihoods" help="-pcr_error,--pcr_error_rate &amp;lt;pcr_error_rate&amp;gt;" />
+        <param name="heterozygosity" type="float" value="1e-3" label="Heterozygosity value used to compute prior likelihoods for any locus"
+            help="-hets,--heterozygosity &amp;lt;heterozygosity&amp;gt;" />
+        <param name="pcr_error_rate" type="float" value="1e-4" label="The PCR error rate to be used for computing fragment-based likelihoods"
+            help="-pcr_error,--pcr_error_rate &amp;lt;pcr_error_rate&amp;gt;" />
         <conditional name="genotyping_mode_type">
           <param name="genotyping_mode" type="select" label="How to determine the alternate allele to use for genotyping" help="-gt_mode,--genotyping_mode &amp;lt;genotyping_mode&amp;gt;">
             <option value="DISCOVERY" selected="True">DISCOVERY</option>
@@ -191,14 +181,16 @@
             <!-- <option value="none">none</option> -->
         </param>
     <!--     <param name="family_string" type="text" value="" label="Family String"/> -->
-        <param name="exclude_annotations" type="select" multiple="True" display="checkboxes" label="Annotations to exclude" help="-XA,--excludeAnnotation &amp;lt;excludeAnnotation&amp;gt;" >
+        <param name="exclude_annotations" type="select" multiple="True" display="checkboxes" label="Annotations to exclude"
+            help="-XA,--excludeAnnotation &amp;lt;excludeAnnotation&amp;gt;" >
           <!-- load the available annotations from an external configuration file, since additional ones can be added to local installs -->
           <options from_data_table="gatk2_annotations">
             <filter type="multiple_splitter" column="tools_valid_for" separator=","/>
             <filter type="static_value" value="UnifiedGenotyper" column="tools_valid_for"/>
           </options>
         </param>
-        <param name="sample_ploidy" type="integer" value="2" label="Ploidy (number of chromosomes) per sample. For pooled data, set to (Number of samples in each pool * Sample Ploidy)" help="-ploidy,--sample_ploidy" />
+        <param name="sample_ploidy" type="integer" value="2"
+            label="Ploidy (number of chromosomes) per sample. For pooled data, set to (Number of samples in each pool * Sample Ploidy)" help="-ploidy,--sample_ploidy" />
     </expand>
   </inputs>
   <outputs>
@@ -235,8 +227,8 @@
           <param name="doContextDependentGapPenalties" />
           <!-- <param name="annotation" value="" />
           <param name="group" value="" /> -->
-          <output name="output_vcf" file="gatk/gatk_unified_genotyper/gatk_unified_genotyper_out_1.vcf" lines_diff="4" /> 
-          <output name="output_metrics" file="gatk/gatk_unified_genotyper/gatk_unified_genotyper_out_1.metrics" /> 
+          <output name="output_vcf" file="gatk/gatk_unified_genotyper/gatk_unified_genotyper_out_1.vcf" lines_diff="4" />
+          <output name="output_metrics" file="gatk/gatk_unified_genotyper/gatk_unified_genotyper_out_1.metrics" />
           <output name="output_log" file="gatk/gatk_unified_genotyper/gatk_unified_genotyper_out_1.log.contains" compare="contains" />
       </test>
   </tests>
--- a/variant_annotator.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_annotator.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_variant_annotator" name="Variant Annotator" version="@VERSION@.0">
   <description></description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -46,30 +47,30 @@
     #if $reference_source.input_variant_bti:
         -d "--intervals" "${reference_source.input_variant}" "${reference_source.input_variant.ext}" "input_variant_bti"
     #end if
-    
+
     #for $rod_binding in $comp_rod_bind:
         -d "--comp:${rod_binding.comp_rod_name},%(file_type)s" "${rod_binding.comp_input_rod}" "${rod_binding.comp_input_rod.ext}" "input_comp_${rod_binding.comp_rod_name}"
     #end for
-    
+
     @DBSNP_OPTIONS@
-    
+
     #for $rod_binding in $resource_rod_bind:
         -d "--resource:${rod_binding.resource_rod_name},%(file_type)s" "${rod_binding.resource_input_rod}" "${rod_binding.resource_input_rod.ext}" "input_resource_${rod_binding.resource_rod_name}"
     #end for
-    
+
     #if str( $snpEff_rod_bind_type.snpEff_rod_bind_type_selector ) == 'set_snpEff':
         -p '--annotation "SnpEff"'
         -d "--snpEffFile:${snpEff_rod_bind_type.snpEff_rod_name},%(file_type)s" "${snpEff_rod_bind_type.snpEff_input_rod}" "${snpEff_rod_bind_type.snpEff_input_rod.ext}" "input_snpEff_${snpEff_rod_bind_type.snpEff_rod_name}"
     #else:
         -p '--excludeAnnotation "SnpEff"'
     #end if
-    
+
     #for $expression in $expressions:
         -p '--expression "${expression.expression}"'
     #end for
-    
+
     #include source=$standard_gatk_options#
-    
+
     -p '
     #if str( $annotation_group ) != "None":
         #for $group in str( $annotation_group ).split( ',' ):
@@ -124,22 +125,22 @@
         </param>
       </when>
     </conditional>
-    
+
     <repeat name="additional_annotations" title="Additional annotation" help="-A,--annotation &amp;lt;annotation&amp;gt;">
       <param name="additional_annotation_name" type="text" value="" label="Annotation name" />
     </repeat>
-    
+
     <repeat name="comp_rod_bind" title="Binding for reference-ordered comparison data" help="-comp,--comp &amp;lt;comp&amp;gt;">
       <param name="comp_input_rod" type="data" format="vcf" label="ROD file" />
       <param name="comp_rod_name" type="text" value="Unnamed" label="ROD Name"/>
     </repeat>
     <expand macro="dbsnp_param" />
-    
+
     <repeat name="resource_rod_bind" title="Binding for reference-ordered resource data" help="-resource,--resource &amp;lt;resource&amp;gt;">
       <param name="resource_input_rod" type="data" format="vcf" label="ROD file" />
       <param name="resource_rod_name" type="text" value="Unnamed" label="ROD Name"/>
     </repeat>
-    
+
     <conditional name="snpEff_rod_bind_type">
       <param name="snpEff_rod_bind_type_selector" type="select" label="Provide a snpEff reference-ordered data file (VCF)" help="-snpEffFile,--snpEffFile &amp;lt;snpEffFile&amp;gt;">
         <option value="set_snpEff">Set snpEff</option>
@@ -153,13 +154,13 @@
         <param name="snpEff_rod_name" type="hidden" value="snpEff" label="ROD Name"/>
       </when>
     </conditional>
-    
+
     <repeat name="expressions" title="Expression" help="-E,--expression &amp;lt;expression&amp;gt;">
       <param name="expression" type="text" value="" label="Expression"/>
     </repeat>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
     <param name="annotation_group" type="select" multiple="True" display="checkboxes" label="annotation interfaces/groups to apply to variant calls" help="-G,--group &amp;lt;group&amp;gt;">
       <option value="RodRequiringAnnotation">RodRequiringAnnotation</option>
       <option value="Standard">Standard</option>
@@ -176,7 +177,7 @@
         <filter type="static_value" value="VariantAnnotator" column="tools_valid_for"/>
       </options>
     </param>
-    
+
   </inputs>
   <outputs>
     <data format="vcf" name="output_vcf" label="${tool.name} on ${on_string} (Variant File)" />
@@ -197,7 +198,7 @@
           <param name="dbsnp_rod_name" value="dbsnp" />
           <param name="snpEff_rod_bind_type_selector" value="exclude_snpEff" />
           <param name="gatk_param_type_selector" value="basic" />
-          <output name="output_vcf" file="gatk/gatk_variant_annotator/gatk_variant_annotator_out_1.vcf" lines_diff="4" /> 
+          <output name="output_vcf" file="gatk/gatk_variant_annotator/gatk_variant_annotator_out_1.vcf" lines_diff="4" />
           <output name="output_log" file="gatk/gatk_variant_annotator/gatk_variant_annotator_out_1.log.contains" compare="contains" />
           <param name="comp_rod_bind" value="0" />
           <param name="resource_rod_bind" value="0" />
--- a/variant_apply_recalibration.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_apply_recalibration.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,14 +1,15 @@
-<tool id="gatk2_variant_apply_recalibration" name="Apply Variant Recalibration" version="@VERSION@.0">
+<tool id="gatk2_variant_apply_recalibration" name="Apply Variant Recalibration" version="@VERSION@.1">
   <description></description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
-    #for $var_count, $variant in enumerate( $reference_source.variants ):
-        -d "--input:input_${var_count},%(file_type)s" "${variant.input_variants}" "${variant.input_variants.ext}" "input_variants_${var_count}"
+    #for $var_count, $variant in enumerate( $reference_source.input_variants ):
+        -d "--input:input_${var_count},%(file_type)s" "${variant}" "${variant.ext}" "input_variants_${var_count}"
     #end for
    -p '
    @JAR_PATH@
@@ -24,13 +25,13 @@
     --tranches_file "${reference_source.input_tranches}"
     --out "${output_variants}"
    '
-    
+
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     -p '
     --mode "${mode}"
-    
+
     #for $ignore_filter in $ignore_filters:
         #set $ignore_filter_name = str( $ignore_filter.ignore_filter_type.ignore_filter_type_selector )
         #if $ignore_filter_name == "custom":
@@ -45,9 +46,7 @@
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="variants" title="Variant" min="1" help="-input,--input &amp;lt;input&amp;gt;">
-          <param name="input_variants" type="data" format="vcf" label="Variant file to annotate"/>
-        </repeat>
+        <expand macro="input_variants" />
         <param name="input_recal" type="data" format="gatk_recal" label="Variant Recalibration file" help="-recalFile,--recal_file &amp;lt;recal_file&amp;gt;" />
         <param name="input_tranches" type="data" format="gatk_tranche" label="Variant Tranches file" help="-tranchesFile,--tranches_file &amp;lt;tranches_file&amp;gt;" />
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;">
@@ -58,17 +57,15 @@
         </param>
       </when>
       <when value="history"> <!-- FIX ME!!!! -->
-        <repeat name="variants" title="Variant" min="1" help="-input,--input &amp;lt;input&amp;gt;">
-          <param name="input_variants" type="data" format="vcf" label="Variant file to annotate" />
-        </repeat>
+        <expand macro="input_variants" />
         <param name="input_recal" type="data" format="gatk_recal" label="Variant Recalibration file" help="-recalFile,--recal_file &amp;lt;recal_file&amp;gt;" />
         <param name="input_tranches" type="data" format="gatk_tranche" label="Variant Tranches file" help="-tranchesFile,--tranches_file &amp;lt;tranches_file&amp;gt;" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
         <param name="mode" type="select" label="Recalibration mode" help="-mode,--mode &amp;lt;mode&amp;gt;">
           <option value="SNP" selected="True">SNP</option>
           <option value="INDEL">INDEL</option>
--- a/variant_combine.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_combine.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_variant_combine" name="Combine Variants" version="@VERSION@.0">
   <description></description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
@@ -29,10 +30,9 @@
    --genotypemergeoption "${genotype_merge_option}"
    --rod_priority_list "${ ','.join( $priority_order ) }"
    '
-   
+
     #include source=$standard_gatk_options#
-    
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
@@ -41,17 +41,17 @@
         ${analysis_param_type.filtered_are_uncalled}
         ${analysis_param_type.minimal_vcf}
         ${analysis_param_type.assume_identical_samples}
-        
+
         #if str( $analysis_param_type.set_key ):
             --setKey "${analysis_param_type.set_key}"
         #end if
-        
+
         --minimumN "${analysis_param_type.minimum_n}"
         '
     #end if
   </command>
   <inputs>
-    
+
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
@@ -78,34 +78,31 @@
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <param name="genotype_merge_option" type="select" label="How should we merge genotype records across records for samples shared across the ROD files" help="-genotypeMergeOptions,--genotypemergeoption &amp;lt;genotypemergeoption&amp;gt;" >
       <option value="UNIQUIFY" />
       <option value="PRIORITIZE" selected="true"/>
       <option value="UNSORTED" />
       <option value="REQUIRE_UNIQUE" />
     </param>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
-    
+
     <expand macro="analysis_type_conditional">
         <param name="filtered_records_merge_type" type="select" label="How should we deal with records seen at the same site in the VCF, but with different FILTER fields?" help="-filteredRecordsMergeType,--filteredrecordsmergetype &amp;lt;filteredrecordsmergetype&amp;gt;" >
           <option value="KEEP_IF_ANY_UNFILTERED" selected="true"/>
           <option value="KEEP_IF_ALL_UNFILTERED" />
         </param>
-        
+
         <param name="print_complex_merges" checked="false" type="boolean" truevalue="--printComplexMerges" falsevalue="" label="Print out interesting sites requiring complex compatibility merging" help="-printComplexMerges,--printComplexMerges" />
         <param name="filtered_are_uncalled" checked="false" type="boolean" truevalue="--filteredAreUncalled" falsevalue="" label="If true, then filtered VCFs are treated as uncalled, so that filtered set annotation don't appear in the combined VCF" help="-filteredAreUncalled,--filteredAreUncalled" />
         <param name="minimal_vcf" checked="false" type="boolean" truevalue="--minimalVCF" falsevalue="" label="If true, then the output VCF will contain no INFO or genotype INFO field" help="-minimalVCF,--minimalVCF" />
-        
+
         <param name="set_key" type="text" value="" label="Key, by default set, in the INFO key=value tag emitted describing which set the combined VCF record came from." help="-setKey,--setKey &amp;lt;setKey&amp;gt;"/>
         <param name="assume_identical_samples" checked="false" type="boolean" truevalue="--assumeIdenticalSamples" falsevalue="" label="If true, assume input VCFs have identical sample sets and disjoint calls so that one can simply perform a merge sort to combine the VCFs into one, drastically reducing the runtime." help="-assumeIdenticalSamples,--assumeIdenticalSamples" />
         <param name="minimum_n" type="integer" value="1" label="Combine variants and output site only if variant is present in at least N input files." help="-minN,--minimumN &amp;lt;minimumN&amp;gt;"/>
-        
     </expand>
-    
-    
+
   </inputs>
   <outputs>
     <data format="vcf" name="output_variants" label="${tool.name} on ${on_string} (variants)" />
--- a/variant_eval.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_eval.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,16 +1,17 @@
-<tool id="gatk2_variant_eval" name="Eval Variants" version="@VERSION@.0">
+<tool id="gatk2_variant_eval" name="Eval Variants" version="@VERSION@.1">
   <description></description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
    #from binascii import hexlify
 
     gatk2_wrapper.py
    --stdout "${output_log}"
-    #for $var_count, $variant in enumerate( $reference_source.variants ):
-        -d "--eval:input_${var_count},%(file_type)s" "${variant.input_variant}" "${variant.input_variant.ext}" "input_variants_${var_count}"
+    #for $var_count, $variant in enumerate( $reference_source.input_variants ):
+        -d "--eval:input_${var_count},%(file_type)s" "${variant}" "${variant.ext}" "input_variants_${var_count}"
     #end for
     -p '
     @JAR_PATH@
@@ -24,24 +25,23 @@
         -R "${reference_source.ref_file.fields.path}"
     #end if
    '
-   
+
     #for $rod_binding in $comp_rod_bind:
         -d "--comp:${rod_binding.comp_rod_name},%(file_type)s" "${rod_binding.comp_input_rod}" "${rod_binding.comp_input_rod.ext}" "input_comp_${rod_binding.comp_rod_name}"
         #if str( $rod_binding.comp_known_names ):
             -p '--known_names "${rod_binding.comp_rod_name}"'
         #end if
     #end for
-    
+
     #if $dbsnp_rod_bind_type.dbsnp_rod_bind_type_selector == 'set_dbsnp'
         -d "--dbsnp:${dbsnp_rod_bind_type.dbsnp_rod_name},%(file_type)s" "${dbsnp_rod_bind_type.dbsnp_input_rod}" "${dbsnp_rod_bind_type.dbsnp_input_rod.ext}" "input_dbsnp_${dbsnp_rod_bind_type.dbsnp_rod_name}"
         #if $dbsnp_rod_bind_type.dbsnp_known_names
             -p '--known_names "${dbsnp_rod_bind_type.dbsnp_rod_name}"'
         #end if
     #end if
-   
+
     #include source=$standard_gatk_options#
-    
-    
+
     ##start analysis specific options
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         #for $stratification in $analysis_param_type.stratifications:
@@ -49,39 +49,39 @@
             -o '${ hexlify( $select_string ) }'
         #end for
         -p '
-        
+
         #for $sample in $analysis_param_type.samples:
             --sample "${sample.sample}"
         #end for
-        
+
         #if str( $analysis_param_type.stratification_modules ) != "None":
             #for $stratification_module in str( $analysis_param_type.stratification_modules).split( ',' ):
                 --stratificationModule "${stratification_module}"
             #end for
         #end if
-        
+
         ${analysis_param_type.do_not_use_all_standard_stratifications}
-        
+
         #for $variant_type in $analysis_param_type.only_variants_of_type:
             --onlyVariantsOfType "${variant_type.variant_type}"
         #end for
-        
+
         #if str( $analysis_param_type.eval_modules ) != "None":
             #for $eval_module in str( $analysis_param_type.eval_modules).split( ',' ):
                 --evalModule "${eval_module}"
             #end for
         #end if
-        
+
         ${analysis_param_type.do_not_use_all_standard_modules}
-        
+
         #if str( $analysis_param_type.num_samples ) != "0":
             --numSamples "${analysis_param_type.num_samples}"
         #end if
-        
+
         --minPhaseQuality "${analysis_param_type.min_phase_quality}"
-        
+
         --mendelianViolationQualThreshold "${analysis_param_type.mendelian_violation_qual_threshold}"
-        
+
         #if str( $analysis_param_type.ancestral_alignments ) != "None":
             --ancestralAlignments "${analysis_param_type.ancestral_alignments}"
         #end if
@@ -89,20 +89,18 @@
         #if str( $analysis_param_type.known_cnvs ) != "None":
             -d "--knownCNVs" "${analysis_param_type.known_cnvs}" "${analysis_param_type.known_cnvs.ext}" "input_known_cnvs"
         #end if
-        
+
         #if str( $analysis_param_type.strat_intervals ) != "None":
             -d "--stratIntervals" "${analysis_param_type.strat_intervals}" "${analysis_param_type.strat_intervals.ext}" "input_strat_intervals"
         #end if
     #end if
   </command>
   <inputs>
-    
+
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="variants" title="Variant" min="1" help="-eval,--eval &amp;lt;eval&amp;gt;">
-          <param name="input_variant" type="data" format="vcf" label="Input variant file" />
-        </repeat>
+        <expand macro="input_variants" help="-eval,--eval &amp;lt;eval&amp;gt;"/>
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;">
           <options from_data_table="gatk2_picard_indexes">
             <!-- <filter type="data_meta" key="dbkey" ref="input_variant" column="dbkey"/> -->
@@ -111,13 +109,11 @@
         </param>
       </when>
       <when value="history"> <!-- FIX ME!!!! -->
-        <repeat name="variants" title="Variant" min="1" help="-eval,--eval &amp;lt;eval&amp;gt;">
-          <param name="input_variant" type="data" format="vcf" label="Input variant file" />
-        </repeat>
+        <expand macro="input_variants" help="-eval,--eval &amp;lt;eval&amp;gt;" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <repeat name="comp_rod_bind" title="Comparison Reference-Ordered Data (ROD) file" help="-comp,--comp &amp;lt;comp&amp;gt;">
       <param name="comp_input_rod" type="data" format="vcf" label="Comparison ROD file" />
       <param name="comp_rod_name" type="text" value="" label="Comparison ROD name">
@@ -139,10 +135,9 @@
         <param name="dbsnp_known_names" type="boolean" label="Use dbSNP ROD file as known_names" help="-knownName,--known_names &amp;lt;known_names&amp;gt;" />
       </when>
     </conditional>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
-    
+
     <expand macro="analysis_type_conditional">
         <repeat name="stratifications" title="Stratification">
           <param name="select_exps" value="" type="text" label="Stratification Expression" help="-select,--select_exps &amp;lt;select_exps&amp;gt;">
@@ -155,11 +150,11 @@
           </param>
           <param name="select_name" value="" type="text" label="Name" help="-selectName,--select_names &amp;lt;select_names&amp;gt;"/>
         </repeat>
-        
+
         <repeat name="samples" title="Sample" help="-sn,--sample &amp;lt;sample&amp;gt;">
           <param name="sample" value="" type="text" label="Derive eval and comp contexts using only these sample genotypes, when genotypes are available in the original context"/>
         </repeat>
-        
+
         <param name="stratification_modules" type="select" multiple="True" display="checkboxes" label="Stratification modules to apply to the eval track(s)" help="-ST,--stratificationModule &amp;lt;stratificationModule&amp;gt;" >
           <option value="AlleleCount" />
           <option value="AlleleFrequency" />
@@ -181,11 +176,11 @@
           <option value="VariantType" />
         </param>
         <param name="do_not_use_all_standard_stratifications" checked="false" type="boolean" truevalue="--doNotUseAllStandardStratifications" falsevalue="" label="Do not use the standard stratification modules by default" help="-noST,--doNotUseAllStandardStratifications" />
-        
+
         <repeat name="only_variants_of_type" title="only Variants Of Type" help="--onlyVariantsOfType">
           <param name="variant_type" type="text" value="" label="only variants of these types will be considered during the evaluation"/>
         </repeat>
-        
+
         <param name="eval_modules" type="select" multiple="True" display="checkboxes" label="Eval modules to apply to the eval track(s)" help="-EV,--evalModule &amp;lt;evalModule&amp;gt;" >
           <option value="CompOverlap" />
           <option value="CountVariants" />
@@ -200,17 +195,15 @@
           <option value="VariantSummary" />
         </param>
         <param name="do_not_use_all_standard_modules" checked="false" type="boolean" truevalue="--doNotUseAllStandardModules" falsevalue="" label="Do not use the standard eval modules by default" help="-noEV,--doNotUseAllStandardModules" />
-        
+
         <param name="num_samples" type="integer" label="Number of samples (used if no samples are available in the VCF file" value="0" help="-ns,--numSamples &amp;lt;numSamples&amp;gt;"/>
         <param name="min_phase_quality" type="float" label="Minimum phasing quality " value="10.0" help="-mpq,--minPhaseQuality &amp;lt;minPhaseQuality&amp;gt;"/>
         <param name="mendelian_violation_qual_threshold" type="integer" label="Minimum genotype QUAL score for each trio member required to accept a site as a violation" value="50" help="-mvq,--mendelianViolationQualThreshold &amp;lt;mendelianViolationQualThreshold&amp;gt;"/>
         <param name="ancestral_alignments" type="data" format="fasta" optional="True" label="Fasta file with ancestral alleles" help="-aa,--ancestralAlignments &amp;lt;ancestralAlignments&amp;gt;" />
         <param name="known_cnvs" type="data" format="bed,gatk_interval,picard_interval_list" optional="True" label="File containing tribble-readable features describing a known list of copy number variants" help="-knownCNVs,--knownCNVs &amp;lt;knownCNVs&amp;gt;" />
         <param name="strat_intervals" type="data" format="bed,gatk_interval,picard_interval_list" optional="True" label="File containing tribble-readable features for the IntervalStratificiation" help="-stratIntervals,--stratIntervals &amp;lt;stratIntervals&amp;gt;" />
-        
     </expand>
-    
-    
+
   </inputs>
   <outputs>
     <data format="gatk_report" name="output_report" label="${tool.name} on ${on_string} (report)" />
@@ -269,7 +262,7 @@
  known_names                           Name of ROD bindings containing variant sites that should be treated as known when splitting eval rods into known and novel subsets
  stratificationModule                  One or more specific stratification modules to apply to the eval track(s) (in addition to the standard stratifications, unless -noS is specified)
  doNotUseAllStandardStratifications    Do not use the standard stratification modules by default (instead, only those that are specified with the -S option)
- onlyVariantsOfType                    If provided, only variants of these types will be considered during the evaluation, in 
+ onlyVariantsOfType                    If provided, only variants of these types will be considered during the evaluation, in
  evalModule                            One or more specific eval modules to apply to the eval track(s) (in addition to the standard modules, unless -noE is specified)
  doNotUseAllStandardModules            Do not use the standard modules by default (instead, only those that are specified with the -E option)
  numSamples                            Number of samples (used if no samples are available in the VCF file
--- a/variant_filtration.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_filtration.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_variant_filtration" name="Variant Filtration" version="@VERSION@.0">
   <description>on VCF files</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     #from binascii import hexlify
 
@@ -25,7 +26,7 @@
         #set $variant_filter = "--%sExpression '%s' --%sName '%s'" % ( str( $variant_filter.is_genotype_filter ), str( $variant_filter.filter_expression ), str( $variant_filter.is_genotype_filter ), str( $variant_filter.filter_name )  )
         -o '${ hexlify( $variant_filter ) }'
     #end for
-    
+
     #if str( $mask_rod_bind_type.mask_rod_bind_type_selector ) == 'set_mask':
         -d "--mask:${mask_rod_bind_type.mask_rod_name},%(file_type)s" "${mask_rod_bind_type.input_mask_rod}" "${mask_rod_bind_type.input_mask_rod.ext}" "input_mask_${mask_rod_bind_type.mask_rod_name}"
         -p '
@@ -33,9 +34,9 @@
         --maskName "${mask_rod_bind_type.mask_rod_name}"
         '
     #end if
-    
+
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     #if $cluster_snp_type.cluster_snp_type_selector == "cluster_snp":
         -p '
@@ -62,8 +63,7 @@
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
-    
+
     <repeat name="variant_filters" title="Variant Filters">
         <param name="filter_expression" value="AB &lt; 0.2 || MQ0 &gt; 50" type="text" label="Filter expression" help="JEXL formatted expressions (-filter,--filterExpression &amp;lt;filterExpression&amp;gt;)">
             <sanitizer>
@@ -76,9 +76,7 @@
         <param name="filter_name" value="custom_filter" type="text" label="Filter name" help="-filterName,--filterName &amp;lt;filterName&amp;gt;"/>
         <param name="is_genotype_filter" type="boolean" truevalue="genotypeFilter" falsevalue="filter" label="Use filter at the individual sample level" help="Use -G_filter,--genotypeFilterExpression &amp;lt;genotypeFilterExpression&amp;gt; and -G_filterName,--genotypeFilterName &amp;lt;genotypeFilterName&amp;gt; for filter type" />
     </repeat>
-    
 
-    
     <conditional name="mask_rod_bind_type">
       <param name="mask_rod_bind_type_selector" type="select" label="Provide a Mask reference-ordered data file">
         <option value="set_mask" selected="True">Set mask</option>
@@ -92,11 +90,10 @@
         <param name="mask_rod_name" type="text" value="Mask" label="Mask Name" help="-maskName,--maskName &amp;lt;maskName&amp;gt;"/>
         <param name="mask_extension" type="integer" value="0" label="Mask Extension" help="-maskExtend,--maskExtension &amp;lt;maskExtension&amp;gt;"/>
       </when>
-    </conditional>    
-    
-    
+    </conditional>
+
     <expand macro="gatk_param_type_conditional" />
-    
+
     <conditional name="cluster_snp_type">
       <param name="cluster_snp_type_selector" type="select" label="Cluster SNPs">
         <option value="cluster_snp">Cluster SNPs</option>
@@ -110,9 +107,9 @@
         <param name="cluster_window_size" type="integer" value="0" label="The window size (in bases) in which to evaluate clustered SNPs" help="-window,--clusterWindowSize &amp;lt;clusterWindowSize&amp;gt;"/>
       </when>
     </conditional>
-    
+
     <param name="missing_values_in_expressions_should_evaluate_as_failing" type="boolean" truevalue="--missingValuesInExpressionsShouldEvaluateAsFailing" falsevalue="" label="Should missing values be considered failing the expression" help="--missingValuesInExpressionsShouldEvaluateAsFailing" />
-    
+
   </inputs>
   <outputs>
     <data format="vcf" name="output_vcf" label="${tool.name} on ${on_string} (Variant File)" />
@@ -133,7 +130,7 @@
           <param name="gatk_param_type_selector" value="basic" />
           <param name="cluster_snp_type_selector" value="do_not_cluster_snp" />
           <param name="missing_values_in_expressions_should_evaluate_as_failing" />
-          <output name="output_vcf" file="gatk/gatk_variant_annotator/gatk_variant_annotator_out_1.vcf" lines_diff="4" /> 
+          <output name="output_vcf" file="gatk/gatk_variant_annotator/gatk_variant_annotator_out_1.vcf" lines_diff="4" />
           <output name="output_log" file="gatk/gatk_variant_filtration/gatk_variant_filtration_out_1.log.contains" compare="contains" />
       </test>
   </tests>
--- a/variant_recalibrator.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_recalibrator.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,16 +1,17 @@
-<tool id="gatk2_variant_recalibrator" name="Variant Recalibrator" version="@VERSION@.0">
+<tool id="gatk2_variant_recalibrator" name="Variant Recalibrator" version="@VERSION@.1">
   <description></description>
+  <macros>
+    <import>gatk2_macros.xml</import>
+  </macros>
   <expand macro="requirements">
     <requirement type="package" version="0.9.3">ggplot2</requirement>
   </expand>
-  <macros>
-    <import>gatk2_macros.xml</import>
-  </macros>
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
     --stdout "${output_log}"
-    #for $var_count, $variant in enumerate( $reference_source.variants ):
-        -d "--input:input_${var_count},%(file_type)s" "${variant.input_variants}" "${variant.input_variants.ext}" "input_variants_${var_count}"
+    #for $var_count, $variant in enumerate( $reference_source.input_variants ):
+        -d "--input:input_${var_count},%(file_type)s" "${variant}" "${variant.ext}" "input_variants_${var_count}"
     #end for
     -p '
     @JAR_PATH@
@@ -26,14 +27,14 @@
     --tranches_file "${output_tranches}"
     --rscript_file "${output_rscript}"
    '
-    
+
     #set $rod_binding_names = dict()
     #for $rod_binding in $rod_bind:
         #if str( $rod_binding.rod_bind_type.rod_bind_type_selector ) == 'custom':
             #set $rod_bind_name = $rod_binding.rod_bind_type.custom_rod_name
         #elif str( $rod_binding.rod_bind_type.rod_bind_type_selector ) == 'comp':
             #set $rod_bind_name = "comp" + $rod_binding.rod_bind_type.custom_rod_name
-        #else 
+        #else
             #set $rod_bind_name = $rod_binding.rod_bind_type.rod_bind_type_selector
         #end if
         #set $rod_binding_names[$rod_bind_name] = $rod_binding_names.get( $rod_bind_name, -1 ) + 1
@@ -43,9 +44,9 @@
             -d "--resource:${rod_bind_name},%(file_type)s,known=${rod_binding.rod_bind_type.rod_training_type.known},training=${rod_binding.rod_bind_type.rod_training_type.training},truth=${rod_binding.rod_bind_type.rod_training_type.truth},bad=${rod_binding.rod_bind_type.rod_training_type.bad},prior=${rod_binding.rod_bind_type.rod_training_type.prior}" "${rod_binding.rod_bind_type.input_rod}" "${rod_binding.rod_bind_type.input_rod.ext}" "input_${rod_bind_name}_${rod_binding_names[$rod_bind_name]}"
         #end if
     #end for
-    
+
     #include source=$standard_gatk_options#
-    
+
     ##start analysis specific options
     -p '
     #if str( $annotations ) != "None":
@@ -58,7 +59,7 @@
     #end for
     --mode "${mode}"
     '
-    
+
     #if $analysis_param_type.analysis_param_type_selector == "advanced":
         -p '
         --maxGaussians "${analysis_param_type.max_gaussians}"
@@ -84,19 +85,16 @@
         #end for
         '
     #end if
-    
-    
+
     &amp;&amp;
     mv "${output_rscript}.pdf" "${output_tranches_pdf}"
-    
+
   </command>
   <inputs>
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
-        <repeat name="variants" title="Variant" min="1" help="-input,--input &amp;lt;input&amp;gt;">
-          <param name="input_variants" type="data" format="vcf" label="Variant file to recalibrate" />
-        </repeat>
+        <expand macro="input_variants" />
         <param name="ref_file" type="select" label="Using reference genome" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;">
           <options from_data_table="gatk2_picard_indexes">
           <!--  <filter type="data_meta" key="dbkey" ref="variants[0].input_variants" column="dbkey"/> -->
@@ -105,13 +103,11 @@
         </param>
       </when>
       <when value="history"> <!-- FIX ME!!!! -->
-        <repeat name="variants" title="Variant" min="1" help="-input,--input &amp;lt;input&amp;gt;">
-          <param name="input_variants" type="data" format="vcf" label="Variant file to recalibrate" />
-        </repeat>
+        <expand macro="input_variants" />
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <repeat name="rod_bind" title="Binding for reference-ordered data" help="-resource,--resource &amp;lt;resource&amp;gt;" min="2">
         <conditional name="rod_bind_type">
           <param name="rod_bind_type_selector" type="select" label="Binding Type">
@@ -182,7 +178,7 @@
                       <param name="prior" type="float" label="prior probability of being true" value="12.0"/>
                   </when>
               </conditional>
-          </when>          
+          </when>
           <when value="dbsnp">
               <param name="input_rod" type="data" format="vcf" label="ROD file" />
               <conditional name="rod_training_type">
@@ -300,7 +296,7 @@
           </when>
         </conditional>
     </repeat>
-    
+
     <param name="annotations" type="select" multiple="True" display="checkboxes" label="annotations which should used for calculations" help="-an,--use_annotation &amp;lt;use_annotation&amp;gt;">
       <!-- load the available annotations from an external configuration file, since additional ones can be added to local installs -->
       <options from_data_table="gatk2_annotations">
@@ -308,19 +304,19 @@
         <filter type="static_value" value="VariantRecalibrator" column="tools_valid_for"/>
       </options>
     </param>
-    
+
     <repeat name="additional_annotations" title="Additional annotation" help="-an,--use_annotation &amp;lt;use_annotation&amp;gt;">
       <param name="additional_annotation_name" type="text" value="" label="Annotation name" />
     </repeat>
-    
+
     <param name="mode" type="select" label="Recalibration mode" help="-mode,--mode &amp;lt;mode&amp;gt;">
         <option value="SNP" selected="True">SNP</option>
         <option value="INDEL">INDEL</option>
         <option value="BOTH">BOTH</option>
     </param>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
     <expand macro="analysis_type_conditional">
         <param name="max_gaussians" type="integer" label="maximum number of Gaussians to try during variational Bayes Algorithm" value="8" help="-mG,--maxGaussians &amp;lt;maxGaussians&amp;gt;"/>
         <param name="max_iterations" type="integer" label="maximum number of maximum number of VBEM iterations to be performed in variational Bayes Algorithm" value="150" help="-mI,--maxIterations &amp;lt;maxIterations&amp;gt;"/>
--- a/variant_select.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_select.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
-<tool id="gatk2_variant_select" name="Select Variants" version="@VERSION@.0">
+<tool id="gatk2_variant_select" name="Select Variants" version="@VERSION@.2">
   <description>from VCF files</description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     #from binascii import hexlify
 
@@ -17,7 +18,7 @@
 
     @THREADS@
     -o "${output_vcf}"
-    
+
     #if $reference_source.reference_source_selector != "history":
         -R "${reference_source.ref_file.fields.path}"
     #end if
@@ -29,74 +30,72 @@
     #if $input_discordance:
         --discordance "${input_discordance}"
     #end if
-    
+
     #for $exclude_sample_name in $exclude_sample_name_repeat:
         --exclude_sample_name "${exclude_sample_name.exclude_sample_name}"
     #end for
-    
+
     ${exclude_filtered}
-    
+
     #for $sample_name in $sample_name_repeat:
         --sample_name "${sample_name.sample_name}"
     #end for
     '
-    
+
     #for $select_expressions in $select_expressions_repeat:
         #set $select_expression = "--select_expressions '%s'" % ( str( $select_expressions.select_expressions ) )
         -o '${ hexlify( $select_expression ) }'
     #end for
-    
+
     ##start tool specific options
     #if str( $analysis_param_type.analysis_param_type_selector ) == 'advanced':
         -p '
-          #for $exclude_sample_file in $analysis_param_type.exclude_sample_file_repeat:
-              --exclude_sample_file "${exclude_sample_file.exclude_sample_file}"
+          #for $esf in $analysis_param_type.exclude_sample_file:
+              --exclude_sample_file "${esf}"
           #end for
-          
-          #for $sample_file in $analysis_param_type.sample_file_repeat:
-              --sample_file "${ample_file.sample_file}"
+
+          #for $sf in $analysis_param_type.sample_file:
+              --sample_file "${sf}"
           #end for
-          
+
           #if $analysis_param_type.input_keep_ids:
               --keepIDs "${analysis_param_type.input_keep_ids}"
           #end if
-          
+
           ${analysis_param_type.keep_original_AC}
-          
+
           ${analysis_param_type.mendelian_violation}
-          
+
           --mendelianViolationQualThreshold "${analysis_param_type.mendelian_violation_qual_threshold}"
-          
+
           --remove_fraction_genotypes "${analysis_param_type.remove_fraction_genotypes}"
-          
+
           --restrictAllelesTo "${analysis_param_type.restrict_alleles_to}"
-          
+
           #if str( $analysis_param_type.select_random_type.select_random_type_selector ) == 'select_random_fraction':
               --select_random_fraction "${analysis_param_type.select_random_type.select_random_fraction}"
           #elif str( $analysis_param_type.select_random_type.select_random_type_selector ) == 'select_random_number':
               --select_random_number "${analysis_param_type.select_random_type.select_random_number}"
           #end if
-          
+
           #if $analysis_param_type.select_type_to_include:
               #for $type_to_include in str( $analysis_param_type.select_type_to_include ).split( ',' ):
                   --selectTypeToInclude "${type_to_include}"
               #end for
           #end if
-          
+
           ${analysis_param_type.exclude_non_variants}
         '
-        
+
         #for $sample_expressions in $analysis_param_type.sample_expressions_repeat:
             #set $sample_expression = "--sample_expressions '%s'" % ( str( $sample_expressions.sample_expressions ) )
             -o '${ hexlify( $sample_expression ) }'
         #end for
-        
+
     #end if
     ##end tool specific options
-    
+
     #include source=$standard_gatk_options#
-    
-    
   </command>
   <inputs>
     <conditional name="reference_source">
@@ -115,7 +114,7 @@
         <param name="ref_file" type="data" format="fasta" label="Using reference file" help="-R,--reference_sequence &amp;lt;reference_sequence&amp;gt;" />
       </when>
     </conditional>
-    
+
     <repeat name="select_expressions_repeat" title="Criteria to use when selecting the data" help="-select,--select_expressions &amp;lt;select_expressions&amp;gt;">
         <param name="select_expressions" type="text" label="JEXL expression">
             <sanitizer>
@@ -126,49 +125,44 @@
             </sanitizer>
         </param>
     </repeat>
-    
+
     <param name="input_concordance" type="data" format="vcf" label="Output variants that were also called in this comparison track" optional="True" help="-conc,--concordance &amp;lt;concordance&amp;gt;"/>
     <param name="input_discordance" type="data" format="vcf" label="Output variants that were not called in this comparison track" optional="True" help="-disc,--discordance &amp;lt;discordance&amp;gt;"/>
-    
+
     <repeat name="sample_name_repeat" title="Include Samples by name" help="-sn,--sample_name &amp;lt;sample_name&amp;gt;">
         <param name="sample_name" type="text" label="Include genotypes from this sample"/>
     </repeat>
-    
+
     <repeat name="exclude_sample_name_repeat" title="Exclude Samples by name" help="-xl_sn,--exclude_sample_name &amp;lt;exclude_sample_name&amp;gt;">
         <param name="exclude_sample_name" type="text" label="Exclude genotypes from this sample"/>
     </repeat>
-    
+
     <param name="exclude_filtered" type="boolean" truevalue="--excludeFiltered" falsevalue="" label="Don't include filtered loci in the analysis" help="-ef,--excludeFiltered" />
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
-    
+
     <expand macro="analysis_type_conditional">
-        
-        <repeat name="exclude_sample_file_repeat" title="Exclude Samples by file" help="-xl_sf,--exclude_sample_file &amp;lt;exclude_sample_file&amp;gt;">
-            <param name="exclude_sample_file" type="data" format="txt" label="File containing a list of samples (one per line) to exclude"/>
-        </repeat>
-        
-        <repeat name="sample_file_repeat" title="Samples by file" help="-sf,--sample_file &amp;lt;sample_file&amp;gt;">
-            <param name="sample_file" type="data" format="txt" label="File containing a list of samples (one per line) to include" />
-        </repeat>
-        
-        <param name="input_keep_ids" type="data" format="text" label="Only emit sites whose ID is found in this file" optional="True" help="-IDs,--keepIDs &amp;lt;keepIDs&amp;gt;"/>
-        
+
+        <param name="exclude_sample_file" type="data" format="txt" multiple="True" label="Exclude Samples by file" help="File containing a list of samples (one per line) to exclude (-xl_sf,--exclude_sample_file &amp;lt;exclude_sample_file&amp;gt;)"/>
+
+        <param name="sample_file" type="data" format="txt" multiple="True" label="Samples by file"  help="File containing a list of samples (one per line) to include (-sf,--sample_file &amp;lt;sample_file&amp;gt;)"/>
+
+        <param name="input_keep_ids" type="data" format="txt" label="Only emit sites whose ID is found in this file" optional="True" help="-IDs,--keepIDs &amp;lt;keepIDs&amp;gt;"/>
+
         <param name="keep_original_AC" type="boolean" truevalue="--keepOriginalAC" falsevalue="" label="Don't update the AC, AF, or AN values in the INFO field after selecting" help="-keepOriginalAC,--keepOriginalAC" />
-        
+
         <param name="mendelian_violation" type="boolean" truevalue="--mendelianViolation" falsevalue="" label="output mendelian violation sites only" help="-mv,--mendelianViolation" />
-        
+
         <param name="mendelian_violation_qual_threshold" type="float" label="Minimum genotype QUAL score for each trio member required to accept a site as a mendelian violation" value="0" help="-mvq,--mendelianViolationQualThreshold &amp;lt;mendelianViolationQualThreshold&amp;gt;" />
-        
+
         <param name="remove_fraction_genotypes" type="float" label="Selects a fraction (a number between 0 and 1) of the total genotypes at random from the variant track and sets them to nocall" value="0" min="0" max="1" help="-fractionGenotypes,--remove_fraction_genotypes &amp;lt;remove_fraction_genotypes&amp;gt;" />
-        
+
         <param name="restrict_alleles_to" type="select" label="Select only variants of a particular allelicity" help="-restrictAllelesTo,--restrictAllelesTo &amp;lt;restrictAllelesTo&amp;gt;">
             <option value="ALL" selected="True">ALL</option>
             <option value="MULTIALLELIC">MULTIALLELIC</option>
             <option value="BIALLELIC">BIALLELIC</option>
         </param>
-        
+
         <repeat name="sample_expressions_repeat" title="Regular expression to select many samples from the ROD tracks provided" help="-se,--sample_expressions &amp;lt;sample_expressions&amp;gt;">
             <param name="sample_expressions" type="text" label="Regular expression">
                 <sanitizer>
@@ -179,7 +173,7 @@
                 </sanitizer>
             </param>
         </repeat>
-        
+
         <conditional name="select_random_type">
           <param name="select_random_type_selector" type="select" label="Select a random subset of variants">
             <option value="select_all" selected="True">Use all variants</option>
@@ -196,9 +190,9 @@
             <param name="select_random_number" type="integer" value="0" label="Count" help="-number,--select_random_number &amp;lt;select_random_number&amp;gt;" />
           </when>
         </conditional>
-        
+
         <param name="exclude_non_variants" type="boolean" truevalue="--excludeNonVariants" falsevalue="" label="Don't include loci found to be non-variant after the subsetting procedure" help="-env,--excludeNonVariants" />
-        
+
         <param name="select_type_to_include" type="select" label="Select only a certain type of variants from the input file" multiple="True" display="checkboxes" help="-selectType,--selectTypeToInclude &amp;lt;selectTypeToInclude&amp;gt;">
             <option value="INDEL">INDEL</option>
             <option value="SNP">SNP</option>
@@ -208,7 +202,7 @@
             <option value="NO_VARIATION">NO_VARIATION</option>
         </param>
     </expand>
-    
+
   </inputs>
   <outputs>
     <data format="vcf" name="output_vcf" label="${tool.name} on ${on_string} (Variant File)" />
@@ -227,14 +221,14 @@
           <param name="sample_name_repeat" value="0" />
           <param name="gatk_param_type_selector" value="basic" />
           <param name="analysis_param_type_selector" value="basic" />
-          <output name="output_vcf" file="gatk/gatk_variant_select/gatk_variant_select_out_1.vcf" lines_diff="4" /> 
+          <output name="output_vcf" file="gatk/gatk_variant_select/gatk_variant_select_out_1.vcf" lines_diff="4" />
           <output name="output_log" file="gatk/gatk_variant_select/gatk_variant_select_out_1.log.contains" compare="contains" />
       </test>
   </tests>
   <help>
 **What it does**
 
-Often, a VCF containing many samples and/or variants will need to be subset in order to facilitate certain analyses (e.g. comparing and contrasting cases vs. controls; extracting variant or non-variant loci that meet certain requirements, displaying just a few samples in a browser like IGV, etc.). SelectVariants can be used for this purpose. Given a single VCF file, one or more samples can be extracted from the file (based on a complete sample name or a pattern match). Variants can be further selected by specifying criteria for inclusion, i.e. "DP &gt; 1000" (depth of coverage greater than 1000x), "AF &lt; 0.25" (sites with allele frequency less than 0.25). These JEXL expressions are documented in the `Using JEXL expressions section &lt;http://gatkforums.broadinstitute.org/discussion/1255/what-are-jexl-expressions-and-how-can-i-use-them-with-the-gatk&gt;`_. One can optionally include concordance or discordance tracks for use in selecting overlapping variants. 
+Often, a VCF containing many samples and/or variants will need to be subset in order to facilitate certain analyses (e.g. comparing and contrasting cases vs. controls; extracting variant or non-variant loci that meet certain requirements, displaying just a few samples in a browser like IGV, etc.). SelectVariants can be used for this purpose. Given a single VCF file, one or more samples can be extracted from the file (based on a complete sample name or a pattern match). Variants can be further selected by specifying criteria for inclusion, i.e. "DP &gt; 1000" (depth of coverage greater than 1000x), "AF &lt; 0.25" (sites with allele frequency less than 0.25). These JEXL expressions are documented in the `Using JEXL expressions section &lt;http://gatkforums.broadinstitute.org/discussion/1255/what-are-jexl-expressions-and-how-can-i-use-them-with-the-gatk&gt;`_. One can optionally include concordance or discordance tracks for use in selecting overlapping variants.
 
 For more information on using the SelectVariants module, see this `tool specific page &lt;http://www.broadinstitute.org/gatk/gatkdocs/org_broadinstitute_sting_gatk_walkers_variantutils_SelectVariants.html&gt;`_.
 
--- a/variant_validate.xml	Mon Aug 25 17:44:53 2014 -0400
+++ b/variant_validate.xml	Mon Jun 04 05:38:15 2018 -0400
@@ -1,9 +1,10 @@
 <tool id="gatk2_variant_validate" name="Validate Variants" version="@VERSION@.0">
   <description></description>
-  <expand macro="requirements" />
   <macros>
     <import>gatk2_macros.xml</import>
   </macros>
+  <expand macro="requirements" />
+  <expand macro="version_command" />
   <command interpreter="python">
     gatk2_wrapper.py
    --stdout "${output_log}"
@@ -11,7 +12,7 @@
    -p '
    @JAR_PATH@
     -T "ValidateVariants"
-    
+
     \$GATK2_SITE_OPTIONS
 
     #if $reference_source.reference_source_selector != "history":
@@ -21,11 +22,11 @@
     ${do_not_validate_filtered_records}
    '
     @DBSNP_OPTIONS@
-   
+
     #include source=$standard_gatk_options#
   </command>
   <inputs>
-    
+
     <conditional name="reference_source">
       <expand macro="reference_source_selector_param" />
       <when value="cached">
@@ -43,12 +44,12 @@
       </when>
     </conditional>
     <expand macro="dbsnp_param" />
-    
+
     <param name="warn_on_errors" type="boolean" checked="False" truevalue="-warnOnErrors" falsevalue="" label="instead of terminating the run at the first error, print warning messages for each error seen." help="-warnOnErrors,--warnOnErrors"/>
     <param name="do_not_validate_filtered_records" type="boolean" checked="False" truevalue="-doNotValidateFilteredRecords" falsevalue="" label="do not try to validate records that are FILTERed." help="-doNotValidateFilteredRecords,--doNotValidateFilteredRecords"/>
-    
+
     <expand macro="gatk_param_type_conditional" />
-    
+
   </inputs>
   <outputs>
     <data format="txt" name="output_log" label="${tool.name} on ${on_string} (log)" />