changeset 0:c3e3eecc8fe9 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/fastplong commit 08a54debca6a5b792e28efaaee1f7d4671556ca1
author iuc
date Tue, 06 May 2025 08:51:26 +0000
parents
children 1d34936d4497
files fastplong.xml test-data/input.fastq test-data/output.fastq test-data/output_failed_out.fastq test-data/output_reads_to_process.fastq
diffstat 5 files changed, 226 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastplong.xml	Tue May 06 08:51:26 2025 +0000
@@ -0,0 +1,170 @@
+<tool id="fastplong" name="Fastplong" version="@TOOL_VERSION@+galaxy0" profile="23.2" license="MIT">
+    <description>Filter and trim long reads</description>
+    <creator>
+        <organization name="Masaryk University" url="https://www.muni.cz/"/>
+        <person givenName="Hana" familyName="Resovska" email="499924@mail.muni.cz"/>
+    </creator>
+    <macros>
+        <token name="@TOOL_VERSION@">0.2.2</token>
+    </macros>
+    <requirements>
+        <requirement type="package" version="@TOOL_VERSION@">fastplong</requirement>
+    </requirements>
+    <command detect_errors="exit_code">
+        <![CDATA[
+        fastplong 
+        --thread \${GALAXY_SLOTS:-1}
+        --report_title 'fastplong report for $in'
+        --in '$in'
+        --out '$output'
+        #if $reads_to_process: 
+            --reads_to_process '$reads_to_process'
+        #end if
+        $disable_quality_filtering
+        $disable_adapter_trimming
+        #if $start_adapter:
+            --start_adapter '$start_adapter'
+        #end if
+        #if $end_adapter:
+            --end_adapter '$end_adapter'
+        #end if
+        #if $adapter_fasta:
+            --adapter_fasta '$adapter_fasta'
+        #end if
+        #if $distance_threshold:
+            --distance_threshold '$distance_threshold'
+        #end if
+        #if $trimming_extension:
+            --trimming_extension '$trimming_extension'
+        #end if
+        #if $trim_front:
+            --trim_front '$trim_front'
+        #end if
+        #if $trim_tail:
+            --trim_tail '$trim_tail'
+        #end if
+        $trim_poly_x
+        #if $poly_x_min_len:
+            --poly_x_min_len '$poly_x_min_len'
+        #end if
+        $cut_front
+        $cut_tail
+        #if $cut_window_size:
+            --cut_window_size '$cut_window_size'
+        #end if
+        #if $cut_mean_quality:
+            --cut_mean_quality '$cut_mean_quality'
+        #end if
+        #if $cut_front_window_size:
+            --cut_front_window_size '$cut_front_window_size'
+        #end if
+        #if $cut_front_mean_quality:
+            --cut_front_mean_quality '$cut_front_mean_quality'
+        #end if
+        #if $cut_tail_window_size:
+            --cut_tail_window_size '$cut_tail_window_size'
+        #end if
+        #if $cut_tail_mean_quality:
+            --cut_tail_mean_quality '$cut_tail_mean_quality'
+        #end if
+        #if $qualified_quality_phred:
+            --qualified_quality_phred '$qualified_quality_phred'
+        #end if
+        #if $unqualified_percent_limit:
+            --unqualified_percent_limit '$unqualified_percent_limit'
+        #end if
+        #if $n_base_limit:
+            --n_base_limit '$n_base_limit'
+        #end if
+        #if $mean_qual:
+            --mean_qual '$mean_qual'
+        #end if
+        $disable_length_filtering:
+        #if $length_required:
+            --length_required '$length_required'
+        #end if
+        #if $length_limit:
+            --length_limit '$length_limit'
+        #end if
+        $low_complexity_filter:
+        #if $complexity_threshold:
+            --complexity_threshold '$complexity_threshold'
+        #end if
+        $failed_out failed_reads.fastq
+        ]]>
+    </command>
+    <inputs>
+        <param argument="--in" type="data" format="fastq,fastq.gz" label="Input FASTQ file"/>
+        <param argument="--reads_to_process" type="integer" optional="true" label="Number of reads to process" help="Limit the number of reads to process. Useful for quick QC or creating subsets."/>
+        <param argument="--disable_quality_filtering" type="boolean" truevalue="--disable_quality_filtering" falsevalue="" checked="false" label="Disable quality filtering?" help="By default, quality filtering is enabled. Enable this option to turn it off."/>
+        <param argument="--disable_adapter_trimming" type="boolean" truevalue="--disable_adapter_trimming" falsevalue="" checked="false" label="Disable adapter trimming?" help="By default, adapter trimming is enabled. Enable this option to turn it off."/>
+        <param argument="--start_adapter" type="text" optional="true" label="Start adapter sequence (5')" help="Specify the adapter sequence at the 5' end of reads. Leave blank to auto-detect."/>
+        <param argument="--end_adapter" type="text" optional="true" label="End adapter sequence (3')" help="Specify the adapter sequence at the 3' end of reads. Leave blank to auto-detect."/>
+        <param argument="--adapter_fasta" type="data" format="fasta" optional="true" label="Adapter sequences (FASTA file)" help="Specify a FASTA file with adapter sequences to trim."/>
+        <param argument="--distance_threshold" type="float" min="0" max="1" optional="true" label="Adapter distance threshold" help="Threshold of adapter-length. Range: 0.0–1.0"/>
+        <param argument="--trimming_extension" type="integer" optional="true" label="Trimming extension length" help="Extend trimming beyond the adapter match to clean up the sequence more thoroughly. Default is 10"/>
+        <param argument="--trim_front" type="integer" optional="true" label="Trim front (5') bases" help="Trim this many bases from the start (5') of each read. Default: 0"/>
+        <param argument="--trim_tail" type="integer" optional="true" label="Trim tail (3') bases" help="Trim this many bases from the end (3') of each read. Default: 0"/>
+        <param argument="--trim_poly_x" type="boolean" truevalue="--trim_poly_x" falsevalue="" checked="false" label="Trim polyX tails?" help="Enable to trim polyX stretches at the 3' end."/>
+        <param argument="--poly_x_min_len" type="integer" optional="true" label="Minimum polyX length" help="Minimum length to detect polyX in the tail. Default: 10"/>
+        <param argument="--cut_front" type="boolean" truevalue="--cut_front" falsevalue="" checked="false" label="Enable sliding-window trimming from 5' end?" help="Trim from 5' end until window mean quality is above threshold."/>
+        <param argument="--cut_tail" type="boolean" truevalue="--cut_tail" falsevalue="" checked="false" label="Enable sliding-window trimming from 3' end?" help="Trim from 3' end until window mean quality is above threshold."/>
+        <param argument="--cut_window_size" type="integer" optional="true" label="Sliding window size" help="Window size shared by cut_front, cut_tail, cut_sliding. Default is 4"/>
+        <param argument="--cut_mean_quality" type="integer" optional="true" label="Mean quality threshold" help="Mean quality required for cutting. Default: 20"/>
+        <param argument="--cut_front_window_size" type="integer" optional="true" label="Front window size" help="Override window size for cut_front only. Default: cut_window_size"/>
+        <param argument="--cut_front_mean_quality" type="integer" optional="true" label="Front mean quality" help="Override quality threshold for cut_front only. Default: cut_mean_quality"/>
+        <param argument="--cut_tail_window_size" type="integer" optional="true" label="Tail window size" help="Override window size for cut_tail only. Default: cut_window_size"/>
+        <param argument="--cut_tail_mean_quality" type="integer" optional="true" label="Tail mean quality" help="Override quality threshold for cut_tail only. Default: cut_mean_quality"/>
+        <param argument="--qualified_quality_phred" type="integer" min="0" optional="true" label="Qualified base Phred score" help="Phred quality score that counts as qualified. Default: 15"/>
+        <param argument="--unqualified_percent_limit" type="integer" min="0" max="100" optional="true" label="Unqualified base percentage limit" help="Percent of bases allowed to be below quality threshold. Default: 40"/>
+        <param argument="--n_base_limit" type="integer" optional="true" label="N base limit" help="Reads with more than this number of N bases are discarded. Default: 5"/>
+        <param argument="--mean_qual" type="integer" optional="true" label="Minimum mean quality" help="Reads with mean quality below this are discarded. Default: 0"/>
+        <param argument="--disable_length_filtering" type="boolean" truevalue="--disable_length_filtering" falsevalue="" checked="false" label="Disable length filtering?" help="Length filtering is enabled by default. Enable this to disable it."/>
+        <param argument="--length_required" type="integer" optional="true" label="Minimum read length" help="Reads shorter than this will be discarded. Default: 15"/>
+        <param argument="--length_limit" type="integer" optional="true" label="Maximum read length" help="Reads longer than this will be discarded. Default: 0 (no limit)"/>
+        <param argument="--low_complexity_filter" type="boolean" truevalue="--low_complexity_filter" falsevalue="" checked="false" label="Enable low complexity filter?" help="Enable low complexity filtering."/>
+        <param argument="--complexity_threshold" type="integer" min="0" max="100" optional="true" label="Complexity threshold (%)" help="Minimum required sequence complexity (0–100). Default: 30"/>
+        <param argument="--failed_out" type="boolean" truevalue="--failed_out" falsevalue="" checked="false" label="Save failed reads?" help="Enable this to write failed reads to a separate FASTQ file."/>
+    </inputs>
+    <outputs>
+        <data name="output" format="fastq" label="Filtered Output FASTQ"/>
+        <data name="failed_out_reads" format="fastq" from_work_dir="failed_reads.fastq" label="Failed Reads FASTQ">
+            <filter>failed_out</filter>
+        </data>
+        <data name="json_output_default" format="json" from_work_dir="fastplong.json" label="JSON Report (default)"/>
+        <data name="html_output_default" format="html" from_work_dir="fastplong.html" label="HTML Report (default)"/>
+    </outputs>
+    <tests>
+        <test expect_num_outputs="3">
+            <param name="in" value="input.fastq"/>
+            <output name="output" file="output.fastq"/>
+        </test>
+        <test expect_num_outputs="3">
+            <param name="in" value="input.fastq"/>
+            <param name="reads_to_process" value="3"/>
+            <output name="output" file="output_reads_to_process.fastq"/>
+        </test>
+        <test expect_num_outputs="4">
+            <param name="in" value="input.fastq"/>
+            <param name="failed_out" value="true"/>
+            <output name="failed_out_reads" value="output_failed_out.fastq"/>
+        </test>
+    </tests>
+    <help>
+    **Fastplong: Filter and trim long reads**
+
+        This tool wraps the `fastplong` command-line tool to allow filtering and trimming of long reads in FASTQ format.
+
+    **Inputs**
+    - A FASTQ file containing reads and optional parameters to control trimming, quality filtering, adapter detection, and more.
+
+    **Outputs**
+    - A filtered FASTQ file with trimmed reads, HTML and JSON report and an optional FASTQ file of failed reads.
+
+    For more information, see https://github.com/OpenGene/fastplong
+    </help>
+    <citations>
+        <citation type="doi">10.1002/imt2.107</citation>
+        <citation type="doi">10.1093/bioinformatics/bty560</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.fastq	Tue May 06 08:51:26 2025 +0000
@@ -0,0 +1,24 @@
+@name
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+
+@name2
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+
+@name3
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+
+@name4
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+
+@name5
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.fastq	Tue May 06 08:51:26 2025 +0000
@@ -0,0 +1,16 @@
+@name
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+@name2
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+@name3
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+@name4
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output_failed_out.fastq	Tue May 06 08:51:26 2025 +0000
@@ -0,0 +1,4 @@
+@name5 failed_quality_filter
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output_reads_to_process.fastq	Tue May 06 08:51:26 2025 +0000
@@ -0,0 +1,12 @@
+@name
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+@name2
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE
+@name3
+AGGTGCTGCGCATACTTTTCCACGGGGATACTACTGGGTGTTACCGTGGGAATGAATCCTTTTAACCTTAGCAATACGTAAAGGTGCT
++
+///EEEEEEEEEEEEEEEEEEEEEEEEEE////EEEEEEEEEEEEE////E////EEEEEEEEE///EEEEEEEEEEEEEEEEEEEEE