diff picard_SamToFastq.xml @ 26:9ffcddf6f9c0 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/picard commit cbe534af56ee782e8d1aa0fa872059d2a5e42db8"
author iuc
date Mon, 17 Feb 2020 10:24:29 -0500
parents 2a17c789e0a5
children 881d7645d1bf
line wrap: on
line diff
--- a/picard_SamToFastq.xml	Tue Jun 11 02:36:54 2019 -0400
+++ b/picard_SamToFastq.xml	Mon Feb 17 10:24:29 2020 -0500
@@ -2,13 +2,11 @@
   <description>extract reads and qualities from SAM/BAM dataset and convert to fastq</description>
   <macros>
     <import>picard_macros.xml</import>
-    <token name="@WRAPPER_VERSION@">1</token>
+    <token name="@WRAPPER_VERSION@">2</token>
   </macros>
   <expand macro="requirements" />
   <command detect_errors="exit_code"><![CDATA[
 
-    echo "BAM" > $report &&    ## This is necessary for output dataset detection (see output tags below)
-
     @java_options@
     @symlink_element_identifier@
 
@@ -17,22 +15,26 @@
 
     INPUT='$escaped_element_identifier'
 
-    #if str( $output_per_rg ) == "true":
-      OUTPUT_PER_RG=true
-      OUTPUT_DIR=.
-    #elif str( $output_per_rg ) == "false" and str( $interleave ) == "false":
-      FASTQ=READ1.fastq
-      SECOND_END_FASTQ=READ2.fastq
-      UNPAIRED_FASTQ=UNPAIRED_READS.fastq
-    #elif str( $output_per_rg ) == "false" and str( $interleave ) == "true":
-      FASTQ=INTERLEAVED.fastq
+    #if str($single_or_paired) == "pe_interleaved":
+      FASTQ='${interleaved_fastq}'
+      INTERLEAVE=TRUE
+    #else if str($single_or_paired) == "pe_sep":
+      F='${fq1}'
+      F2='${fq2}'
+      FU='${fq_u}'
+    #else
+      F='${fq_single}'
     #end if
 
     RE_REVERSE="${re_reverse}"
-    INTERLEAVE="${interleave}"
+
     INCLUDE_NON_PF_READS="${include_non_pf_reads}"
-    CLIPPING_ATTRIBUTE="${clipping_attribute}"
-    CLIPPING_ACTION="${clipping_action}"
+    #if len(str($clipping_attribute)) > 0:
+       CLIPPING_ATTRIBUTE="${clipping_attribute}"
+    #end if
+    #if len(str($clipping_action)) > 0:
+       CLIPPING_ACTION="${clipping_action}"
+    #end if
     READ1_TRIM="${read1_trim}"
 
     #if int($read1_max_bases_to_write) > -1:
@@ -47,7 +49,6 @@
 
     INCLUDE_NON_PRIMARY_ALIGNMENTS="${include_non_primary_alignments}"
 
-
     VALIDATION_STRINGENCY="${validation_stringency}"
     QUIET=true
     VERBOSITY=ERROR
@@ -57,12 +58,16 @@
   <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="output_per_rg" type="boolean" checked="False" label="Do you want to output a fastq file per read group (two fastq files per read group if the group is paired)" help="OUTPUT_PER_RG; default=False"/>
+    <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="interleave" type="boolean" label="Will generate an interleaved fastq if paired, each line will have /1 or /2 to describe which end it came from" help="INTERLEAVE; default=False"/>
     <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="null" 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="null" 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="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"/>
@@ -74,32 +79,74 @@
   </inputs>
 
   <outputs>
-    <!-- here dataset discovery is based on fact that if OUTPUT_PER_RG=true this tool automatically adds .fastq extension to emitted files -->
-    <data format="txt" name="report" label="SamToFastq run" hidden="true">
-      <discover_datasets pattern="(?P&lt;designation&gt;.+)\.fastq" ext="fastqsanger" visible="true"/>
+    <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>
       <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
+      <param name="single_or_paired" value="pe_interleaved" />
       <param name="output_per_rg" value="false"/>
       <param name="re_reverse" value="true"/>
-      <param name="interleave" value="true"/>
       <param name="include_non_pf_reads" value="false"/>
-      <param name="clipping_attribute" value="null" />
-      <param name="clipping_action" value="null" />
+      <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="report">
-        <assert_contents>
-          <has_line line="BAM" />
-        </assert_contents>
-        <discovered_dataset designation="INTERLEAVED" file="picard_SamToFastq_test1.fq" ftype="fastqsanger"/>
-      </output>
+      <output name="interleaved_fastq" file="picard_SamToFastq_test1.fq" ftype="fastqsanger"/>
+    </test>
+    <test>
+      <param name="inputFile" value="picard_SamToFastq.bam" ftype="bam"/>
+      <param name="single_or_paired" value="pe_sep" />
+      <param name="output_per_rg" value="false"/>
+      <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>
+      <param name="inputFile" value="picard_SamToFastq_se.bam" ftype="bam"/>
+      <param name="single_or_paired" value="se" />
+      <param name="output_per_rg" value="false"/>
+      <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>