CHOPPER
Tool for filtering and trimming long reads.
URL: https://github.com/wdecoster/chopper
Example
This wrapper can be used in the following way:
rule chopper_filter:
input:
fq="data/reads.fastq",
output:
out_reads="treated/filter.fastq",
log:
"logs/chopper/filter.log",
threads: 4
resources:
mem_mb=1024,
params:
extra="--minlength 8 --quality 20",
wrapper:
"v9.9.0/bio/chopper"
rule chopper_contam:
input:
fq="data/reads_contam.fastq",
contam="data/contam.fa",
output:
out_reads="treated/contam.fastq",
log:
"logs/chopper/contam.log",
threads: 4
resources:
mem_mb=1024,
params:
extra="",
wrapper:
"v9.9.0/bio/chopper"
rule chopper_filter_gz:
input:
fq="data/reads.fastq",
output:
out_reads="treated/filter.fastq.gz",
log:
"logs/chopper/filter.gz.log",
threads: 4
resources:
mem_mb=1024,
params:
extra="--minlength 8 --quality 20",
wrapper:
"v9.9.0/bio/chopper"
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.
Software dependencies
chopper=0.13.0
Input/Output
Input:
fq: one FASTQ/FASTQ.GZ read filecontam: FASTA file of contaminant sequences (optional)
Output:
one filtered/trimmed FASTQ/FASTQ.GZ read file
Params
extra: additional program arguments (for filtering/trimming options)
Code
"""Snakemake wrapper for chopper."""
__author__ = "Artur Gomes"
__copyright__ = "Copyright 2026, Artur Gomes"
__email__ = "arafaelogomes@gmail.com"
__license__ = "MIT"
from snakemake.shell import shell
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=False, stderr=True)
contam = snakemake.input.get("contam", "")
if contam:
contam = f"--contam {contam}"
pipe_gz = "| gzip -c" if snakemake.output[0].endswith(".gz") else ""
shell(
"chopper"
" --threads {snakemake.threads}"
" {contam}"
" --input {snakemake.input.fq:q}"
" {extra}"
" {pipe_gz}"
" > {snakemake.output[0]:q}"
" {log}"
)