TRIMMOMATIC PE
Trim reads with Trimmomatic.
URL: http://www.usadellab.org/cms/?page=trimmomatic
Example
This wrapper can be used in the following way:
rule trimmomatic_pe_fq_fq:
input:
r1="reads/{sample}.1.fastq",
r2="reads/{sample}.2.fastq",
output:
r1="trimmed/pe/fq_fq/{sample}.1.fastq",
r2="trimmed/pe/fq_fq/{sample}.2.fastq",
# reads where trimming entirely removed the mate
r1_unpaired="trimmed/pe/fq_fq/{sample}.1.unpaired.fastq",
r2_unpaired="trimmed/pe/fq_fq/{sample}.2.unpaired.fastq",
log:
"logs/trimmomatic/pe/fq_fq/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_pe_fq_gz:
input:
r1="reads/{sample}.1.fastq",
r2="reads/{sample}.2.fastq",
output:
r1="trimmed/pe/fq_gz/{sample}.1.fastq.gz",
r2="trimmed/pe/fq_gz/{sample}.2.fastq.gz",
# reads where trimming entirely removed the mate
r1_unpaired="trimmed/pe/fq_gz/{sample}.1.unpaired.fastq.gz",
r2_unpaired="trimmed/pe/fq_gz/{sample}.2.unpaired.fastq.gz",
log:
"logs/trimmomatic/pe/fq_gz/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
compression_level="-9",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_pe_gz_fq:
input:
r1="reads/{sample}.1.fastq.gz",
r2="reads/{sample}.2.fastq.gz",
output:
r1="trimmed/pe/gz_fq/{sample}.1.fastq",
r2="trimmed/pe/gz_fq/{sample}.2.fastq",
# reads where trimming entirely removed the mate
r1_unpaired="trimmed/pe/gz_fq/{sample}.1.unpaired.fastq",
r2_unpaired="trimmed/pe/gz_fq/{sample}.2.unpaired.fastq",
log:
"logs/trimmomatic/pe/gz_fq/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_pe_gz_gz:
input:
r1="reads/{sample}.1.fastq.gz",
r2="reads/{sample}.2.fastq.gz",
output:
r1="trimmed/pe/gz_gz/{sample}.1.fastq.gz",
r2="trimmed/pe/gz_gz/{sample}.2.fastq.gz",
# reads where trimming entirely removed the mate
r1_unpaired="trimmed/pe/gz_gz/{sample}.1.unpaired.fastq.gz",
r2_unpaired="trimmed/pe/gz_gz/{sample}.2.unpaired.fastq.gz",
log:
"logs/trimmomatic/pe/gz_gz/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
compression_level="-9",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_se_fq_fq:
input:
"reads/{sample}.fastq",
output:
"trimmed/se/fq_fq/{sample}.fastq",
log:
"logs/trimmomatic/se/fq_fq/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_se_fq_gz:
input:
"reads/{sample}.fastq",
output:
"trimmed/se/fq_gz/{sample}.fastq.gz",
log:
"logs/trimmomatic/se/fq_gz/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# compression levels from -0 to -9 and -11
compression_level="-5",
# optional parameters
extra="",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_se_gz_fq:
input:
"reads/{sample}.fastq.gz",
output:
"trimmed/se/gz_fq/{sample}.fastq",
log:
"logs/trimmomatic/se/gz_fq/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
rule trimmomatic_se_gz_gz:
input:
"reads/{sample}.fastq.gz",
output:
"trimmed/se/gz_gz/{sample}.fastq.gz",
log:
"logs/trimmomatic/se/gz_gz/{sample}.log",
params:
# list of trimmers (see manual)
trimmer=["TRAILING:3"],
# optional parameters
extra="",
# optional compression levels from -0 to -9 and -11
compression_level="-9",
threads: 32
resources:
mem_mb=1024,
wrapper:
"v9.4.2/bio/trimmomatic"
Note that input, output and log file paths can be chosen freely.
When running with
snakemake --use-conda
the software dependencies will be automatically deployed into an isolated environment before execution.
Notes
For PE (paired-end) trimming, all output files need to be specified.
Software dependencies
trimmomatic=0.40snakemake-wrapper-utils=0.8.0
Input/Output
Input:
r1: fastq(gz) filer2: fastq(gz) file (if PE)
Output:
r1: trimmed R1 fastq(gz) filer2: trimmed R2 fastq(gz) file (if PE)r1_unpaired: unpaired R1 fastq(gz) file (if PE)r2_unpaired: unpaired R2 fastq(gz) file (if PE)
Params
trimmer: trimming stepsextra: additional program arguments
Code
__author__ = "Johannes Köster, Jorge Langa"
__copyright__ = "Copyright 2016, Johannes Köster"
__email__ = "koester@jimmy.harvard.edu"
__license__ = "MIT"
from snakemake.shell import shell
from snakemake_wrapper_utils.java import get_java_opts
extra = snakemake.params.get("extra", "")
java_opts = get_java_opts(snakemake)
log = snakemake.log_fmt_shell(stdout=True, stderr=True)
compression_level = snakemake.params.get("compression_level", "-5")
trimmer = " ".join(snakemake.params.trimmer)
if snakemake.input.get("r2", False):
trim_mode = "PE"
in_files = [snakemake.input.r1, snakemake.input.r2]
out_files = [
snakemake.output.r1,
snakemake.output.r1_unpaired,
snakemake.output.r2,
snakemake.output.r2_unpaired,
]
else:
trim_mode = "SE"
in_files = [snakemake.input[0]]
out_files = [snakemake.output[0]]
shell(
"trimmomatic {trim_mode}"
" -threads {snakemake.threads}"
" {java_opts}"
" {extra}"
" {in_files}"
" {out_files}"
" {trimmer}"
" {log}"
)