diff samtools_faidx.xml @ 1:76c27c4861bd draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tool_collections/samtools/samtools_faidx commit 7ba11a2aa8901b555a95e284e4fb83c8dca2833e
author iuc
date Tue, 04 Nov 2025 22:34:23 +0000
parents baa79754a17e
children
line wrap: on
line diff
--- a/samtools_faidx.xml	Mon May 12 18:06:17 2025 +0000
+++ b/samtools_faidx.xml	Tue Nov 04 22:34:23 2025 +0000
@@ -7,29 +7,139 @@
     <expand macro="stdio"/>
     <expand macro="version_command"/>
     <command><![CDATA[
-    samtools
-        faidx
-        '$in_fasta'
-        --fai-idx '$output'
+        #set is_fastq = ("fastq" in $input.ext)
+        #if $input.ext.endswith(".gz") or $input.ext.endswith(".bgz") or $input.ext == "bgzip"
+            ln -s '$input' input.gz &&
+            samtools faidx
+            #if $is_fastq
+                --fastq
+            #end if
+                input.gz
+                --fai-idx '$output'
+                --gzi-idx input.gz.gzi
+            || (
+                echo "Failed to index compressed reference. Trying decompressed ..." 1>&2 &&
+                gzip -dc input.gz > input.plain &&
+                samtools faidx
+                #if $is_fastq
+                    --fastq
+                #end if
+                    input.plain
+                    --fai-idx '$output'
+            )
+        #else
+            ln -s '$input' input &&
+            samtools faidx
+            #if $is_fastq
+                --fastq
+            #end if
+                input
+                --fai-idx '$output'
+        #end if
     ]]></command>
     <inputs>
-        <param name="in_fasta" type="data" format="fasta,fasta.gz,fastq,fastq.gz,fastqsanger,fastqsanger.gz" label="dataset with sequences" />
+        <param name="input"
+        type="data"
+        format="fasta,fasta.gz,fastqsanger,fastqsanger.gz,fastqillumina,fastqillumina.gz"
+        label="Dataset with sequences (FASTA or FASTQ; auto-detected)" />
     </inputs>
     <outputs>
         <data name="output" format="tabular"/>
     </outputs>
     <tests>
         <test expect_num_outputs="1">
-            <param name="in_fasta" value="samtools_fastx-out1-2.fasta" />
-            <output name="output" file="out.tabular" />
+            <param name="input" value="samtools_fastx-out1-2.fasta" />
+            <output name="output" file="out_fasta.tabular" />
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fasta.gz" />
+            <output name="output" file="out_fasta.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip"/>
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fasta.bgz" />
+            <output name="output" file="out_fasta.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." negate="true" />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" negate="true"/>
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq" />
+            <output name="output" file="out_fastq.tabular" />
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq.gz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..."/>
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip"/>
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq.bgz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." negate="true"/>
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" negate="true"/>
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq" ftype="fastqsanger" />
+            <output name="output" file="out_fastq.tabular" />
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq.gz" ftype="fastqsanger.gz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" />
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq.bgz" ftype="fastqsanger.gz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." negate="true" />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" negate="true" />
+            </assert_stderr>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq" ftype="fastqillumina" />
+            <output name="output" file="out_fastq.tabular" />
+        </test>
+        <test expect_num_outputs="1">
+            <param name="input" value="samtools_fastx-out1-2.fastq.gz" ftype="fastqillumina.gz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" />
+            </assert_stderr>
+        </test>
+        <test>  
+            <param name="input" value="samtools_fastx-out1-2.fastq.bgz" ftype="fastqillumina.gz" />
+            <output name="output" file="out_fastq.tabular" />
+            <assert_stderr>
+                <has_line line="Failed to index compressed reference. Trying decompressed ..." negate="true" />
+                <has_line line="[E::fai_build3_core] Cannot index files compressed with gzip, please use bgzip" negate="true" />
+            </assert_stderr>
         </test>
     </tests>
     <help><![CDATA[
-**What it does**
+        **What it does**
+
+        Runs the ``samtools faidx`` command to index reference sequence in the FASTA format reference sequence.
+
+        If the input file is of ``fastq`` type, passes the --fastq flag to accomodate the ``samtools faidx`` command line tool.
 
-Runs the ``samtools faidx`` command to index reference sequence in the FASTA format reference sequence.
+        **Notes on compression**
+        - ``samtools faidx`` supports **BGZF-compressed** FASTA files (e.g. ``.fa.bgz`` / ``.fasta.bgz``).
+        - Plain ``.fasta.gz`` may need to be decompressed first, depending on how it was created.
 
-Full `documentation <https://www.htslib.org/doc/samtools-faidx.html>`_ for the faidx command.
+        Full `documentation <https://www.htslib.org/doc/samtools-faidx.html>`_ for the faidx command.
     ]]></help>
     <expand macro="citations"/>
 </tool>