diff trim_galore.xml @ 16:cd7e644cae1d draft default tip

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/trim_galore commit 276a0ec327f5369c16563696047f0d31577c353f"
author bgruening
date Fri, 08 Oct 2021 09:57:52 +0000
parents 084bbd8ba7b8
children
line wrap: on
line diff
--- a/trim_galore.xml	Tue Jul 30 06:26:49 2019 -0400
+++ b/trim_galore.xml	Fri Oct 08 09:57:52 2021 +0000
@@ -1,50 +1,10 @@
-<tool id="trim_galore" name="Trim Galore!" version="0.6.3" profile="17.01">
-    <!-- Wrapper compatible with Trim Galore! version 0.6.3 -->
+<tool id="trim_galore" name="Trim Galore!" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01">
     <description>Quality and adapter trimmer of reads</description>
     <macros>
-        <macro name="adapter_trimming">
-            <conditional name="trimming">
-                <param name="trimming_select" type="select" label="Adapter sequence to be trimmed">
-                    <option value="">Automatic detection</option>
-                    <option value="--illumina">Illumina universal</option>
-                    <option value="--nextera">Nextera transposase</option>
-                    <option value="--small_rna">Illumina small RNA adapters</option>
-                    <option value="user">User defined adapter sequence</option>
-                </param>
-                <when value=""/>
-                <when value="--illumina"/>
-                <when value="--nextera"/>
-                <when value="--small_rna"/>
-                <when value="user">
-                    <param name="adapter" type="text" value="AGATCGGAAGAGC" label="Adapter sequence to be trimmed off">
-                        <validator type="regex" message="Adapter sequence must contain DNA characters only (A,C,T,G or N)">^[ACTGNactgn]*$</validator>
-                    </param>
-                    <yield/>
-                </when>
-            </conditional>
-        </macro>
-        <macro name="paired_adapter_trimming">
-            <expand macro="adapter_trimming">
-                <param name="adapter2" type="text" optional="True" value="" label="Adapter sequence to be trimmed off read 2">
-                    <validator type="regex" message="Adapter sequence must contain DNA characters only (A,C,T,G or N)">^[ACTGNactgn]*$</validator>
-                </param>
-            </expand>
-            <param name="trim1" type="boolean" truevalue="--trim1" falsevalue="" checked="False" label="Trims 1 bp off every read from its 3' end." help="" />
-            <param name="three_prime_clip_R1" type="integer" value="" optional="True" label="Remove N bp from the 3' end of read 1">
-                <help>Instructs Trim Galore! to remove N bp from the 3' end of read 1 after adapter/quality trimming has been performed.
-                    This may remove some unwanted bias from the 3' end that is not directly related to adapter sequence or basecall quality.
-                    (--three_prime_clip_R1)</help>
-            </param>
-            <param name="three_prime_clip_R2" type="integer" value="" optional="True" label="Remove N bp from the 3' end of read 2">
-                <help>Instructs Trim Galore! to remove N bp from the 3' end of read 2 after
-                    adapter/quality trimming has been performed. This may remove some unwanted bias from
-                    the 3' end that is not directly related to adapter sequence or basecall quality.</help>
-            </param>
-        </macro>
+        <import>macros.xml</import>
     </macros>
-    <requirements>
-        <requirement type="package" version="0.6.3">trim-galore</requirement>
-    </requirements>
+    <expand macro="requirements" />
+    <expand macro="xrefs"/>
     <version_command>
         trim_galore --version
     </version_command>
@@ -92,6 +52,9 @@
 
         trim_galore
 
+        ## according the develpers 4 cores could be a sweet spot, anything above has diminishing returns
+        --cores \${GALAXY_SLOTS:-4}
+
         ## we only support fastqsanger
         --phred33
 
@@ -177,6 +140,18 @@
             --dont_gzip
         #end if
 
+        ## Trimming settings
+        #if $trimming.settingsType == 'custom'
+            #if $trimming.hardtrim5
+                --hardtrim5 $trimming.hardtrim5
+            #end if
+            #if $trimming.hardtrim3 
+                --hardtrim3 $trimming.hardtrim3
+            #end if
+            $trimming.clock 
+            $trimming.polyA
+        #end if
+
         ##  Trim Galore is finished, rename the output if compressed
         &&
         if [ -f input_1_trimmed.fq.gz ] ; then mv input_1_trimmed.fq.gz input_1_trimmed.fq ; fi
@@ -188,12 +163,37 @@
         if [ -f input_1_unpaired_1.fq.gz ] ; then mv input_1_unpaired_1.fq.gz input_1_unpaired_1.fq ; fi
         &&
         if [ -f input_2_unpaired_2.fq.gz ] ; then mv input_2_unpaired_2.fq.gz input_2_unpaired_2.fq ; fi
+        &&
+        if [ -f input_1.clock_UMI.R1.fq.gz ] ; then mv input_1.clock_UMI.R1.fq.gz input_1.clock_UMI.R1.fq ; fi
+        &&
+        if [ -f input_2.clock_UMI.R2.fq.gz ] ; then mv input_2.clock_UMI.R2.fq.gz input_2.clock_UMI.R2.fq ; fi
+        
+        ## Rename hardtrimmed files
+        #if $trimming.settingsType == 'custom'
+            &&
+            if [ -f input_1.${trimming.hardtrim5}bp_5prime.fq.gz ] ; then mv input_1.${trimming.hardtrim5}bp_5prime.fq.gz input_1_hardtrim.fq ; fi
+            &&
+            if [ -f input_2.${trimming.hardtrim5}bp_5prime.fq.gz ] ; then mv input_2.${trimming.hardtrim5}bp_5prime.fq.gz input_2_hardtrim.fq ; fi
+            &&
+            if [ -f input_1.${trimming.hardtrim3}bp_3prime.fq.gz ] ; then mv input_1.${trimming.hardtrim3}bp_3prime.fq.gz input_1_hardtrim.fq ; fi
+            &&
+            if [ -f input_2.${trimming.hardtrim3}bp_3prime.fq.gz ] ; then mv input_2.${trimming.hardtrim3}bp_3prime.fq.gz input_2_hardtrim.fq ; fi
+            &&
+            if [ -f input_1.${trimming.hardtrim5}bp_5prime.fq ] ; then mv input_1.${trimming.hardtrim5}bp_5prime.fq input_1_hardtrim.fq ; fi
+            &&
+            if [ -f input_2.${trimming.hardtrim5}bp_5prime.fq ] ; then mv input_2.${trimming.hardtrim5}bp_5prime.fq input_2_hardtrim.fq ; fi
+            &&
+            if [ -f input_1.${trimming.hardtrim3}bp_3prime.fq ] ; then mv input_1.${trimming.hardtrim3}bp_3prime.fq input_1_hardtrim.fq ; fi
+            &&
+            if [ -f input_2.${trimming.hardtrim3}bp_3prime.fq ] ; then mv input_2.${trimming.hardtrim3}bp_3prime.fq input_2_hardtrim.fq ; fi
+        #end if
 
         ##  Trim Galore! run is finished. Move the report files to the proper place
         #if $params.settingsType == "custom" and $params.report:
             &&
             cat ./*_trimming_report.txt > '$report_file'
         #end if
+        && ls -lah
     ]]></command>
     <inputs>
         <!-- Input Parameters -->
@@ -226,7 +226,7 @@
         </conditional>
 
         <conditional name="params">
-            <param name="settingsType" type="select" label="Trim Galore! advanced settings" help="You can use the default settings or set custom values for any of Trim Galore!'s parameters.">
+            <param name="settingsType" type="select" label="Advanced settings" help="You can use the default settings or set custom values for any of Trim Galore!'s parameters.">
               <option value="default">Use defaults</option>
               <option value="custom">Full parameter list</option>
             </param>
@@ -261,7 +261,7 @@
         </conditional>  <!-- params -->
 
         <conditional name="rrbs">
-            <param name="settingsType" type="select" label="RRBS specific settings">
+            <param name="settingsType" type="select" label="RRBS specific settings" help="You can use the default settings or set custom values for any of Trim Galore!'s parameters.">
               <option value="default">Use defaults (no RRBS)</option>
               <option value="custom">Full parameter list</option>
             </param>
@@ -274,35 +274,84 @@
                     label="Screen quality-trimmed sequences for 'CAA' or 'CGA' at the start of the read and, if found, removes the first two basepairs" />
             </when>  <!-- full -->
         </conditional>  <!-- params -->
+        <!--Trimming options-->
+        <conditional name="trimming">
+            <param name="settingsType" type="select" label="Trimming settings" help="You can use the default settings or set custom values for any of Trim Galore!'s parameters.">
+                <option value="default">Use defaults</option>
+                <option value="custom">Full parameter list</option>
+            </param>
+            <when value="default" />
+            <when value="custom">
+                <param argument="--hardtrim5" type="integer" min="1" optional="true" label="Hard-trimm 5' ends" help="Instead of performing adapter-/quality trimming, this option will simply hard-trim sequences to N bp at the 5'-end. Once hard-trimming of files is complete, it will exit" />
+                <param argument="--hardtrim3" type="integer" min="1" optional="true" label="Hard-trimm 3' ends" help="Instead of performing adapter-/quality trimming, this option will simply hard-trim sequences to N bp at the 3'-end. Once hard-trimming of files is complete, it will exit" />
+                <param argument="--clock" type="boolean" truevalue="--clock" falsevalue="" label="Mouse epigenetic clock mode" help="In this mode, reads are trimmed in a specific way that is currently used for the Mouse Epigenetic Clock"/>
+                <param argument="--polyA" type="boolean" truevalue="--polyA" falsevalue="" label="Remove polyA tails" help="This is a new, still experimental, trimming mode to identify and remove poly-A tails from sequences" />
+            </when>
+        </conditional>
     </inputs>
 
     <outputs>
         <data format_source="input_singles" name="trimmed_reads_single" from_work_dir="input_1_trimmed.fq" label="${tool.name} on ${on_string}: trimmed reads">
             <filter>singlePaired['sPaired'] == "single"</filter>
+            <filter>trimming['hardtrim3'] == '' and trimming['hardtrim5'] == ''</filter>
         </data>
 
+        <data format_source="input_singles" name="hardtrim_reads_single" from_work_dir="input_1_hardtrim.fq" label="${tool.name} on ${on_string}: hard-trimmed reads">
+            <filter>singlePaired['sPaired'] == "single"</filter>
+            <filter>trimming['settingsType'] == "custom"</filter>
+            <filter>trimming['hardtrim3'] != '' or trimming['hardtrim5'] != ''</filter>
+        </data>
+
+        <!--Trimmed reads paired collection-->
         <collection name="trimmed_reads_paired_collection" type="paired" label="${tool.name} on ${on_string}: paired reads">
             <data name="forward" format_source="input_mate_pairs['forward']" from_work_dir="input_1_val_1.fq" />
             <data name="reverse" format_source="input_mate_pairs['forward']" from_work_dir="input_2_val_2.fq" />
             <filter>singlePaired['sPaired'] == "paired_collection"</filter>
+            <filter>trimming['hardtrim3'] == '' and trimming['hardtrim5'] == ''</filter>
+            <filter>trimming['clock'] == False</filter>
         </collection>
-
+        
+        <!--Unpaired reads collection-->
         <collection name="trimmed_reads_unpaired_collection" type="paired" label="${tool.name} on ${on_string}: unpaired reads">
             <data name="forward" format_source="input_mate_pairs['forward']" from_work_dir="input_1_unpaired_1.fq" />
             <data name="reverse" format_source="input_mate_pairs['forward']" from_work_dir="input_2_unpaired_2.fq" />
             <filter>params['settingsType'] == "custom"</filter>
             <filter>params['retain_unpaired']['retain_unpaired_select'] == "retain_unpaired_output"</filter>
             <filter>singlePaired['sPaired'] == "paired_collection"</filter>
+            <filter>trimming['hardtrim3'] == '' and trimming['hardtrim5'] == ''</filter>
         </collection>
 
+        <!--Hard-trimmed reads paired collection-->
+        <collection name="hardtrimmed_reads_paired_collection" type="paired" label="${tool.name} on ${on_string}: hard-trimmed paired reads">
+            <data name="forward" format_source="input_mate_pairs['forward']" from_work_dir="input_1_hardtrim.fq" />
+            <data name="reverse" format_source="input_mate_pairs['forward']" from_work_dir="input_2_hardtrim.fq" />
+            <filter>singlePaired['sPaired'] == "paired_collection"</filter>
+            <filter>trimming['settingsType'] == "custom"</filter>
+            <filter>trimming['hardtrim3'] or trimming['hardtrim5']</filter>
+        </collection>
+
+        <!--Mouse epigenetic reads paired collection-->
+        <collection name="mouse_reads_paired_collection" type="paired" label="${tool.name} on ${on_string}: MEC paired reads">
+            <data name="forward" format_source="input_mate_pairs['forward']" from_work_dir="input_1.clock_UMI.R1.fq" />
+            <data name="reverse" format_source="input_mate_pairs['forward']" from_work_dir="input_2.clock_UMI.R2.fq" />
+            <filter>singlePaired['sPaired'] == "paired_collection"</filter>
+            <filter>trimming['settingsType'] == "custom"</filter>
+            <filter>trimming['clock']</filter>
+        </collection>
+
+
         <data format_source="input_mate1" name="trimmed_reads_pair1" from_work_dir="input_1_val_1.fq"
             label="${tool.name} on ${on_string}: trimmed reads pair 1">
             <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['hardtrim3'] == '' and trimming['hardtrim5'] == ''</filter>
+            <filter>trimming['clock'] == False</filter>
         </data>
 
         <data format_source="input_mate2" name="trimmed_reads_pair2" from_work_dir="input_2_val_2.fq"
             label="${tool.name} on ${on_string}: trimmed reads pair 2">
             <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['hardtrim3'] == '' and trimming['hardtrim5'] == ''</filter>
+            <filter>trimming['clock'] == False</filter>
         </data>
 
         <data format_source="input_mate1" name="unpaired_reads_1" from_work_dir="input_1_unpaired_1.fq"
@@ -318,6 +367,36 @@
             <filter>params['retain_unpaired']['retain_unpaired_select'] == "retain_unpaired_output"</filter>
             <filter>singlePaired['sPaired'] == "paired"</filter>
         </data>
+        <!--Hard-trimmed paired reads-->
+        <data format_source="input_mate1" name="hardtrimmed_reads_pair1" from_work_dir="input_1_hardtrim.fq"
+            label="${tool.name} on ${on_string}: hard-trimmed reads pair 1">
+            <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['settingsType'] == 'custom'</filter>
+            <filter>trimming['hardtrim3'] or trimming['hardtrim5']</filter>
+        </data>
+
+        <data format_source="input_mate2" name="hardtrimmed_reads_pair2" from_work_dir="input_2_hardtrim.fq"
+            label="${tool.name} on ${on_string}: hard-trimmed reads pair 2">
+            <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['settingsType'] == 'custom'</filter>
+            <filter>trimming['hardtrim3'] or trimming['hardtrim5']</filter>
+        </data>
+
+        <!--Mouse epigenetic mode paired reads-->
+        <data format_source="input_mate1" name="mec_reads_pair1" from_work_dir="input_1.clock_UMI.R1.fq"
+            label="${tool.name} on ${on_string}: MEC reads pair 1">
+            <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['settingsType'] == 'custom'</filter>
+            <filter>trimming['clock']</filter>
+        </data>
+
+        <data format_source="input_mate2" name="mec_reads_pair2" from_work_dir="input_2.clock_UMI.R2.fq"
+            label="${tool.name} on ${on_string}: MEC reads pair 2">
+            <filter>singlePaired['sPaired'] == "paired"</filter>
+            <filter>trimming['settingsType'] == 'custom'</filter>
+            <filter>trimming['clock']</filter>
+        </data>
+
         <data format="txt" name="report_file" label="${tool.name} on ${on_string}: report file">
             <filter>params['settingsType'] == "custom"</filter>
             <filter>params['report'] == True</filter>
@@ -325,50 +404,50 @@
     </outputs>
 
     <tests>
-        <test>
+        <test expect_num_outputs="2">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
             <param name="sPaired" value="single" />
             <param name="settingsType" value="custom" />
             <param name="report" value="true" />
             <output name="trimmed_reads_single" file="sanger_full_range_results1.fastqsanger" ftype="fastqsanger"/>
-            <output name="report_file" file="sanger_full_range_report_results1.txt" ftype="txt" lines_diff="8" />
+            <output name="report_file" file="sanger_full_range_report_results1.txt" ftype="txt" lines_diff="12" />
         </test>
-        <test>
+        <test expect_num_outputs="2">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastq.gz" ftype="fastqsanger.gz" />
             <param name="sPaired" value="single" />
             <param name="settingsType" value="custom" />
             <param name="report" value="true" />
             <output name="trimmed_reads_single" file="sanger_full_range_results1.fastq.gz" ftype="fastqsanger.gz" decompress="true" />
-            <output name="report_file" file="sanger_full_range_report_results1gz.txt" ftype="txt" lines_diff="9" />
+            <output name="report_file" file="sanger_full_range_report_results1gz.txt" ftype="txt" lines_diff="12" />
         </test>
 
-        <test>
+        <test expect_num_outputs="1">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
             <param name="sPaired" value="single" />
             <param name="trimming_select" value="--illumina" />
             <output name="trimmed_reads_single" file="sanger_full_range_results2.fastqsanger" ftype="fastqsanger"/>
         </test>
-        <test>
+        <test expect_num_outputs="1">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastq.gz" ftype="fastqsanger.gz" />
             <param name="sPaired" value="single" />
             <param name="trimming_select" value="--illumina" />
             <output name="trimmed_reads_single" file="sanger_full_range_results2.fastq.gz" ftype="fastqsanger.gz" decompress="true" />
         </test>
 
-        <test>
+        <test expect_num_outputs="1">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
             <param name="sPaired" value="single" />
             <param name="adapter" value="AAAGAGC" />
             <output name="trimmed_reads_single" file="sanger_full_range_results3.fastqsanger" ftype="fastqsanger"/>
         </test>
-        <test>
+        <test expect_num_outputs="1">
             <param name="input_singles" value="sanger_full_range_original_sanger.fastq.gz" ftype="fastqsanger.gz" />
             <param name="sPaired" value="single" />
             <param name="adapter" value="AAAGAGC" />
             <output name="trimmed_reads_single" file="sanger_full_range_results3.fastq.gz" ftype="fastqsanger.gz" decompress="true" />
         </test>
 
-        <test>
+        <test expect_num_outputs="3">
             <param name="input_mate1" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
             <param name="input_mate2" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
             <param name="sPaired" value="paired" />
@@ -378,7 +457,7 @@
             <output name="trimmed_reads_pair2" file="paired_example_pair2_results2.fastqsanger" ftype="fastqsanger"/>
             <output name="report_file" file="paired_example_results2.txt" ftype="txt" lines_diff="24" />
         </test>
-        <test>
+        <test expect_num_outputs="3">
             <param name="input_mate1" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" />
             <param name="input_mate2" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" />
             <param name="sPaired" value="paired" />
@@ -389,7 +468,7 @@
             <output name="report_file" file="paired_example_results2gz.txt" ftype="txt" lines_diff="24" />
         </test>
 
-        <test>
+        <test expect_num_outputs="7">
             <param name="input_mate_pairs">
                 <collection type="paired">
                     <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
@@ -414,7 +493,7 @@
                 <element name="reverse" file="paired_collection_example_unpair2_results3.fastqsanger" ftype="fastqsanger"/>
             </output_collection>
         </test>
-        <test>
+        <test expect_num_outputs="7">
             <param name="input_mate_pairs">
                 <collection type="paired">
                     <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" />
@@ -439,6 +518,54 @@
                 <element name="reverse" file="paired_collection_example_unpair2_results3.fastq.gz" ftype="fastqsanger.gz" decompress="true" />
             </output_collection>
         </test>
+        <!--Test hard-trim option-->
+        <test expect_num_outputs="2">
+            <param name="input_mate1" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
+            <param name="input_mate2" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
+            <param name="sPaired" value="paired" />
+            <conditional name="trimming">
+                <param name="settingsType" value="custom" />
+                <param name="hardtrim3" value="20"/>
+            </conditional>
+            <output name="hardtrimmed_reads_pair1" file="paired_hardtrimmed3_pair1_.fastqsanger" ftype="fastqsanger"/>
+            <output name="hardtrimmed_reads_pair1" file="paired_hardtrimmed3_pair2_.fastqsanger" ftype="fastqsanger"/>
+        </test>
+        <test expect_num_outputs="2">
+            <param name="input_mate1" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
+            <param name="input_mate2" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
+            <param name="sPaired" value="paired" />
+            <conditional name="trimming">
+                <param name="settingsType" value="custom" />
+                <param name="hardtrim5" value="20"/>
+            </conditional>
+            <output name="hardtrimmed_reads_pair1" file="paired_hardtrimmed5_pair1_.fastqsanger" ftype="fastqsanger"/>
+            <output name="hardtrimmed_reads_pair1" file="paired_hardtrimmed5_pair2_.fastqsanger" ftype="fastqsanger"/>
+        </test>
+
+        <!--Test mouse epigenetic clock option-->
+        <test expect_num_outputs="2">
+            <param name="input_mate1" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
+            <param name="input_mate2" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
+            <param name="sPaired" value="paired" />
+            <conditional name="trimming">
+                <param name="settingsType" value="custom" />
+                <param name="clock" value="true"/>
+            </conditional>
+            <output name="mec_reads_pair1" file="mec_reads_pair1.fastqsanger" ftype="fastqsanger"/>
+            <output name="mec_reads_pair2" file="mec_reads_pair2.fastqsanger" ftype="fastqsanger"/>
+        </test>
+        <!--Test polyA option-->
+        <test expect_num_outputs="2">
+            <param name="input_mate1" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
+            <param name="input_mate2" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
+            <param name="sPaired" value="paired" />
+            <conditional name="trimming">
+                <param name="settingsType" value="custom" />
+                <param name="polyA" value="true"/>
+            </conditional>
+            <output name="trimmed_reads_pair1" file="trimmed_polyA_reads_pair1.fastqsanger" ftype="fastqsanger"/>
+            <output name="trimmed_reads_pair1" file="trimmed_polyA_reads_pair2.fastqsanger" ftype="fastqsanger"/>
+        </test>
     </tests>
     <help><![CDATA[
 **What it does**
@@ -452,7 +579,6 @@
  * Trim Galore! can remove sequences if they become too short during the trimming process. For paired-end files Trim Galore! removes entire sequence pairs if one (or both) of the two reads became shorter than the set length cutoff. Reads of a read-pair that are longer than a given threshold but for which the partner read has become too short can optionally be written out to single-end files. This ensures that the information of a read pair is not lost entirely if only one read is of good quality
  * Trim Galore! can trim paired-end files by 1 additional bp from the 3' end of all reads to avoid problems with invalid alignments with Bowtie 1
 
-.. _Trim Galore!: http://www.bioinformatics.babraham.ac.uk/projects/trim_galore/
 
 It is developed by Felix Krueger at the Babraham Institute.
 
@@ -591,6 +717,54 @@
     | Selecting this option for non-directional RRBS libraries will screen quality-trimmed sequences for 'CAA' or 'CGA' at the start of the read and, if found, removes the first two basepairs. Like with the option '--rrbs' this avoids using cytosine positions that were filled-in during the end-repair step. '--non_directional' requires '--rrbs' to be specified as well.
     |
     | *option --non_directional*
+
+---- 
+
+**Trim specific seetings**
+
+* **Hard-trimming mode**
+    
+    | Instead of performing adapter-/quality trimming, this option will simply hard-trim sequences to N bp at the 5' or 3' -end.
+    |
+    | *options -hardtrim5 and -hardtrim3*
+
+* **Mouse Epigenetic Clock mode**
+
+    | In this mode, reads are trimmed in a specific way that is currently used for the Mouse Epigenetic Clock (see here: `Multi-tissue DNA methylation age predictor in mouse`_). Following this, Trim Galore will exit.
+    | 
+    | In it's current implementation, the dual-UMI RRBS reads come in the following format:
+    |
+    | Read 1  5' UUUUUUUU CAGTA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF TACTG UUUUUUUU 3'
+    | Read 2  3' UUUUUUUU GTCAT FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ATGAC UUUUUUUU 5'
+    |
+    | Where UUUUUUUU is a random 8-mer unique molecular identifier (UMI), CAGTA is a constant region, and FFFFFFF... is the actual RRBS-Fragment to be sequenced. The UMIs for Read 1 (R1) and Read 2 (R2), as well as the fixed sequences (F1 or F2), are written into the read ID and removed from the actual sequence.
+    |
+    | *option --clock*
+
+* **PolyA mode**
+
+    | This is a new, still experimental, trimming mode to identify and remove poly-A tails from sequences. When selected, Trim Galore attempts to identify from the first supplied sample whether sequences contain more often a stretch of either 'AAAAAAAAAA' or 'TTTTTTTTTT'. This determines if Read 1 of a paired-end end file, or single-end files, are trimmed for PolyA or PolyT. In case of paired-end sequencing, Read2 is trimmed for the complementary base from the start of the reads.
+    | 
+    | PLEASE NOTE: The poly-A trimming mode expects that sequences were both adapter and quality trimmed before looking for Poly-A tails, and it is the user's responsibility to carry out an initial round of trimming.
+    |
+    | *option --polyA*
+
+* **Amplicon mode**
+
+    | This is a special mode of operation for paired-end data, such as required for the IMPLICON method, where a UMI sequence is getting transferred from the start of Read 2 to the readID of both reads. Following this, Trim Galore will exit.
+    | 
+    | In it's current implementation, the UMI carrying reads come in the following format:
+    |
+    | Read 1  5' FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3'
+    | Read 2  3' UUUUUUUUFFFFFFFFFFFFFFFFFFFFFFFFFFFF 5'
+    |
+    | Where UUUUUUUU is a random 8-mer unique molecular identifier (UMI) and FFFFFFF... is the actual fragment to be sequenced.
+    |
+    | *option --amplicon*
+
+.. _Trim Galore!: http://www.bioinformatics.babraham.ac.uk/projects/trim_galore/
+.. _Multi-tissue DNA methylation age predictor in mouse: https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1203-5
+
     ]]></help>
-    <citations></citations>
+    <expand macro="citations" />
 </tool>