changeset 33:3f254c5ced1d draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/picard commit 9ecbbb878d68a980ba35a90865e524c723ca3ed8
author iuc
date Sun, 03 Mar 2024 16:06:11 +0000
parents f9242e01365a
children
files picard_AddCommentsToBam.xml picard_AddOrReplaceReadGroups.xml picard_BedToIntervalList.xml picard_CleanSam.xml picard_CollectAlignmentSummaryMetrics.xml picard_CollectBaseDistributionByCycle.xml picard_CollectGcBiasMetrics.xml picard_CollectHsMetrics.xml picard_CollectInsertSizeMetrics.xml picard_CollectRnaSeqMetrics.xml picard_CollectSequencingArtifactsMetrics.xml picard_CollectWgsMetrics.xml picard_DownsampleSam.xml picard_EstimateLibraryComplexity.xml picard_FastqToSam.xml picard_FilterSamReads.xml picard_FixMateInformation.xml picard_MarkDuplicates.xml picard_MarkDuplicatesWithMateCigar.xml picard_MeanQualityByCycle.xml picard_MergeBamAlignment.xml picard_MergeSamFiles.xml picard_NormalizeFasta.xml picard_QualityScoreDistribution.xml picard_ReorderSam.xml picard_ReplaceSamHeader.xml picard_RevertOriginalBaseQualitiesAndAddMateCigar.xml picard_RevertSam.xml picard_SamToFastq.xml picard_SortSam.xml picard_ValidateSamFile.xml picard_macros.xml test-data/err_summary test-data/picard_ARRG_test1.bam test-data/picard_BedToIntervalList_test1.pif test-data/picard_CASM_test1.tab test-data/picard_CleanSam_test1.bam test-data/picard_CollectBaseDistributionByCycle_test1.tab test-data/picard_CollectGcBiasMetrics_test1.tab test-data/picard_CollectHsMetrics_test1.tab test-data/picard_CollectInsertSizeMetrics_test1.tab test-data/picard_CollectRnaSeqMetrics_test1.tab test-data/picard_CollectRnaSeqMetrics_test2.tab test-data/picard_CollectRnaSeqMetrics_test3.tab test-data/picard_CollectWgsMetrics_test1.tab test-data/picard_DownsampleSam_test1.bam test-data/picard_EstimateLibraryComplexity_test1.tab test-data/picard_FastqToSam_test1.bam test-data/picard_FilterSamReads_exclude_reads_test2.bam test-data/picard_FilterSamReads_include_reads_test1.bam test-data/picard_FixMateInformation_test1.bam test-data/picard_MarkDuplicatesWithMateCigar_test1.bam test-data/picard_MarkDuplicates_test1.bam test-data/picard_MarkDuplicates_test2.bam test-data/picard_MeanQualityByCycle_test1.tab test-data/picard_MergeBamAlignment_test1.bam test-data/picard_MergeSamFiles_test1.bam test-data/picard_QualityScoreDistribution_test1.tab test-data/picard_ReplaceSamHeader_test1.bam test-data/picard_RevertOriginalBaseQualitiesAndAddMateCigar_test1.bam test-data/picard_RevertSam_test1.bam test-data/picard_SortSam_test1.bam test-data/picard_SortSam_test1.sam test-data/picard_ValidateSamFile_test1.txt test-data/pos_details test-data/pos_summary test-data/pre_details test-data/pre_summary
diffstat 68 files changed, 2167 insertions(+), 2320 deletions(-) [+]
line wrap: on
line diff
--- a/picard_AddCommentsToBam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_AddCommentsToBam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,49 +1,48 @@
-<tool name="AddCommentsToBam" id="picard_AddCommentsToBam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>add comments to BAM dataset</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="AddCommentsToBam" id="picard_AddCommentsToBam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>add comments to BAM dataset</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
-    @symlink_element_identifier@
+    ## linking does not work, picard complains about not writable file. Hopefully this can be removed in future version.
+    ##@symlink_element_identifier@
+    #import re
+    #set escaped_element_identifier = re.sub('[^\w\-]', '_', str($inputFile.element_identifier))
+    cp '$inputFile' '$escaped_element_identifier' &&
+
     picard
       AddCommentsToBam
-      INPUT='$escaped_element_identifier'
-      OUTPUT="${outFile}"
+      --INPUT '$escaped_element_identifier'
+      --OUTPUT '${outFile}'
       #for $element in $comments:
-        COMMENT="${element.comment}"
+          --COMMENT '${element.comment}'
       #end for
-      QUIET=true
-      VERBOSITY=ERROR
-      VALIDATION_STRINGENCY=${validation_stringency}
+      --QUIET true
+      --VERBOSITY ERROR
+      --VALIDATION_STRINGENCY ${validation_stringency}
   ]]></command>
-
-  <inputs>
-    <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" />
-    <repeat name="comments" title="Comment" min="1" help="You can provide multiple comments">
-          <param name="comment" type="text" label="Add this comment to BAM dataset" help="COMMENT"/>
-    </repeat>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM with comments"/>
-  </outputs>
-
-
-  <tests>
-  <test>
-      <param name="inputFile" value="picard_AddCommentsToBam.bam" />
-      <param name="comment" value="test1" />
-      <param name="validation_stringency" value="LENIENT" />
-      <output name="outFile" file="picard_AddCommentsToBam_test1.bam" ftype="bam" />
-    </test>
-  </tests>
-  <help>
+    <inputs>
+        <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <repeat name="comments" title="Comment" min="1" help="You can provide multiple comments">
+            <param name="comment" type="text" label="Add this comment to BAM dataset" help="COMMENT"/>
+        </repeat>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM with comments"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_AddCommentsToBam.bam"/>
+            <param name="comment" value="test1"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_AddCommentsToBam_test1.bam" ftype="bam"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -60,5 +59,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_AddOrReplaceReadGroups.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_AddOrReplaceReadGroups.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,59 +1,53 @@
-<tool name="AddOrReplaceReadGroups" id="picard_AddOrReplaceReadGroups" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>add or replaces read group information</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <import>read_group_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="AddOrReplaceReadGroups" id="picard_AddOrReplaceReadGroups" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>add or replaces read group information</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <import>read_group_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @define_read_group_helpers@
     #set $rg_auto_name = $read_group_name_default($inputFile)
     @set_read_group_vars@
     @java_options@
     @symlink_element_identifier@
-    picard
-      AddOrReplaceReadGroups
-      INPUT='$escaped_element_identifier'
-      $format_read_group("RGLB=", $rg_lb, '"')
-      $format_read_group("RGPL=", $rg_pl, '"')
-      $format_read_group("RGPU=", $rg_pu, '"')
-      $format_read_group("RGSM=", $rg_sm, '"')
-      $format_read_group("RGID=", $rg_id, '"')
-      $format_read_group("RGDS=", $rg_ds, '"')
-      $format_read_group("RGPI=", $rg_pi, '"')
-      $format_read_group("RGDT=", $rg_dt, '"')
-      VALIDATION_STRINGENCY="${validation_stringency}"
-      QUIET=true
-      VERBOSITY=ERROR
-      OUTPUT="${outFile}"
+    picard AddOrReplaceReadGroups
+      --INPUT '$escaped_element_identifier'
+      $format_read_group("", $rg_lb, quote='"', arg=" --RGLB ")
+      $format_read_group("", $rg_pl, quote='"', arg=" --RGPL ")
+      $format_read_group("", $rg_pu, quote='"', arg=" --RGPU ")
+      $format_read_group("", $rg_sm, quote='"', arg=" --RGSM ")
+      $format_read_group("", $rg_id, quote='"', arg=" --RGID ")
+      $format_read_group("", $rg_ds, quote='"', arg=" --RGDS ")
+      $format_read_group("", $rg_pi, quote='"', arg=" --RGPI ")
+      $format_read_group("", $rg_dt, quote='"', arg=" --RGDT ")
+      --OUTPUT '${outFile}'
+      --VALIDATION_STRINGENCY '${validation_stringency}'
+      --QUIET true
+      --VERBOSITY ERROR
 
   ]]></command>
-
-  <inputs>
-    <param format="bam,sam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" />
-    <expand macro="read_group_inputs_picard" />
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM with replaced/modified readgroups"/>
-  </outputs>
-
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_ARRG.bam" />
-      <param name="LB" value="tumor-a" />
-      <param name="PL" value="ILLUMINA" />
-      <param name="PU" value="run-1" />
-      <param name="SM" value="sample-a" />
-      <param name="ID" value="id-1" />
-      <output name="outFile" file="picard_ARRG_test1.bam" ftype="bam" />
-    </test>
-  </tests>
-  <help>
+    <inputs>
+        <param format="bam,sam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <expand macro="read_group_inputs_picard"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM with replaced/modified readgroups"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_ARRG.bam"/>
+            <param name="LB" value="tumor-a"/>
+            <param name="PL" value="ILLUMINA"/>
+            <param name="PU" value="run-1"/>
+            <param name="SM" value="sample-a"/>
+            <param name="ID" value="id-1"/>
+            <output name="outFile" file="picard_ARRG_test1.bam" ftype="bam"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -107,5 +101,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_BedToIntervalList.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_BedToIntervalList.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,23 +1,25 @@
-<tool name="BedToIntervalList" id="picard_BedToIntervalList" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>convert coordinate data into picard interval list format</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="BedToIntervalList" id="picard_BedToIntervalList" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>convert coordinate data into picard interval list format</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     #set $picard_dict = "localref.dict"
     #set $ref_fasta = "localref.fa"     ## This is done because picards "likes" .fa extension
 
-    ln -s "${reference_source.ref_file}" "${ref_fasta}" &&
+    ln -sf '${reference_source.ref_file}' '${ref_fasta}' &&
 
     #if str( $reference_source.reference_source_selector ) == "history":
 
-      picard CreateSequenceDictionary REFERENCE="${ref_fasta}" OUTPUT="${picard_dict}"
-      QUIET=true
-      VERBOSITY=ERROR
+      picard CreateSequenceDictionary
+      -REFERENCE '${ref_fasta}'
+      -OUTPUT '${picard_dict}'
+      -QUIET true
+      -VERBOSITY ERROR
 
       &&
 
@@ -30,54 +32,48 @@
 
     picard
       BedToIntervalList
-      INPUT='$escaped_element_identifier'
-      OUTPUT="${outFile}"
+      --INPUT '$escaped_element_identifier'
+      --OUTPUT '${outFile}'
 
-      SEQUENCE_DICTIONARY="${picard_dict}"
-      QUIET=true
-      VERBOSITY=ERROR
+      --SEQUENCE_DICTIONARY '${picard_dict}'
+      --QUIET true
+      --VERBOSITY ERROR
 
   ]]></command>
-
-  <inputs>
-
-     <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load picard dictionary file from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
-          <options from_data_table="picard_indexes">
-            <filter type="sort_by" column="2" />
-            <validator type="no_options" message="No indexes are available" />
-          </options>
-          <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
-        </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" />
-      </when>
-    </conditional>
-
-    <param format="bed" name="inputFile" type="data" label="Select coordinate dataset or dataset collection" help="This can be a bed or interval dataset" />
-
-  </inputs>
-  <outputs>
-    <data name="outFile" format="picard_interval_list" label="${tool.name} on ${on_string}: Picard interval list">
+    <inputs>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load picard dictionary file from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
+                    <options from_data_table="picard_indexes">
+                        <filter type="sort_by" column="2"/>
+                        <validator type="no_options" message="No indexes are available"/>
+                    </options>
+                    <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+                </param>
+            </when>
+            <when value="history">
+                <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
+            </when>
+        </conditional>
+        <param format="bed" name="inputFile" type="data" label="Select coordinate dataset or dataset collection" help="This can be a bed or interval dataset"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="picard_interval_list" label="${tool.name} on ${on_string}: Picard interval list">
     </data>
-  </outputs>
-  <tests>
-    <test>
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_BedToIntervalList_ref.fa" ftype="fasta" />
-      <param name="inputFile" value="picard_BedToIntervalList.bed" ftype="bed"/>
-      <output name="outFile" file="picard_BedToIntervalList_test1.pif" ftype="picard_interval_list" lines_diff="8" />
-    </test>
-  </tests>
-
-
-  <help>
+    </outputs>
+    <tests>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_BedToIntervalList_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_BedToIntervalList.bed" ftype="bed"/>
+            <output name="outFile" file="picard_BedToIntervalList_test1.pif" ftype="picard_interval_list" lines_diff="8"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -97,5 +93,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CleanSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CleanSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,43 +1,35 @@
-<tool id="picard_CleanSam" name="CleanSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>perform SAM/BAM grooming</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool id="picard_CleanSam" name="CleanSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>perform SAM/BAM grooming</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
-    picard
-    CleanSam
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    QUIET=true
-    VERBOSITY=ERROR
-    VALIDATION_STRINGENCY=${validation_stringency}
+    picard CleanSam
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --QUIET true
+    --VERBOSITY ERROR
+    --VALIDATION_STRINGENCY ${validation_stringency}
   ]]></command>
-
-  <inputs>
-    <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: cleaned BAM dataset">
+    <inputs>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: cleaned BAM dataset">
     </data>
-  </outputs>
-
-
-  <tests>
-    <test>
-      <param name="inputFile" ftype="bam" value="picard_CleanSam.bam" />
-      <output name="outFile" file="picard_CleanSam_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-  <help>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" ftype="bam" value="picard_CleanSam.bam"/>
+            <output name="outFile" file="picard_CleanSam_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -53,5 +45,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectAlignmentSummaryMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectAlignmentSummaryMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,11 +1,11 @@
-<tool name="Collect Alignment Summary Metrics" id="picard_CASM" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>writes a file containing summary alignment metrics</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="Collect Alignment Summary Metrics" id="picard_CASM" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>writes a file containing summary alignment metrics</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##set up input files
@@ -14,79 +14,77 @@
 
     @handle_reference_source@
 
-    picard
-    CollectAlignmentSummaryMetrics
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    MAX_INSERT_SIZE=${maxinsert}
+    picard CollectAlignmentSummaryMetrics
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --MAX_INSERT_SIZE ${maxinsert}
     #for $sequence in $adapters:
-        ADAPTER_SEQUENCE="${sequence.adapter}"
+        --ADAPTER_SEQUENCE '${sequence.adapter}'
     #end for
     #for $level in str($metric_accumulation_level).split(','):
-        METRIC_ACCUMULATION_LEVEL="${level}"
+        --METRIC_ACCUMULATION_LEVEL '${level}'
     #end for
-    IS_BISULFITE_SEQUENCED="${bisulphite}"
+    --IS_BISULFITE_SEQUENCED '${bisulphite}'
 
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
 
-    ASSUME_SORTED="${assume_sorted}"
+    --ASSUME_SORTED '${assume_sorted}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </options>
-          <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the following dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
+            <option value="ALL_READS" selected="True">All reads</option>
+            <option value="SAMPLE">Sample</option>
+            <option value="LIBRARY">Library</option>
+            <option value="READ_GROUP">Read group</option>
         </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
-      <option value="ALL_READS" selected="True">All reads</option>
-      <option value="SAMPLE">Sample</option>
-      <option value="LIBRARY">Library</option>
-      <option value="READ_GROUP">Read group</option>
-    </param>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-    <param name="bisulphite" type="boolean" label="Input file contains Bisulphite sequenced reads" checked="false" falsevalue="false" truevalue="true" help="IS_BISULFITE_SEQUENCED"/>
-    <repeat name="adapters" title="Adapter" min="0" help="You can provide multiple adaptor sequences">
-          <param name="adapter" type="text" label="Use this adaptor sequence" help="ADAPTER_SEQUENCE"/>
-    </repeat>
-    <param name="maxinsert" value="100000" type="integer" label="Larger paired end reads and inter-chromosomal pairs considered chimeric" help="MAX_INSERT_SIZE"/>
-    <expand macro="VS" />
-
-  </inputs>
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: tablular"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="bisulphite" value="false" />
-      <param name="assume_sorted" value="true" />
-      <repeat name="adapters">
-        <param name="adapter" value = ""/>
-      </repeat>
-      <param name="maxinsert" value="100000" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_CASM_ref.fa" />
-      <param name="inputFile" value="picard_CASM.bam" ftype="bam" />
-      <output name="outFile" file="picard_CASM_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-  <help>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <param name="bisulphite" type="boolean" label="Input file contains Bisulphite sequenced reads" checked="false" falsevalue="false" truevalue="true" help="IS_BISULFITE_SEQUENCED"/>
+        <repeat name="adapters" title="Adapter" min="0" help="You can provide multiple adaptor sequences">
+            <param name="adapter" type="text" label="Use this adaptor sequence" help="ADAPTER_SEQUENCE"/>
+        </repeat>
+        <param name="maxinsert" value="100000" type="integer" label="Larger paired end reads and inter-chromosomal pairs considered chimeric" help="MAX_INSERT_SIZE"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary stats"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="bisulphite" value="false"/>
+            <param name="assume_sorted" value="true"/>
+            <repeat name="adapters">
+                <param name="adapter" value=""/>
+            </repeat>
+            <param name="maxinsert" value="100000"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CASM_ref.fa"/>
+            <param name="inputFile" value="picard_CASM.bam" ftype="bam"/>
+            <output name="outFile" file="picard_CASM_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -121,5 +119,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectBaseDistributionByCycle.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectBaseDistributionByCycle.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="CollectBaseDistributionByCycle" id="picard_CollectBaseDistributionByCycle" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>charts the nucleotide distribution per cycle in a SAM or BAM dataset</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool name="CollectBaseDistributionByCycle" id="picard_CollectBaseDistributionByCycle" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>charts the nucleotide distribution per cycle in a SAM or BAM dataset</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##set up input files
@@ -16,66 +15,59 @@
 
     @handle_reference_source@
 
-    picard
-    CollectBaseDistributionByCycle
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    CHART_OUTPUT="${pdfFile}"
-    ALIGNED_READS_ONLY="${aligned_reads_only}"
-    PF_READS_ONLY="${pf_reads_only}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    ASSUME_SORTED="${assume_sorted}"
+    picard CollectBaseDistributionByCycle
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --CHART_OUTPUT '${pdfFile}'
+    --ALIGNED_READS_ONLY '${aligned_reads_only}'
+    --PF_READS_ONLY '${pf_reads_only}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --ASSUME_SORTED '${assume_sorted}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </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">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="aligned_reads_only" type="boolean" label="Calculate the base distribution over aligned reads only" checked="true" truevalue="true" falsevalue="false" help="ALIGNED_READS_ONLY"/>
-    <param name="pf_reads_only" type="boolean" label="Calculate the base distribution over PF (passing filtering) reads only" checked="true" truevalue="true" falsevalue="false" help="PF_READS_ONLY"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: tabular"/>
-    <data format="pdf" name="pdfFile"  label="${tool.name} on ${on_string}: PDF"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="aligned_reads_only" value="true" />
-      <param name="pf_reads_only" value="true" />
-      <param name="assume_sorted" value="true" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_CollectBaseDistributionByCycle_ref.fa" />
-      <param name="inputFile" value="picard_CollectBaseDistributionByCycle.bam" ftype="bam" />
-      <output name="outFile" file="picard_CollectBaseDistributionByCycle_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="aligned_reads_only" type="boolean" label="Calculate the base distribution over aligned reads only" checked="true" truevalue="true" falsevalue="false" help="ALIGNED_READS_ONLY"/>
+        <param name="pf_reads_only" type="boolean" label="Calculate the base distribution over PF (passing filtering) reads only" checked="true" truevalue="true" falsevalue="false" help="PF_READS_ONLY"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: tabular"/>
+        <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: PDF"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="aligned_reads_only" value="true"/>
+            <param name="pf_reads_only" value="true"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectBaseDistributionByCycle_ref.fa"/>
+            <param name="inputFile" value="picard_CollectBaseDistributionByCycle.bam" ftype="bam"/>
+            <output name="outFile" file="picard_CollectBaseDistributionByCycle_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -104,5 +96,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectGcBiasMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectGcBiasMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="CollectGcBiasMetrics" id="picard_CollectGcBiasMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>charts the GC bias metrics</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool name="CollectGcBiasMetrics" id="picard_CollectGcBiasMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>charts the GC bias metrics</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##set up input files
@@ -16,71 +15,64 @@
 
     @handle_reference_source@
 
-    picard
-    CollectGcBiasMetrics
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    CHART_OUTPUT="${pdfFile}"
-    SUMMARY_OUTPUT="${summaryFile}"
-    WINDOW_SIZE="${window_size}"
-    MINIMUM_GENOME_FRACTION="${minimum_genome_fraction}"
-    IS_BISULFITE_SEQUENCED="${is_bisulfite_sequenced}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    ASSUME_SORTED="${assume_sorted}"
+    picard CollectGcBiasMetrics
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --CHART_OUTPUT '${pdfFile}'
+    --SUMMARY_OUTPUT '${summaryFile}'
+    --WINDOW_SIZE '${window_size}'
+    --MINIMUM_GENOME_FRACTION '${minimum_genome_fraction}'
+    --IS_BISULFITE_SEQUENCED '${is_bisulfite_sequenced}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --ASSUME_SORTED '${assume_sorted}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </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">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="window_size" type="integer" value="100" label="The size of windows on the genome that are used to bin reads" help="WINDOW_SIZE; default=100"/>
-    <param name="minimum_genome_fraction" type="float" value="0.00005" label="For summary metrics, exclude GC windows that include less than this fraction of the genome" help="MINIMUM_GENOME_FRACTION; default=0.0005"/>
-    <param name="is_bisulfite_sequenced" type="boolean" label="Calculate the base distribution over PF (passing filtering) reads only" checked="true" truevalue="true" falsevalue="false" help="PF_READS_ONLY"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="summaryFile" label="${tool.name} on ${on_string}: Summary stats"/>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
-    <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="window_size" value="100" />
-      <param name="minimum_genome_fraction" value="0.00005" />
-      <param name="assume_sorted" value="true" />
-      <param name="is_bisulfite_sequenced" value="true" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_CollectGcBiasMetrics_ref.fa" />
-      <param name="inputFile" value="picard_CollectGcBiasMetrics.bam" ftype="bam" />
-      <output name="outFile" file="picard_CollectGcBiasMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="window_size" type="integer" value="100" label="The size of windows on the genome that are used to bin reads" help="WINDOW_SIZE; default=100"/>
+        <param name="minimum_genome_fraction" type="float" value="0.00005" label="For summary metrics, exclude GC windows that include less than this fraction of the genome" help="MINIMUM_GENOME_FRACTION; default=0.0005"/>
+        <param name="is_bisulfite_sequenced" type="boolean" label="Calculate the base distribution over PF (passing filtering) reads only" checked="true" truevalue="true" falsevalue="false" help="PF_READS_ONLY"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="summaryFile" label="${tool.name} on ${on_string}: Summary stats"/>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
+        <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="window_size" value="100"/>
+            <param name="minimum_genome_fraction" value="0.00005"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="is_bisulfite_sequenced" value="true"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectGcBiasMetrics_ref.fa"/>
+            <param name="inputFile" value="picard_CollectGcBiasMetrics.bam" ftype="bam"/>
+            <output name="outFile" file="picard_CollectGcBiasMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -105,5 +97,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectHsMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectHsMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<tool name="CollectHsMetrics" id="picard_CollectHsMetrics" version="@TOOL_VERSION@">
+<tool name="CollectHsMetrics" id="picard_CollectHsMetrics" version="@TOOL_VERSION@" profile="@PROFILE@">
     <description>compute metrics about datasets generated through hybrid-selection (e.g. exome)</description>
     <macros>
         <import>picard_macros.xml</import>
@@ -9,19 +8,18 @@
 @java_options@
 @symlink_element_identifier@
 
-picard
-CollectHsMetrics
-INPUT='$escaped_element_identifier'
-OUTPUT='${outFile}'
-MINIMUM_MAPPING_QUALITY=${minimum_mapping_quality}
-MINIMUM_BASE_QUALITY=${minimum_base_quality}
-COVERAGE_CAP=${coverage_cap}
-CLIP_OVERLAPPING_READS=${clip_overlapping_reads}
-BAIT_INTERVALS='${baitFile}'
-TARGET_INTERVALS='${targetFile}'
-VALIDATION_STRINGENCY=${validation_stringency}
-QUIET=true
-VERBOSITY=ERROR
+picard CollectHsMetrics
+--INPUT '$escaped_element_identifier'
+--OUTPUT '${outFile}'
+--MINIMUM_MAPPING_QUALITY ${minimum_mapping_quality}
+--MINIMUM_BASE_QUALITY ${minimum_base_quality}
+--COVERAGE_CAP ${coverage_cap}
+--CLIP_OVERLAPPING_READS ${clip_overlapping_reads}
+--BAIT_INTERVALS '${baitFile}'
+--TARGET_INTERVALS '${targetFile}'
+--VALIDATION_STRINGENCY ${validation_stringency}
+--QUIET true
+--VERBOSITY ERROR
     ]]></command>
     <inputs>
         <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" />
--- a/picard_CollectInsertSizeMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectInsertSizeMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="CollectInsertSizeMetrics" id="picard_CollectInsertSizeMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>plots distribution of insert sizes</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool name="CollectInsertSizeMetrics" id="picard_CollectInsertSizeMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>plots distribution of insert sizes</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##set up input files
@@ -16,81 +15,74 @@
 
     @handle_reference_source@
 
-    picard
-    CollectInsertSizeMetrics
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    HISTOGRAM_FILE="${histFile}"
-    DEVIATIONS="${deviations}"
+    picard CollectInsertSizeMetrics
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --Histogram_FILE '${histFile}'
+    --DEVIATIONS '${deviations}'
 
     #if str( $hist_width ):
-      HISTOGRAM_WIDTH="${hist_width}"
+        --HISTOGRAM_WIDTH '${hist_width}'
     #end if
 
-    MINIMUM_PCT="${min_pct}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    ASSUME_SORTED="${assume_sorted}"
-    METRIC_ACCUMULATION_LEVEL="${metric_accumulation_level}"
+    --MINIMUM_PCT '${min_pct}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --ASSUME_SORTED '${assume_sorted}'
+    --METRIC_ACCUMULATION_LEVEL '${metric_accumulation_level}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </options>
-          <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="deviations" type="float" value="10.0" label="Generate mean, sd and plots by trimming the data down to MEDIAN + DEVIATIONS*MEDIAN_ABSOLUTE_DEVIATION" help="DEVIATIONS; This option is offered because insert size data typically includes enough anomalous values from chimeras and other artifacts to make the mean and SD grossly misleading regarding the real distribution. default=10.0"/>
+        <param name="hist_width" type="integer" optional="True" label="Explicitly sets the Histogram width, overriding automatic truncation of Histogram tail" help="HISTOGRAM_WIDTH; optional"/>
+        <param name="min_pct" type="float" value="0.05" label="When generating the Histogram, discard any data categories (out of FR, TANDEM, RF) that have fewer than this percentage of overall reads" help="MINIMUM_PCT; (Range: 0 to 1). default=0.05. "/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
+            <option value="ALL_READS" selected="True">All reads</option>
+            <option value="SAMPLE">Sample</option>
+            <option value="LIBRARY">Library</option>
+            <option value="READ_GROUP">Read group</option>
         </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="deviations" type="float" value="10.0" label="Generate mean, sd and plots by trimming the data down to MEDIAN + DEVIATIONS*MEDIAN_ABSOLUTE_DEVIATION" help="DEVIATIONS; This option is offered because insert size data typically includes enough anomalous values from chimeras and other artifacts to make the mean and SD grossly misleading regarding the real distribution. default=10.0"/>
-    <param name="hist_width" type="integer" optional="True" label="Explicitly sets the Histogram width, overriding automatic truncation of Histogram tail" help="HISTOGRAM_WIDTH; optional"/>
-    <param name="min_pct" type="float" value="0.05" label="When generating the Histogram, discard any data categories (out of FR, TANDEM, RF) that have fewer than this percentage of overall reads" help="MINIMUM_PCT; (Range: 0 to 1). default=0.05. "/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-    <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
-      <option value="ALL_READS" selected="True">All reads</option>
-      <option value="SAMPLE">Sample</option>
-      <option value="LIBRARY">Library</option>
-      <option value="READ_GROUP">Read group</option>
-    </param>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: tabular"/>
-    <data format="pdf" name="histFile" label="${tool.name} on ${on_string}: PDF"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="metric_accumulation_level" value="ALL_READS"/>
-      <param name="deviations" value="10.0" />
-      <param name="hist_width" value="500" />
-      <param name="min_pct" value="0.05" />
-      <param name="assume_sorted" value="true" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_CollectInsertSizeMetrics_ref.fa" />
-      <param name="inputFile" value="picard_CollectInsertSizeMetrics.bam" ftype="bam" />
-      <output name="outFile" file="picard_CollectInsertSizeMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}"/>
+        <data format="pdf" name="histFile" label="${tool.name} on ${on_string}: Histogram"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="metric_accumulation_level" value="ALL_READS"/>
+            <param name="deviations" value="10.0"/>
+            <param name="hist_width" value="500"/>
+            <param name="min_pct" value="0.05"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectInsertSizeMetrics_ref.fa"/>
+            <param name="inputFile" value="picard_CollectInsertSizeMetrics.bam" ftype="bam"/>
+            <output name="outFile" file="picard_CollectInsertSizeMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -129,5 +121,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectRnaSeqMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectRnaSeqMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="CollectRnaSeqMetrics" id="picard_CollectRnaSeqMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
+<tool name="CollectRnaSeqMetrics" id="picard_CollectRnaSeqMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
     <description> collect metrics about the alignment of RNA to various functional classes of loci in the genome</description>
     <macros>
         <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
+        <token name="@WRAPPER_VERSION@">0</token>
     </macros>
     <expand macro="requirements">
-        <requirement type="package" version="3.4.1">r-base</requirement>
-        <requirement type="package" version="357">ucsc-gff3togenepred</requirement>
-        <requirement type="package" version="357">ucsc-gtftogenepred</requirement>
+        <requirement type="package" version="447">ucsc-gff3togenepred</requirement>
+        <requirement type="package" version="447">ucsc-gtftogenepred</requirement>
     </expand>
     <command detect_errors="exit_code"><![CDATA[
       ## Set up input files
@@ -35,159 +34,138 @@
       ## Start picard command
 
       @java_options@
-      picard
-      CollectRnaSeqMetrics
-      REF_FLAT=refFlat.tab
+      picard CollectRnaSeqMetrics
+      --REF_FLAT refFlat.tab
 
       #if str( $ribosomal_intervals ) != "None":
-        RIBOSOMAL_INTERVALS="${ribosomal_intervals}"
+          --RIBOSOMAL_INTERVALS '${ribosomal_intervals}'
       #end if
 
-      STRAND_SPECIFICITY="${strand_specificity}"
-      MINIMUM_LENGTH="${minimum_length}"
-      CHART_OUTPUT="${pdfFile}"
+      --STRAND_SPECIFICITY '${strand_specificity}'
+      --MINIMUM_LENGTH '${minimum_length}'
+      --CHART_OUTPUT '${pdfFile}'
 
       #for $sequence_to_ignore in $ignore_list:
-        IGNORE_SEQUENCE="${sequence_to_ignore.sequence}"
+        --IGNORE_SEQUENCE '${sequence_to_ignore.sequence}'
       #end for
 
-      RRNA_FRAGMENT_PERCENTAGE="${rrna_fragment_percentage}"
-      METRIC_ACCUMULATION_LEVEL="${metric_accumulation_level}"
-      INPUT='$escaped_element_identifier'
-      OUTPUT="${outFile}"
-      REFERENCE_SEQUENCE="${reference_fasta_filename}"
-      ASSUME_SORTED="${assume_sorted}"
-      VALIDATION_STRINGENCY=${validation_stringency}
+      --RRNA_FRAGMENT_PERCENTAGE '${rrna_fragment_percentage}'
+      --METRIC_ACCUMULATION_LEVEL '${metric_accumulation_level}'
+      --INPUT '$escaped_element_identifier'
+      -OUTPUT '${outFile}'
+      --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+      --ASSUME_SORTED '${assume_sorted}'
+      --VALIDATION_STRINGENCY ${validation_stringency}
 
    ]]></command>
-
-   <inputs>
-      <param format="sam,bam" type="data" name="inputFile" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" />
-      <conditional name="reference_source">
-         <param name="reference_source_selector" type="select" label="Load reference genome from">
-            <option value="cached">Local cache</option>
-            <option value="history">History</option>
-         </param>
-         <when value="cached">
-            <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-               <options from_data_table="all_fasta"></options>
-               <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
+    <inputs>
+        <param format="sam,bam" type="data" name="inputFile" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta"/>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <conditional name="gene_reference_source">
+            <param name="gene_reference_source_selector" type="select" label="Load gene annotation from">
+                <option value="gtf">GTF/GFF3</option>
+                <option value="refflat">refFlat</option>
             </param>
-         </when>
-         <when value="history">
-            <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-         </when>
-      </conditional>
-
-      <conditional name="gene_reference_source">
-         <param name="gene_reference_source_selector" type="select" label="Load gene annotation from">
-            <option value="gtf">GTF/GFF3</option>
-            <option value="refflat">refFlat</option>
-         </param>
-         <when value="gtf">
-              <param name="refFlat"
-                     format="gtf,gff3"
-                     type="data"
-                     label="Gene annotation (GTF/GFF3)"/>
-         </when>
-         <when value="refflat">
-              <param name="refFlat"
-                     format="tabular"
-                     type="data"
-                     label="Gene annotations in refFlat form"
-                     help="See &quot;Obtaining gene annotations in refFlat format&quot; below for help"/>
-         </when>
-      </conditional>
-
-
-      <param name="ribosomal_intervals" format="picard_interval_list" type="data" optional="True" label="Location of rRNA sequences in genome, in interval_list format" help="RIBOSOMAL_INTERVALS; If not specified no bases will be identified as being ribosomal. The list of intervals can be geberated from BED or Interval datasets using Galaxy BedToIntervalList tool"/>
-      <param name="strand_specificity" type="select" label="What is the RNA-seq library strand specificity" help="STRAND_SPECIFICITY; For unpaired reads, use FIRST_READ_TRANSCRIPTION_STRAND if the reads are expected to be on the transcription strand.">
-	 <option value="NONE" selected="True">None</option>
-	 <option value="FIRST_READ_TRANSCRIPTION_STRAND">First read transcription strand</option>
-	 <option value="SECOND_READ_TRANSCRIPTION_STRAND">Second read transcription strand</option>
-      </param>
-      <param name="minimum_length" type="integer" value="500" label="When calculating coverage based values use only use transcripts of this length or greater" help="MINIMUM_LENGTH; default=500"/>
-      <repeat name="ignore_list" title="Sequences to ignore" min="0" help="You can provide multiple sequences by clicking the button below">
-          <param name="sequence" type="text" label="Ignore reads matching this sequence"/>
-      </repeat>
-      <param name="rrna_fragment_percentage" type="float" value="0.8" label="This percentage of the length of a fragment must overlap one of the ribosomal intervals for a read or read pair to be considered rRNA." help="RRNA_FRAGMENT_PERCENTAGE; default=0.8"/>
-      <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
-	 <option value="ALL_READS" selected="True">All reads</option>
-	 <option value="SAMPLE">Sample</option>
-	 <option value="LIBRARY">Library</option>
-	 <option value="READ_GROUP">Read group</option>
-      </param>
-      <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-
-      <expand macro="VS" />
-
-  </inputs>
-  <outputs>
-      <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
-      <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary stats"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
-      <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
-      <param name="assume_sorted" value="true" />
-
-      <param name="gene_reference_source_selector" value="refflat" />
-      <param name="refFlat" value="picard_CollectRnaSeqMetrics.refFlat" />
-      <param name="metric_accumulation_level" value="ALL_READS" />
-      <param name="minimum_length" value="500" />
-      <param name="strand_specificity" value="NONE" />
-      <param name="rrna_fragment_percentage" value="0.8" />
-      <output name="outFile" file="picard_CollectRnaSeqMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-   <test>
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
-      <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
-      <param name="assume_sorted" value="true" />
-
-      <param name="gene_reference_source_selector" value="refflat" />
-      <param name="refFlat" value="picard_CollectRnaSeqMetrics.ucsc_output" />
-      <param name="metric_accumulation_level" value="ALL_READS" />
-      <param name="minimum_length" value="500" />
-      <param name="strand_specificity" value="NONE" />
-      <param name="rrna_fragment_percentage" value="0.8" />
-      <output name="outFile" file="picard_CollectRnaSeqMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-
-    <test>
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
-      <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
-      <param name="assume_sorted" value="true" />
-
-      <param name="gene_reference_source_selector" value="gtf" />
-      <param name="refFlat" value="picard_CollectRnaSeqMetrics.gtf" ftype="gtf" />
-      <param name="metric_accumulation_level" value="ALL_READS" />
-      <param name="minimum_length" value="500" />
-      <param name="strand_specificity" value="NONE" />
-      <param name="rrna_fragment_percentage" value="0.8" />
-      <output name="outFile" file="picard_CollectRnaSeqMetrics_test2.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-
-    <test>
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
-      <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
-      <param name="assume_sorted" value="true" />
-
-      <param name="gene_reference_source_selector" value="gtf" />
-      <param name="refFlat" value="picard_CollectRnaSeqMetrics.gff3" ftype="gff3" />
-      <param name="metric_accumulation_level" value="ALL_READS" />
-      <param name="minimum_length" value="500" />
-      <param name="strand_specificity" value="NONE" />
-      <param name="rrna_fragment_percentage" value="0.8" />
-      <output name="outFile" file="picard_CollectRnaSeqMetrics_test3.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-  <help>
+            <when value="gtf">
+                <param name="refFlat" format="gtf,gff3" type="data" label="Gene annotation (GTF/GFF3)"/>
+            </when>
+            <when value="refflat">
+                <param name="refFlat" format="tabular" type="data" label="Gene annotations in refFlat form" help="See &quot;Obtaining gene annotations in refFlat format&quot; below for help"/>
+            </when>
+        </conditional>
+        <param name="ribosomal_intervals" format="picard_interval_list" type="data" optional="True" label="Location of rRNA sequences in genome, in interval_list format" help="RIBOSOMAL_INTERVALS; If not specified no bases will be identified as being ribosomal. The list of intervals can be geberated from BED or Interval datasets using Galaxy BedToIntervalList tool"/>
+        <param name="strand_specificity" type="select" label="What is the RNA-seq library strand specificity" help="STRAND_SPECIFICITY; For unpaired reads, use FIRST_READ_TRANSCRIPTION_STRAND if the reads are expected to be on the transcription strand.">
+            <option value="NONE" selected="True">None</option>
+            <option value="FIRST_READ_TRANSCRIPTION_STRAND">First read transcription strand</option>
+            <option value="SECOND_READ_TRANSCRIPTION_STRAND">Second read transcription strand</option>
+        </param>
+        <param name="minimum_length" type="integer" value="500" label="When calculating coverage based values use only use transcripts of this length or greater" help="MINIMUM_LENGTH; default=500"/>
+        <repeat name="ignore_list" title="Sequences to ignore" min="0" help="You can provide multiple sequences by clicking the button below">
+            <param name="sequence" type="text" label="Ignore reads matching this sequence"/>
+        </repeat>
+        <param name="rrna_fragment_percentage" type="float" value="0.8" label="This percentage of the length of a fragment must overlap one of the ribosomal intervals for a read or read pair to be considered rRNA." help="RRNA_FRAGMENT_PERCENTAGE; default=0.8"/>
+        <param name="metric_accumulation_level" type="select" label="The level(s) at which to accumulate metrics" multiple="true" help="METRIC_ACCUMULATION_LEVEL">
+            <option value="ALL_READS" selected="True">All reads</option>
+            <option value="SAMPLE">Sample</option>
+            <option value="LIBRARY">Library</option>
+            <option value="READ_GROUP">Read group</option>
+        </param>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary stats"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="gene_reference_source_selector" value="refflat"/>
+            <param name="refFlat" value="picard_CollectRnaSeqMetrics.refFlat"/>
+            <param name="metric_accumulation_level" value="ALL_READS"/>
+            <param name="minimum_length" value="500"/>
+            <param name="strand_specificity" value="NONE"/>
+            <param name="rrna_fragment_percentage" value="0.8"/>
+            <output name="outFile" file="picard_CollectRnaSeqMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="gene_reference_source_selector" value="refflat"/>
+            <param name="refFlat" value="picard_CollectRnaSeqMetrics.ucsc_output"/>
+            <param name="metric_accumulation_level" value="ALL_READS"/>
+            <param name="minimum_length" value="500"/>
+            <param name="strand_specificity" value="NONE"/>
+            <param name="rrna_fragment_percentage" value="0.8"/>
+            <output name="outFile" file="picard_CollectRnaSeqMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="gene_reference_source_selector" value="gtf"/>
+            <param name="refFlat" value="picard_CollectRnaSeqMetrics.gtf" ftype="gtf"/>
+            <param name="metric_accumulation_level" value="ALL_READS"/>
+            <param name="minimum_length" value="500"/>
+            <param name="strand_specificity" value="NONE"/>
+            <param name="rrna_fragment_percentage" value="0.8"/>
+            <output name="outFile" file="picard_CollectRnaSeqMetrics_test2.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_CollectRnaSeqMetrics_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_CollectRnaSeqMetrics.bam" ftype="bam"/>
+            <param name="assume_sorted" value="true"/>
+            <param name="gene_reference_source_selector" value="gtf"/>
+            <param name="refFlat" value="picard_CollectRnaSeqMetrics.gff3" ftype="gff3"/>
+            <param name="metric_accumulation_level" value="ALL_READS"/>
+            <param name="minimum_length" value="500"/>
+            <param name="strand_specificity" value="NONE"/>
+            <param name="rrna_fragment_percentage" value="0.8"/>
+            <output name="outFile" file="picard_CollectRnaSeqMetrics_test3.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -265,5 +243,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectSequencingArtifactsMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectSequencingArtifactsMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,112 +1,107 @@
-<tool id='picard_artifact_metrics' name='Picard Collect Sequencing Artifact Metrics' version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>Collect metrics to quantify single-base sequencing artifacts</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool id="picard_artifact_metrics" name="Picard Collect Sequencing Artifact Metrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>Collect metrics to quantify single-base sequencing artifacts</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     
     #set $reference_fasta_filename = "localref.fa"
     @handle_reference_source@
     
-    picard 
-    CollectSequencingArtifactMetrics 
-    I='$escaped_element_identifier'
-    O='OutPut'
-    R='${reference_fasta_filename}'
-    AS=${assume_sorted}
-    CONTEXT_SIZE=${context_size}
-    INCLUDE_DUPLICATES='${duplicates}'
+    picard CollectSequencingArtifactMetrics 
+    --I '$escaped_element_identifier'
+    --O 'OutPut'
+    --R '${reference_fasta_filename}'
+    --AS ${assume_sorted}
+    --CONTEXT_SIZE ${context_size}
+    --INCLUDE_DUPLICATES '${duplicates}'
     #if $contexts_to_print 
-      #for $context in str($contexts_to_print).split(','):
-          CONTEXTS_TO_PRINT='${context}'
-      #end for;
+        #for $context in str($contexts_to_print).split(','):
+          --CONTEXTS_TO_PRINT '${context}'
+        #end for;
     #end if;
-    MINIMUM_QUALITY_SCORE='${min_quality_score}'
-    INCLUDE_UNPAIRED='${unpaired}'
-    MAXIMUM_INSERT_SIZE='${max_size}'
-    MINIMUM_INSERT_SIZE='${min_size}'
-    MINIMUM_MAPPING_QUALITY='${minim_map_quality}'
-    VALIDATION_STRINGENCY='${validation_stringency}';
-  ]]></command>  
-  <inputs>
-    <param name='inputFile' format="sam,bam" type='data' label='SAM/BAM Input file'/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
-          <options from_data_table="picard_indexes">
-            <filter type="sort_by" column="2" />
-            <validator type="no_options" message="No indexes are available" />
-          </options>
-          <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+    --MINIMUM_QUALITY_SCORE '${min_quality_score}'
+    --INCLUDE_UNPAIRED '${unpaired}'
+    --MAXIMUM_INSERT_SIZE '${max_size}'
+    --MINIMUM_INSERT_SIZE '${min_size}'
+    --MINIMUM_MAPPING_QUALITY '${minim_map_quality}'
+    --VALIDATION_STRINGENCY '${validation_stringency}';
+  ]]></command>
+    <inputs>
+        <param name="inputFile" format="sam,bam" type="data" label="SAM/BAM Input file"/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
+                    <options from_data_table="picard_indexes">
+                        <filter type="sort_by" column="2"/>
+                        <validator type="no_options" message="No indexes are available"/>
+                    </options>
+                    <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+                </param>
+            </when>
+            <when value="history">
+                <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
+            </when>
+        </conditional>
+        <param name="context_size" value="1" type="integer" label="How many nucleotides (context) on each side to consider" help="e.g NXN corresponds to 1 &quot;N&quot; on each side of &quot;X&quot;"/>
+        <param name="contexts_to_print" type="text" label="Contexts to print in the detailed tables, separated by comma (avoid spaces)" help="e.g. (for context size=1) AAA,AGG. Default prints all contexts">
+            <sanitizer>
+                <valid initial="string.letters">
+                    <add value=","/>
+                </valid>
+            </sanitizer>
         </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" />
-      </when>
-    </conditional>
-  
-    <param name='context_size' value="1" type='integer' label='How many nucleotides (context) on each side to consider' help='e.g NXN corresponds to 1 "N" on each side of "X"'/>
-    <param name="contexts_to_print" type="text" label="Contexts to print in the detailed tables, separated by comma (avoid spaces)" help="e.g. (for context size=1) AAA,AGG. Default prints all contexts">
-        <sanitizer>
-            <valid initial="string.letters"><add value="," /></valid>
-        </sanitizer>
-    </param>  
-    <param name='min_quality_score' type='integer' value='30' label='Minimum base quality score'/>
-    <param name="max_size" type="integer" value="600" label="Maximum insert size"/>
-    <param name="min_size" type="integer" value="30" label="Minimum insert size"/>
-    <param name="minim_map_quality" type="integer" value="20" label="Minimum mapping quality"/>
-    <param name='assume_sorted' type='boolean' label='Assume SAM/BAM is sorted'/>
-    <param name='duplicates' type='boolean' label='Include duplicates' checked="false" truevalue="true" falsevalue="false"/>
-    <param name='unpaired' type='boolean' label='Include unpaired reads' checked="false" truevalue="true" falsevalue="false"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data name='pre_details' format="tabular"  from_work_dir="OutPut.pre_adapter_detail_metrics" label='Detailed table for artifacts introduced prior to the addition of adapters'/>
-    <data name='pre_summary' format="tabular"  from_work_dir="OutPut.pre_adapter_summary_metrics" label='Summary table for artifacts introduced prior to the addition of adapters'/>
-    <data name='pos_details' format="tabular"  from_work_dir="OutPut.bait_bias_detail_metrics" label='Detailed table for artifacts introduced posterior to the addition of adapters'/>
-    <data name='pos_summary' format="tabular"  from_work_dir="OutPut.bait_bias_summary_metrics" label='Summary table for artifacts introduced posterior to the addition of adapters'/>
-    <data name='err_summary' format="tabular"  from_work_dir="OutPut.error_summary_metrics" label='General Summary of artifactual errors'/>
-  </outputs>
-  
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_ARRG_test1.bam" ftype="bam" />
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_BedToIntervalList_ref.fa" />
-      <param name="context_size" value="1" />
-      <param name="contexts_to_print" value="AAA,CAA,AAC,AAT,AAG" />
-      <output name='pre_details' file='pre_details' ftype="tabular"  value="pre_detail" lines_diff="4"/>
-      <output name='pre_summary' file='pre_summary' ftype="tabular"  value="pre_summary" lines_diff="4"/>
-      <output name='pos_details' file='pos_details' ftype="tabular"  value="pos_detail" lines_diff="4"/>
-      <output name='pos_summary' file='pos_summary' ftype="tabular"  value="pos_summary" lines_diff="4"/>
-      <output name='err_summary' file='err_summary' ftype="tabular"  value="err_summary" lines_diff="4"/>
-    </test>
-    <test>
-      <param name="inputFile" value="picard_ARRG_test1.bam" ftype="bam" dbkey="hg38"/>
-      <param name="reference_source_selector" value="cached"/>
-      <param name="context_size" value="1" />
-      <param name="contexts_to_print" value="AAA,CAA,AAC,AAT,AAG" />
-      <output name='pre_details' file='pre_details' ftype="tabular"  value="pre_detail" lines_diff="4"/>
-      <output name='pre_summary' file='pre_summary' ftype="tabular"  value="pre_summary" lines_diff="4"/>
-      <output name='pos_details' file='pos_details' ftype="tabular"  value="pos_detail" lines_diff="4"/>
-      <output name='pos_summary' file='pos_summary' ftype="tabular"  value="pos_summary" lines_diff="4"/>
-      <output name='err_summary' file='err_summary' ftype="tabular"  value="err_summary" lines_diff="4"/>
-    </test>
-  </tests>
-  <help>
+        <param name="min_quality_score" type="integer" value="30" label="Minimum base quality score"/>
+        <param name="max_size" type="integer" value="600" label="Maximum insert size"/>
+        <param name="min_size" type="integer" value="30" label="Minimum insert size"/>
+        <param name="minim_map_quality" type="integer" value="20" label="Minimum mapping quality"/>
+        <param name="assume_sorted" type="boolean" label="Assume SAM/BAM is sorted"/>
+        <param name="duplicates" type="boolean" label="Include duplicates" checked="false" truevalue="true" falsevalue="false"/>
+        <param name="unpaired" type="boolean" label="Include unpaired reads" checked="false" truevalue="true" falsevalue="false"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="pre_details" format="tabular" from_work_dir="OutPut.pre_adapter_detail_metrics" label="Detailed table for artifacts introduced prior to the addition of adapters"/>
+        <data name="pre_summary" format="tabular" from_work_dir="OutPut.pre_adapter_summary_metrics" label="Summary table for artifacts introduced prior to the addition of adapters"/>
+        <data name="pos_details" format="tabular" from_work_dir="OutPut.bait_bias_detail_metrics" label="Detailed table for artifacts introduced posterior to the addition of adapters"/>
+        <data name="pos_summary" format="tabular" from_work_dir="OutPut.bait_bias_summary_metrics" label="Summary table for artifacts introduced posterior to the addition of adapters"/>
+        <data name="err_summary" format="tabular" from_work_dir="OutPut.error_summary_metrics" label="General Summary of artifactual errors"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_ARRG_test1.bam" ftype="bam"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_BedToIntervalList_ref.fa"/>
+            <param name="context_size" value="1"/>
+            <param name="contexts_to_print" value="AAA,CAA,AAC,AAT,AAG"/>
+            <output name="pre_details" file="pre_details" ftype="tabular" value="pre_detail" lines_diff="4"/>
+            <output name="pre_summary" file="pre_summary" ftype="tabular" value="pre_summary" lines_diff="4"/>
+            <output name="pos_details" file="pos_details" ftype="tabular" value="pos_detail" lines_diff="4"/>
+            <output name="pos_summary" file="pos_summary" ftype="tabular" value="pos_summary" lines_diff="4"/>
+            <output name="err_summary" file="err_summary" ftype="tabular" value="err_summary" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="inputFile" value="picard_ARRG_test1.bam" ftype="bam" dbkey="hg38"/>
+            <param name="reference_source_selector" value="cached"/>
+            <param name="context_size" value="1"/>
+            <param name="contexts_to_print" value="AAA,CAA,AAC,AAT,AAG"/>
+            <output name="pre_details" file="pre_details" ftype="tabular" value="pre_detail" lines_diff="4"/>
+            <output name="pre_summary" file="pre_summary" ftype="tabular" value="pre_summary" lines_diff="4"/>
+            <output name="pos_details" file="pos_details" ftype="tabular" value="pos_detail" lines_diff="4"/>
+            <output name="pos_summary" file="pos_summary" ftype="tabular" value="pos_summary" lines_diff="4"/>
+            <output name="err_summary" file="err_summary" ftype="tabular" value="err_summary" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -145,5 +140,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_CollectWgsMetrics.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_CollectWgsMetrics.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,11 +1,11 @@
-<tool name="CollectWgsMetrics" id="picard_CollectWgsMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>compute metrics for evaluating of whole genome sequencing experiments</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="CollectWgsMetrics" id="picard_CollectWgsMetrics" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>compute metrics for evaluating of whole genome sequencing experiments</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##set up input files
@@ -16,63 +16,56 @@
 
     picard
     CollectWgsMetrics
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    MINIMUM_MAPPING_QUALITY="${minimum_mapping_quality}"
-    MINIMUM_BASE_QUALITY="${minimum_base_quality}"
-    COVERAGE_CAP="${coverage_cap}"
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --MINIMUM_MAPPING_QUALITY '${minimum_mapping_quality}'
+    --MINIMUM_BASE_QUALITY '${minimum_base_quality}'
+    --COVERAGE_CAP '${coverage_cap}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </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">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="minimum_mapping_quality" type="integer" value="20" label="Minimum mapping quality for a read to contribute coverage" help="MINIMUM_MAPPING_QUALITY; default=20"/>
-    <param name="minimum_base_quality" type="integer" value="20" label="Minimum base quality for a base to contribute coverage" help="MINIMUM_BASE_QUALITY; default=20"/>
-    <param name="coverage_cap" type="integer" value="250" label="Treat bases with coverage exceeding this value as if they had coverage at this value" help="COVERAGE_CAP; default=250"/>
-
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="reference_source_selector" value="history" />
-      <param name="minimum_mapping_quality" value="20" />
-      <param name="minimum_base_quality" value="20" />
-      <param name="coverage_cap" value="250" />
-      <param name="ref_file" value="picard_CollectWgsMetrics_ref.fa" />
-      <param name="inputFile" value="picard_CollectWgsMetrics.bam" ftype="bam" />
-      <output name="outFile" file="picard_CollectWgsMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="minimum_mapping_quality" type="integer" value="20" label="Minimum mapping quality for a read to contribute coverage" help="MINIMUM_MAPPING_QUALITY; default=20"/>
+        <param name="minimum_base_quality" type="integer" value="20" label="Minimum base quality for a base to contribute coverage" help="MINIMUM_BASE_QUALITY; default=20"/>
+        <param name="coverage_cap" type="integer" value="250" label="Treat bases with coverage exceeding this value as if they had coverage at this value" help="COVERAGE_CAP; default=250"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="minimum_mapping_quality" value="20"/>
+            <param name="minimum_base_quality" value="20"/>
+            <param name="coverage_cap" value="250"/>
+            <param name="ref_file" value="picard_CollectWgsMetrics_ref.fa"/>
+            <param name="inputFile" value="picard_CollectWgsMetrics.bam" ftype="bam"/>
+            <output name="outFile" file="picard_CollectWgsMetrics_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -97,5 +90,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_DownsampleSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_DownsampleSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,47 +1,42 @@
-<tool name="Downsample SAM/BAM" id="picard_DownsampleSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>Downsample a file to retain a subset of the reads</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="Downsample SAM/BAM" id="picard_DownsampleSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>Downsample a file to retain a subset of the reads</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     picard
     DownsampleSam
-      INPUT='$escaped_element_identifier'
-      OUTPUT="${outFile}"
-      PROBABILITY=${probability}
-      RANDOM_SEED=${seed}
-      QUIET=true
-      VERBOSITY=ERROR
-      VALIDATION_STRINGENCY=${validation_stringency}
+      --INPUT '$escaped_element_identifier'
+      --OUTPUT '${outFile}'
+      --PROBABILITY ${probability}
+      --RANDOM_SEED ${seed}
+      --QUIET true
+      --VERBOSITY ERROR
+      --VALIDATION_STRINGENCY ${validation_stringency}
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM or BAM dataset" />
-    <param name="probability" type="float" min="0.0" max="1.0" label="Probability (between 0 and 1) that any given read will be kept" help="PROBABILITY; specify 1 to keep all reads, 0.1 to keep 10% of the reads" value="1" />
-    <param name="seed" type="integer" label="Random seed value" help="RANDOM_SEED; default=1" value="1" />
-
-    <expand macro="VS" />
-
-  </inputs>
-
-
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: downsampled BAM"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_DownsampleSam.bam"  ftype="bam" />
-      <param name="probability" value="0.1" />
-      <param name="seed" value="1024" />
-      <param name="validation_stringency" value="LENIENT" />
-      <output name="outFile" file="picard_DownsampleSam_test1.bam" ftype="bam"/>
-    </test>
-  </tests>
-  <help>
+    <inputs>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM or BAM dataset"/>
+        <param name="probability" type="float" min="0.0" max="1.0" value="1" label="Probability (between 0 and 1) that any given read will be kept" help="PROBABILITY; specify 1 to keep all reads, 0.1 to keep 10% of the reads"/>
+        <param name="seed" type="integer" value="1" label="Random seed value" help="RANDOM_SEED; default=1"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: downsampled BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_DownsampleSam.bam" ftype="bam"/>
+            <param name="probability" value="0.1"/>
+            <param name="seed" value="1024"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_DownsampleSam_test1.bam" ftype="bam" lines_diff="2"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -70,5 +65,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_EstimateLibraryComplexity.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_EstimateLibraryComplexity.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,67 +1,60 @@
-<tool name="EstimateLibraryComplexity" id="picard_EstimateLibraryComplexity" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>assess sequence library complexity from read sequences</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="EstimateLibraryComplexity" id="picard_EstimateLibraryComplexity" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>assess sequence library complexity from read sequences</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
-    picard
-    EstimateLibraryComplexity
+    
+    picard EstimateLibraryComplexity
 
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
 
-    MIN_IDENTICAL_BASES="${min_identical_bases}"
-    MAX_DIFF_RATE="${max_diff_rate}"
-    MIN_MEAN_QUALITY="${min_mean_quality}"
-    MAX_GROUP_RATIO="${max_group_ratio}"
-    READ_NAME_REGEX='${ str( $read_name_regex ) }'
-    OPTICAL_DUPLICATE_PIXEL_DISTANCE="${optical_duplicate_pixel_distance}"
+    --MIN_IDENTICAL_BASES '${min_identical_bases}'
+    --MAX_DIFF_RATE '${max_diff_rate}'
+    --MIN_MEAN_QUALITY '${min_mean_quality}'
+    --MAX_GROUP_RATIO '${max_group_ratio}'
+    --READ_NAME_REGEX '${ str( $read_name_regex ) }'
+    --OPTICAL_DUPLICATE_PIXEL_DISTANCE '${optical_duplicate_pixel_distance}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" />
-    <param name="min_identical_bases" type="integer" value="5" label="The minimum number of bases at the starts of reads that must be identical for reads to be grouped together for duplicate detection" help="MIN_IDENTICAL_BASES; In effect total_reads / 4^max_id_bases reads will be compared at a time, so lower numbers will produce more accurate results but consume exponentially more memory and CPU; default=5"/>
-    <param name="max_diff_rate" type="float" value="0.03" label="The maximum rate of differences between two reads to call them identical" help="MAX_DIFF_RATE; default=0.03"/>
-    <param name="min_mean_quality" type="integer" min="0" max="93" value="20" label="The minimum mean quality of the bases in a read pair for the read to be analyzed" help="MIN_MEAN_QUALITY; Reads with lower average quality are filtered out and not considered in any calculations; default=20"/>
-    <param name="max_group_ratio" type="integer" value="500" label="Do not process self-similar groups that are this many times over the mean expected group size" help="MAX_GROUP_RATIO; I.e. if the input contains 10m read pairs and MIN_IDENTICAL_BASES is set to 5, then the mean expected group size would be approximately 10 reads; default-500"/>
-
-    <param name="read_name_regex" type="text" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*." label="Regular expression that can be used to parse read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*.">
-      <expand macro="sanitize_query" />
-    </param>
-    <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="500" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
-
-   <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Library complexity report"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_EstimateLibraryComplexity.bam" ftype="bam"/>
-      <param name="min_identical_bases" value="5"/>
-      <param name="max_diff_rate" value="0.03"/>
-      <param name="min_mean_quality" value="20"/>
-      <param name="read_name_regex" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*."/>
-      <param name="optical_duplicate_pixel_distance" value="100"/>
-      <param name="max_group_ratio" value="500"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_EstimateLibraryComplexity_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="min_identical_bases" type="integer" value="5" label="The minimum number of bases at the starts of reads that must be identical for reads to be grouped together for duplicate detection" help="MIN_IDENTICAL_BASES; In effect total_reads / 4^max_id_bases reads will be compared at a time, so lower numbers will produce more accurate results but consume exponentially more memory and CPU; default=5"/>
+        <param name="max_diff_rate" type="float" value="0.03" label="The maximum rate of differences between two reads to call them identical" help="MAX_DIFF_RATE; default=0.03"/>
+        <param name="min_mean_quality" type="integer" min="0" max="93" value="20" label="The minimum mean quality of the bases in a read pair for the read to be analyzed" help="MIN_MEAN_QUALITY; Reads with lower average quality are filtered out and not considered in any calculations; default=20"/>
+        <param name="max_group_ratio" type="integer" value="500" label="Do not process self-similar groups that are this many times over the mean expected group size" help="MAX_GROUP_RATIO; I.e. if the input contains 10m read pairs and MIN_IDENTICAL_BASES is set to 5, then the mean expected group size would be approximately 10 reads; default-500"/>
+        <param name="read_name_regex" type="text" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*." label="Regular expression that can be used to parse read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*.">
+            <expand macro="sanitize_query"/>
+        </param>
+        <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="500" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Library complexity report"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_EstimateLibraryComplexity.bam" ftype="bam"/>
+            <param name="min_identical_bases" value="5"/>
+            <param name="max_diff_rate" value="0.03"/>
+            <param name="min_mean_quality" value="20"/>
+            <param name="read_name_regex" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*."/>
+            <param name="optical_duplicate_pixel_distance" value="100"/>
+            <param name="max_group_ratio" value="500"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_EstimateLibraryComplexity_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -76,7 +69,7 @@
 The algorithm attempts to detect optical duplicates separately from PCR duplicates and excludes these in the calculation of library size.
 
 Also, since there is no alignment to screen out technical reads one further filter is applied on the data. After examining all reads a Histogram
-is built of [#reads in duplicate set -> #of duplicate sets]; all bins that contain exactly one duplicate set are then removed from the Histogram
+is built of [#reads in duplicate set -&gt; #of duplicate sets]; all bins that contain exactly one duplicate set are then removed from the Histogram
 as outliers before library size is estimated.
 
 @dataset_collections@
@@ -121,5 +114,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_FastqToSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_FastqToSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,13 @@
-<tool name="FastqToSam" id="picard_FastqToSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="20.01">
+<tool name="FastqToSam" id="picard_FastqToSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
     <description>convert Fastq data into unaligned BAM</description>
     <macros>
         <import>picard_macros.xml</import>
-        <token name="@WRAPPER_VERSION@">2</token>
+        <token name="@WRAPPER_VERSION@">0</token>
     </macros>
     <xrefs>
         <xref type="bio.tools">picard_fastqtosam</xref>
     </xrefs>
-    <expand macro="requirements" />
+    <expand macro="requirements"/>
     <command detect_errors="exit_code"><![CDATA[
     @java_options@
     #if str( $input_type.input_type_selector ) == "se":
@@ -24,145 +24,138 @@
     #if $fwd.ext.endswith(".gz")
       gunzip -c '$fwd' > fwd.fastq &&
     #else
-      ln -s '$fwd' fwd.fastq &&
+      ln -sf '$fwd' fwd.fastq &&
     #end if
     #if rev
       #if rev.ext.endswith(".gz")
         gunzip -c '$rev' > rev.fastq &&
       #else
-        ln -s '$rev' rev.fastq &&
+        ln -sf '$rev' rev.fastq &&
       #end if
     #end if
    
-    picard
-    FastqToSam
+    picard FastqToSam
 
-    FASTQ=fwd.fastq
+    --FASTQ fwd.fastq
     #if rev
-      FASTQ2=rev.fastq
+      --FASTQ2 rev.fastq
     #end if
 
     #if $fwd.ext.startswith("fastqillumina")
-      QUALITY_FORMAT="Illumina"
+      --QUALITY_FORMAT "Illumina"
     #else if $fwd.ext.startswith("fastqsolexa")
-      QUALITY_FORMAT="Solexa"
+      --QUALITY_FORMAT "Solexa"
     #else 
-      QUALITY_FORMAT="Standard"
+      --QUALITY_FORMAT "Standard"
     #end if
-    OUTPUT="${outFile}"
-    READ_GROUP_NAME="${read_group_name}"
-    SAMPLE_NAME="${sample_name}"
+    --OUTPUT '${outFile}'
+    --READ_GROUP_NAME '${read_group_name}'
+    --SAMPLE_NAME '${sample_name}'
 
     #if str( $library_name ):
-      LIBRARY_NAME="${library_name}"
+        --LIBRARY_NAME '${library_name}'
     #end if
 
     #if str( $platform_unit ):
-      PLATFORM_UNIT="${platform_unit}"
+        --PLATFORM_UNIT '${platform_unit}'
     #end if
 
     #if str( $platform ):
-      PLATFORM="${platform}"
+        --PLATFORM '${platform}'
     #end if
 
     #if str( $sequencing_center ):
-      SEQUENCING_CENTER="${sequencing_center}"
+        --SEQUENCING_CENTER '${sequencing_center}'
     #end if
 
     #if str( $predicted_insert_size ):
-      PREDICTED_INSERT_SIZE="${predicted_insert_size}"
+        --PREDICTED_INSERT_SIZE '${predicted_insert_size}'
     #end if
 
     #if str( $comment ):
-      COMMENT="${comment}"
+        --COMMENT '${comment}'
     #end if
 
     #if str( $description ):
-      DESCRIPTION="${description}"
+        --DESCRIPTION '${description}'
     #end if
 
     #if str( $run_date ):
-      RUN_DATE="${run_date}"
+        --RUN_DATE '${run_date}'
     #end if
 
-    MIN_Q="${min_q}"
-    MAX_Q="${max_q}"
-    STRIP_UNPAIRED_MATE_NUMBER="${strip_unpairied_mate_number}"
-    ALLOW_AND_IGNORE_EMPTY_LINES="${allow_and_ignore_empty_lines}"
+    --MIN_Q '${min_q}'
+    --MAX_Q '${max_q}'
+    --STRIP_UNPAIRED_MATE_NUMBER '${strip_unpairied_mate_number}'
+    --ALLOW_AND_IGNORE_EMPTY_LINES '${allow_and_ignore_empty_lines}'
 
-    SORT_ORDER=coordinate
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
-  ]]></command>
-  <inputs>
-    <conditional name="input_type">
-      <param name="input_type_selector" type="select" label="What is your input data" help="Select between single end, paired end, and collections. See help below for full explanation of dataset types">
-        <option value="se">Single end (single dataset)</option>
-        <option value="pe">Paired end (two datasets)</option>
-        <option value="pc">Paired collection</option>
-      </param>
-      <when value="se">
-        <param name="fastq" type="data" format="fastq,fastq.gz" label="Input fastq file for single end data" help="FASTQ"/>
-      </when>
-      <when value="pe">
-        <param name="fastq" type="data" format="fastq,fastq.gz" label="Input fastq file for the first read in paired end data" help="FASTQ"/>
-        <param name="fastq2" type="data" format="fastq,fastq.gz" label="Input fastq file for the second read of paired end data" help="FASTQ2"/>
-      </when>
-      <when value="pc">
-        <param name="fastq" type="data_collection" collection_type="paired" format="fastq,fastq.gz" label="FASTQ paired dataset collection" help="FASTQ and FASTQ2; A collection of two datasets with forward and reverse reads. See help below on explanation of dataset collections"/>
-      </when>
-    </conditional>
-
-    <param name="read_group_name" type="text" value="A" label="Read group name" help="READ_GROUP_NAME"/>
-    <param name="sample_name" type="text" value="sample-a" label="Sample name" help="SAMPLE_NAME"/>
-    <param name="library_name" type="text" optional="True" label="The library name" help="LIBRARY_NAME; Optional"/>
-    <param name="platform_unit" type="text" optional="True"  label="The platform unit (often run_barcode.lane)" help="PLATFORM_UNIT; Optional"/>
-    <param name="platform" type="text" optional="True"  label="The platform type (e.g. illumina, 454)" help="PLATFORM; Optional"/>
-    <param name="sequencing_center" type="text" optional="True"  label="The sequencing center from which the data originated" help="SEQUENCING_CENTER; Optional"/>
+    --SORT_ORDER coordinate
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
-    <param name="predicted_insert_size" type="integer" min="0" max="100000" optional="True" label="Predicted median insert size, to insert into the read group header" help="PREDICTED_INSERT_SIZE; Optional"/>
-    <param name="comment" type="text" optional="True" label="Comment to include in the output dataset's header" help="COMMENT; Optional"/>
-    <param name="description" type="text" optional="True" label="Optional description information" help="DESCRIPTION; Optional"/>
-    <param name="run_date" optional="True" type="text" label="Run date" help="RGDT; Optional; Format=YYYY-MM-DD (eg 1997-07-16)"/>
-    <param name="min_q" type="integer" value="0" min="0" max="100" label="Minimum quality allowed in the input fastq" help="MIN_Q; An exception will be thrown if a quality is less than this value; default=0"/>
-    <param name="max_q" type="integer" value="93" min="0" max="100" label="Minimum quality allowed in the input fastq" help="MAX_Q; An exception will be thrown if a quality is greater than this value; default=93"/>
-    <param name="strip_unpairied_mate_number" type="boolean" truevalue="true" falsevalue="false" label="If true and this is an unpaired fastq any occurance of '/1' will be removed from the end of a read name" help="STRIP_UNPAIRED_MATE_NUMBER; default=false"/>
-    <param name="allow_and_ignore_empty_lines" type="boolean" truevalue="true" falsevalue="false" label="Allow (and ignore) empty lines" help="ALLOW_AND_IGNORE_EMPTY_LINES; default=false"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="unsorted.bam" name="outFile" label="${tool.name} on ${on_string}: reads as unaligned BAM"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="input_type_selector" value="pe" />
-      <param name="read_group_name" value="A" />
-      <param name="sample_name" value="sample-a" />
-      <param name="library_name" value="A"/>
-      <param name="platform_unit" value="A"/>
-      <param name="platform" value="Illumina"/>
-      <param name="sequencing_center" value="A"/>
-      <param name="predicted_insert_size" value="300"/>
-      <param name="comment" value="A"/>
-      <param name="description" value="A"/>
-      <param name="run_date" value="2014-10-10"/>
-      <param name="min_q" value="0" />
-      <param name="max_q" value="93" />
-      <param name="strip_unpairied_mate_number" value="False" />
-      <param name="allow_and_ignore_empty_lines" value="False" />
-      <param name="validation_stringency" value="LENIENT"/>
-      <param name="fastq" value="picard_FastqToSam_read1.fq.gz" ftype="fastq.gz" />
-      <param name="fastq2" value="picard_FastqToSam_read2.fq.gz" ftype="fastq.gz" />
-      <output name="outFile" file="picard_FastqToSam_test1.bam" ftype="unsorted.bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-  <help>
+  ]]></command>
+    <inputs>
+        <conditional name="input_type">
+            <param name="input_type_selector" type="select" label="What is your input data" help="Select between single end, paired end, and collections. See help below for full explanation of dataset types">
+                <option value="se">Single end (single dataset)</option>
+                <option value="pe">Paired end (two datasets)</option>
+                <option value="pc">Paired collection</option>
+            </param>
+            <when value="se">
+                <param name="fastq" type="data" format="fastq,fastq.gz" label="Input fastq file for single end data" help="FASTQ"/>
+            </when>
+            <when value="pe">
+                <param name="fastq" type="data" format="fastq,fastq.gz" label="Input fastq file for the first read in paired end data" help="FASTQ"/>
+                <param name="fastq2" type="data" format="fastq,fastq.gz" label="Input fastq file for the second read of paired end data" help="FASTQ2"/>
+            </when>
+            <when value="pc">
+                <param name="fastq" type="data_collection" collection_type="paired" format="fastq,fastq.gz" label="FASTQ paired dataset collection" help="FASTQ and FASTQ2; A collection of two datasets with forward and reverse reads. See help below on explanation of dataset collections"/>
+            </when>
+        </conditional>
+        <param name="read_group_name" type="text" value="A" label="Read group name" help="READ_GROUP_NAME"/>
+        <param name="sample_name" type="text" value="sample-a" label="Sample name" help="SAMPLE_NAME"/>
+        <param name="library_name" type="text" optional="True" label="The library name" help="LIBRARY_NAME; Optional"/>
+        <param name="platform_unit" type="text" optional="True" label="The platform unit (often run_barcode.lane)" help="PLATFORM_UNIT; Optional"/>
+        <param name="platform" type="text" optional="True" label="The platform type (e.g. illumina, 454)" help="PLATFORM; Optional"/>
+        <param name="sequencing_center" type="text" optional="True" label="The sequencing center from which the data originated" help="SEQUENCING_CENTER; Optional"/>
+        <param name="predicted_insert_size" type="integer" min="0" max="100000" optional="True" label="Predicted median insert size, to insert into the read group header" help="PREDICTED_INSERT_SIZE; Optional"/>
+        <param name="comment" type="text" optional="True" label="Comment to include in the output dataset's header" help="COMMENT; Optional"/>
+        <param name="description" type="text" optional="True" label="Optional description information" help="DESCRIPTION; Optional"/>
+        <param name="run_date" optional="True" type="text" label="Run date" help="RGDT; Optional; Format=YYYY-MM-DD (eg 1997-07-16)"/>
+        <param name="min_q" type="integer" value="0" min="0" max="100" label="Minimum quality allowed in the input fastq" help="MIN_Q; An exception will be thrown if a quality is less than this value; default=0"/>
+        <param name="max_q" type="integer" value="93" min="0" max="100" label="Minimum quality allowed in the input fastq" help="MAX_Q; An exception will be thrown if a quality is greater than this value; default=93"/>
+        <param name="strip_unpairied_mate_number" type="boolean" truevalue="true" falsevalue="false" label="If true and this is an unpaired fastq any occurance of '/1' will be removed from the end of a read name" help="STRIP_UNPAIRED_MATE_NUMBER; default=false"/>
+        <param name="allow_and_ignore_empty_lines" type="boolean" truevalue="true" falsevalue="false" label="Allow (and ignore) empty lines" help="ALLOW_AND_IGNORE_EMPTY_LINES; default=false"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="unsorted.bam" name="outFile" label="${tool.name} on ${on_string}: reads as unaligned BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="input_type_selector" value="pe"/>
+            <param name="read_group_name" value="A"/>
+            <param name="sample_name" value="sample-a"/>
+            <param name="library_name" value="A"/>
+            <param name="platform_unit" value="A"/>
+            <param name="platform" value="Illumina"/>
+            <param name="sequencing_center" value="A"/>
+            <param name="predicted_insert_size" value="300"/>
+            <param name="comment" value="A"/>
+            <param name="description" value="A"/>
+            <param name="run_date" value="2014-10-10"/>
+            <param name="min_q" value="0"/>
+            <param name="max_q" value="93"/>
+            <param name="strip_unpairied_mate_number" value="False"/>
+            <param name="allow_and_ignore_empty_lines" value="False"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <param name="fastq" value="picard_FastqToSam_read1.fq.gz" ftype="fastq.gz"/>
+            <param name="fastq2" value="picard_FastqToSam_read2.fq.gz" ftype="fastq.gz"/>
+            <output name="outFile" file="picard_FastqToSam_test1.bam" ftype="unsorted.bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -237,5 +230,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_FilterSamReads.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_FilterSamReads.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,88 +1,82 @@
-<tool name="FilterSamReads" id="picard_FilterSamReads" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>include or exclude aligned and unaligned reads and read lists</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="FilterSamReads" id="picard_FilterSamReads" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>include or exclude aligned and unaligned reads and read lists</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     ##Sam Sorting is performed here because FilterSamReads requires input to be in query-sorted order
 
-    picard
-    SortSam
-    INPUT='$escaped_element_identifier'
-    OUTPUT=query_sorted_bam.bam
-    SORT_ORDER=queryname
-    VALIDATION_STRINGENCY=LENIENT
-    QUIET=true
-    VERBOSITY=ERROR
+    picard SortSam
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT query_sorted_bam.bam
+    --SORT_ORDER queryname
+    --VALIDATION_STRINGENCY LENIENT
+    --QUIET true
+    --VERBOSITY ERROR
 
     &&
 
-    picard
-    FilterSamReads
-    INPUT=query_sorted_bam.bam
-    FILTER="${filter_type.filter}"
+    picard FilterSamReads
+    --INPUT query_sorted_bam.bam
+    --FILTER '${filter_type.filter}'
 
     #if ( str( $filter_type.filter ) == "includeReadList" or str( $filter_type.filter ) == "excludeReadList" ):
-      READ_LIST_FILE="${filter_type.read_list_file}"
+        --READ_LIST_FILE '${filter_type.read_list_file}'
     #end if
 
-    OUTPUT="${outFile}"
-    SORT_ORDER=coordinate
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --OUTPUT '${outFile}'
+    --SORT_ORDER coordinate
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <conditional name="filter_type">
-      <param name="filter" type="select" label="Select filtering type" help="FILTER; see Help for deatiled info">
-        <option value="includeAligned">Include aligned</option>
-        <option value="excludeAligned">Exclude aligned</option>
-        <option value="includeReadList">Include read list</option>
-        <option value="excludeReadList">Exclude read list</option>
-      </param>
-      <when value="includeAligned"/> <!-- do nothing -->
-      <when value="excludeAligned"/> <!-- do nothing -->
-      <when value="includeReadList">
-        <param name="read_list_file" type="data" format="tabular" label="Dataset containing read names that will be INCLUDED in the output" help="READ_LIST_FILE"/>
-      </when>
-      <when value="excludeReadList">
-        <param name="read_list_file" type="data" format="tabular" label="Dataset containing read names that will be EXCLUDED in the output" help="READ_LIST_FILE"/>
-      </when>
-    </conditional>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: filtered BAM"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_FilterSamReads.bam" ftype="bam"/>
-      <param name="filter" value="includeReadList"/>
-      <param name="read_list_file" value="picard_FilterSamReads_read_list_file.tab" ftype="tabular"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_FilterSamReads_include_reads_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-    <test>
-      <param name="inputFile" value="picard_FilterSamReads.bam" ftype="bam"/>
-      <param name="filter" value="excludeReadList"/>
-      <param name="read_list_file" value="picard_FilterSamReads_read_list_file.tab" ftype="tabular"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_FilterSamReads_exclude_reads_test2.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <conditional name="filter_type">
+            <param name="filter" type="select" label="Select filtering type" help="FILTER; see Help for deatiled info">
+                <option value="includeAligned">Include aligned</option>
+                <option value="excludeAligned">Exclude aligned</option>
+                <option value="includeReadList">Include read list</option>
+                <option value="excludeReadList">Exclude read list</option>
+            </param>
+            <when value="includeAligned"/>
+            <!-- do nothing -->
+            <when value="excludeAligned"/>
+            <!-- do nothing -->
+            <when value="includeReadList">
+                <param name="read_list_file" type="data" format="tabular" label="Dataset containing read names that will be INCLUDED in the output" help="READ_LIST_FILE"/>
+            </when>
+            <when value="excludeReadList">
+                <param name="read_list_file" type="data" format="tabular" label="Dataset containing read names that will be EXCLUDED in the output" help="READ_LIST_FILE"/>
+            </when>
+        </conditional>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: filtered BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_FilterSamReads.bam" ftype="bam"/>
+            <param name="filter" value="includeReadList"/>
+            <param name="read_list_file" value="picard_FilterSamReads_read_list_file.tab" ftype="tabular"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_FilterSamReads_include_reads_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="inputFile" value="picard_FilterSamReads.bam" ftype="bam"/>
+            <param name="filter" value="excludeReadList"/>
+            <param name="read_list_file" value="picard_FilterSamReads_read_list_file.tab" ftype="tabular"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_FilterSamReads_exclude_reads_test2.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -123,5 +117,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_FixMateInformation.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_FixMateInformation.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,50 +1,43 @@
-<tool name="FixMateInformation" id="picard_FixMateInformation" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>ensure that all mate-pair information is in sync between each read and it's mate pair</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="FixMateInformation" id="picard_FixMateInformation" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>ensure that all mate-pair information is in sync between each read and it's mate pair</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
-    picard
-    FixMateInformation
-    INPUT="${inputFile}"
-    OUTPUT="${outFile}"
-    ASSUME_SORTED=${assume_sorted}
-    ADD_MATE_CIGAR=${add_mate_cigar}
+    picard FixMateInformation
+    --INPUT '${inputFile}'
+    --OUTPUT '${outFile}'
+    --ASSUME_SORTED ${assume_sorted}
+    --ADD_MATE_CIGAR ${add_mate_cigar}
 
-    SORT_ORDER=coordinate
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --SORT_ORDER coordinate
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param name="inputFile" multiple="True" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="add_mate_cigar" type="boolean" checked="true" truevalue="True" falsevalue="False" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
-    <param name="assume_sorted" type="boolean" truevalue="True" falsevalue="False" label="Assume that the input file is QUERYNAME sorted" help="ASSUME_SORTED; default=False"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM with fixed mates"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_FixMateInformation.bam" ftype="bam"/>
-      <param name="add_mate_cigar" value="True"/>
-      <param name="assume_sorted" value="False"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_FixMateInformation_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param name="inputFile" multiple="True" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="add_mate_cigar" type="boolean" checked="true" truevalue="True" falsevalue="False" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
+        <param name="assume_sorted" type="boolean" truevalue="True" falsevalue="False" label="Assume that the input file is QUERYNAME sorted" help="ASSUME_SORTED; default=False"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM with fixed mates"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_FixMateInformation.bam" ftype="bam"/>
+            <param name="add_mate_cigar" value="True"/>
+            <param name="assume_sorted" value="False"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_FixMateInformation_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -73,5 +66,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_MarkDuplicates.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_MarkDuplicates.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,112 +1,103 @@
-<tool name="MarkDuplicates" id="picard_MarkDuplicates" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>examine aligned records in BAM datasets to locate duplicate molecules</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">4</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="MarkDuplicates" id="picard_MarkDuplicates" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>examine aligned records in BAM datasets to locate duplicate molecules</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
-    picard
-    MarkDuplicates
+    picard MarkDuplicates
 
-    INPUT='$escaped_element_identifier'
-    OUTPUT='${outFile}'
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
 
-    METRICS_FILE='${metrics_file}'
+    --METRICS_FILE '${metrics_file}'
     #for $element in $comments:
-      COMMENT='${element.comment}'
+        --COMMENT '${element.comment}'
     #end for
 
-    REMOVE_DUPLICATES='${remove_duplicates}'
-    ASSUME_SORTED='${assume_sorted}'
+    --REMOVE_DUPLICATES '${remove_duplicates}'
+    --ASSUME_SORTED '${assume_sorted}'
 
-    DUPLICATE_SCORING_STRATEGY='${duplicate_scoring_strategy}'
+    --DUPLICATE_SCORING_STRATEGY ${duplicate_scoring_strategy}
 
     #if $read_name_regex:
-      READ_NAME_REGEX='${ str( $read_name_regex ) }'
+        --READ_NAME_REGEX '${ str( $read_name_regex ) }'
     #end if
-    OPTICAL_DUPLICATE_PIXEL_DISTANCE='${optical_duplicate_pixel_distance}'
+    --OPTICAL_DUPLICATE_PIXEL_DISTANCE '${optical_duplicate_pixel_distance}'
 
     #if $barcode_tag:
-      BARCODE_TAG='${barcode_tag}'
+        --BARCODE_TAG '${barcode_tag}'
     #end if
 
-    VALIDATION_STRINGENCY='${validation_stringency}'
-    TAGGING_POLICY=All
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --TAGGING_POLICY All
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <repeat name="comments" title="Comment" min="0" help="You can provide multiple comments">
-      <param name="comment" type="text" label="Add this comment to BAM dataset"/>
-    </repeat>
-    <param name="remove_duplicates" type="boolean" label="If true do not write duplicates to the output file instead of writing them with appropriate flags set" help="REMOVE_DUPLICATES; default=False"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
-
-    <param name="duplicate_scoring_strategy" type="select" label="The scoring strategy for choosing the non-duplicate among candidates" help="DUPLICATE_SCORING_STRATEGY; default=SUM_OF_BASE_QUALITIES">
-      <option value="SUM_OF_BASE_QUALITIES">SUM_OF_BASE_QUALITIES</option>
-      <option value="TOTAL_MAPPED_REFERENCE_LENGTH">TOTAL_MAPPED_REFERENCE_LENGTH</option>
-    </param>
-
-    <param name="read_name_regex" type="text" value="" label="Regular expression that can be used in unusual situations to parse non-standard read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default='' (uses : separation)">
-      <expand macro="sanitize_query" />
-    </param>
-    <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="5000" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
-
-    <param name="barcode_tag" type="text" optional="True" label="Barcode Tag" help="Barcode SAM tag. This tag can be utilized when you have data from an assay that includes Unique Molecular Indices. Typically 'RX' "/>
-
-   <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="txt" name="metrics_file" label="${tool.name} on ${on_string}: tabular"/>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
-      <param name="comment" value="test-run"/>
-      <param name="assume_sorted" value="True"/>
-      <param name="remove_duplicates" value="True"/>
-      <param name="read_name_regex" value=".*[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*"/>
-      <param name="optical_duplicate_pixel_distance" value="100"/>
-      <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_MarkDuplicates_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-    <test>
-      <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
-      <param name="comment" value="test-run"/>
-      <param name="assume_sorted" value="True"/>
-      <param name="remove_duplicates" value="False"/>
-      <param name="read_name_regex" value=""/>
-      <param name="optical_duplicate_pixel_distance" value="100"/>
-      <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_MarkDuplicates_test2.bam" ftype="bam" lines_diff="4"/>
-    </test>
-    <test>
-      <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
-      <param name="comment" value="test-run"/>
-      <param name="assume_sorted" value="True"/>
-      <param name="remove_duplicates" value="False"/>
-      <param name="read_name_regex" value=""/>
-      <param name="optical_duplicate_pixel_distance" value="100"/>
-      <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <param name='barcode_tag' value="RX"/>
-      <output name="outFile" file="picard_MarkDuplicates_test2.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <repeat name="comments" title="Comment" min="0" help="You can provide multiple comments">
+            <param name="comment" type="text" label="Add this comment to BAM dataset"/>
+        </repeat>
+        <param name="remove_duplicates" type="boolean" label="If true do not write duplicates to the output file instead of writing them with appropriate flags set" help="REMOVE_DUPLICATES; default=False"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
+        <param name="duplicate_scoring_strategy" type="select" label="The scoring strategy for choosing the non-duplicate among candidates" help="DUPLICATE_SCORING_STRATEGY; default=SUM_OF_BASE_QUALITIES">
+            <option value="SUM_OF_BASE_QUALITIES" selected="true">SUM_OF_BASE_QUALITIES</option>
+            <option value="TOTAL_MAPPED_REFERENCE_LENGTH">TOTAL_MAPPED_REFERENCE_LENGTH</option>
+            <option value="RANDOM">RANDOM</option>
+        </param>
+        <param name="read_name_regex" type="text" value="" label="Regular expression that can be used in unusual situations to parse non-standard read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default='' (uses : separation)">
+            <expand macro="sanitize_query"/>
+        </param>
+        <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="5000" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
+        <param name="barcode_tag" type="text" optional="True" label="Barcode Tag" help="Barcode SAM tag. This tag can be utilized when you have data from an assay that includes Unique Molecular Indices. Typically 'RX' "/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="txt" name="metrics_file" label="${tool.name} on ${on_string}: tabular"/>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
+            <param name="comment" value="test-run"/>
+            <param name="assume_sorted" value="True"/>
+            <param name="remove_duplicates" value="True"/>
+            <param name="read_name_regex" value=".*[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*"/>
+            <param name="optical_duplicate_pixel_distance" value="100"/>
+            <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_MarkDuplicates_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
+            <param name="comment" value="test-run"/>
+            <param name="assume_sorted" value="True"/>
+            <param name="remove_duplicates" value="False"/>
+            <param name="read_name_regex" value=""/>
+            <param name="optical_duplicate_pixel_distance" value="100"/>
+            <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_MarkDuplicates_test2.bam" ftype="bam" lines_diff="4"/>
+        </test>
+        <test>
+            <param name="inputFile" value="picard_MarkDuplicates.bam" ftype="bam"/>
+            <param name="comment" value="test-run"/>
+            <param name="assume_sorted" value="True"/>
+            <param name="remove_duplicates" value="False"/>
+            <param name="read_name_regex" value=""/>
+            <param name="optical_duplicate_pixel_distance" value="100"/>
+            <param name="duplicate_scoring_strategy" value="SUM_OF_BASE_QUALITIES"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <param name="barcode_tag" value="RX"/>
+            <output name="outFile" file="picard_MarkDuplicates_test2.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -153,5 +144,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_MarkDuplicatesWithMateCigar.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_MarkDuplicatesWithMateCigar.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,88 +1,76 @@
-<tool name="MarkDuplicatesWithMateCigar" id="picard_MarkDuplicatesWithMateCigar" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>examine aligned records in BAM datasets to locate duplicate molecules</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">3</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="MarkDuplicatesWithMateCigar" id="picard_MarkDuplicatesWithMateCigar" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>examine aligned records in BAM datasets to locate duplicate molecules</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
-    picard
-    MarkDuplicatesWithMateCigar
+    picard MarkDuplicatesWithMateCigar
 
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
 
-    METRICS_FILE="${metrics_file}"
-    COMMENT="${comment}"
+    --METRICS_FILE '${metrics_file}'
+    --COMMENT '${comment}'
 
-    MINIMUM_DISTANCE="${minimum_distance}"
-    SKIP_PAIRS_WITH_NO_MATE_CIGAR="${skip_pairs_with_no_mate_cigar}"
-
+    --MINIMUM_DISTANCE '${minimum_distance}'
+    --SKIP_PAIRS_WITH_NO_MATE_CIGAR '${skip_pairs_with_no_mate_cigar}'
 
-    REMOVE_DUPLICATES="${remove_duplicates}"
-    ASSUME_SORTED="${assume_sorted}"
+    --REMOVE_DUPLICATES '${remove_duplicates}'
+    --ASSUME_SORTED '${assume_sorted}'
 
-    DUPLICATE_SCORING_STRATEGY="${duplicate_scoring_strategy}"
+    --DUPLICATE_SCORING_STRATEGY ${duplicate_scoring_strategy}
 
-    READ_NAME_REGEX='${ str( $read_name_regex ) }'
-    OPTICAL_DUPLICATE_PIXEL_DISTANCE="${optical_duplicate_pixel_distance}"
-
+    --READ_NAME_REGEX '${ str( $read_name_regex ) }'
+    --OPTICAL_DUPLICATE_PIXEL_DISTANCE '${optical_duplicate_pixel_distance}'
 
-    BLOCK_SIZE=100000
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --BLOCK_SIZE 100000
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-      <param name="comment" type="text" label="Add this comment to BAM dataset"/>
-
-    <param name="minimum_distance" type="integer" value="-1" label="The minimum distance to buffer records to account for clipping on the 5' end of the records" help="MINIMUM_DISTANCE; Set this number to -1 to use twice the first read's read length (or 100, whichever is smaller); default=-1"/>
-    <param name="skip_pairs_with_no_mate_cigar" type="boolean" checked="true" truevalue="true" falsevalue="false" label="Skip record pairs with no mate cigar and include them in the output" help="SKIP_PAIRS_WITH_NO_MATE_CIGAR; default=True"/>
-    <param name="remove_duplicates" type="boolean" label="If true do not write duplicates to the output file instead of writing them with appropriate flags set" help="REMOVE_DUPLICATES; default=False"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
-
-    <param name="duplicate_scoring_strategy" type="select" label="The scoring strategy for choosing the non-duplicate among candidates" help="DUPLICATE_SCORING_STRATEGY; default=TOTAL_MAPPED_REFERENCE_LENGTH">
-      <option value="TOTAL_MAPPED_REFERENCE_LENGTH" selected="True">TOTAL_MAPPED_REFERENCE_LENGTH</option>
-      <option value="SUM_OF_BASE_QUALITIES">SUM_OF_BASE_QUALITIES</option>
-    </param>
-
-
-    <param name="read_name_regex" type="text" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*." label="Regular expression that can be used to parse read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*.">
-      <expand macro="sanitize_query" />
-    </param>
-    <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="5000" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
-
-   <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="txt" name="metrics_file" label="${tool.name} on ${on_string}: metrics"/>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_MarkDuplicatesWithMateCigar.bam" ftype="bam"/>
-      <param name="minimum_distance" value="-1"/>
-      <param name="skip_pairs_with_no_mate_cigar" value="True"/>
-      <param name="comment" value="test-run"/>
-      <param name="assume_sorted" value="True"/>
-      <param name="remove_duplicates" value="False"/>
-      <param name="read_name_regex" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*."/>
-      <param name="optical_duplicate_pixel_distance" value="100"/>
-      <param name="duplicate_scoring_strategy" value="TOTAL_MAPPED_REFERENCE_LENGTH"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_MarkDuplicatesWithMateCigar_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param name="inputFile" type="data" format="bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="comment" type="text" label="Add this comment to BAM dataset"/>
+        <param name="minimum_distance" type="integer" value="-1" label="The minimum distance to buffer records to account for clipping on the 5' end of the records" help="MINIMUM_DISTANCE; Set this number to -1 to use twice the first read's read length (or 100, whichever is smaller); default=-1"/>
+        <param name="skip_pairs_with_no_mate_cigar" type="boolean" checked="true" truevalue="true" falsevalue="false" label="Skip record pairs with no mate cigar and include them in the output" help="SKIP_PAIRS_WITH_NO_MATE_CIGAR; default=True"/>
+        <param name="remove_duplicates" type="boolean" label="If true do not write duplicates to the output file instead of writing them with appropriate flags set" help="REMOVE_DUPLICATES; default=False"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
+        <param name="duplicate_scoring_strategy" type="select" label="The scoring strategy for choosing the non-duplicate among candidates" help="DUPLICATE_SCORING_STRATEGY; default=TOTAL_MAPPED_REFERENCE_LENGTH">
+            <option value="TOTAL_MAPPED_REFERENCE_LENGTH" selected="True">TOTAL_MAPPED_REFERENCE_LENGTH</option>
+            <option value="SUM_OF_BASE_QUALITIES">SUM_OF_BASE_QUALITIES</option>
+            <option value="RANDOM">RANDOM</option>
+        </param>
+        <param name="read_name_regex" type="text" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*." label="Regular expression that can be used to parse read names in the incoming SAM/BAM dataset" help="READ_NAME_REGEX; Read names are parsed to extract three variables: tile/region, x coordinate and y coordinate. These values are used to estimate the rate of optical duplication in order to give a more accurate estimated library size. See help below for more info; default=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*.">
+            <expand macro="sanitize_query"/>
+        </param>
+        <param name="optical_duplicate_pixel_distance" type="integer" value="100" min="0" max="5000" label="The maximum offset between two duplicte clusters in order to consider them optical duplicates" help="OPTICAL_DUPLICATE_PIXEL_DISTANCE; default=100"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="txt" name="metrics_file" label="${tool.name} on ${on_string}: metrics"/>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_MarkDuplicatesWithMateCigar.bam" ftype="bam"/>
+            <param name="minimum_distance" value="-1"/>
+            <param name="skip_pairs_with_no_mate_cigar" value="True"/>
+            <param name="comment" value="test-run"/>
+            <param name="assume_sorted" value="True"/>
+            <param name="remove_duplicates" value="False"/>
+            <param name="read_name_regex" value="[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*."/>
+            <param name="optical_duplicate_pixel_distance" value="100"/>
+            <param name="duplicate_scoring_strategy" value="TOTAL_MAPPED_REFERENCE_LENGTH"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_MarkDuplicatesWithMateCigar_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -149,5 +137,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_MeanQualityByCycle.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_MeanQualityByCycle.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="MeanQualityByCycle" id="picard_MeanQualityByCycle" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>chart distribution of base qualities</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool name="MeanQualityByCycle" id="picard_MeanQualityByCycle" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>chart distribution of base qualities</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     ##set up input files
     @symlink_element_identifier@
@@ -15,67 +14,60 @@
 
     @handle_reference_source@
 
-    picard
-    MeanQualityByCycle
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    CHART_OUTPUT="${pdfFile}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    ALIGNED_READS_ONLY="${aligned_reads_only}"
-    PF_READS_ONLY="${pf_reads_only}"
+    picard MeanQualityByCycle
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --CHART_OUTPUT '${pdfFile}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --ALIGNED_READS_ONLY '${aligned_reads_only}'
+    --PF_READS_ONLY '${pf_reads_only}'
 
-    ASSUME_SORTED="${assume_sorted}"
+    --ASSUME_SORTED '${assume_sorted}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </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">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="aligned_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true, calculate mean quality over aligned reads only" help="ALIGNED_READS_ONLY; default=False"/>
-    <param name="pf_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true calculate mean quality over reads passing quality filter" help="PF_READS_ONLY; default=False"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
-    <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="assume_sorted" value="true" />
-      <param name="aligned_reads_only" value="false" />
-      <param name="pf_reads_only" value="false" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_MeanQualityByCycle_ref.fa" />
-      <param name="inputFile" value="picard_MeanQualityByCycle.bam" ftype="bam" />
-      <output name="outFile" file="picard_MeanQualityByCycle_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="aligned_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true, calculate mean quality over aligned reads only" help="ALIGNED_READS_ONLY; default=False"/>
+        <param name="pf_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true calculate mean quality over reads passing quality filter" help="PF_READS_ONLY; default=False"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
+        <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="assume_sorted" value="true"/>
+            <param name="aligned_reads_only" value="false"/>
+            <param name="pf_reads_only" value="false"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_MeanQualityByCycle_ref.fa"/>
+            <param name="inputFile" value="picard_MeanQualityByCycle.bam" ftype="bam"/>
+            <output name="outFile" file="picard_MeanQualityByCycle_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -100,5 +92,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_MergeBamAlignment.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_MergeBamAlignment.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,22 +1,24 @@
-<tool name="MergeBamAlignment" id="picard_MergeBamAlignment" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>merge alignment data with additional info stored in an unmapped BAM dataset</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="MergeBamAlignment" id="picard_MergeBamAlignment" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>merge alignment data with additional info stored in an unmapped BAM dataset</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     #set $picard_dict = "localref.dict"
     #set $ref_fasta = "localref.fa"     ## This is done because picards "likes" .fa extension
 
-    ln -s "${reference_source.ref_file}" "${ref_fasta}" &&
+    ln -sf '${reference_source.ref_file}' '${ref_fasta}' &&
 
     #if str( $reference_source.reference_source_selector ) == "history":
 
-      picard CreateSequenceDictionary REFERENCE="${ref_fasta}" OUTPUT="${picard_dict}"
-      QUIET=true
-      VERBOSITY=ERROR
+      picard CreateSequenceDictionary
+      -REFERENCE '${ref_fasta}'
+      -OUTPUT '${picard_dict}'
+      -QUIET true
+      -VERBOSITY ERROR
 
       &&
 
@@ -26,181 +28,166 @@
 
     #end if
 
-    picard
-    MergeBamAlignment
-      UNMAPPED_BAM="${unmapped_bam}"
+    picard MergeBamAlignment
+      --UNMAPPED_BAM '${unmapped_bam}'
 
-      PAIRED_RUN=true ##This argument is ignored and will be removed. Required. Possible values: {true, false}
+      --PAIRED_RUN true ##This argument is ignored and will be removed. Required. Possible values: {true, false}
 
       #if str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_one_file":
         #for $dataset in $aligned_or_read1_and_read2.aligned_bams:
-          ALIGNED_BAM="${dataset.aligned_bam}"
+            --ALIGNED_BAM '${dataset.aligned_bam}'
         #end for
       #elif str( $aligned_or_read1_and_read2.aligned_or_read1_and_read2_selector ) == "paired_two_files":
         #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams:
-          READ1_ALIGNED_BAM="${dataset.read1_aligned_bam}"
+            --READ1_ALIGNED_BAM '${dataset.read1_aligned_bam}'
         #end for
         #for $dataset in $aligned_or_read1_and_read2.read2_aligned_bams:
-          READ2_ALIGNED_BAM="${dataset.read2_aligned_bam}"
+            --READ2_ALIGNED_BAM '${dataset.read2_aligned_bam}'
         #end for
       #else
         #for $dataset in $aligned_or_read1_and_read2.read1_aligned_bams:
-          READ1_ALIGNED_BAM="${dataset.read1_aligned_bam}"
+            --READ1_ALIGNED_BAM '${dataset.read1_aligned_bam}'
         #end for
       #end if
 
-      OUTPUT="${outFile}"
-      REFERENCE_SEQUENCE="${ref_fasta}"
+      --OUTPUT '${outFile}'
+      --REFERENCE_SEQUENCE '${ref_fasta}'
 
-      CLIP_ADAPTERS="${clip_adapters}"
-      IS_BISULFITE_SEQUENCE="${is_bisulfite_sequence}"
-      ALIGNED_READS_ONLY="${aligned_reads_only}"
-      MAX_INSERTIONS_OR_DELETIONS="${max_insertions_or_deletions}"
+      --CLIP_ADAPTERS '${clip_adapters}'
+      --IS_BISULFITE_SEQUENCE '${is_bisulfite_sequence}'
+      --ALIGNED_READS_ONLY '${aligned_reads_only}'
+      --MAX_INSERTIONS_OR_DELETIONS '${max_insertions_or_deletions}'
 
       #for $attribute in $attributes_to_retain:
-        ATTRIBUTES_TO_RETAIN="${$attribute.attribute}"
+        --ATTRIBUTES_TO_RETAIN '${$attribute.attribute}'
       #end for
 
       #for $attribute in $attributes_to_remove:
-        ATTRIBUTES_TO_REMOVE="${$attribute.attribute}"
+        --ATTRIBUTES_TO_REMOVE '${$attribute.attribute}'
       #end for
 
-      READ1_TRIM="${read1_trim}"
-      READ2_TRIM="${read2_trim}"
+      --READ1_TRIM '${read1_trim}'
+      --READ2_TRIM '${read2_trim}'
 
       #if str( $orientations ) != "None":
         #for $orientation in str( $orientations ).split(','):   ## See trello card https://trello.com/c/9nW02Zhd
-          EXPECTED_ORIENTATIONS="${orientation}"
+          --EXPECTED_ORIENTATIONS '${orientation}'
         #end for
       #end if
 
-      ALIGNER_PROPER_PAIR_FLAGS="${aligner_proper_pair_flags}"
-      PRIMARY_ALIGNMENT_STRATEGY="${primary_alignment_strategy}"
-      CLIP_OVERLAPPING_READS="${clip_overlapping_reads}"
-      INCLUDE_SECONDARY_ALIGNMENTS="${include_secondary_alignments}"
-      ADD_MATE_CIGAR="${add_mate_cigar}"
+      --ALIGNER_PROPER_PAIR_FLAGS '${aligner_proper_pair_flags}'
+      --PRIMARY_ALIGNMENT_STRATEGY '${primary_alignment_strategy}'
+      --CLIP_OVERLAPPING_READS '${clip_overlapping_reads}'
+      --INCLUDE_SECONDARY_ALIGNMENTS '${include_secondary_alignments}'
+      --ADD_MATE_CIGAR '${add_mate_cigar}'
 
-      VALIDATION_STRINGENCY="${validation_stringency}"
+      --VALIDATION_STRINGENCY '${validation_stringency}'
 
-      SORT_ORDER=coordinate
-      QUIET=true
-      VERBOSITY=ERROR
+      --SORT_ORDER coordinate
+      --QUIET true
+      --VERBOSITY ERROR
 
   ]]></command>
-
-  <inputs>
-
-     <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
-          <options from_data_table="picard_indexes">
-            <filter type="sort_by" column="2" />
-            <validator type="no_options" message="No indexes are available" />
-          </options>
-          <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
-        </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" />
-      </when>
-    </conditional>
-
-    <param format="sam,bam" name="unmapped_bam" type="data" label="Selected unaligned SAM or BAM with original reads" help="UNMAPPED_BAM; This dataset must be sorted in queryname order (use picard_SortSam to do this)" />
-    <conditional name="aligned_or_read1_and_read2">
-      <param name="aligned_or_read1_and_read2_selector" type="select" label="What type of aligned data do you have?">
-        <option value="paired_one_file">Paired data in a single BAM file (ALIGNED_BAM)</option>
-        <option value="paired_two_files">Paired data in separate files (READ1_ALIGNED_BAM and READ2_ALIGNED_BAM)</option>
-        <option value="single_file">Singe end data (READ1_ALIGNED_BAM)</option>
-      </param>
-      <when value="paired_one_file">
-        <repeat name="aligned_bams" title="Aligned SAM or BAM dataset" min="1" help="You can provide multiple datasets">
-          <param name="aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="ALIGNED_BAM"/>
-        </repeat>
-      </when>
-      <when value="paired_two_files">
-        <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Read 1" min="1" help="You can provide multiple datasets">
-          <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read1" help="READ1_ALIGNED_BAM"/>
-        </repeat>
-        <repeat name="read2_aligned_bams" title="Aligned SAM or BAM dataset for Read 2" min="1" help="You can provide multiple datasets">
-          <param name="read2_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read2" help="READ2_ALIGNED_BAM"/>
-        </repeat>
-      </when>
-      <when value="single_file">
-        <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Single Reads" min="1" help="You can provide multiple datasets">
-          <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="READ1_ALIGNED_BAM"/>
+    <inputs>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
+                    <options from_data_table="picard_indexes">
+                        <filter type="sort_by" column="2"/>
+                        <validator type="no_options" message="No indexes are available"/>
+                    </options>
+                    <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+                </param>
+            </when>
+            <when value="history">
+                <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
+            </when>
+        </conditional>
+        <param format="sam,bam" name="unmapped_bam" type="data" label="Selected unaligned SAM or BAM with original reads" help="UNMAPPED_BAM; This dataset must be sorted in queryname order (use picard_SortSam to do this)"/>
+        <conditional name="aligned_or_read1_and_read2">
+            <param name="aligned_or_read1_and_read2_selector" type="select" label="What type of aligned data do you have?">
+                <option value="paired_one_file">Paired data in a single BAM file (ALIGNED_BAM)</option>
+                <option value="paired_two_files">Paired data in separate files (READ1_ALIGNED_BAM and READ2_ALIGNED_BAM)</option>
+                <option value="single_file">Singe end data (READ1_ALIGNED_BAM)</option>
+            </param>
+            <when value="paired_one_file">
+                <repeat name="aligned_bams" title="Aligned SAM or BAM dataset" min="1" help="You can provide multiple datasets">
+                    <param name="aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="ALIGNED_BAM"/>
+                </repeat>
+            </when>
+            <when value="paired_two_files">
+                <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Read 1" min="1" help="You can provide multiple datasets">
+                    <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read1" help="READ1_ALIGNED_BAM"/>
+                </repeat>
+                <repeat name="read2_aligned_bams" title="Aligned SAM or BAM dataset for Read 2" min="1" help="You can provide multiple datasets">
+                    <param name="read2_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data for Read2" help="READ2_ALIGNED_BAM"/>
+                </repeat>
+            </when>
+            <when value="single_file">
+                <repeat name="read1_aligned_bams" title="Aligned SAM or BAM dataset for Single Reads" min="1" help="You can provide multiple datasets">
+                    <param name="read1_aligned_bam" type="data" format="sam,bam" label="SAM or BAM dataset(s) with alignment data" help="READ1_ALIGNED_BAM"/>
+                </repeat>
+            </when>
+        </conditional>
+        <param name="clip_adapters" type="boolean" checked="true" label="Whether to clip adapters where identified" help="CLIP_ADAPTERS; default=True"/>
+        <param name="is_bisulfite_sequence" type="boolean" label="Whether the data is from bisulfite sequencing (used when caculating the NM tag)" help="IS_BISULFITE_SEQUENCE; default=False"/>
+        <param name="aligned_reads_only" type="boolean" label="Whether to output only aligned reads" help="ALIGNED_READS_ONLY; default=False"/>
+        <param name="max_insertions_or_deletions" type="integer" value="1" label="The maximum number of insertions or deletions permitted for an alignment to be included" help="MAX_INSERTIONS_OR_DELETIONS; Alignments with more than this many insertions or deletions will be ignored. Set to -1 to allow any number of insertions or deletions. default=1"/>
+        <repeat name="attributes_to_retain" title="Retain the following alignment attribute" min="0" help="You can provide multiple attributes">
+            <param name="attribute" type="text" label="Reserved alignment attributes (tags starting with X, Y, or Z) that should be brought over from the alignment data when merging" help="ATTRIBUTES_TO_RETAIN; example: XA"/>
         </repeat>
-      </when>
-    </conditional>
-
-    <param name="clip_adapters" type="boolean" checked="true" label="Whether to clip adapters where identified" help="CLIP_ADAPTERS; default=True"/>
-    <param name="is_bisulfite_sequence" type="boolean" label="Whether the data is from bisulfite sequencing (used when caculating the NM tag)" help="IS_BISULFITE_SEQUENCE; default=False"/>
-    <param name="aligned_reads_only" type="boolean" label="Whether to output only aligned reads" help="ALIGNED_READS_ONLY; default=False"/>
-    <param name="max_insertions_or_deletions" type="integer" value="1" label="The maximum number of insertions or deletions permitted for an alignment to be included" help="MAX_INSERTIONS_OR_DELETIONS; Alignments with more than this many insertions or deletions will be ignored. Set to -1 to allow any number of insertions or deletions. default=1"/>
-
-    <repeat name="attributes_to_retain" title="Retain the following alignment attribute" min="0" help="You can provide multiple attributes">
-      <param name="attribute" type="text" label="Reserved alignment attributes (tags starting with X, Y, or Z) that should be brought over from the alignment data when merging" help="ATTRIBUTES_TO_RETAIN; example: XA"/>
-    </repeat>
-
-    <repeat name="attributes_to_remove" title="Remove the following alignment attribute" min="0" help="You can provide multiple attributes">
-      <param name="attribute" type="text" label="Attributes from the alignment record that should be removed when merging." help="ATTRIBUTES_TO_REMOVE; This overrides ATTRIBUTES_TO_RETAIN if they share common tags"/>
-    </repeat>
-
-    <param name="read1_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 1 prior to alignment" help="READ1_TRIM; default=0"/>
-    <param name="read2_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 2 prior to alignment" help="READ2_TRIM; default=0"/>
-
-    <param name="orientations" type="select" multiple="True" display="checkboxes" label="The expected orientation of proper read pairs" help="EXPECTED_ORIENTATIONS; multiple orinetations can be selected">
-      <option value="FR">Forward/Reverse (FR)</option>
-      <option value="RF">Reverse/Forward (RF)</option>
-      <option value="TANDEM">Tandem</option>
-    </param>
-
-
-    <param name="aligner_proper_pair_flags" type="boolean" label="Use the aligner's idea of what a proper pair is rather than computing in this program" help="ALIGNER_PROPER_PAIR_FLAGS; default=False"/>
-
-    <param name="primary_alignment_strategy" type="select" label="Strategy for selecting primary alignment when the aligner has provided more than one alignment for a pair or fragments" help="PRIMARY_ALIGNMENT_STRATEGY; see help below for more info; default=BestMapq">
-      <option value="BestMapq" selected="True">BestMapq</option>
-      <option value="EarliestFragment">EarliestFragment</option>
-      <option value="BestEndMapq">BestEndMapq</option>
-      <option value="MostDistant">MostDistant</option>
-    </param>
-
-    <param name="clip_overlapping_reads" type="boolean" checked="True" label="For paired reads, soft clip the 3' end of each read if necessary so that it does not extend past the 5' end of its mate" help="CLIP_OVERLAPPING_READS; default=True"/>
-    <param name="include_secondary_alignments" type="boolean" checked="True" label="If false, do not write secondary alignments to output" help="INCLUDE_SECONDARY_ALIGNMENTS; default=True"/>
-    <param name="add_mate_cigar" type="boolean" checked="True" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
-    <expand macro="VS" />
-  </inputs>
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_MergeBamAlignment_ref.fa" ftype="fasta" />
-      <param name="unmapped_bam" value="picard_MergeBamAlignment_unaligned.bam" ftype="bam"/>
-      <param name="aligned_or_read1_and_read2_selector" value="paired_one_file"/>
-      <param name="aligned_bam" value="picard_MergeBamAlignment_aligned.bam" ftype="bam"/>
-      <param name="clip_adapters" value="True"/>
-      <param name="is_bisulfite_sequence" value="False"/>
-      <param name="aligned_reads_only" value="False"/>
-      <param name="max_insertions_or_deletions" value="1"/>
-      <param name="read1_trim" value="0"/>
-      <param name="read2_trim" value="0"/>
-      <param name="orientations" value="FR"/>
-      <param name="aligner_proper_pair_flags" value="False"/>
-      <param name="primary_alignment_strategy" value="BestMapq"/>
-      <param name="clip_overlapping_reads" value="True"/>
-      <param name="include_secondary_alignments" value="True"/>
-      <param name="add_mate_cigar" value="True"/>
-      <output name="outFile" file="picard_MergeBamAlignment_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+        <repeat name="attributes_to_remove" title="Remove the following alignment attribute" min="0" help="You can provide multiple attributes">
+            <param name="attribute" type="text" label="Attributes from the alignment record that should be removed when merging." help="ATTRIBUTES_TO_REMOVE; This overrides ATTRIBUTES_TO_RETAIN if they share common tags"/>
+        </repeat>
+        <param name="read1_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 1 prior to alignment" help="READ1_TRIM; default=0"/>
+        <param name="read2_trim" type="integer" value="0" label="The number of bases trimmed from the beginning of read 2 prior to alignment" help="READ2_TRIM; default=0"/>
+        <param name="orientations" type="select" multiple="True" display="checkboxes" label="The expected orientation of proper read pairs" help="EXPECTED_ORIENTATIONS; multiple orinetations can be selected">
+            <option value="FR">Forward/Reverse (FR)</option>
+            <option value="RF">Reverse/Forward (RF)</option>
+            <option value="TANDEM">Tandem</option>
+        </param>
+        <param name="aligner_proper_pair_flags" type="boolean" label="Use the aligner's idea of what a proper pair is rather than computing in this program" help="ALIGNER_PROPER_PAIR_FLAGS; default=False"/>
+        <param name="primary_alignment_strategy" type="select" label="Strategy for selecting primary alignment when the aligner has provided more than one alignment for a pair or fragments" help="PRIMARY_ALIGNMENT_STRATEGY; see help below for more info; default=BestMapq">
+            <option value="BestMapq" selected="True">BestMapq</option>
+            <option value="EarliestFragment">EarliestFragment</option>
+            <option value="BestEndMapq">BestEndMapq</option>
+            <option value="MostDistant">MostDistant</option>
+        </param>
+        <param name="clip_overlapping_reads" type="boolean" checked="True" label="For paired reads, soft clip the 3' end of each read if necessary so that it does not extend past the 5' end of its mate" help="CLIP_OVERLAPPING_READS; default=True"/>
+        <param name="include_secondary_alignments" type="boolean" checked="True" label="If false, do not write secondary alignments to output" help="INCLUDE_SECONDARY_ALIGNMENTS; default=True"/>
+        <param name="add_mate_cigar" type="boolean" checked="True" label="Adds the mate CIGAR tag (MC) if true, does not if false" help="ADD_MATE_CIGAR; default=True"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_MergeBamAlignment_ref.fa" ftype="fasta"/>
+            <param name="unmapped_bam" value="picard_MergeBamAlignment_unaligned.bam" ftype="bam"/>
+            <param name="aligned_or_read1_and_read2_selector" value="paired_one_file"/>
+            <param name="aligned_bam" value="picard_MergeBamAlignment_aligned.bam" ftype="bam"/>
+            <param name="clip_adapters" value="True"/>
+            <param name="is_bisulfite_sequence" value="False"/>
+            <param name="aligned_reads_only" value="False"/>
+            <param name="max_insertions_or_deletions" value="1"/>
+            <param name="read1_trim" value="0"/>
+            <param name="read2_trim" value="0"/>
+            <param name="orientations" value="FR"/>
+            <param name="aligner_proper_pair_flags" value="False"/>
+            <param name="primary_alignment_strategy" value="BestMapq"/>
+            <param name="clip_overlapping_reads" value="True"/>
+            <param name="include_secondary_alignments" value="True"/>
+            <param name="add_mate_cigar" value="True"/>
+            <output name="outFile" file="picard_MergeBamAlignment_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -309,5 +296,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_MergeSamFiles.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_MergeSamFiles.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,63 +1,55 @@
-<tool name="MergeSamFiles" id="picard_MergeSamFiles" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>merges multiple SAM/BAM datasets into one</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="MergeSamFiles" id="picard_MergeSamFiles" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>merges multiple SAM/BAM datasets into one</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
-    picard
-    MergeSamFiles
+    picard MergeSamFiles
 
     #for $element in $inputFile:
-      INPUT="${element}"
+      --INPUT '${element}'
     #end for
 
-    OUTPUT="${outFile}"
-    MERGE_SEQUENCE_DICTIONARIES="${merge_sequence_dictionaries}"
+    --OUTPUT '${outFile}'
+    --MERGE_SEQUENCE_DICTIONARIES '${merge_sequence_dictionaries}'
 
-    ASSUME_SORTED="${assume_sorted}"
+    --ASSUME_SORTED '${assume_sorted}'
     #for $element in $comments:
-      COMMENT="${element.comment}"
+      --COMMENT '${element.comment}'
     #end for
 
-    USE_THREADING=true
-    SORT_ORDER=coordinate
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --USE_THREADING true
+    --SORT_ORDER coordinate
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" multiple="True" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="merge_sequence_dictionaries" type="boolean" label="Merge the sequence dictionaries of the datasets being merged" help="MERGE_SEQUENCE_DICTIONARIES; default=False"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" help="ASSUME_SORTED; default=False"/>
-
-    <repeat name="comments" title="Comment" min="0" help="You can provide multiple comments">
-      <param name="comment" type="text" label="Add this comment to BAM dataset" help="COMMENT"/>
-    </repeat>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Merged BAM dataset"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_MergeSamFiles_input1.bam,picard_MergeSamFiles_input2.bam,picard_MergeSamFiles_input3.bam" ftype="bam"/>
-      <param name="assume_sorted" value="False"/>
-      <param name="merge_sequence_dictionaries" value="False"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_MergeSamFiles_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" multiple="True" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="merge_sequence_dictionaries" type="boolean" label="Merge the sequence dictionaries of the datasets being merged" help="MERGE_SEQUENCE_DICTIONARIES; default=False"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" help="ASSUME_SORTED; default=False"/>
+        <repeat name="comments" title="Comment" min="0" help="You can provide multiple comments">
+            <param name="comment" type="text" label="Add this comment to BAM dataset" help="COMMENT"/>
+        </repeat>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Merged BAM dataset"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_MergeSamFiles_input1.bam,picard_MergeSamFiles_input2.bam,picard_MergeSamFiles_input3.bam" ftype="bam"/>
+            <param name="assume_sorted" value="False"/>
+            <param name="merge_sequence_dictionaries" value="False"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_MergeSamFiles_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -84,5 +76,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_NormalizeFasta.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_NormalizeFasta.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,50 +1,46 @@
-<tool name="NormalizeFasta" id="picard_NormalizeFasta" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>normalize fasta datasets</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="NormalizeFasta" id="picard_NormalizeFasta" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>normalize fasta datasets</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
 
     ## Two lines below are due to the fact that picard likes fasta files to have extension .fa
     #import re
     #set escaped_element_identifier = re.sub('[^\w\-]', '_', str($inputFile.element_identifier))
-    ln -f -s '$inputFile' '$escaped_element_identifier'.fa &&
-    picard
-    NormalizeFasta
+    ln -sf '$inputFile' '$escaped_element_identifier'.fa &&
+    
+    picard NormalizeFasta
 
-    INPUT='$escaped_element_identifier'.fa
-    OUTPUT="${outFile}"
-    LINE_LENGTH="${line_length}"
-    TRUNCATE_SEQUENCE_NAMES_AT_WHITESPACE="${truncate_sequence_names_at_whitespaces}"
+    --INPUT '$escaped_element_identifier'.fa
+    --OUTPUT '${outFile}'
+    --LINE_LENGTH '${line_length}'
+    --TRUNCATE_SEQUENCE_NAMES_AT_WHITESPACE '${truncate_sequence_names_at_whitespaces}'
 
-    QUIET=true
-    VERBOSITY=ERROR
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="fasta" name="inputFile" type="data" label="FASTA dataset or dataset collection" help="If empty, upload or import a FASTA dataset" />
-    <param name="line_length" type="integer" value="100" min="1" max="200" label="The line length to be used for the output fasta file" help="LINE_LENGTH; default=100"/>
-    <param name="truncate_sequence_names_at_whitespaces" type="boolean" label="Truncate sequence names at first whitespace" help="TRUNCATE_SEQUENCE_NAMES_AT_WHITESPACE; default=False"/>
-  </inputs>
-
-  <outputs>
-    <data format="fasta" name="outFile" label="${tool.name} on ${on_string}: Normalized FASTA dataset"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_NormalizeFasta_ref.fa" ftype="fasta"/>
-      <param name="line_length" value="40"/>
-      <param name="truncate_sequence_names_at_whitespaces" value="False"/>
-      <output name="outFile" file="picard_NormalizeFasta_test1.fa" ftype="fasta"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="fasta" name="inputFile" type="data" label="FASTA dataset or dataset collection" help="If empty, upload or import a FASTA dataset"/>
+        <param name="line_length" type="integer" value="100" min="1" max="200" label="The line length to be used for the output fasta file" help="LINE_LENGTH; default=100"/>
+        <param name="truncate_sequence_names_at_whitespaces" type="boolean" label="Truncate sequence names at first whitespace" help="TRUNCATE_SEQUENCE_NAMES_AT_WHITESPACE; default=False"/>
+    </inputs>
+    <outputs>
+        <data format="fasta" name="outFile" label="${tool.name} on ${on_string}: Normalized FASTA dataset"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_NormalizeFasta_ref.fa" ftype="fasta"/>
+            <param name="line_length" value="40"/>
+            <param name="truncate_sequence_names_at_whitespaces" value="False"/>
+            <output name="outFile" file="picard_NormalizeFasta_test1.fa" ftype="fasta"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -62,5 +58,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_QualityScoreDistribution.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_QualityScoreDistribution.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,13 +1,12 @@
-<tool name="QualityScoreDistribution" id="picard_QualityScoreDistribution" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>chart quality score distribution</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements">
-    <requirement type="package" version="3.4.1">r-base</requirement>
+<tool name="QualityScoreDistribution" id="picard_QualityScoreDistribution" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>chart quality score distribution</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements">
   </expand>
-  <command detect_errors="exit_code"><![CDATA[
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
     ##set up input files
     @symlink_element_identifier@
@@ -15,70 +14,63 @@
 
     @handle_reference_source@
 
-    picard
-    QualityScoreDistribution
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    CHART_OUTPUT="${pdfFile}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    ALIGNED_READS_ONLY="${aligned_reads_only}"
-    PF_READS_ONLY="${pf_reads_only}"
-    INCLUDE_NO_CALLS="${include_no_calls}"
+    picard QualityScoreDistribution
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --CHART_OUTPUT '${pdfFile}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --ALIGNED_READS_ONLY '${aligned_reads_only}'
+    --PF_READS_ONLY '${pf_reads_only}'
+    --INCLUDE_NO_CALLS '${include_no_calls}'
 
-    ASSUME_SORTED="${assume_sorted}"
+    --ASSUME_SORTED '${assume_sorted}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
-          <options from_data_table="all_fasta">
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Using reference genome" help="REFERENCE_SEQUENCE">
+                    <options from_data_table="all_fasta">
           </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">
-        <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference" />
-      </when>
-    </conditional>
-    <param name="aligned_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true, calculate mean quality over aligned reads only" help="ALIGNED_READS_ONLY; default=False"/>
-    <param name="pf_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true calculate mean quality over reads passing quality filter" help="PF_READS_ONLY; default=False"/>
-    <param name="include_no_calls" type="boolean" label="If set to true, include quality for no-call bases in the distribution" help="INCLUDE_NO_CALLS; default=False"/>
-    <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
-    <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="assume_sorted" value="true" />
-      <param name="aligned_reads_only" value="false" />
-      <param name="pf_reads_only" value="false" />
-      <param name="include_no_calls" value="false" />
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_QualityScoreDistribution_ref.fa" />
-      <param name="inputFile" value="picard_QualityScoreDistribution.bam" ftype="bam" />
-      <output name="outFile" file="picard_QualityScoreDistribution_test1.tab" ftype="tabular" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+                    <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">
+                <param name="ref_file" type="data" format="fasta" label="Use the folloing dataset as the reference sequence" help="REFERENCE_SEQUENCE; You can upload a FASTA sequence to the history and use it as reference"/>
+            </when>
+        </conditional>
+        <param name="aligned_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true, calculate mean quality over aligned reads only" help="ALIGNED_READS_ONLY; default=False"/>
+        <param name="pf_reads_only" type="boolean" truevalue="true" falsevalue="false" label="If set to true calculate mean quality over reads passing quality filter" help="PF_READS_ONLY; default=False"/>
+        <param name="include_no_calls" type="boolean" label="If set to true, include quality for no-call bases in the distribution" help="INCLUDE_NO_CALLS; default=False"/>
+        <param name="assume_sorted" type="boolean" label="Assume the input file is already sorted" checked="true" truevalue="true" falsevalue="false" help="ASSUME_SORTED; default=True"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="tabular" name="outFile" label="${tool.name} on ${on_string}: Summary data"/>
+        <data format="pdf" name="pdfFile" label="${tool.name} on ${on_string}: Chart PDF"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="assume_sorted" value="true"/>
+            <param name="aligned_reads_only" value="false"/>
+            <param name="pf_reads_only" value="false"/>
+            <param name="include_no_calls" value="false"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_QualityScoreDistribution_ref.fa"/>
+            <param name="inputFile" value="picard_QualityScoreDistribution.bam" ftype="bam"/>
+            <output name="outFile" file="picard_QualityScoreDistribution_test1.tab" ftype="tabular" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -105,5 +97,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_ReorderSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_ReorderSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,26 +1,28 @@
-<tool name="ReorderSam" id="picard_ReorderSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
+<tool name="ReorderSam" id="picard_ReorderSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
     <description>reorder reads to match ordering in reference sequences</description>
     <macros>
         <import>picard_macros.xml</import>
-        <token name="@WRAPPER_VERSION@">1</token>
+        <token name="@WRAPPER_VERSION@">0</token>
     </macros>
     <xrefs>
         <xref type="bio.tools">picard_reordersam</xref>
     </xrefs>
-    <expand macro="requirements" />
+    <expand macro="requirements"/>
     <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
     #set $picard_dict = "localref.dict"
     #set $ref_fasta = "localref.fa"     ## This is done because picards "likes" .fa extension
 
-    ln -s "${reference_source.ref_file}" "${ref_fasta}" &&
+    ln -sf '${reference_source.ref_file}' '${ref_fasta}' &&
 
     #if str( $reference_source.reference_source_selector ) == "history":
 
-      picard CreateSequenceDictionary REFERENCE="${ref_fasta}" OUTPUT="${picard_dict}"
-      QUIET=true
-      VERBOSITY=ERROR
+      picard CreateSequenceDictionary
+      --REFERENCE '${ref_fasta}'
+      --OUTPUT '${picard_dict}'
+      --QUIET true
+      --VERBOSITY ERROR
 
       &&
 
@@ -32,61 +34,55 @@
 
     picard
     ReorderSam
-      INPUT='$escaped_element_identifier'
-      OUTPUT="${outFile}"
-      REFERENCE="${ref_fasta}"
-      ALLOW_INCOMPLETE_DICT_CONCORDANCE="${allow_incomplete_dict_concordance}"
-      ALLOW_CONTIG_LENGTH_DISCORDANCE="${allow_contig_length_discordance}"
+      --INPUT '$escaped_element_identifier'
+      --OUTPUT '${outFile}'
+      --SEQUENCE_DICTIONARY '${ref_fasta}'
+      --ALLOW_INCOMPLETE_DICT_CONCORDANCE '${allow_incomplete_dict_concordance}'
+      --ALLOW_CONTIG_LENGTH_DISCORDANCE '${allow_contig_length_discordance}'
 
-      VALIDATION_STRINGENCY="${validation_stringency}"
-      QUIET=true
-      VERBOSITY=ERROR
+      --VALIDATION_STRINGENCY '${validation_stringency}'
+      --QUIET true
+      --VERBOSITY ERROR
 
   ]]></command>
-
-  <inputs>
-
-     <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
-          <options from_data_table="picard_indexes">
-            <filter type="sort_by" column="2" />
-            <validator type="no_options" message="No indexes are available" />
-          </options>
-          <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
-        </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" />
-      </when>
-    </conditional>
-
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="allow_incomplete_dict_concordance" type="boolean" label="If true, then allows only a partial overlap of the BAM contigs with the new reference sequence contigs" help="ALLOW_INCOMPLETE_DICT_CONCORDANCE; By default, this tool requires a corresponding contig in the new reference for each read contig; default=False"/>
-    <param name="allow_contig_length_discordance" type="boolean" label="If true, then permits mapping from a read contig to a new reference contig with the same name but a different length" help="ALLOW_CONTIG_LENGTH_DISCORDANCE; HIGHLY DANGEROUS! Only use if you know what you are doing; default=False"/>
-    <expand macro="VS" />
-
-  </inputs>
-  <outputs>
-    <data name="outFile" format="bam" label="${tool.name} on ${on_string}: Reordered BAM"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="reference_source_selector" value="history" />
-      <param name="ref_file" value="picard_ReorderSam_ref.fa" ftype="fasta" />
-      <param name="inputFile" value="picard_ReorderSam.bam" ftype="bam"/>
-      <param name="allow_incomplete_dict_concordance" value="false"/>
-      <param name="allow_contig_length_discordance" value="false"/>
-      <output name="outFile" file="picard_ReorderSam_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
+                    <options from_data_table="picard_indexes">
+                        <filter type="sort_by" column="2"/>
+                        <validator type="no_options" message="No indexes are available"/>
+                    </options>
+                    <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+                </param>
+            </when>
+            <when value="history">
+                <param name="ref_file" type="data" format="fasta,bam,sam" label="Use the following dataset to create dictionary" help="You can upload sequences to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
+            </when>
+        </conditional>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="allow_incomplete_dict_concordance" type="boolean" label="If true, then allows only a partial overlap of the BAM contigs with the new reference sequence contigs" help="ALLOW_INCOMPLETE_DICT_CONCORDANCE; By default, this tool requires a corresponding contig in the new reference for each read contig; default=False"/>
+        <param name="allow_contig_length_discordance" type="boolean" label="If true, then permits mapping from a read contig to a new reference contig with the same name but a different length" help="ALLOW_CONTIG_LENGTH_DISCORDANCE; HIGHLY DANGEROUS! Only use if you know what you are doing; default=False"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: Reordered BAM"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_ReorderSam_ref.fa" ftype="fasta"/>
+            <param name="inputFile" value="picard_ReorderSam.bam" ftype="bam"/>
+            <param name="allow_incomplete_dict_concordance" value="false"/>
+            <param name="allow_contig_length_discordance" value="false"/>
+            <output name="outFile" file="picard_ReorderSam_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -116,5 +112,5 @@
 
 @more_info@
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_ReplaceSamHeader.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_ReplaceSamHeader.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,51 +1,46 @@
-<tool name="ReplaceSamHeader" id="picard_ReplaceSamHeader" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
+<tool name="ReplaceSamHeader" id="picard_ReplaceSamHeader" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
     <description>replace header in a SAM/BAM dataset</description>
     <macros>
         <import>picard_macros.xml</import>
-        <token name="@WRAPPER_VERSION@">1</token>
+        <token name="@WRAPPER_VERSION@">0</token>
     </macros>
     <xrefs>
         <xref type="bio.tools">picard_replacesamheader</xref>
     </xrefs>
-    <expand macro="requirements" />
+    <expand macro="requirements"/>
     <command detect_errors="exit_code"><![CDATA[
     @java_options@
     @symlink_element_identifier@
 
     ## Two lines below are due to the fact that picard likes fasta files to have extension .fa
     #set $fasta_file="local_fasta.fa"
-    ln -s "${inputFile}" "${fasta_file}" &&
+    ln -sf '${inputFile}' '${fasta_file}' &&
 
-    picard
-    ReplaceSamHeader
+    picard ReplaceSamHeader
 
-    INPUT='$escaped_element_identifier'
-    HEADER="${header}"
-    OUTPUT="${outFile}"
+    --INPUT '$escaped_element_identifier'
+    --HEADER '${header}'
+    --OUTPUT '${outFile}'
 
-    QUIET=true
-    VERBOSITY=ERROR
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection (header recepient dataset)" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="header" type="data" format="sam,bam" label="SAM/BAM dataset from which Header will be read (header source dataset)" help="HEADER; If empty, upload or import a SAM/BAM dataset"/>
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM file with replaced header"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_ReplaceSamHeader.bam" ftype="bam"/>
-      <param name="header" value="picard_ReplaceSamHeader_header.bam" ftype="bam"/>
-      <output name="outFile" file="picard_ReplaceSamHeader_test1.bam" ftype="bam"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection (header recepient dataset)" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="header" type="data" format="sam,bam" label="SAM/BAM dataset from which Header will be read (header source dataset)" help="HEADER; If empty, upload or import a SAM/BAM dataset"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: BAM file with replaced header"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_ReplaceSamHeader.bam" ftype="bam"/>
+            <param name="header" value="picard_ReplaceSamHeader_header.bam" ftype="bam"/>
+            <output name="outFile" file="picard_ReplaceSamHeader_test1.bam" ftype="bam"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -59,5 +54,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_RevertOriginalBaseQualitiesAndAddMateCigar.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_RevertOriginalBaseQualitiesAndAddMateCigar.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,52 +1,45 @@
-<tool name="RevertOriginalBaseQualitiesAndAddMateCigar" id="picard_RevertOriginalBaseQualitiesAndAddMateCigar" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>revert the original base qualities and add the mate cigar tag</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="RevertOriginalBaseQualitiesAndAddMateCigar" id="picard_RevertOriginalBaseQualitiesAndAddMateCigar" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>revert the original base qualities and add the mate cigar tag</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
-    picard
-    RevertOriginalBaseQualitiesAndAddMateCigar
+    picard RevertOriginalBaseQualitiesAndAddMateCigar
 
-    INPUT='$inputFile'
-    OUTPUT="${outFile}"
+    --INPUT '$inputFile'
+    --OUTPUT '${outFile}'
 
-    RESTORE_ORIGINAL_QUALITIES="${restore_original_qualities}"
-    MAX_RECORDS_TO_EXAMINE="${max_records_to_examine}"
+    --RESTORE_ORIGINAL_QUALITIES '${restore_original_qualities}'
+    --MAX_RECORDS_TO_EXAMINE '${max_records_to_examine}'
 
-    SORT_ORDER=coordinate
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --SORT_ORDER coordinate
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" multiple="True" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="restore_original_qualities" type="boolean" checked="True" label="Restore original qualities from the OQ field to the QUAL field if available" help="RESTORE_ORIGINAL_QUALITIES; default=True"/>
-    <param name="max_records_to_examine" type="integer" value="10000" min="0" label="The maximum number of records to examine to determine if we can exit early and not output, given that there are a no original base qualities (if we are to restore) and mate cigars exist. Set to 0 to never skip the dataset" help="MAX_RECORDS_TO_EXAMINE; default=10,000"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Reverted BAM dataset"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_RevertOriginalBaseQualitiesAndAddMateCigar.bam" ftype="bam"/>
-      <param name="restore_original_qualities" value="True"/>
-      <param name="max_records_to_examine" value="10000"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_RevertOriginalBaseQualitiesAndAddMateCigar_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" multiple="True" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="restore_original_qualities" type="boolean" checked="True" label="Restore original qualities from the OQ field to the QUAL field if available" help="RESTORE_ORIGINAL_QUALITIES; default=True"/>
+        <param name="max_records_to_examine" type="integer" value="10000" min="0" label="The maximum number of records to examine to determine if we can exit early and not output, given that there are a no original base qualities (if we are to restore) and mate cigars exist. Set to 0 to never skip the dataset" help="MAX_RECORDS_TO_EXAMINE; default=10,000"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Reverted BAM dataset"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_RevertOriginalBaseQualitiesAndAddMateCigar.bam" ftype="bam"/>
+            <param name="restore_original_qualities" value="True"/>
+            <param name="max_records_to_examine" value="10000"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_RevertOriginalBaseQualitiesAndAddMateCigar_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -67,5 +60,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_RevertSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_RevertSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,81 +1,75 @@
-<tool name="RevertSam" id="picard_RevertSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>revert SAM/BAM datasets to a previous state</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool name="RevertSam" id="picard_RevertSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>revert SAM/BAM datasets to a previous state</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     @java_options@
-    picard
-    RevertSam
+    picard RevertSam
 
-    INPUT='$inputFile'
-    OUTPUT="${outFile}"
+    --INPUT '$inputFile'
+    --OUTPUT '${outFile}'
 
-    RESTORE_ORIGINAL_QUALITIES="${restore_original_qualities}"
-    REMOVE_DUPLICATE_INFORMATION="${remove_duplicate_information}"
-    REMOVE_ALIGNMENT_INFORMATION="${remove_alignment_information}"
+    --RESTORE_ORIGINAL_QUALITIES '${restore_original_qualities}'
+    --REMOVE_DUPLICATE_INFORMATION '${remove_duplicate_information}'
+    --REMOVE_ALIGNMENT_INFORMATION '${remove_alignment_information}'
 
     #for $attribute_to_clear in $attributes_to_clear:
-      ATTRIBUTE_TO_CLEAR="${attribute_to_clear.attribute}"
+        --ATTRIBUTE_TO_CLEAR '${attribute_to_clear.attribute}'
     #end for
 
-    SANITIZE="${sanitize}"
-    MAX_DISCARD_FRACTION="${max_discard_fraction}"
-    SAMPLE_ALIAS="${sample_alias}"
-    LIBRARY_NAME="${library_name}"
+    --SANITIZE '${sanitize}'
+    --MAX_DISCARD_FRACTION '${max_discard_fraction}'
+    --SAMPLE_ALIAS '${sample_alias}'
+    --LIBRARY_NAME '${library_name}'
 
-    SORT_ORDER="${sort_order}"
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --SORT_ORDER '${sort_order}'
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" multiple="True" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="restore_original_qualities" type="boolean" checked="True" label="Restore original qualities from the OQ field to the QUAL field if available" help="RESTORE_ORIGINAL_QUALITIES; default=True"/>
-    <param name="remove_duplicate_information" type="boolean" checked="True" label="Remove duplicate read flags from all reads" help="REMOVE_DUPLICATE_INFORMATION; Note that if this is true and REMOVE_ALIGNMENT_INFORMATION is set to False, the output may have the unusual but sometimes desirable trait of having unmapped reads that are marked as duplicates; default=True"/>
-    <param name="remove_alignment_information" type="boolean" checked="True" label="Remove all alignment information from the file" help="REMOVE_ALIGNMENT_INFORMATION; default=True"/>
-    <repeat name="attributes_to_clear" title="Clear attribute" min="0" help="You can provide multiple attributes">
-      <param name="attribute" type="text" label="When removing alignment information, specify optional tags to remove (e.g., XM)" help="ATTRIBUTE_TO_CLEAR"/>
-    </repeat>
-    <param name="sanitize" type="boolean" label="Discard reads in order to produce a consistent output BAM" help="SANITIZE; WARNING: This option is potentially destructive. Reads discarded include (but are not limited to) paired reads with missing mates, duplicated records, records with mismatches in length of bases and qualities. This option can only be enabled if the output sort order is queryname and will always cause sorting to occur; default=False"/>
-    <param name="max_discard_fraction" value="0.01" type="float" min="0.0" max="1.0" label="If SANITIZE=true and higher than MAX_DISCARD_FRACTION reads are discarded due to sanitization then the program will exit with an Exception instead of exiting cleanly" help="MAX_DISCARD_FRACTION; default=0.01"/>
-    <param name="sample_alias" type="text" value="null" label="The sample alias to use in the reverted output file. This will override the existing sample alias in the file and is used only if all the read groups in the input file have the same sample alias" help="SAMPLE_ALIAS; default=Null"/>
-    <param name="library_name" type="text" value="null" label="The library name to use in the reverted output file. This will override the existing sample alias in the file and is used only if all the read groups in the input file have the same sample alias" help="LIBRARY_NAME; default=Null"/>
-    <param name="sort_order" type="select" label="The sort order to create the reverted output file with" help="SORT_ORDER; Picard default=queryname; Galaxy default=coordinate">
-      <option value="coordinate" selected="True">Coordinate</option>
-      <option value="queryname">Queryname</option>
-      <option value="unsorted">Unsorted</option>
-    </param>
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Reverted BAM dataset"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_RevertSam.bam" ftype="bam"/>
-      <param name="restore_original_qualities" value="True"/>
-      <param name="remove_duplicate_information" value="True"/>
-      <param name="remove_alignment_information" value="True"/>
-      <param name="attribute" value="XM"/>
-      <param name="sanitize" value="False"/>
-      <param name="max_discard_fraction" value="0.01"/>
-      <param name="sample_alias" value="null"/>
-      <param name="library_name" value="null"/>
-      <param name="sort_order" value="coordinate"/>
-      <param name="validation_stringency" value="LENIENT"/>
-      <output name="outFile" file="picard_RevertSam_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset" multiple="True"/>
+        <param name="restore_original_qualities" type="boolean" checked="True" label="Restore original qualities from the OQ field to the QUAL field if available" help="RESTORE_ORIGINAL_QUALITIES; default=True"/>
+        <param name="remove_duplicate_information" type="boolean" checked="True" label="Remove duplicate read flags from all reads" help="REMOVE_DUPLICATE_INFORMATION; Note that if this is true and REMOVE_ALIGNMENT_INFORMATION is set to False, the output may have the unusual but sometimes desirable trait of having unmapped reads that are marked as duplicates; default=True"/>
+        <param name="remove_alignment_information" type="boolean" checked="True" label="Remove all alignment information from the file" help="REMOVE_ALIGNMENT_INFORMATION; default=True"/>
+        <repeat name="attributes_to_clear" title="Clear attribute" min="0" help="You can provide multiple attributes">
+            <param name="attribute" type="text" label="When removing alignment information, specify optional tags to remove (e.g., XM)" help="ATTRIBUTE_TO_CLEAR"/>
+        </repeat>
+        <param name="sanitize" type="boolean" label="Discard reads in order to produce a consistent output BAM" help="SANITIZE; WARNING: This option is potentially destructive. Reads discarded include (but are not limited to) paired reads with missing mates, duplicated records, records with mismatches in length of bases and qualities. This option can only be enabled if the output sort order is queryname and will always cause sorting to occur; default=False"/>
+        <param name="max_discard_fraction" value="0.01" type="float" min="0.0" max="1.0" label="If SANITIZE=true and higher than MAX_DISCARD_FRACTION reads are discarded due to sanitization then the program will exit with an Exception instead of exiting cleanly" help="MAX_DISCARD_FRACTION; default=0.01"/>
+        <param name="sample_alias" type="text" value="null" label="The sample alias to use in the reverted output file. This will override the existing sample alias in the file and is used only if all the read groups in the input file have the same sample alias" help="SAMPLE_ALIAS; default=Null"/>
+        <param name="library_name" type="text" value="null" label="The library name to use in the reverted output file. This will override the existing sample alias in the file and is used only if all the read groups in the input file have the same sample alias" help="LIBRARY_NAME; default=Null"/>
+        <param name="sort_order" type="select" label="The sort order to create the reverted output file with" help="SORT_ORDER; Picard default=queryname; Galaxy default=coordinate">
+            <option value="coordinate" selected="True">Coordinate</option>
+            <option value="queryname">Queryname</option>
+            <option value="unsorted">Unsorted</option>
+        </param>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="bam" name="outFile" label="${tool.name} on ${on_string}: Reverted BAM dataset"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_RevertSam.bam" ftype="bam"/>
+            <param name="restore_original_qualities" value="True"/>
+            <param name="remove_duplicate_information" value="True"/>
+            <param name="remove_alignment_information" value="True"/>
+            <param name="attribute" value="XM"/>
+            <param name="sanitize" value="False"/>
+            <param name="max_discard_fraction" value="0.01"/>
+            <param name="sample_alias" value="null"/>
+            <param name="library_name" value="null"/>
+            <param name="sort_order" value="coordinate"/>
+            <param name="validation_stringency" value="LENIENT"/>
+            <output name="outFile" file="picard_RevertSam_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -128,5 +122,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_SamToFastq.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_SamToFastq.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,156 +1,143 @@
-<tool name="SamToFastq" id="picard_SamToFastq" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
+<tool name="SamToFastq" id="picard_SamToFastq" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
     <description>extract reads and qualities from SAM/BAM dataset and convert to fastq</description>
     <macros>
         <import>picard_macros.xml</import>
-        <token name="@WRAPPER_VERSION@">3</token>
+        <token name="@WRAPPER_VERSION@">0</token>
     </macros>
     <xrefs>
         <xref type="bio.tools">picard_samtofastq</xref>
     </xrefs>
-    <expand macro="requirements" />
+    <expand macro="requirements"/>
     <command detect_errors="exit_code"><![CDATA[
 
     @java_options@
     @symlink_element_identifier@
 
-    picard
-    SamToFastq
+    picard SamToFastq
 
-    INPUT='$escaped_element_identifier'
+    --INPUT '$escaped_element_identifier'
 
     #if str($single_or_paired) == "pe_interleaved":
-      FASTQ='${interleaved_fastq}'
-      INTERLEAVE=TRUE
+      --FASTQ '${interleaved_fastq}'
+      --INTERLEAVE TRUE
     #else if str($single_or_paired) == "pe_sep":
-      F='${fq1}'
-      F2='${fq2}'
-      FU='${fq_u}'
+      --F '${fq1}'
+      --F2 '${fq2}'
+      --FU '${fq_u}'
     #else
-      F='${fq_single}'
+      --F '${fq_single}'
     #end if
 
-    RE_REVERSE="${re_reverse}"
+    --RE_REVERSE '${re_reverse}'
 
-    INCLUDE_NON_PF_READS="${include_non_pf_reads}"
+    -INCLUDE_NON_PF_READS '${include_non_pf_reads}'
     #if len(str($clipping_attribute)) > 0:
-       CLIPPING_ATTRIBUTE="${clipping_attribute}"
+       --CLIPPING_ATTRIBUTE '${clipping_attribute}'
     #end if
     #if len(str($clipping_action)) > 0:
-       CLIPPING_ACTION="${clipping_action}"
+       --CLIPPING_ACTION '${clipping_action}'
     #end if
-    READ1_TRIM="${read1_trim}"
+    --READ1_TRIM '${read1_trim}'
 
     #if int($read1_max_bases_to_write) > -1:
-      READ1_MAX_BASES_TO_WRITE="${read1_max_bases_to_write}"
+        --READ1_MAX_BASES_TO_WRITE '${read1_max_bases_to_write}'
     #end if
 
-    READ2_TRIM="${read2_trim}"
+    --READ2_TRIM '${read2_trim}'
 
     #if int($read2_max_bases_to_write) > -1:
-      READ2_MAX_BASES_TO_WRITE="${read2_max_bases_to_write}"
+        --READ2_MAX_BASES_TO_WRITE '${read2_max_bases_to_write}'
     #end if
 
-    INCLUDE_NON_PRIMARY_ALIGNMENTS="${include_non_primary_alignments}"
+    --INCLUDE_NON_PRIMARY_ALIGNMENTS '${include_non_primary_alignments}'
 
-    VALIDATION_STRINGENCY="${validation_stringency}"
-    QUIET=true
-    VERBOSITY=ERROR
+    --VALIDATION_STRINGENCY '${validation_stringency}'
+    --QUIET true
+    --VERBOSITY ERROR
 
   ]]></command>
-  <inputs>
-
-    <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="single_or_paired" type="select" label="Output format">
-        <option value="se" >Single-end</option>
-        <option value="pe_interleaved" selected="true">Paired-end (one interleaved output file)</option>
-        <option value="pe_sep">Paired-end (two separate output files)</option>
-    </param>
-
-    <param name="re_reverse" type="boolean" checked="True" label="Re-reverse bases and qualities of reads with negative strand flag set before writing them to fastq" help="RE_REVERSE; default=True"/>
-    <param name="include_non_pf_reads" type="boolean" label="Include non-PF reads from the SAM/BAM dataset into the output FASTQ" help="INCLUDE_NON_PF_READS; PF means 'passes filtering'. Reads whose 'not passing quality controls' flag is set are non-PF reads; default=False"/>
-    <param name="clipping_attribute" type="text" value="" label="The attribute that stores the position at which the SAM/BAM record should be clipped" help="CLIPPING_ATTRIBUTE; default=null"/>
-    <param name="clipping_action" type="text" value="" label="The action that should be taken with clipped reads: 'X' means the reads and qualities should be trimmed at the clipped position; 'N' means the bases should be changed to Ns in the clipped region; and any integer means that the base qualities should be set to that value in the clipped region" help="CLIPPING_ACTION; default=null"/>
-    <param name="read1_trim" type="integer" value="0" min="0" label="The number of bases to trim from the beginning of read 1" help="READ1_TRIM; default=0"/>
-    <param name="read1_max_bases_to_write" type="integer" value="-1" label="The maximum number of bases to write from read 1 after trimming" help="READ1_MAX_BASES_TO_WRITE; If there are fewer than this many bases left after trimming, all will be written. If this value is null then all bases left after trimming will be written; default=null (-1)"/>
-    <param name="read2_trim" type="integer" value="0" min="0" label="The number of bases to trim from the beginning of read 2" help="READ2_TRIM; default=0"/>
-    <param name="read2_max_bases_to_write" type="integer" value="-1" label="The maximum number of bases to write from read 2 after trimming" help="READ2_MAX_BASES_TO_WRITE; If there are fewer than this many bases left after trimming, all will be written. If this value is null then all bases left after trimming will be written; default=null (-1)"/>
-    <param name="include_non_primary_alignments" type="boolean" label="If true, include non-primary alignments in the output" help="INCLUDE_NON_PRIMARY_ALIGNMENTS; Support of non-primary alignments in SamToFastq is not comprehensive, so there may be exceptions if this is set to true and there are paired reads with non-primary alignments; default=False"/>
-
-    <expand macro="VS" />
-
-  </inputs>
-
-  <outputs>
-    <data format="fastqsanger" name="fq_single" label="${tool.name} on ${on_string}: reads as fastq">
-        <filter>output_type['single_or_paired'] == 'se'</filter>
-    </data>
-
-    <data format="fastqsanger" name="interleaved_fastq" label="Interleaved pairs from ${tool.name} on ${on_string}">
-        <filter>output_type['single_or_paired'] == 'pe_interleaved'</filter>
-    </data>
-
-    <data format="fastqsanger" name="fq1" label="Paired-end forward strand from ${tool.name} on ${on_string}">
-        <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
-    </data>
-
-    <data format="fastqsanger" name="fq2" label="Paired-end reverse strand from ${tool.name} on ${on_string}">
-        <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
-    </data>
-
-    <data format="fastqsanger" name="fq_u" label="Paired-end unpaired reads from ${tool.name} on ${on_string}">
-        <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
-    </data>
-  </outputs>
-
-  <tests>
-    <test expect_num_outputs="5">
-      <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
-      <param name="single_or_paired" value="pe_interleaved" />
-      <param name="re_reverse" value="true"/>
-      <param name="include_non_pf_reads" value="false"/>
-      <param name="clipping_attribute" value="" />
-      <param name="clipping_action" value="" />
-      <param name="read1_trim" value="0" />
-      <param name="read1_max_bases_to_write" value="-1"/>
-      <param name="read2_trim" value="0" />
-      <param name="read2_max_bases_to_write" value="-1"/>
-      <param name="include_non_primary_alignments" value="false"/>
-      <output name="interleaved_fastq" file="picard_SamToFastq_test1.fq" ftype="fastqsanger"/>
-    </test>
-    <test expect_num_outputs="5">
-      <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
-      <param name="single_or_paired" value="pe_sep" />
-      <param name="re_reverse" value="true"/>
-      <param name="include_non_pf_reads" value="false"/>
-      <param name="clipping_attribute" value="" />
-      <param name="clipping_action" value="" />
-      <param name="read1_trim" value="0" />
-      <param name="read1_max_bases_to_write" value="-1"/>
-      <param name="read2_trim" value="0" />
-      <param name="read2_max_bases_to_write" value="-1"/>
-      <param name="include_non_primary_alignments" value="false"/>
-      <output name="fq1" file="picard_SamToFastq_1.fq" ftype="fastqsanger"/>
-      <output name="fq2" file="picard_SamToFastq_2.fq" ftype="fastqsanger"/>
-      <output name="fq_u" file="picard_SamToFastq_u.fq" ftype="fastqsanger"/>
-    </test>
-    <test expect_num_outputs="5">
-      <param name="inputFile" value="picard_SamToFastq_se.bam" ftype="bam"/>
-      <param name="single_or_paired" value="se" />
-      <param name="re_reverse" value="true"/>
-      <param name="include_non_pf_reads" value="false"/>
-      <param name="clipping_attribute" value="" />
-      <param name="clipping_action" value="" />
-      <param name="read1_trim" value="0" />
-      <param name="read1_max_bases_to_write" value="-1"/>
-      <param name="read2_trim" value="0" />
-      <param name="read2_max_bases_to_write" value="-1"/>
-      <param name="include_non_primary_alignments" value="false"/>
-      <output name="fq_single" file="picard_SamToFastq_se.fq" ftype="fastqsanger"/>
-    </test>
-  </tests>
-
-
-  <help>
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="single_or_paired" type="select" label="Output format">
+            <option value="se">Single-end</option>
+            <option value="pe_interleaved" selected="true">Paired-end (one interleaved output file)</option>
+            <option value="pe_sep">Paired-end (two separate output files)</option>
+        </param>
+        <param name="re_reverse" type="boolean" checked="True" label="Re-reverse bases and qualities of reads with negative strand flag set before writing them to fastq" help="RE_REVERSE; default=True"/>
+        <param name="include_non_pf_reads" type="boolean" label="Include non-PF reads from the SAM/BAM dataset into the output FASTQ" help="INCLUDE_NON_PF_READS; PF means 'passes filtering'. Reads whose 'not passing quality controls' flag is set are non-PF reads; default=False"/>
+        <param name="clipping_attribute" type="text" value="" label="The attribute that stores the position at which the SAM/BAM record should be clipped" help="CLIPPING_ATTRIBUTE; default=null"/>
+        <param name="clipping_action" type="text" value="" label="The action that should be taken with clipped reads: 'X' means the reads and qualities should be trimmed at the clipped position; 'N' means the bases should be changed to Ns in the clipped region; and any integer means that the base qualities should be set to that value in the clipped region" help="CLIPPING_ACTION; default=null"/>
+        <param name="read1_trim" type="integer" value="0" min="0" label="The number of bases to trim from the beginning of read 1" help="READ1_TRIM; default=0"/>
+        <param name="read1_max_bases_to_write" type="integer" value="-1" label="The maximum number of bases to write from read 1 after trimming" help="READ1_MAX_BASES_TO_WRITE; If there are fewer than this many bases left after trimming, all will be written. If this value is null then all bases left after trimming will be written; default=null (-1)"/>
+        <param name="read2_trim" type="integer" value="0" min="0" label="The number of bases to trim from the beginning of read 2" help="READ2_TRIM; default=0"/>
+        <param name="read2_max_bases_to_write" type="integer" value="-1" label="The maximum number of bases to write from read 2 after trimming" help="READ2_MAX_BASES_TO_WRITE; If there are fewer than this many bases left after trimming, all will be written. If this value is null then all bases left after trimming will be written; default=null (-1)"/>
+        <param name="include_non_primary_alignments" type="boolean" label="If true, include non-primary alignments in the output" help="INCLUDE_NON_PRIMARY_ALIGNMENTS; Support of non-primary alignments in SamToFastq is not comprehensive, so there may be exceptions if this is set to true and there are paired reads with non-primary alignments; default=False"/>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data format="fastqsanger" name="fq_single" label="${tool.name} on ${on_string}: reads as fastq">
+            <filter>output_type['single_or_paired'] == 'se'</filter>
+        </data>
+        <data format="fastqsanger" name="interleaved_fastq" label="Interleaved pairs from ${tool.name} on ${on_string}">
+            <filter>output_type['single_or_paired'] == 'pe_interleaved'</filter>
+        </data>
+        <data format="fastqsanger" name="fq1" label="Paired-end forward strand from ${tool.name} on ${on_string}">
+            <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
+        </data>
+        <data format="fastqsanger" name="fq2" label="Paired-end reverse strand from ${tool.name} on ${on_string}">
+            <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
+        </data>
+        <data format="fastqsanger" name="fq_u" label="Paired-end unpaired reads from ${tool.name} on ${on_string}">
+            <filter>output_type['single_or_paired'] == 'pe_sep'</filter>
+        </data>
+    </outputs>
+    <tests>
+        <test expect_num_outputs="5">
+            <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
+            <param name="single_or_paired" value="pe_interleaved"/>
+            <param name="re_reverse" value="true"/>
+            <param name="include_non_pf_reads" value="false"/>
+            <param name="clipping_attribute" value=""/>
+            <param name="clipping_action" value=""/>
+            <param name="read1_trim" value="0"/>
+            <param name="read1_max_bases_to_write" value="-1"/>
+            <param name="read2_trim" value="0"/>
+            <param name="read2_max_bases_to_write" value="-1"/>
+            <param name="include_non_primary_alignments" value="false"/>
+            <output name="interleaved_fastq" file="picard_SamToFastq_test1.fq" ftype="fastqsanger"/>
+        </test>
+        <test expect_num_outputs="5">
+            <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
+            <param name="single_or_paired" value="pe_sep"/>
+            <param name="re_reverse" value="true"/>
+            <param name="include_non_pf_reads" value="false"/>
+            <param name="clipping_attribute" value=""/>
+            <param name="clipping_action" value=""/>
+            <param name="read1_trim" value="0"/>
+            <param name="read1_max_bases_to_write" value="-1"/>
+            <param name="read2_trim" value="0"/>
+            <param name="read2_max_bases_to_write" value="-1"/>
+            <param name="include_non_primary_alignments" value="false"/>
+            <output name="fq1" file="picard_SamToFastq_1.fq" ftype="fastqsanger"/>
+            <output name="fq2" file="picard_SamToFastq_2.fq" ftype="fastqsanger"/>
+            <output name="fq_u" file="picard_SamToFastq_u.fq" ftype="fastqsanger"/>
+        </test>
+        <test expect_num_outputs="5">
+            <param name="inputFile" value="picard_SamToFastq_se.bam" ftype="bam"/>
+            <param name="single_or_paired" value="se"/>
+            <param name="re_reverse" value="true"/>
+            <param name="include_non_pf_reads" value="false"/>
+            <param name="clipping_attribute" value=""/>
+            <param name="clipping_action" value=""/>
+            <param name="read1_trim" value="0"/>
+            <param name="read1_max_bases_to_write" value="-1"/>
+            <param name="read2_trim" value="0"/>
+            <param name="read2_max_bases_to_write" value="-1"/>
+            <param name="include_non_primary_alignments" value="false"/>
+            <output name="fq_single" file="picard_SamToFastq_se.fq" ftype="fastqsanger"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -223,5 +210,5 @@
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_SortSam.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_SortSam.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,49 +1,44 @@
-<tool id="picard_SortSam" name="SortSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>sort SAM/BAM dataset</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
-  </macros>
-  <expand macro="requirements" />
-  <command detect_errors="exit_code"><![CDATA[
+<tool id="picard_SortSam" name="SortSam" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>sort SAM/BAM dataset</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
     #if $sort_order == "queryname":
         #set $output = "output.sam"
-        ln -s '${outFile}' output.sam &&
+        ln -sf '${outFile}' output.sam &&
     #else:
         #set $output = $outFile
     #end if
     @java_options@
     @symlink_element_identifier@
-    picard
-    SortSam
-    INPUT='$escaped_element_identifier'
-    OUTPUT='${output}'
-    SORT_ORDER="${sort_order}"
-    QUIET=true
-    VERBOSITY=ERROR
-    VALIDATION_STRINGENCY=${validation_stringency}
+    picard SortSam
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${output}'
+    --SORT_ORDER '${sort_order}'
+    --QUIET true
+    --VERBOSITY ERROR
+    --VALIDATION_STRINGENCY ${validation_stringency}
   ]]></command>
-
-  <inputs>
-    <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
-    <param name="sort_order" type="select" display="radio" label="Sort order" help="SORT_ORDER; default=coordinate. Selecting Queryname will output SAM file, as Galaxy does not support BAM files that are not coordinate sorted.">
-      <option value="coordinate" selected="True">Coordinate</option>
-      <option value="queryname">Queryname</option>
-    </param>
-    <expand macro="VS" />
-  </inputs>
-
-  <outputs>
-      <data name="outFile" format="bam" label="${tool.name} on ${on_string}: Alignment sorted in ${sort_order} order">
-          <change_format>
-              <when input="sort_order" value="queryname" format="sam"/>
-          </change_format>
-    </data>
-  </outputs>
-
-
-  <tests>
-      <!-- This test fails when setting metadata on non-coordinate sorted bam files.
+    <inputs>
+        <param name="inputFile" type="data" format="sam,bam" label="Select SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset"/>
+        <param name="sort_order" type="select" display="radio" label="Sort order" help="SORT_ORDER; default=coordinate. Selecting Queryname will output SAM file, as Galaxy does not support BAM files that are not coordinate sorted.">
+            <option value="coordinate" selected="True">Coordinate</option>
+            <option value="queryname">Queryname</option>
+        </param>
+        <expand macro="VS"/>
+    </inputs>
+    <outputs>
+        <data name="outFile" format="bam" label="${tool.name} on ${on_string}: Alignment sorted in ${sort_order} order">
+            <change_format>
+                <when input="sort_order" value="queryname" format="sam"/>
+            </change_format>
+        </data>
+    </outputs>
+    <tests>
+        <!-- This test fails when setting metadata on non-coordinate sorted bam files.
            This should be handled better in Galaxy (info as of release 16.0).
            Workaroudn is to produce queryname sorted sam files.
     <test>
@@ -52,19 +47,18 @@
       <output name="outFile" file="picard_SortSam_test1.bam" ftype="bam" lines_diff="4"/>
     </test>
   -->
-    <test>
-      <param name="inputFile" ftype="bam" value="picard_SortSam.bam" />
-      <param name="sort_order" value="queryname"/>
-      <output name="outFile" file="picard_SortSam_test1.sam" ftype="sam" lines_diff="4" compare="contains"/>
-    </test>
-    <test>
-      <param name="inputFile" ftype="bam" value="picard_SortSam.bam" />
-      <param name="sort_order" value="coordinate"/>
-      <output name="outFile" file="picard_SortSam_test1.bam" ftype="bam" lines_diff="4"/>
-    </test>
-  </tests>
-
-  <help>
+        <test>
+            <param name="inputFile" ftype="bam" value="picard_SortSam.bam"/>
+            <param name="sort_order" value="queryname"/>
+            <output name="outFile" file="picard_SortSam_test1.sam" ftype="sam" lines_diff="4" compare="contains"/>
+        </test>
+        <test>
+            <param name="inputFile" ftype="bam" value="picard_SortSam.bam"/>
+            <param name="sort_order" value="coordinate"/>
+            <output name="outFile" file="picard_SortSam_test1.bam" ftype="bam" lines_diff="4"/>
+        </test>
+    </tests>
+    <help>
 
 .. class:: infomark
 
@@ -82,5 +76,5 @@
  @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_ValidateSamFile.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_ValidateSamFile.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -1,14 +1,14 @@
-<tool name="ValidateSamFile" id="picard_ValidateSamFile" version="@TOOL_VERSION@.@WRAPPER_VERSION@">
-  <description>assess validity of SAM/BAM dataset</description>
-  <macros>
-    <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">2</token>
-  </macros>
-  <expand macro="requirements" />
-  <stdio>
-    <exit_code range="1:"  level="warning"/>
-  </stdio>
-  <command><![CDATA[
+<tool name="ValidateSamFile" id="picard_ValidateSamFile" version="@TOOL_VERSION@.@WRAPPER_VERSION@" profile="@PROFILE@">
+    <description>assess validity of SAM/BAM dataset</description>
+    <macros>
+        <import>picard_macros.xml</import>
+        <token name="@WRAPPER_VERSION@">0</token>
+    </macros>
+    <expand macro="requirements"/>
+    <stdio>
+        <exit_code range="1:" level="warning"/>
+    </stdio>
+    <command><![CDATA[
 
     ##set the maximum number of open file to hard maximum or 4096 if on a mac (mac gives 'unlimited' as output of `ulimit -Hn` command
 
@@ -21,148 +21,141 @@
     #set $reference_fasta_filename = "localref.fa"
 
     #if str( $reference_source.reference_source_selector ) == "history":
-        ln -s "${reference_source.ref_file}" "${reference_fasta_filename}" &&
+        ln -sf '${reference_source.ref_file}' '${reference_fasta_filename}' &&
     #else:
         #set $reference_fasta_filename = str( $reference_source.ref_file.fields.path )
     #end if
 
     @java_options@
 
-    picard
-    ValidateSamFile
+    picard ValidateSamFile
 
-    INPUT='$escaped_element_identifier'
-    OUTPUT="${outFile}"
-    MODE="${mode}"
+    --INPUT '$escaped_element_identifier'
+    --OUTPUT '${outFile}'
+    --MODE '${mode}'
 
     #if str( $ignore ) != "None":
       #for $element in str( $ignore ).split(','):   ## See trello card https://trello.com/c/9nW02Zhd
-        IGNORE="${element}"
+        --IGNORE '${element}'
       #end for
     #end if
 
-    MAX_OUTPUT="${max_output}"
-    REFERENCE_SEQUENCE="${reference_fasta_filename}"
-    IGNORE_WARNINGS="${ignore_warnings}"
-    IS_BISULFITE_SEQUENCED="${is_bisulfite_sequenced}"
-    VALIDATE_INDEX="${validate_index}"
-    MAX_OPEN_TEMP_FILES=`ulimit -Sn`
+    --MAX_OUTPUT '${max_output}'
+    --REFERENCE_SEQUENCE '${reference_fasta_filename}'
+    --IGNORE_WARNINGS '${ignore_warnings}'
+    --IS_BISULFITE_SEQUENCED '${is_bisulfite_sequenced}'
+    --MAX_OPEN_TEMP_FILES `ulimit -Sn`
 
-    VERBOSITY=ERROR
-    QUIET=true
+    --VERBOSITY ERROR
+    --QUIET true
 
   ]]></command>
-  <inputs>
-    <param format="sam,bam" name="inputFile" type="data" label="SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset." />
-     <conditional name="reference_source">
-      <param name="reference_source_selector" type="select" label="Load reference genome from">
-        <option value="cached">Local cache</option>
-        <option value="history">History</option>
-      </param>
-      <when value="cached">
-        <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
-          <options from_data_table="picard_indexes">
-            <filter type="sort_by" column="2" />
-            <validator type="no_options" message="No indexes are available" />
-          </options>
-          <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+    <inputs>
+        <param format="sam,bam" name="inputFile" type="data" label="SAM/BAM dataset or dataset collection" help="If empty, upload or import a SAM/BAM dataset."/>
+        <conditional name="reference_source">
+            <param name="reference_source_selector" type="select" label="Load reference genome from">
+                <option value="cached">Local cache</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref_file" type="select" label="Use dictionary from the list" help="Select genome from the list">
+                    <options from_data_table="picard_indexes">
+                        <filter type="sort_by" column="2"/>
+                        <validator type="no_options" message="No indexes are available"/>
+                    </options>
+                    <validator type="no_options" message="A built-in dictionary is not available for the build associated with the selected input file"/>
+                </param>
+            </when>
+            <when value="history">
+                <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command"/>
+            </when>
+        </conditional>
+        <param name="mode" type="select" label="Select output mode" help="MODE">
+            <option value="VERBOSE">Verbose</option>
+            <option value="SUMMARY">Summary</option>
         </param>
-      </when>
-      <when value="history">
-        <param name="ref_file" type="data" format="fasta" label="Use the following dataset to create dictionary" help="You can upload a FASTA sequence to the history from which Picard will automatically generate dictionary using CreateSequenceDictionary command" />
-      </when>
-    </conditional>
-
-    <param name="mode" type="select" label="Select output mode" help="MODE">
-      <option value="VERBOSE">Verbose</option>
-      <option value="SUMMARY">Summary</option>
-    </param>
-    <param name="ignore" type="select" multiple="true" display="checkboxes" label="Select validation error types to ignore" help="IGNORE">
-      <option value="INVALID_QUALITY_FORMAT">INVALID_QUALITY_FORMAT</option>
-      <option value="INVALID_FLAG_PROPER_PAIR">INVALID_FLAG_PROPER_PAIR</option>
-      <option value="INVALID_FLAG_MATE_UNMAPPED">INVALID_FLAG_MATE_UNMAPPED</option>
-      <option value="MISMATCH_FLAG_MATE_UNMAPPED">MISMATCH_FLAG_MATE_UNMAPPED</option>
-      <option value="INVALID_FLAG_MATE_NEG_STRAND">INVALID_FLAG_MATE_NEG_STRAND</option>
-      <option value="MISMATCH_FLAG_MATE_NEG_STRAND">MISMATCH_FLAG_MATE_NEG_STRAND</option>
-      <option value="INVALID_FLAG_FIRST_OF_PAIR">INVALID_FLAG_FIRST_OF_PAIR</option>
-      <option value="INVALID_FLAG_SECOND_OF_PAIR">INVALID_FLAG_SECOND_OF_PAIR</option>
-      <option value="PAIRED_READ_NOT_MARKED_AS_FIRST_OR_SECOND">PAIRED_READ_NOT_MARKED_AS_FIRST_OR_SECOND</option>
-      <option value="INVALID_FLAG_NOT_PRIM_ALIGNMENT">INVALID_FLAG_NOT_PRIM_ALIGNMENT</option>
-      <option value="INVALID_FLAG_SUPPLEMENTARY_ALIGNMENT">INVALID_FLAG_SUPPLEMENTARY_ALIGNMENT</option>
-      <option value="INVALID_FLAG_READ_UNMAPPED">INVALID_FLAG_READ_UNMAPPED</option>
-      <option value="INVALID_INSERT_SIZE">INVALID_INSERT_SIZE</option>
-      <option value="INVALID_MAPPING_QUALITY">INVALID_MAPPING_QUALITY</option>
-      <option value="INVALID_CIGAR">INVALID_CIGAR</option>
-      <option value="ADJACENT_INDEL_IN_CIGAR">ADJACENT_INDEL_IN_CIGAR</option>
-      <option value="INVALID_MATE_REF_INDEX">INVALID_MATE_REF_INDEX</option>
-      <option value="MISMATCH_MATE_REF_INDEX">MISMATCH_MATE_REF_INDEX</option>
-      <option value="INVALID_REFERENCE_INDEX">INVALID_REFERENCE_INDEX</option>
-      <option value="INVALID_ALIGNMENT_START">INVALID_ALIGNMENT_START</option>
-      <option value="MISMATCH_MATE_ALIGNMENT_START">MISMATCH_MATE_ALIGNMENT_START</option>
-      <option value="MATE_FIELD_MISMATCH">MATE_FIELD_MISMATCH</option>
-      <option value="INVALID_TAG_NM">INVALID_TAG_NM</option>
-      <option value="MISSING_TAG_NM">MISSING_TAG_NM</option>
-      <option value="MISSING_HEADER">MISSING_HEADER</option>
-      <option value="MISSING_SEQUENCE_DICTIONARY">MISSING_SEQUENCE_DICTIONARY</option>
-      <option value="MISSING_READ_GROUP">MISSING_READ_GROUP</option>
-      <option value="RECORD_OUT_OF_ORDER">RECORD_OUT_OF_ORDER</option>
-      <option value="READ_GROUP_NOT_FOUND">READ_GROUP_NOT_FOUND</option>
-      <option value="RECORD_MISSING_READ_GROUP">RECORD_MISSING_READ_GROUP</option>
-      <option value="INVALID_INDEXING_BIN">INVALID_INDEXING_BIN</option>
-      <option value="MISSING_VERSION_NUMBER">MISSING_VERSION_NUMBER</option>
-      <option value="INVALID_VERSION_NUMBER">INVALID_VERSION_NUMBER</option>
-      <option value="TRUNCATED_FILE">TRUNCATED_FILE</option>
-      <option value="MISMATCH_READ_LENGTH_AND_QUALS_LENGTH">MISMATCH_READ_LENGTH_AND_QUALS_LENGTH</option>
-      <option value="EMPTY_READ">EMPTY_READ</option>
-      <option value="CIGAR_MAPS_OFF_REFERENCE">CIGAR_MAPS_OFF_REFERENCE</option>
-      <option value="MISMATCH_READ_LENGTH_AND_E2_LENGTH">MISMATCH_READ_LENGTH_AND_E2_LENGTH</option>
-      <option value="MISMATCH_READ_LENGTH_AND_U2_LENGTH">MISMATCH_READ_LENGTH_AND_U2_LENGTH</option>
-      <option value="E2_BASE_EQUALS_PRIMARY_BASE">E2_BASE_EQUALS_PRIMARY_BASE</option>
-      <option value="BAM_FILE_MISSING_TERMINATOR_BLOCK">BAM_FILE_MISSING_TERMINATOR_BLOCK</option>
-      <option value="UNRECOGNIZED_HEADER_TYPE">UNRECOGNIZED_HEADER_TYPE</option>
-      <option value="POORLY_FORMATTED_HEADER_TAG">POORLY_FORMATTED_HEADER_TAG</option>
-      <option value="HEADER_TAG_MULTIPLY_DEFINED">HEADER_TAG_MULTIPLY_DEFINED</option>
-      <option value="HEADER_RECORD_MISSING_REQUIRED_TAG">HEADER_RECORD_MISSING_REQUIRED_TAG</option>
-      <option value="INVALID_DATE_STRING">INVALID_DATE_STRING</option>
-      <option value="TAG_VALUE_TOO_LARGE">TAG_VALUE_TOO_LARGE</option>
-      <option value="INVALID_INDEX_FILE_POINTER">INVALID_INDEX_FILE_POINTER</option>
-      <option value="INVALID_PREDICTED_MEDIAN_INSERT_SIZE">INVALID_PREDICTED_MEDIAN_INSERT_SIZE</option>
-      <option value="DUPLICATE_READ_GROUP_ID">DUPLICATE_READ_GROUP_ID</option>
-      <option value="MISSING_PLATFORM_VALUE">MISSING_PLATFORM_VALUE</option>
-      <option value="INVALID_PLATFORM_VALUE">INVALID_PLATFORM_VALUE</option>
-      <option value="DUPLICATE_PROGRAM_GROUP_ID">DUPLICATE_PROGRAM_GROUP_ID</option>
-      <option value="MATE_NOT_FOUND">MATE_NOT_FOUND</option>
-      <option value="MATES_ARE_SAME_END">MATES_ARE_SAME_END</option>
-      <option value="MISMATCH_MATE_CIGAR_STRING">MISMATCH_MATE_CIGAR_STRING</option>
-      <option value="MATE_CIGAR_STRING_INVALID_PRESENCE">MATE_CIGAR_STRING_INVALID_PRESENCE</option>
-    </param>
-    <param name="max_output" type="integer" value="100" label="The maximum number of lines output in verbose mode" help="MAX_OUTPUT; default=100"/>
-    <param name="ignore_warnings" type="boolean" label="If true, only report errors and ignore warnings" help="IGNORE_WARNINGS; default=False"/>
-    <param name="validate_index" type="boolean" checked="True" label="If true and input is a BAM file with an index file, also validates the index" help="VALIDATE_INDEX; default=True"/>
-    <param name="is_bisulfite_sequenced" type="boolean" label="Whether the SAM or BAM file consists of bisulfite sequenced reads" help="IS_BISULFITE_SEQUENCED; If so, C->T is not counted as an error in computing the value of the NM tag; default=False"/>
-
-  </inputs>
-
-  <outputs>
-    <data format="txt" name="outFile" label="${tool.name} on ${on_string}: BAM validation summary"/>
-  </outputs>
-
-  <tests>
-    <test>
-      <param name="inputFile" value="picard_ValidateSamFile.bam" ftype="bam"/>
-      <param name="reference_source_selector" value="history"/>
-      <param name="ref_file" value="picard_ValidateSamFile_ref.fa"/>
-      <param name="mode" value="VERBOSE"/>
-      <param name="ignore" value="INVALID_QUALITY_FORMAT,INVALID_FLAG_PROPER_PAIR"/>
-      <param name="max_output" value="100"/>
-      <param name="ignore_warnings" value="Fasle"/>
-      <param name="validate_index" value="True"/>
-      <param name="is_bisulfite_sequenced" value="False"/>
-      <output name="outFile" file="picard_ValidateSamFile_test1.txt" ftype="txt"/>
-    </test>
-  </tests>
-
-  <help>
+        <param name="ignore" type="select" multiple="true" display="checkboxes" label="Select validation error types to ignore" help="IGNORE">
+            <option value="INVALID_QUALITY_FORMAT">INVALID_QUALITY_FORMAT</option>
+            <option value="INVALID_FLAG_PROPER_PAIR">INVALID_FLAG_PROPER_PAIR</option>
+            <option value="INVALID_FLAG_MATE_UNMAPPED">INVALID_FLAG_MATE_UNMAPPED</option>
+            <option value="MISMATCH_FLAG_MATE_UNMAPPED">MISMATCH_FLAG_MATE_UNMAPPED</option>
+            <option value="INVALID_FLAG_MATE_NEG_STRAND">INVALID_FLAG_MATE_NEG_STRAND</option>
+            <option value="MISMATCH_FLAG_MATE_NEG_STRAND">MISMATCH_FLAG_MATE_NEG_STRAND</option>
+            <option value="INVALID_FLAG_FIRST_OF_PAIR">INVALID_FLAG_FIRST_OF_PAIR</option>
+            <option value="INVALID_FLAG_SECOND_OF_PAIR">INVALID_FLAG_SECOND_OF_PAIR</option>
+            <option value="PAIRED_READ_NOT_MARKED_AS_FIRST_OR_SECOND">PAIRED_READ_NOT_MARKED_AS_FIRST_OR_SECOND</option>
+            <option value="INVALID_FLAG_NOT_PRIM_ALIGNMENT">INVALID_FLAG_NOT_PRIM_ALIGNMENT</option>
+            <option value="INVALID_FLAG_SUPPLEMENTARY_ALIGNMENT">INVALID_FLAG_SUPPLEMENTARY_ALIGNMENT</option>
+            <option value="INVALID_FLAG_READ_UNMAPPED">INVALID_FLAG_READ_UNMAPPED</option>
+            <option value="INVALID_INSERT_SIZE">INVALID_INSERT_SIZE</option>
+            <option value="INVALID_MAPPING_QUALITY">INVALID_MAPPING_QUALITY</option>
+            <option value="INVALID_CIGAR">INVALID_CIGAR</option>
+            <option value="ADJACENT_INDEL_IN_CIGAR">ADJACENT_INDEL_IN_CIGAR</option>
+            <option value="INVALID_MATE_REF_INDEX">INVALID_MATE_REF_INDEX</option>
+            <option value="MISMATCH_MATE_REF_INDEX">MISMATCH_MATE_REF_INDEX</option>
+            <option value="INVALID_REFERENCE_INDEX">INVALID_REFERENCE_INDEX</option>
+            <option value="INVALID_ALIGNMENT_START">INVALID_ALIGNMENT_START</option>
+            <option value="MISMATCH_MATE_ALIGNMENT_START">MISMATCH_MATE_ALIGNMENT_START</option>
+            <option value="MATE_FIELD_MISMATCH">MATE_FIELD_MISMATCH</option>
+            <option value="INVALID_TAG_NM">INVALID_TAG_NM</option>
+            <option value="MISSING_TAG_NM">MISSING_TAG_NM</option>
+            <option value="MISSING_HEADER">MISSING_HEADER</option>
+            <option value="MISSING_SEQUENCE_DICTIONARY">MISSING_SEQUENCE_DICTIONARY</option>
+            <option value="MISSING_READ_GROUP">MISSING_READ_GROUP</option>
+            <option value="RECORD_OUT_OF_ORDER">RECORD_OUT_OF_ORDER</option>
+            <option value="READ_GROUP_NOT_FOUND">READ_GROUP_NOT_FOUND</option>
+            <option value="RECORD_MISSING_READ_GROUP">RECORD_MISSING_READ_GROUP</option>
+            <option value="INVALID_INDEXING_BIN">INVALID_INDEXING_BIN</option>
+            <option value="MISSING_VERSION_NUMBER">MISSING_VERSION_NUMBER</option>
+            <option value="INVALID_VERSION_NUMBER">INVALID_VERSION_NUMBER</option>
+            <option value="TRUNCATED_FILE">TRUNCATED_FILE</option>
+            <option value="MISMATCH_READ_LENGTH_AND_QUALS_LENGTH">MISMATCH_READ_LENGTH_AND_QUALS_LENGTH</option>
+            <option value="EMPTY_READ">EMPTY_READ</option>
+            <option value="CIGAR_MAPS_OFF_REFERENCE">CIGAR_MAPS_OFF_REFERENCE</option>
+            <option value="MISMATCH_READ_LENGTH_AND_E2_LENGTH">MISMATCH_READ_LENGTH_AND_E2_LENGTH</option>
+            <option value="MISMATCH_READ_LENGTH_AND_U2_LENGTH">MISMATCH_READ_LENGTH_AND_U2_LENGTH</option>
+            <option value="E2_BASE_EQUALS_PRIMARY_BASE">E2_BASE_EQUALS_PRIMARY_BASE</option>
+            <option value="BAM_FILE_MISSING_TERMINATOR_BLOCK">BAM_FILE_MISSING_TERMINATOR_BLOCK</option>
+            <option value="UNRECOGNIZED_HEADER_TYPE">UNRECOGNIZED_HEADER_TYPE</option>
+            <option value="POORLY_FORMATTED_HEADER_TAG">POORLY_FORMATTED_HEADER_TAG</option>
+            <option value="HEADER_TAG_MULTIPLY_DEFINED">HEADER_TAG_MULTIPLY_DEFINED</option>
+            <option value="HEADER_RECORD_MISSING_REQUIRED_TAG">HEADER_RECORD_MISSING_REQUIRED_TAG</option>
+            <option value="INVALID_DATE_STRING">INVALID_DATE_STRING</option>
+            <option value="TAG_VALUE_TOO_LARGE">TAG_VALUE_TOO_LARGE</option>
+            <option value="INVALID_INDEX_FILE_POINTER">INVALID_INDEX_FILE_POINTER</option>
+            <option value="INVALID_PREDICTED_MEDIAN_INSERT_SIZE">INVALID_PREDICTED_MEDIAN_INSERT_SIZE</option>
+            <option value="DUPLICATE_READ_GROUP_ID">DUPLICATE_READ_GROUP_ID</option>
+            <option value="MISSING_PLATFORM_VALUE">MISSING_PLATFORM_VALUE</option>
+            <option value="INVALID_PLATFORM_VALUE">INVALID_PLATFORM_VALUE</option>
+            <option value="DUPLICATE_PROGRAM_GROUP_ID">DUPLICATE_PROGRAM_GROUP_ID</option>
+            <option value="MATE_NOT_FOUND">MATE_NOT_FOUND</option>
+            <option value="MATES_ARE_SAME_END">MATES_ARE_SAME_END</option>
+            <option value="MISMATCH_MATE_CIGAR_STRING">MISMATCH_MATE_CIGAR_STRING</option>
+            <option value="MATE_CIGAR_STRING_INVALID_PRESENCE">MATE_CIGAR_STRING_INVALID_PRESENCE</option>
+        </param>
+        <param name="max_output" type="integer" value="100" label="The maximum number of lines output in verbose mode" help="MAX_OUTPUT; default=100"/>
+        <param name="ignore_warnings" type="boolean" label="If true, only report errors and ignore warnings" help="IGNORE_WARNINGS; default=False"/>
+        <param name="validate_index" type="boolean" checked="True" label="If true and input is a BAM file with an index file, also validates the index" help="VALIDATE_INDEX; default=True"/>
+        <param name="is_bisulfite_sequenced" type="boolean" label="Whether the SAM or BAM file consists of bisulfite sequenced reads" help="IS_BISULFITE_SEQUENCED; If so, C-&gt;T is not counted as an error in computing the value of the NM tag; default=False"/>
+    </inputs>
+    <outputs>
+        <data format="txt" name="outFile" label="${tool.name} on ${on_string}: BAM validation summary"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="inputFile" value="picard_ValidateSamFile.bam" ftype="bam"/>
+            <param name="reference_source_selector" value="history"/>
+            <param name="ref_file" value="picard_ValidateSamFile_ref.fa"/>
+            <param name="mode" value="VERBOSE"/>
+            <param name="ignore" value="INVALID_QUALITY_FORMAT,INVALID_FLAG_PROPER_PAIR"/>
+            <param name="max_output" value="100"/>
+            <param name="ignore_warnings" value="Fasle"/>
+            <param name="validate_index" value="True"/>
+            <param name="is_bisulfite_sequenced" value="False"/>
+            <output name="outFile" file="picard_ValidateSamFile_test1.txt" ftype="txt"/>
+        </test>
+    </tests>
+    <help>
 
 **Purpose**
 
@@ -215,12 +208,12 @@
                                 values: {true, false}
 
   IS_BISULFITE_SEQUENCED=Boolean
-  BISULFITE=Boolean             Whether the SAM or BAM file consists of bisulfite sequenced reads. If so, C->T is not
+  BISULFITE=Boolean             Whether the SAM or BAM file consists of bisulfite sequenced reads. If so, C-&gt;T is not
                                 counted as an error in computing the value of the NM tag.  Default value: false. This
                                 option can be set to 'null' to clear the default value. Possible values: {true, false}
 
 @more_info@
 
   </help>
-  <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/picard_macros.xml	Mon Sep 25 08:32:17 2023 +0000
+++ b/picard_macros.xml	Sun Mar 03 16:06:11 2024 +0000
@@ -18,7 +18,8 @@
        </sanitizer>
     </xml>
 
-    <token name="@TOOL_VERSION@">2.18.2</token>
+    <token name="@TOOL_VERSION@">3.1.1</token>
+    <token name="@PROFILE@">22.05</token>
 
     <xml name="requirements">
         <requirements>
@@ -30,7 +31,7 @@
     <token name="@symlink_element_identifier@"><![CDATA[
     #import re
     #set escaped_element_identifier = re.sub('[^\w\-]', '_', str($inputFile.element_identifier))
-    ln -f -s '$inputFile' '$escaped_element_identifier' &&
+    ln -sf '$inputFile' '$escaped_element_identifier' &&
     ]]></token>
 
     <token name="@java_options@"><![CDATA[
@@ -40,7 +41,7 @@
 
     <token name="@handle_reference_source@"><![CDATA[
     #if str( $reference_source.reference_source_selector ) == "history":
-        ln -s '${reference_source.ref_file}' '${reference_fasta_filename}' &&
+        ln -sf '${reference_source.ref_file}' '${reference_fasta_filename}' &&
     #else:
         #set $reference_fasta_filename = str( $reference_source.ref_file.fields.path )
     #end if
@@ -112,7 +113,6 @@
 
 This will be added shortly
 
-
     </token>
 
     <xml name="citations">
@@ -128,5 +128,4 @@
         </citations>
     </xml>
 
-
 </macros>
--- a/test-data/err_summary	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/err_summary	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=test-data/picard_ARRG_test1.bam OUTPUT=OutPut ASSUME_SORTED=false STOP_AFTER=0 VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false REFERENCE_SEQUENCE=test-data/picard_BedToIntervalList_ref.fa GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false   
+# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=picard_ARRG_test1_bam OUTPUT=OutPut ASSUME_SORTED=false VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=/home/bag/projects/code/tools-iuc/tools/picard/test-data/cached_locally/picard_BedToIntervalList_ref.fa    INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Fri May 03 21:58:49 EDT 2019
+# Started on: Sat Mar 02 14:48:33 GMT 2024
 
 ## METRICS CLASS	picard.analysis.artifacts.ErrorSummaryMetrics
 REF_BASE	ALT_BASE	SUBSTITUTION	REF_COUNT	ALT_COUNT	SUBSTITUTION_RATE
Binary file test-data/picard_ARRG_test1.bam has changed
--- a/test-data/picard_BedToIntervalList_test1.pif	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_BedToIntervalList_test1.pif	Sun Mar 03 16:06:11 2024 +0000
@@ -1,5 +1,5 @@
-@HD	VN:1.5	SO:coordinate
-@SQ	SN:chrM	LN:16569	M5:c68f52674c9fb33aef52dcf399755519	UR:file:/tmp/tmpYRm8q4/job_working_directory/000/7/working/localref.fa
+@HD	VN:1.6	SO:coordinate
+@SQ	SN:chrM	LN:16569	M5:c68f52674c9fb33aef52dcf399755519	UR:file:/tmp/tmpo37chtct/job_working_directory/000/5/working/localref.fa
 chrM	1	100	+	.
 chrM	21	500	+	.
 chrM	701	800	+	.
--- a/test-data/picard_CASM_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CASM_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,12 +1,83 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectAlignmentSummaryMetrics MAX_INSERT_SIZE=100000 METRIC_ACCUMULATION_LEVEL=[ALL_READS] IS_BISULFITE_SEQUENCED=false INPUT=picard_CASM_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_10.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    EXPECTED_PAIR_ORIENTATIONS=[FR] ADAPTER_SEQUENCE=[AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCTCGTATGCCGTCTTCTGCTTG, AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATCTCGTATGCCGTCTTCTGCTTG, AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNNNATCTCGTATGCCGTCTTCTGCTTG] STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectAlignmentSummaryMetrics MAX_INSERT_SIZE=100000 ADAPTER_SEQUENCE=[AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCTCGTATGCCGTCTTCTGCTTG, AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATCTCGTATGCCGTCTTCTGCTTG, AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT, AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNNNATCTCGTATGCCGTCTTCTGCTTG, METRIC_ACCUMULATION_LEVEL=ALL_READS] IS_BISULFITE_SEQUENCED=false INPUT=picard_CASM_bam OUTPUT=/tmp/tmpjhdz2g17/job_working_directory/000/3/outputs/dataset_4d6599a2-4dca-4fa0-8d6b-b676800fb9a8.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    EXPECTED_PAIR_ORIENTATIONS=[FR] METRIC_ACCUMULATION_LEVEL=[ALL_READS] COLLECT_ALIGNMENT_INFORMATION=true STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:27:21 CEST 2018
+# Started on: Sat Mar 02 17:42:27 GMT 2024
 
 ## METRICS CLASS	picard.analysis.AlignmentSummaryMetrics
-CATEGORY	TOTAL_READS	PF_READS	PCT_PF_READS	PF_NOISE_READS	PF_READS_ALIGNED	PCT_PF_READS_ALIGNED	PF_ALIGNED_BASES	PF_HQ_ALIGNED_READS	PF_HQ_ALIGNED_BASES	PF_HQ_ALIGNED_Q20_BASES	PF_HQ_MEDIAN_MISMATCHES	PF_MISMATCH_RATE	PF_HQ_ERROR_RATE	PF_INDEL_RATE	MEAN_READ_LENGTH	READS_ALIGNED_IN_PAIRS	PCT_READS_ALIGNED_IN_PAIRS	PF_READS_IMPROPER_PAIRS	PCT_PF_READS_IMPROPER_PAIRS	BAD_CYCLES	STRAND_BALANCE	PCT_CHIMERAS	PCT_ADAPTER	SAMPLE	LIBRARY	READ_GROUP
-FIRST_OF_PAIR	100	100	1	0	100	1	17831	100	17831	16865	1	0.008188	0.008188	0	251	99	0.99	1	0.01	0	0.46	0.74	0			
-SECOND_OF_PAIR	100	100	1	0	99	0.99	17907	99	17907	16887	1	0.008879	0.008879	0	251	99	1	0	0	0	0.545455	0.676768	0			
-PAIR	200	200	1	0	199	0.995	35738	199	35738	33752	1	0.008534	0.008534	0	251	198	0.994975	1	0.005025	0	0.502513	0.708543	0			
+CATEGORY	TOTAL_READS	PF_READS	PCT_PF_READS	PF_NOISE_READS	PF_READS_ALIGNED	PCT_PF_READS_ALIGNED	PF_ALIGNED_BASES	PF_HQ_ALIGNED_READS	PF_HQ_ALIGNED_BASES	PF_HQ_ALIGNED_Q20_BASES	PF_HQ_MEDIAN_MISMATCHES	PF_MISMATCH_RATE	PF_HQ_ERROR_RATE	PF_INDEL_RATE	MEAN_READ_LENGTH	SD_READ_LENGTH	MEDIAN_READ_LENGTH	MAD_READ_LENGTH	MIN_READ_LENGTH	MAX_READ_LENGTH	MEAN_ALIGNED_READ_LENGTH	READS_ALIGNED_IN_PAIRS	PCT_READS_ALIGNED_IN_PAIRS	PF_READS_IMPROPER_PAIRS	PCT_PF_READS_IMPROPER_PAIRS	BAD_CYCLES	STRAND_BALANCE	PCT_CHIMERAS	PCT_ADAPTER	PCT_SOFTCLIP	PCT_HARDCLIP	AVG_POS_3PRIME_SOFTCLIP_LENGTH	SAMPLE	LIBRARY	READ_GROUP
+FIRST_OF_PAIR	100	100	1	0	100	1	17831	100	17831	16865	1	0.008188	0.008188	0	251	0	251	0	251	251	178.31	99	0.99	1	0.01	0	0.46	0.74	0	0.289602	0	57.985294			
+SECOND_OF_PAIR	100	100	1	0	99	0.99	17907	99	17907	16887	1	0.008879	0.008879	0	251	0	251	0	251	251	179.07	99	1	0	0	0	0.545455	0.676768	0	0.276574	0	48.307692			
+PAIR	200	200	1	0	199	0.995	35738	199	35738	33752	1	0.008534	0.008534	0	251	0	251	0	251	251	178.69	198	0.994975	1	0.005025	0	0.502513	0.708543	0	0.283088	0	53.255639			
 
+## HISTOGRAM	java.lang.Integer
+READ_LENGTH	PAIRED_TOTAL_LENGTH_COUNT	PAIRED_ALIGNED_LENGTH_COUNT
+0	0	1
+112	0	1
+113	0	1
+120	0	2
+124	0	1
+127	0	1
+130	0	2
+131	0	1
+132	0	5
+133	0	2
+134	0	3
+137	0	2
+138	0	12
+139	0	1
+140	0	3
+141	0	3
+143	0	3
+144	0	1
+146	0	4
+147	0	1
+151	0	4
+152	0	1
+155	0	1
+156	0	9
+157	0	4
+158	0	1
+159	0	2
+161	0	4
+162	0	1
+167	0	2
+169	0	1
+170	0	1
+171	0	10
+172	0	1
+173	0	3
+176	0	2
+177	0	3
+179	0	5
+180	0	1
+181	0	1
+182	0	5
+184	0	9
+185	0	2
+186	0	2
+187	0	4
+192	0	2
+193	0	1
+194	0	3
+200	0	2
+201	0	6
+203	0	8
+205	0	1
+206	0	1
+208	0	3
+213	0	7
+216	0	3
+222	0	1
+228	0	6
+229	0	2
+230	0	1
+231	0	5
+232	0	1
+233	0	1
+236	0	2
+238	0	2
+241	0	5
+242	0	3
+250	0	2
+251	200	3
 
Binary file test-data/picard_CleanSam_test1.bam has changed
--- a/test-data/picard_CollectBaseDistributionByCycle_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectBaseDistributionByCycle_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectBaseDistributionByCycle CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_16.dat ALIGNED_READS_ONLY=true PF_READS_ONLY=true INPUT=picard_CollectBaseDistributionByCycle_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_15.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectBaseDistributionByCycle CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/107/outputs/dataset_99eaaacb-471a-4904-8457-922748bbe739.dat ALIGNED_READS_ONLY=true PF_READS_ONLY=true INPUT=picard_CollectBaseDistributionByCycle_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/107/outputs/dataset_00637765-dbfa-4415-ac2b-3abf35106022.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:27:50 CEST 2018
+# Started on: Sat Mar 02 14:54:57 GMT 2024
 
 ## METRICS CLASS	picard.analysis.BaseDistributionByCycleMetrics
 READ_END	CYCLE	PCT_A	PCT_C	PCT_G	PCT_T	PCT_N
--- a/test-data/picard_CollectGcBiasMetrics_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectGcBiasMetrics_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectGcBiasMetrics CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_21.dat SUMMARY_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_19.dat SCAN_WINDOW_SIZE=100 MINIMUM_GENOME_FRACTION=5.0E-5 IS_BISULFITE_SEQUENCED=true INPUT=picard_CollectGcBiasMetrics_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_20.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    METRIC_ACCUMULATION_LEVEL=[ALL_READS] ALSO_IGNORE_DUPLICATES=false STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectGcBiasMetrics CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/88/outputs/dataset_7b9af3c2-81b1-41a5-bc93-5a1a95d7c880.dat SUMMARY_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/88/outputs/dataset_58020684-7aba-421b-9402-2bb8b9f57184.dat SCAN_WINDOW_SIZE=100 MINIMUM_GENOME_FRACTION=5.0E-5 IS_BISULFITE_SEQUENCED=true INPUT=picard_CollectGcBiasMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/88/outputs/dataset_05ccd1b2-a8aa-4eae-90e6-466bc6f47496.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    METRIC_ACCUMULATION_LEVEL=[ALL_READS] ALSO_IGNORE_DUPLICATES=false STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:28:18 CEST 2018
+# Started on: Sat Mar 02 14:52:31 GMT 2024
 
 ## METRICS CLASS	picard.analysis.GcBiasDetailMetrics
 ACCUMULATION_LEVEL	READS_USED	GC	WINDOWS	READ_STARTS	MEAN_BASE_QUALITY	NORMALIZED_COVERAGE	ERROR_BAR_WIDTH	SAMPLE	LIBRARY	READ_GROUP
--- a/test-data/picard_CollectHsMetrics_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectHsMetrics_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,11 +1,11 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectHsMetrics BAIT_INTERVALS=[/tmp/tmpMGxxyd/files/000/dataset_2.dat] TARGET_INTERVALS=[/tmp/tmpMGxxyd/files/000/dataset_3.dat] INPUT=picard_CollectHsMetrics_bam OUTPUT=/tmp/tmpMGxxyd/files/000/dataset_4.dat MINIMUM_MAPPING_QUALITY=20 MINIMUM_BASE_QUALITY=20 CLIP_OVERLAPPING_READS=true COVERAGE_CAP=200 TMP_DIR=[/tmp] VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT    METRIC_ACCUMULATION_LEVEL=[ALL_READS] NEAR_DISTANCE=250 SAMPLE_SIZE=10000 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectHsMetrics BAIT_INTERVALS=[/tmp/tmpo37chtct/files/4/5/7/dataset_457059fa-c4ab-45e5-b5a4-2e2423c26c97.dat] TARGET_INTERVALS=[/tmp/tmpo37chtct/files/b/3/b/dataset_b3b8bb1f-01e2-4410-8019-3f1e5f381bc2.dat] INPUT=picard_CollectHsMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/9/outputs/dataset_acae608b-e2e4-48e6-a508-92ff22fef0b6.dat MINIMUM_MAPPING_QUALITY=20 MINIMUM_BASE_QUALITY=20 CLIP_OVERLAPPING_READS=true COVERAGE_CAP=200 VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT    METRIC_ACCUMULATION_LEVEL=[ALL_READS] NEAR_DISTANCE=250 INCLUDE_INDELS=false SAMPLE_SIZE=10000 ALLELE_FRACTION=[0.001, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.3, 0.5] COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Thu May 30 21:41:26 UTC 2019
+# Started on: Sat Mar 02 13:57:47 GMT 2024
 
 ## METRICS CLASS	picard.analysis.directed.HsMetrics
-BAIT_SET	GENOME_SIZE	BAIT_TERRITORY	TARGET_TERRITORY	BAIT_DESIGN_EFFICIENCY	TOTAL_READS	PF_READS	PF_UNIQUE_READS	PCT_PF_READS	PCT_PF_UQ_READS	PF_UQ_READS_ALIGNED	PCT_PF_UQ_READS_ALIGNED	PF_BASES_ALIGNED	PF_UQ_BASES_ALIGNED	ON_BAIT_BASES	NEAR_BAIT_BASES	OFF_BAIT_BASES	ON_TARGET_BASES	PCT_SELECTED_BASES	PCT_OFF_BAIT	ON_BAIT_VS_SELECTED	MEAN_BAIT_COVERAGE	MEAN_TARGET_COVERAGE	MEDIAN_TARGET_COVERAGE	MAX_TARGET_COVERAGE	PCT_USABLE_BASES_ON_BAIT	PCT_USABLE_BASES_ON_TARGET	FOLD_ENRICHMENT	ZERO_CVG_TARGETS_PCT	PCT_EXC_DUPE	PCT_EXC_MAPQ	PCT_EXC_BASEQ	PCT_EXC_OVERLAP	PCT_EXC_OFF_TARGET	FOLD_80_BASE_PENALTY	PCT_TARGET_BASES_1X	PCT_TARGET_BASES_2X	PCT_TARGET_BASES_10X	PCT_TARGET_BASES_20X	PCT_TARGET_BASES_30X	PCT_TARGET_BASES_40X	PCT_TARGET_BASES_50X	PCT_TARGET_BASES_100X	HS_LIBRARY_SIZE	HS_PENALTY_10X	HS_PENALTY_20X	HS_PENALTY_30X	HS_PENALTY_40X	HS_PENALTY_50X	HS_PENALTY_100X	AT_DROPOUT	GC_DROPOUT	HET_SNP_SENSITIVITY	HET_SNP_Q	SAMPLE	LIBRARY	READ_GROUP
-dataset_2	16569	303	183	0.60396	543	543	543	1	1	543	1	48712	48712	1545	8432	38735	911	0.204816	0.795184	0.154856	5.09901	4.978142	4	11	0.031614	0.018641	1.734388	0	0	0	0	0.008088	0.99146	2.489071	1	0.994536	0.125683	0	0	0	0	0		0	0	0	0	0	0	0	0	0.879902	9			
+BAIT_SET	BAIT_TERRITORY	BAIT_DESIGN_EFFICIENCY	ON_BAIT_BASES	NEAR_BAIT_BASES	OFF_BAIT_BASES	PCT_SELECTED_BASES	PCT_OFF_BAIT	ON_BAIT_VS_SELECTED	MEAN_BAIT_COVERAGE	PCT_USABLE_BASES_ON_BAIT	PCT_USABLE_BASES_ON_TARGET	FOLD_ENRICHMENT	HS_LIBRARY_SIZE	HS_PENALTY_10X	HS_PENALTY_20X	HS_PENALTY_30X	HS_PENALTY_40X	HS_PENALTY_50X	HS_PENALTY_100X	TARGET_TERRITORY	GENOME_SIZE	TOTAL_READS	PF_READS	PF_BASES	PF_UNIQUE_READS	PF_UQ_READS_ALIGNED	PF_BASES_ALIGNED	PF_UQ_BASES_ALIGNED	ON_TARGET_BASES	PCT_PF_READS	PCT_PF_UQ_READS	PCT_PF_UQ_READS_ALIGNED	MEAN_TARGET_COVERAGE	MEDIAN_TARGET_COVERAGE	MAX_TARGET_COVERAGE	MIN_TARGET_COVERAGE	ZERO_CVG_TARGETS_PCT	PCT_EXC_DUPE	PCT_EXC_ADAPTER	PCT_EXC_MAPQ	PCT_EXC_BASEQ	PCT_EXC_OVERLAP	PCT_EXC_OFF_TARGET	FOLD_80_BASE_PENALTY	PCT_TARGET_BASES_1X	PCT_TARGET_BASES_2X	PCT_TARGET_BASES_10X	PCT_TARGET_BASES_20X	PCT_TARGET_BASES_30X	PCT_TARGET_BASES_40X	PCT_TARGET_BASES_50X	PCT_TARGET_BASES_100X	PCT_TARGET_BASES_250X	PCT_TARGET_BASES_500X	PCT_TARGET_BASES_1000X	PCT_TARGET_BASES_2500X	PCT_TARGET_BASES_5000X	PCT_TARGET_BASES_10000X	PCT_TARGET_BASES_25000X	PCT_TARGET_BASES_50000X	PCT_TARGET_BASES_100000X	AT_DROPOUT	GC_DROPOUT	HET_SNP_SENSITIVITY	HET_SNP_Q	SAMPLE	LIBRARY	READ_GROUP
+dataset_457059fa-c4ab-45e5-b5a4-2e2423c26c97	303	0.60396	1545	8432	38735	0.204816	0.795184	0.154856	5.09901	0.031614	0.018641	1.734388		0	0	0	0	0	0	183	16569	543	543	48870	543	543	48712	48712	911	1	1	1	4.978142	4	11	1	0	0	0	0	0	0.008088	0.97321	2.489071	1	0.994536	0.125683	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.879902	9			
 
 ## HISTOGRAM	java.lang.Integer
 coverage_or_base_quality	high_quality_coverage_count	unfiltered_baseq_count
--- a/test-data/picard_CollectInsertSizeMetrics_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectInsertSizeMetrics_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectInsertSizeMetrics HISTOGRAM_FILE=/tmp/tmpYRm8q4/files/000/dataset_25.dat DEVIATIONS=10.0 HISTOGRAM_WIDTH=500 MINIMUM_PCT=0.05 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectInsertSizeMetrics_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_24.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    INCLUDE_DUPLICATES=false STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectInsertSizeMetrics HISTOGRAM_FILE=/tmp/tmpo37chtct/job_working_directory/000/104/outputs/dataset_973dce02-f3e0-41d1-a181-80e0f27da65e.dat DEVIATIONS=10.0 HISTOGRAM_WIDTH=500 MINIMUM_PCT=0.05 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectInsertSizeMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/104/outputs/dataset_cb4959fd-452d-4f49-b4b6-1f365fddffd4.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    INCLUDE_DUPLICATES=false STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:28:38 CEST 2018
+# Started on: Sat Mar 02 14:54:35 GMT 2024
 
 ## METRICS CLASS	picard.analysis.InsertSizeMetrics
 MEDIAN_INSERT_SIZE	MODE_INSERT_SIZE	MEDIAN_ABSOLUTE_DEVIATION	MIN_INSERT_SIZE	MAX_INSERT_SIZE	MEAN_INSERT_SIZE	STANDARD_DEVIATION	READ_PAIRS	PAIR_ORIENTATION	WIDTH_OF_10_PERCENT	WIDTH_OF_20_PERCENT	WIDTH_OF_30_PERCENT	WIDTH_OF_40_PERCENT	WIDTH_OF_50_PERCENT	WIDTH_OF_60_PERCENT	WIDTH_OF_70_PERCENT	WIDTH_OF_80_PERCENT	WIDTH_OF_90_PERCENT	WIDTH_OF_95_PERCENT	WIDTH_OF_99_PERCENT	SAMPLE	LIBRARY	READ_GROUP
--- a/test-data/picard_CollectRnaSeqMetrics_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectRnaSeqMetrics_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_29.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_30.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/43/outputs/dataset_f27899df-eff0-43a1-88f3-5f03eac5ed04.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/43/outputs/dataset_cede83a6-4fb3-4ec3-be85-187bcc048324.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    END_BIAS_BASES=100 STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:29:39 CEST 2018
+# Started on: Sat Mar 02 14:46:46 GMT 2024
 
 ## METRICS CLASS	picard.analysis.RnaSeqMetrics
 PF_BASES	PF_ALIGNED_BASES	RIBOSOMAL_BASES	CODING_BASES	UTR_BASES	INTRONIC_BASES	INTERGENIC_BASES	IGNORED_READS	CORRECT_STRAND_READS	INCORRECT_STRAND_READS	NUM_R1_TRANSCRIPT_STRAND_READS	NUM_R2_TRANSCRIPT_STRAND_READS	NUM_UNEXPLAINED_READS	PCT_R1_TRANSCRIPT_STRAND_READS	PCT_R2_TRANSCRIPT_STRAND_READS	PCT_RIBOSOMAL_BASES	PCT_CODING_BASES	PCT_UTR_BASES	PCT_INTRONIC_BASES	PCT_INTERGENIC_BASES	PCT_MRNA_BASES	PCT_USABLE_BASES	PCT_CORRECT_STRAND_READS	MEDIAN_CV_COVERAGE	MEDIAN_5PRIME_BIAS	MEDIAN_3PRIME_BIAS	MEDIAN_5PRIME_TO_3PRIME_BIAS	SAMPLE	LIBRARY	READ_GROUP
--- a/test-data/picard_CollectRnaSeqMetrics_test2.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectRnaSeqMetrics_test2.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# picard.analysis.CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/opt/galaxy/galaxy/database/files/033/dataset_33778.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/opt/galaxy/galaxy/database/files/033/dataset_33779.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json
+# CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/47/outputs/dataset_5bdbb1b7-da6a-4965-afed-1a726ee56c0f.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/47/outputs/dataset_2f9418a5-1380-4244-8d8e-8f461f20d9d3.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    END_BIAS_BASES=100 STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Thu Jan 31 11:57:28 GMT 2019
+# Started on: Sat Mar 02 14:47:09 GMT 2024
 
 ## METRICS CLASS	picard.analysis.RnaSeqMetrics
 PF_BASES	PF_ALIGNED_BASES	RIBOSOMAL_BASES	CODING_BASES	UTR_BASES	INTRONIC_BASES	INTERGENIC_BASES	IGNORED_READS	CORRECT_STRAND_READS	INCORRECT_STRAND_READS	NUM_R1_TRANSCRIPT_STRAND_READS	NUM_R2_TRANSCRIPT_STRAND_READS	NUM_UNEXPLAINED_READS	PCT_R1_TRANSCRIPT_STRAND_READS	PCT_R2_TRANSCRIPT_STRAND_READS	PCT_RIBOSOMAL_BASES	PCT_CODING_BASES	PCT_UTR_BASES	PCT_INTRONIC_BASES	PCT_INTERGENIC_BASES	PCT_MRNA_BASES	PCT_USABLE_BASES	PCT_CORRECT_STRAND_READS	MEDIAN_CV_COVERAGE	MEDIAN_5PRIME_BIAS	MEDIAN_3PRIME_BIAS	MEDIAN_5PRIME_TO_3PRIME_BIAS	SAMPLE	LIBRARY	READ_GROUP
--- a/test-data/picard_CollectRnaSeqMetrics_test3.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectRnaSeqMetrics_test3.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_39.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_40.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectRnaSeqMetrics REF_FLAT=refFlat.tab STRAND_SPECIFICITY=NONE MINIMUM_LENGTH=500 CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/51/outputs/dataset_45f6f25c-5327-4d37-8a78-39f01d41ebfd.dat RRNA_FRAGMENT_PERCENTAGE=0.8 METRIC_ACCUMULATION_LEVEL=[ALL_READS] INPUT=picard_CollectRnaSeqMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/51/outputs/dataset_c02fcd8d-cb26-4275-ac32-b5e449289e3b.dat ASSUME_SORTED=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    END_BIAS_BASES=100 STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:30:29 CEST 2018
+# Started on: Sat Mar 02 14:47:30 GMT 2024
 
 ## METRICS CLASS	picard.analysis.RnaSeqMetrics
 PF_BASES	PF_ALIGNED_BASES	RIBOSOMAL_BASES	CODING_BASES	UTR_BASES	INTRONIC_BASES	INTERGENIC_BASES	IGNORED_READS	CORRECT_STRAND_READS	INCORRECT_STRAND_READS	NUM_R1_TRANSCRIPT_STRAND_READS	NUM_R2_TRANSCRIPT_STRAND_READS	NUM_UNEXPLAINED_READS	PCT_R1_TRANSCRIPT_STRAND_READS	PCT_R2_TRANSCRIPT_STRAND_READS	PCT_RIBOSOMAL_BASES	PCT_CODING_BASES	PCT_UTR_BASES	PCT_INTRONIC_BASES	PCT_INTERGENIC_BASES	PCT_MRNA_BASES	PCT_USABLE_BASES	PCT_CORRECT_STRAND_READS	MEDIAN_CV_COVERAGE	MEDIAN_5PRIME_BIAS	MEDIAN_3PRIME_BIAS	MEDIAN_5PRIME_TO_3PRIME_BIAS	SAMPLE	LIBRARY	READ_GROUP
--- a/test-data/picard_CollectWgsMetrics_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_CollectWgsMetrics_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,11 +1,11 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectWgsMetrics INPUT=picard_CollectWgsMetrics_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_43.dat MINIMUM_MAPPING_QUALITY=20 MINIMUM_BASE_QUALITY=20 COVERAGE_CAP=250 VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    LOCUS_ACCUMULATION_CAP=100000 STOP_AFTER=-1 INCLUDE_BQ_HISTOGRAM=false COUNT_UNPAIRED=false SAMPLE_SIZE=10000 USE_FAST_ALGORITHM=false READ_LENGTH=150 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# CollectWgsMetrics INPUT=picard_CollectWgsMetrics_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/101/outputs/dataset_dec3015c-330f-4a24-9264-350dba75cd15.dat MINIMUM_MAPPING_QUALITY=20 MINIMUM_BASE_QUALITY=20 COVERAGE_CAP=250 VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    LOCUS_ACCUMULATION_CAP=100000 STOP_AFTER=-1 INCLUDE_BQ_HISTOGRAM=false COUNT_UNPAIRED=false SAMPLE_SIZE=10000 ALLELE_FRACTION=[0.001, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.3, 0.5] USE_FAST_ALGORITHM=false READ_LENGTH=150 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:30:46 CEST 2018
+# Started on: Sat Mar 02 14:54:12 GMT 2024
 
-## METRICS CLASS	picard.analysis.CollectWgsMetrics$WgsMetrics
-GENOME_TERRITORY	MEAN_COVERAGE	SD_COVERAGE	MEDIAN_COVERAGE	MAD_COVERAGE	PCT_EXC_MAPQ	PCT_EXC_DUPE	PCT_EXC_UNPAIRED	PCT_EXC_BASEQ	PCT_EXC_OVERLAP	PCT_EXC_CAPPED	PCT_EXC_TOTAL	PCT_1X	PCT_5X	PCT_10X	PCT_15X	PCT_20X	PCT_25X	PCT_30X	PCT_40X	PCT_50X	PCT_60X	PCT_70X	PCT_80X	PCT_90X	PCT_100X	HET_SNP_SENSITIVITY	HET_SNP_Q
-16568	2.915862	3.835741	2	2	0	0	0	0.000041	0.008069	0	0.00811	0.684633	0.240464	0.055831	0.02541	0.010985	0	0	0	0	0	0	0	0	0	0.544024	3
+## METRICS CLASS	picard.analysis.WgsMetrics
+GENOME_TERRITORY	MEAN_COVERAGE	SD_COVERAGE	MEDIAN_COVERAGE	MAD_COVERAGE	PCT_EXC_ADAPTER	PCT_EXC_MAPQ	PCT_EXC_DUPE	PCT_EXC_UNPAIRED	PCT_EXC_BASEQ	PCT_EXC_OVERLAP	PCT_EXC_CAPPED	PCT_EXC_TOTAL	PCT_1X	PCT_5X	PCT_10X	PCT_15X	PCT_20X	PCT_25X	PCT_30X	PCT_40X	PCT_50X	PCT_60X	PCT_70X	PCT_80X	PCT_90X	PCT_100X	FOLD_80_BASE_PENALTY	FOLD_90_BASE_PENALTY	FOLD_95_BASE_PENALTY	HET_SNP_SENSITIVITY	HET_SNP_Q
+16568	2.915862	3.835741	2	2	0	0	0	0	0.000041	0.008069	0	0.00811	0.684633	0.240464	0.055831	0.02541	0.010985	0	0	0	0	0	0	0	0	0	?	?	?	0.544024	3
 
 ## HISTOGRAM	java.lang.Integer
 coverage	high_quality_coverage_count
Binary file test-data/picard_DownsampleSam_test1.bam has changed
--- a/test-data/picard_EstimateLibraryComplexity_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_EstimateLibraryComplexity_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# EstimateLibraryComplexity INPUT=[picard_EstimateLibraryComplexity_bam] OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_47.dat MIN_IDENTICAL_BASES=5 MAX_DIFF_RATE=0.03 MIN_MEAN_QUALITY=20 MAX_GROUP_RATIO=500 READ_NAME_REGEX=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*. OPTICAL_DUPLICATE_PIXEL_DISTANCE=100 VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT    MAX_READ_LENGTH=0 MIN_GROUP_COUNT=2 MAX_OPTICAL_DUPLICATE_SET_SIZE=300000 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=2026467 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# EstimateLibraryComplexity INPUT=[picard_EstimateLibraryComplexity_bam] OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/2/outputs/dataset_2dcaa173-f266-4eb2-beba-982bef8b822c.dat MIN_IDENTICAL_BASES=5 MAX_DIFF_RATE=0.03 MIN_MEAN_QUALITY=20 MAX_GROUP_RATIO=500 READ_NAME_REGEX=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).*. OPTICAL_DUPLICATE_PIXEL_DISTANCE=100 VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT    MAX_READ_LENGTH=0 MIN_GROUP_COUNT=2 MAX_OPTICAL_DUPLICATE_SET_SIZE=300000 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=2203734 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:31:14 CEST 2018
+# Started on: Sat Mar 02 13:56:49 GMT 2024
 
 ## METRICS CLASS	picard.sam.DuplicationMetrics
 LIBRARY	UNPAIRED_READS_EXAMINED	READ_PAIRS_EXAMINED	SECONDARY_OR_SUPPLEMENTARY_RDS	UNMAPPED_READS	UNPAIRED_READ_DUPLICATES	READ_PAIR_DUPLICATES	READ_PAIR_OPTICAL_DUPLICATES	PERCENT_DUPLICATION	ESTIMATED_LIBRARY_SIZE
Binary file test-data/picard_FastqToSam_test1.bam has changed
Binary file test-data/picard_FilterSamReads_exclude_reads_test2.bam has changed
Binary file test-data/picard_FilterSamReads_include_reads_test1.bam has changed
Binary file test-data/picard_FixMateInformation_test1.bam has changed
Binary file test-data/picard_MarkDuplicatesWithMateCigar_test1.bam has changed
Binary file test-data/picard_MarkDuplicates_test1.bam has changed
Binary file test-data/picard_MarkDuplicates_test2.bam has changed
--- a/test-data/picard_MeanQualityByCycle_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_MeanQualityByCycle_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# MeanQualityByCycle CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_71.dat ALIGNED_READS_ONLY=false PF_READS_ONLY=false INPUT=picard_MeanQualityByCycle_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_70.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# MeanQualityByCycle CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/61/outputs/dataset_f7c137d5-bc0d-40a8-837e-d81930c88148.dat ALIGNED_READS_ONLY=false PF_READS_ONLY=false INPUT=picard_MeanQualityByCycle_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/61/outputs/dataset_e33b30c8-e05a-4609-ba6a-f4efb014ed6f.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:33:43 CEST 2018
+# Started on: Sat Mar 02 14:48:55 GMT 2024
 
 
 ## HISTOGRAM	java.lang.Integer
Binary file test-data/picard_MergeBamAlignment_test1.bam has changed
Binary file test-data/picard_MergeSamFiles_test1.bam has changed
--- a/test-data/picard_QualityScoreDistribution_test1.tab	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_QualityScoreDistribution_test1.tab	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# QualityScoreDistribution CHART_OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_85.dat ALIGNED_READS_ONLY=false PF_READS_ONLY=false INCLUDE_NO_CALLS=false INPUT=picard_QualityScoreDistribution_bam OUTPUT=/tmp/tmpYRm8q4/files/000/dataset_84.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
+# QualityScoreDistribution CHART_OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/79/outputs/dataset_b5c9067d-6b68-4b7f-8951-e8b713dd3f59.dat ALIGNED_READS_ONLY=false PF_READS_ONLY=false INCLUDE_NO_CALLS=false INPUT=picard_QualityScoreDistribution_bam OUTPUT=/tmp/tmpo37chtct/job_working_directory/000/79/outputs/dataset_97e3d3c1-0639-4c40-80af-71899eb800e4.dat ASSUME_SORTED=true VERBOSITY=ERROR QUIET=true VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=localref.fa    STOP_AFTER=0 COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Sat Apr 14 09:35:07 CEST 2018
+# Started on: Sat Mar 02 14:51:09 GMT 2024
 
 
 ## HISTOGRAM	java.lang.Byte
Binary file test-data/picard_ReplaceSamHeader_test1.bam has changed
Binary file test-data/picard_RevertOriginalBaseQualitiesAndAddMateCigar_test1.bam has changed
Binary file test-data/picard_RevertSam_test1.bam has changed
Binary file test-data/picard_SortSam_test1.bam has changed
--- a/test-data/picard_SortSam_test1.sam	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_SortSam_test1.sam	Sun Mar 03 16:06:11 2024 +0000
@@ -1,4 +1,4 @@
-@HD	VN:1.5	SO:queryname
+@HD	VN:1.6	SO:queryname
 @SQ	SN:gi|251831106|ref|NC_012920.1|	LN:16569
 @PG	ID:bwa	PN:bwa	VN:0.7.10-r837-dirty	CL:bwa sampe /Users/anton/temp/mt.fa first.sai second.sai /Users/anton/galaxy-central/database/files/000/dataset_943.dat /Users/anton/galaxy-central/database/files/000/dataset_944.dat
 M01368:28:000000000-A5KYY:1:1101:10045:12104	77	*	0	0	*	*	0	0	ATATTGAACGTAGGTGCGATAAATAATGGGATGAGGCAGGAATCAAAGACAGATACTGCGACATAGGGTGCTCCGGCTCCAGCGTCTCGCAATGCTATCGCGTGCATACCCCCCAGACGAAAATACCAAATGCATGGAGAGCTCCCGTGAGTGGTTAATAGGGTGATAGACCTGTGATCCATCGTGATGTCTTATTTAAGGGGAACGTGTGGGCTATTTAGGCTTTATGG	?????B/B-<5BBA<B/+,6>@AEHFF>CFBA>EC=C>>CED?CFCEDA-AC/AE=ACE,CCCDHHHH-5C5EG>><<EHGHCEDE+?7<CCD?D@DF?:DAE=EDEDDDD;@<BBEE@2.?8:::?EEEEEEA::*?A:88//?A20?8A0/8:AEEEEC:A*00?:?E?CE:/:/?::C??AC?**:0:*??CEA?EE?*8?8CE8A*888A*??://?AEEAAACAE
--- a/test-data/picard_ValidateSamFile_test1.txt	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/picard_ValidateSamFile_test1.txt	Sun Mar 03 16:06:11 2024 +0000
@@ -1,101 +1,101 @@
-ERROR: Read groups is empty
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:15130:6486, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:19193:4910, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:19687:27581, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:25123:14783, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:16897:10864, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:18180:25039, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:18745:16268, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:28904:12081, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13486:23487, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13545:26345, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:19673:17954, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:3642:12806, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:21319:16719, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:26456:9833, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:14672:12340, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:24128:14251, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:24520:20516, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:7598:17197, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:15870:27794, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:18833:21202, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:15130:6486, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:19193:4910, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:19687:27581, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, A record is missing a read group
-ERROR: Record 24, Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:25123:14783, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, A record is missing a read group
-ERROR: Record 28, Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:16897:10864, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:18180:25039, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:18745:16268, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1102:28904:12081, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, A record is missing a read group
-ERROR: Record 33, Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13486:23487, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:13545:26345, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, A record is missing a read group
-ERROR: Record 37, Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:19673:17954, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, A record is missing a read group
-ERROR: Record 41, Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:3642:12806, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, A record is missing a read group
-ERROR: Record 43, Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, A record is missing a read group
-ERROR: Record 45, Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:21319:16719, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, A record is missing a read group
-ERROR: Record 48, Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:26456:9833, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, A record is missing a read group
-ERROR: Record 51, Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:14672:12340, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, A record is missing a read group
-ERROR: Record 54, Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:24128:14251, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:24520:20516, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1105:7598:17197, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:15870:27794, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:18833:21202, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, A record is missing a read group
-ERROR: Record 61, Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, Mate negative strand flag does not match read negative strand flag of mate
-WARNING: Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10045:12104, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10045:12104, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10126:23848, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10126:23848, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10229:22034, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10229:22034, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10278:20774, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10278:20774, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10291:14859, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10291:14859, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10479:22035, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10479:22035, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10581:22138, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10581:22138, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10696:7547, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10696:7547, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10891:2447, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:10891:2447, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11083:9831, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11083:9831, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11136:11974, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11136:11974, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11197:4908, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11197:4908, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11224:22137, A record is missing a read group
-WARNING: Read name M01368:28:000000000-A5KYY:1:1101:11224:22137, A record is missing a read group
+ERROR::MISSING_READ_GROUP:Read groups is empty
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:15130:6486, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:19193:4910, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:19687:27581, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:25123:14783, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:16897:10864, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:18180:25039, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:18745:16268, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:28904:12081, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13486:23487, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13545:26345, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:19673:17954, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:3642:12806, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:21319:16719, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:26456:9833, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:14672:12340, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:24128:14251, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:24520:20516, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:7598:17197, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:15870:27794, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:18833:21202, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:15130:6486, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:19193:4910, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:19687:27581, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 24, Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:22554:16461, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:25123:14783, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 28, Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:7459:20893, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:16897:10864, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:18180:25039, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:18745:16268, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1102:28904:12081, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 33, Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13120:19662, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13486:23487, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:13545:26345, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 37, Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:14399:18263, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:19673:17954, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 41, Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:24192:10454, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:3642:12806, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 43, Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1103:6510:18393, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 45, Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:13741:15680, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:21319:16719, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 48, Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:24281:16164, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:26456:9833, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 51, Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1104:9455:13351, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:14672:12340, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 54, Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:21471:18067, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:24128:14251, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:24520:20516, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1105:7598:17197, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:15870:27794, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:18833:21202, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, A record is missing a read group
+ERROR::MISMATCH_FLAG_MATE_NEG_STRAND:Record 61, Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, Mate negative strand flag does not match read negative strand flag of mate
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1106:19331:13430, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10045:12104, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10045:12104, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10126:23848, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10126:23848, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10229:22034, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10229:22034, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10278:20774, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10278:20774, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10291:14859, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10291:14859, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10479:22035, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10479:22035, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10581:22138, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10581:22138, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10696:7547, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10696:7547, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10891:2447, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:10891:2447, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11083:9831, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11083:9831, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11136:11974, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11136:11974, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11197:4908, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11197:4908, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11224:22137, A record is missing a read group
+WARNING::RECORD_MISSING_READ_GROUP:Read name M01368:28:000000000-A5KYY:1:1101:11224:22137, A record is missing a read group
 Maximum output of [100] errors reached.
--- a/test-data/pos_details	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/pos_details	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=test-data/picard_ARRG_test1.bam OUTPUT=OutPut ASSUME_SORTED=false STOP_AFTER=0 VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false REFERENCE_SEQUENCE=test-data/picard_BedToIntervalList_ref.fa GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false   
+# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=picard_ARRG_test1_bam OUTPUT=OutPut ASSUME_SORTED=false VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=/home/bag/projects/code/tools-iuc/tools/picard/test-data/cached_locally/picard_BedToIntervalList_ref.fa    INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Fri May 03 21:58:49 EDT 2019
+# Started on: Sat Mar 02 14:48:33 GMT 2024
 
 ## METRICS CLASS	picard.analysis.artifacts.SequencingArtifactMetrics$BaitBiasDetailMetrics
 SAMPLE_ALIAS	LIBRARY	REF_BASE	ALT_BASE	CONTEXT	FWD_CXT_REF_BASES	FWD_CXT_ALT_BASES	REV_CXT_REF_BASES	REV_CXT_ALT_BASES	FWD_ERROR_RATE	REV_ERROR_RATE	ERROR_RATE	QSCORE
--- a/test-data/pos_summary	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/pos_summary	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=test-data/picard_ARRG_test1.bam OUTPUT=OutPut ASSUME_SORTED=false STOP_AFTER=0 VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false REFERENCE_SEQUENCE=test-data/picard_BedToIntervalList_ref.fa GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false   
+# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=picard_ARRG_test1_bam OUTPUT=OutPut ASSUME_SORTED=false VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=/home/bag/projects/code/tools-iuc/tools/picard/test-data/cached_locally/picard_BedToIntervalList_ref.fa    INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Fri May 03 21:58:49 EDT 2019
+# Started on: Sat Mar 02 14:48:33 GMT 2024
 
 ## METRICS CLASS	picard.analysis.artifacts.SequencingArtifactMetrics$BaitBiasSummaryMetrics
 SAMPLE_ALIAS	LIBRARY	REF_BASE	ALT_BASE	TOTAL_QSCORE	WORST_CXT	WORST_CXT_QSCORE	WORST_PRE_CXT	WORST_PRE_CXT_QSCORE	WORST_POST_CXT	WORST_POST_CXT_QSCORE	ARTIFACT_NAME
--- a/test-data/pre_details	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/pre_details	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=test-data/picard_ARRG_test1.bam OUTPUT=OutPut ASSUME_SORTED=false STOP_AFTER=0 VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false REFERENCE_SEQUENCE=test-data/picard_BedToIntervalList_ref.fa GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false   
+# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=picard_ARRG_test1_bam OUTPUT=OutPut ASSUME_SORTED=false VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=/home/bag/projects/code/tools-iuc/tools/picard/test-data/cached_locally/picard_BedToIntervalList_ref.fa    INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Fri May 03 21:58:49 EDT 2019
+# Started on: Sat Mar 02 14:48:33 GMT 2024
 
 ## METRICS CLASS	picard.analysis.artifacts.SequencingArtifactMetrics$PreAdapterDetailMetrics
 SAMPLE_ALIAS	LIBRARY	REF_BASE	ALT_BASE	CONTEXT	PRO_REF_BASES	PRO_ALT_BASES	CON_REF_BASES	CON_ALT_BASES	ERROR_RATE	QSCORE
--- a/test-data/pre_summary	Mon Sep 25 08:32:17 2023 +0000
+++ b/test-data/pre_summary	Sun Mar 03 16:06:11 2024 +0000
@@ -1,7 +1,7 @@
 ## htsjdk.samtools.metrics.StringHeader
-# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=test-data/picard_ARRG_test1.bam OUTPUT=OutPut ASSUME_SORTED=false STOP_AFTER=0 VERBOSITY=INFO QUIET=false VALIDATION_STRINGENCY=STRICT COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false REFERENCE_SEQUENCE=test-data/picard_BedToIntervalList_ref.fa GA4GH_CLIENT_SECRETS=client_secrets.json USE_JDK_DEFLATER=false USE_JDK_INFLATER=false   
+# CollectSequencingArtifactMetrics MINIMUM_QUALITY_SCORE=30 MINIMUM_MAPPING_QUALITY=20 MINIMUM_INSERT_SIZE=30 MAXIMUM_INSERT_SIZE=600 INCLUDE_UNPAIRED=false INCLUDE_DUPLICATES=false CONTEXT_SIZE=1 CONTEXTS_TO_PRINT=[AAA, CAA, AAC, AAT, AAG] INPUT=picard_ARRG_test1_bam OUTPUT=OutPut ASSUME_SORTED=false VALIDATION_STRINGENCY=LENIENT REFERENCE_SEQUENCE=/home/bag/projects/code/tools-iuc/tools/picard/test-data/cached_locally/picard_BedToIntervalList_ref.fa    INCLUDE_NON_PF_READS=false TANDEM_READS=false USE_OQ=true STOP_AFTER=0 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false USE_JDK_DEFLATER=false USE_JDK_INFLATER=false
 ## htsjdk.samtools.metrics.StringHeader
-# Started on: Fri May 03 21:58:49 EDT 2019
+# Started on: Sat Mar 02 14:48:33 GMT 2024
 
 ## METRICS CLASS	picard.analysis.artifacts.SequencingArtifactMetrics$PreAdapterSummaryMetrics
 SAMPLE_ALIAS	LIBRARY	REF_BASE	ALT_BASE	TOTAL_QSCORE	WORST_CXT	WORST_CXT_QSCORE	WORST_PRE_CXT	WORST_PRE_CXT_QSCORE	WORST_POST_CXT	WORST_POST_CXT_QSCORE	ARTIFACT_NAME