view trim_galore.xml @ 13:b6c00b82f623 draft

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/trim_galore commit be11349529528f508eb05073396e80c3d1cbed4d
author bgruening
date Thu, 01 Jun 2017 08:59:04 -0400
parents 1bf4789584dc
children 949f01671246
line wrap: on
line source

<tool id="trim_galore" name="Trim Galore!" version="0.4.3.1" profile="17.01">
    <!-- Wrapper compatible with Trim Galore! version 0.4.3 -->
    <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>
    </macros>
    <requirements>
        <requirement type="package" version="0.4.3">trim-galore</requirement>
    </requirements>
    <version_command>
        trim_galore --version
    </version_command>
    <command detect_errors="aggressive"><![CDATA[
        #set compressed = 'no'
        #if $singlePaired.sPaired == "single":
            #if $singlePaired.input_singles.is_of_type("fastq.gz"):
                #set read1 = 'input_1.fastq.gz'
                #set compressed = 'gz'
            #else
                #set read1 = 'input_1.fastq'
            #end if
            ln -s '${singlePaired.input_singles}' ${read1} &&
        #elif $singlePaired.sPaired == "paired":
            #if $singlePaired.input_mate1.is_of_type("fastq.gz"):
                #set read1 = 'input_1.fastq.gz'
                #set compressed = 'gz'
            #else
                #set read1 = 'input_1.fastq'
            #end if
            ln -s '${singlePaired.input_mate1}' ${read1} &&

            #if $singlePaired.input_mate2.is_of_type("fastq.gz"):
                #set read2 = 'input_2.fastq.gz'
            #else
                #set read2 = 'input_2.fastq'
            #end if
            ln -s '${singlePaired.input_mate2}' ${read2} &&
        #else:
            #if $singlePaired.input_mate_pairs.forward.is_of_type("fastq.gz"):
                #set read1 = 'input_1.fastq.gz'
                #set compressed = 'gz'
            #else
                #set read1 = 'input_1.fastq'
            #end if
            ln -s '${singlePaired.input_mate_pairs.forward}' ${read1} &&

            #if $singlePaired.input_mate_pairs.reverse.is_of_type("fastq.gz"):
                #set read2 = 'input_2.fastq.gz'
            #else
                #set read2 = 'input_2.fastq'
            #end if
            ln -s '${singlePaired.input_mate_pairs.reverse}' ${read2} &&
        #end if

        trim_galore

        ## we only support fastqsanger
        --phred33

        #if $params.settingsType == "custom":

            ## default 20
            --quality $params.quality

            ## default 1
            --stringency $params.stringency

            ## default 0.1
            -e $params.error_rate

            ## default 20
            --length $params.min_length

            #if $params.clip_R1:
                --clip_R1 $params.clip_R1
            #end if

            #if $params.clip_R2:
                --clip_R2 $params.clip_R2
            #end if

            #if $params.retain_unpaired.retain_unpaired_select == "retain_unpaired_output":
                --retain_unpaired
                --length_1 $params.retain_unpaired.length_1
                --length_2 $params.retain_unpaired.length_2
            #end if

        #end if

        ## RBBS specific options.
        #if $rrbs.settingsType == "custom":
            $rrbs.rrbs
            $rrbs.non_directional
        #end if

        --output_dir ./

        #if $params.settingsType == "custom" and not $params.report:
            --no_report_file
        #end if

        #if $singlePaired.trimming.trimming_select == 'user':
            ## default 'AGATCGGAAGAGC'
            #if $singlePaired.trimming.adapter.strip() != '':
               --adapter '$singlePaired.trimming.adapter'
            #end if
        #else:
            $singlePaired.trimming.trimming_select
        #end if

        #if $singlePaired.three_prime_clip_R1:
            --three_prime_clip_R1 $singlePaired.three_prime_clip_R1
        #end if

        #if $singlePaired.sPaired == "single":
            ## input sequence
            ${read1}
        #else:
            --paired

            $singlePaired.trim1

            #if $singlePaired.trimming.trimming_select == 'user':
                #if $singlePaired.trimming.adapter2 and $singlePaired.trimming.adapter2.strip() != '':
                    --adapter2 '$singlePaired.trimming.adapter2'
                #end if
            #end if

            #if $singlePaired.three_prime_clip_R2:
                --three_prime_clip_R2 $singlePaired.three_prime_clip_R2
            #end if

            ## input sequences
            ${read1}
            ${read2}
        #end if

        #if $compressed == 'no':
            --dont_gzip
        #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
        &&
        if [ -f input_1_val_1.fq.gz ] ; then mv input_1_val_1.fq.gz input_1_val_1.fq ; fi
        &&
        if [ -f input_2_val_2.fq.gz ] ; then mv input_2_val_2.fq.gz input_2_val_2.fq ; fi
        &&
        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

        ##  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
    ]]></command>
    <inputs>
        <!-- Input Parameters -->
        <conditional name="singlePaired">
            <param name="sPaired" type="select" label="Is this library paired- or single-end?">
                <option value="single">Single-end</option>
                <option value="paired">Paired-end</option>
                <option value="paired_collection">Paired Collection</option>
            </param>
            <when value="single">
                <param name="input_singles" type="data" format="fastqsanger,fastqsanger.gz" label="Reads in FASTQ format" />
                <expand macro="adapter_trimming"/>

                <param name="three_prime_clip_R1" type="integer" value="" optional="True" label="Remove N bp from the 3' end">
                    <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>
            </when>
            <when value="paired">
                <param name="input_mate1" type="data" format="fastqsanger,fastqsanger.gz" label="Reads in FASTQ format" />
                <param name="input_mate2" type="data" format="fastqsanger,fastqsanger.gz" label="Reads in FASTQ format" />
                <expand macro="paired_adapter_trimming" />
            </when>
            <when value="paired_collection">
                <param name="input_mate_pairs" format="fastqsanger,fastqsanger.gz" type="data_collection" collection_type="paired"
                    label="Select a paired collection" help="See help section for an explanation of dataset collections"/>
                <expand macro="paired_adapter_trimming" />
            </when>
        </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.">
              <option value="default">Use defaults</option>
              <option value="custom">Full parameter list</option>
            </param>
            <when value="default" />
            <!-- Full/advanced params. -->
            <when value="custom">
                <param name="quality" type="integer" value="20" label="Trim low-quality ends from reads in addition to adapter removal (Enter phred quality score threshold)"
                    help="For more information please see below." />
                <param name="stringency" type="integer" value="1" label="Overlap with adapter sequence required to trim a sequence" />
                <param name="error_rate" type="float" value="0.1" label="Maximum allowed error rate" />
                <param name="min_length" type="integer" value="20" label="Discard reads that became shorter than length N" />

                <param name="clip_R1" type="integer" optional="True" min="0" label="Instructs Trim Galore! to remove N bp from the 5' end of read 1" />
                <param name="clip_R2" type="integer" optional="True" min="0" label="Instructs Trim Galore! to remove N bp from the 5' end of read 2 (Only for paired-end reads)" />

                <param name="report" type="boolean" truevalue="true" falsevalue="false" checked="False" label="Generate a report file" help="" />

                <conditional name="retain_unpaired">
                    <param name="retain_unpaired_select" type="select" label="specify if you would like to retain unpaired reads">
                      <option value="no_output">Do not output unpaired reads</option>
                      <option value="retain_unpaired_output">Output unpaired reads</option>
                    </param>
                    <when value="no_output" />
                    <!-- Output params. -->
                    <when value="retain_unpaired_output">
                        <param name="length_1" type="integer" value="35" label="Unpaired single-end read length cutoff needed for read 1 to be written" />
                        <param name="length_2" type="integer" value="35" label="Unpaired single-end read length cutoff needed for read 2 to be written" />
                    </when>  <!-- output -->
                </conditional>  <!-- retain_unpaired -->

            </when>  <!-- full -->
        </conditional>  <!-- params -->

        <conditional name="rrbs">
            <param name="settingsType" type="select" label="RRBS specific settings">
              <option value="default">Use defaults (no RRBS)</option>
              <option value="custom">Full parameter list</option>
            </param>
            <when value="default" />
            <!-- Full/advanced params. -->
            <when value="custom">
                <param name="rrbs" type="boolean" truevalue="--rrbs" falsevalue="" checked="True"
                    label="Specifies that the input file was an MspI digested RRBS sample" />
                <param name="non_directional" type="boolean" truevalue="--non_directional" falsevalue="" checked="False"
                    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 -->
    </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>
        </data>

        <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>
        </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>
        </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>
        </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>
        </data>

        <data format_source="input_mate1" name="unpaired_reads_1" from_work_dir="input_1_unpaired_1.fq"
            label="${tool.name} on ${on_string}: unpaired reads (1)">
            <filter>params['settingsType'] == "custom"</filter>
            <filter>params['retain_unpaired']['retain_unpaired_select'] == "retain_unpaired_output"</filter>
            <filter>singlePaired['sPaired'] == "paired"</filter>
        </data>

        <data format_source="input_mate2" name="unpaired_reads_2" from_work_dir="input_2_unpaired_2.fq"
            label="${tool.name} on ${on_string}: unpaired reads (2)">
            <filter>params['settingsType'] == "custom"</filter>
            <filter>params['retain_unpaired']['retain_unpaired_select'] == "retain_unpaired_output"</filter>
            <filter>singlePaired['sPaired'] == "paired"</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>
        </data>
    </outputs>

    <tests>
        <test>
            <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" />
        </test>
        <test>
            <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" compare="sim_size" delta="0"/>
            <output name="report_file" file="sanger_full_range_report_results1gz.txt" ftype="txt" lines_diff="9" />
        </test>

        <test>
            <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>
            <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" compare="sim_size" delta="0"/>
        </test>

        <test>
            <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>
            <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" compare="sim_size" delta="0"/>
        </test>

        <test>
            <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" />
            <param name="settingsType" value="custom" />
            <param name="report" value="true" />
            <output name="trimmed_reads_pair1" file="paired_example_pair1_results2.fastqsanger" ftype="fastqsanger"/>
            <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>
            <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" />
            <param name="settingsType" value="custom" />
            <param name="report" value="true" />
            <output name="trimmed_reads_pair1" file="paired_example_pair1_results2.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
            <output name="trimmed_reads_pair2" file="paired_example_pair2_results2.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
            <output name="report_file" file="paired_example_results2gz.txt" ftype="txt" lines_diff="24" />
        </test>

        <test>
            <param name="input_mate_pairs">
                <collection type="paired">
                    <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
                    <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
                </collection>
            </param>

            <param name="sPaired" value="paired_collection" />
            <param name="settingsType" value="custom" />
            <param name="report" value="true" />
            <param name="retain_unpaired_select" value="retain_unpaired_output" />

            <output name="report_file" file="paired_collection_example_results3.txt" ftype="txt" lines_diff="24" />

            <output_collection name="trimmed_reads_paired_collection" type="paired">
                <element name="forward" file="paired_collection_example_pair1_results3.fastqsanger" ftype="fastqsanger"/>
                <element name="reverse" file="paired_collection_example_pair2_results3.fastqsanger" ftype="fastqsanger"/>
            </output_collection>

            <output_collection name="trimmed_reads_unpaired_collection" type="paired">
                <element name="forward" file="paired_collection_example_unpair1_results3.fastqsanger" ftype="fastqsanger"/>
                <element name="reverse" file="paired_collection_example_unpair2_results3.fastqsanger" ftype="fastqsanger"/>
            </output_collection>
        </test>
        <test>
            <param name="input_mate_pairs">
                <collection type="paired">
                    <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" />
                    <element name="reverse" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" />
                </collection>
            </param>

            <param name="sPaired" value="paired_collection" />
            <param name="settingsType" value="custom" />
            <param name="report" value="true" />
            <param name="retain_unpaired_select" value="retain_unpaired_output" />

            <output name="report_file" file="paired_collection_example_results3gz.txt" ftype="txt" lines_diff="25" />

            <output_collection name="trimmed_reads_paired_collection" type="paired">
                <element name="forward" file="paired_collection_example_pair1_results3.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
                <element name="reverse" file="paired_collection_example_pair2_results3.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
            </output_collection>

            <output_collection name="trimmed_reads_unpaired_collection" type="paired">
                <element name="forward" file="paired_collection_example_unpair1_results3.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
                <element name="reverse" file="paired_collection_example_unpair2_results3.fastq.gz" ftype="fastqsanger.gz" compare="sim_size" delta="30"/>
            </output_collection>
        </test>
    </tests>
    <help><![CDATA[
**What it does**

`Trim Galore!`_ is a wrapper script to automate quality and adapter trimming as well as quality control, with some added functionality to remove biased methylation positions for RRBS sequence files (for directional, non-directional (or paired-end) sequencing). It's main features are:

 * For adapter trimming, Trim Galore! uses the first 13 bp of Illumina standard adapters ('AGATCGGAAGAGC') by default (suitable for both ends of paired-end libraries), but accepts other adapter sequence, too
 * For MspI-digested RRBS libraries, Trim Galore! performs quality and adapter trimming in two subsequent steps. This allows it to remove 2 additional bases that contain a cytosine which was artificially introduced in the end-repair step during the library preparation
 * For any kind of FASTQ file other than MspI-digested RRBS, Trim Galore! can perform single-pass adapter and quality trimming
 * The Phred quality of basecalls and the stringency for adapter removal can be specified individually
 * 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.

----

**Main Settings**

* **Adapter sequence to be trimmed**

  * **Automatic detection**

      | Adapter sequence to be trimmed. Trim Galore will try to auto-detect whether the Illumina universal, Nextera transposase or Illumina small RNA adapter sequence was used.

  * **Illumina universal**

      | Adapter sequence to be trimmed is the first 13bp of the Illumina universal adapter 'AGATCGGAAGAGC' instead of the default auto-detection of adapter sequence.
      |
      | *option --illumina*

  * **Nextera transposase**

      | Adapter sequence to be trimmed is the first 12bp of the Nextera adapter 'CTGTCTCTTATA' instead of the default auto-detection of adapter sequence.
      |
      | *option --nextera*

  * **Illumina small RNA adapters**

      | Adapter sequence to be trimmed is the first 12bp of the Illumina Small RNA 3' Adapter 'TGGAATTCTCGG' instead of the default auto-detection of adapter sequence. Selecting to trim smallRNA adapters will also lower the --length value to 18bp. If the smallRNA libraries are paired-end then -a2 will be set to the Illumina small RNA 5' adapter automatically ('GATCGTCGGACT') unless -a 2 had been defined explicitly.
      |
      | *option --small_rna*

  * **User defined adapter trimming**

      | Adapter sequence to be trimmed is the sequence entered by the user instead of the default auto-detection of adapter sequence.
      |
      | *option -a*

* **If Single-End Reads**

  * **Remove <int> bp from the 3' end**

      | <int> Instructs Trim Galore to remove <int> bp from the 3' end of read 1 (or single-end reads) 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. Default: OFF.
      |
      | *option --three_prime_clip_R1*

* **If Paired-End Reads**

  * **Trims 1 bp off every read from its 3' end**

      | This may be needed for FastQ files that are to be aligned as paired-end data with Bowtie. This is because Bowtie (1) regards alignments like this:
      |
      |   R1 --------------------------->
      |   R2 <---------------------------
      |
      | or this:
      |
      |   R1 ----------------------->
      |   R2 <-----------------
      |
      | as invalid (whenever a start/end coordinate is contained within the other read).
      |
      | *option --t*

  * **Remove <int> bp from the 3' end of read 1**

      | <int> Instructs Trim Galore to remove <int> bp from the 3' end of read 1 (or single-end reads) 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. Default: OFF.
      |
      | *option --three_prime_clip_R1*

  * **Remove <int> bp from the 3' end of read 2**

      | <int> Instructs Trim Galore to remove <int> 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. Default: OFF.
      |
      | *option --three_prime_clip_R2*

----

**Advanced Settings**

* **Trim low-quality ends from reads in addition to adapter removal**

    | For RRBS samples, quality trimming will be performed first, and adapter trimming is carried in a second round. Other files are quality and adapter trimmed in a single pass. The algorithm is the same as the one used by BWA (Subtract <INT> from all qualities; compute partial sums from all indices to the end of the sequence; cut sequence at the index at which the sum is minimal). Default Phred score: 20.
    |
    | *option -q*

* **Overlap with adapter sequence required to trim a sequence**

    | Defaults to a very stringent setting of '1', i.e. even a single bp of overlapping sequence will be trimmed of the 3' end of any read.
    |
    | *option -s*

* **Maximum allowed error rate**

    | (no. of errors divided by the length of the matching region) (default: 0.1).
    |
    | *option -e*

* **Discard reads that became shorter than length <INT>**

    | because of either quality or adapter trimming. A value of '0' effectively disables this behaviour. Default: 20 bp.
    |
    | For paired-end files, both reads of a read-pair need to be longer than <INT> bp to be printed out to validated paired-end files (see option --paired). If only one read became too short there is the possibility of keeping such unpaired single-end reads (see --retain_unpaired). Default pair-cutoff: 20 bp.
    |
    | *option --length*

* **Instructs Trim Galore! to remove INT bp from the 5' end of read 1**

    | Instructs Trim Galore to remove <INT> bp from the 5' end of read 1 (or single-end reads). This may be useful if the qualities were very poor, or if there is some sort of unwanted bias at the 5' end. Default: OFF.
    |
    | *option --clip_R1*

* **Instructs Trim Galore! to remove INT bp from the 5' end of read 2**

    | Instructs Trim Galore to remove <int> bp from the 5' end of read 2 (paired-end reads only). This may be useful if the qualities were very poor, or if there is some sort of unwanted bias at the 5' end. For paired-end BS-Seq, it is recommended to remove the first few bp because the end-repair reaction may introduce a bias towards low methylation. Please refer to the M-bias plot section in the Bismark User Guide for some examples. Default: OFF.
    |
    | *option --clip_R2*

* **Specify if you would like to retain unpaired reads**

    | If only one of the two paired-end reads became too short, the longer read will be written to either '.unpaired_1.fq' or '.unpaired_2.fq' output files. The length cutoff for unpaired single-end reads is governed by the parameters -r1/--length_1 and -r2/--length_2. Default: OFF.
    |
    | *option --retained_unpaired*

----

**RRBS specific settings**

* **Specifies that the input file was an MspI digested RRBS sample (recognition site: CCGG)**

    | Sequences which were adapter-trimmed will have a further 2 bp removed from their 3' end. This is to avoid that the filled-in C close to the second MspI site in a sequence is used for methylation calls. Sequences which were merely trimmed because of poor quality will not be shortened further.
    |
    | *option -rrbs*

* **Screen quality-trimmed sequences for 'CAA' or 'CGA' at the start of the read and, if found, removes the first two basepairs**

    | 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*
    ]]></help>
    <citations></citations>
</tool>