CHOPPER

https://img.shields.io/badge/wrapper_version-v9.9.0-10785b https://img.shields.io/github/issues-pr/snakemake/snakemake-wrappers/bio/chopper?label=version%20update%20pull%20requests&color=1cb481

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 file

  • contam: FASTA file of contaminant sequences (optional)

Output:

  • one filtered/trimmed FASTQ/FASTQ.GZ read file

Params

  • extra: additional program arguments (for filtering/trimming options)

Authors

  • Artur Gomes

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}"
)