SAMTOOLS IMPORT

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

Converts FASTQ files to unmapped SAM/BAM/CRAM

URL: http://www.htslib.org/doc/samtools-import.html

Example

This wrapper can be used in the following way:

rule samtools_import_pe_interleaved:
    input:
        fq="reads/{sample}.fastq.gz",
    output:
        bam="{sample}.bam",
    log:
        "{sample}.log",
    threads: 2
    params:
        extra="",
    wrapper:
        "v9.14.0/bio/samtools/import"


rule samtools_import_pe:
    input:
        fq=expand("reads/{{sample}}.{R}.fastq.gz", R=[1, 2]),
    output:
        bam="{sample}.pe.bam",
    log:
        "{sample}.pe.log",
    threads: 2
    params:
        extra="",
    wrapper:
        "v9.14.0/bio/samtools/import"


rule samtools_import_se:
    input:
        fq="reads/{sample}.1.fastq.gz",
    output:
        bam="{sample}.se.bam",
    log:
        "{sample}.se.log",
    threads: 2
    params:
        extra="",
    wrapper:
        "v9.14.0/bio/samtools/import"

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

  • samtools=1.24

  • snakemake-wrapper-utils=0.8.0

Input/Output

Input:

  • FASTQ file(s)

Output:

  • SAM/BAM/CRAM file

Params

  • extra: additional program arguments (not -@/–threads, -o or -O/–output-fmt).

Authors

  • Filipe G. Vieira

Code

__author__ = "Filipe G. Vieira"
__copyright__ = "Copyright 2026, Johannes Köster"
__license__ = "MIT"


from snakemake.shell import shell
from snakemake_wrapper_utils.samtools import get_samtools_opts

samtools_opts = get_samtools_opts(snakemake)
extra = snakemake.params.get("extra", "")
log = snakemake.log_fmt_shell(stdout=True, stderr=True, append=False)

# Parse input
fq_input = snakemake.input.fq
if not isinstance(fq_input, list):
    fq_input = [fq_input]

if len(fq_input) == 2:
    fq_input = "-1 {} -2 {}".format(*fq_input)
else:
    if snakemake.params.get("paired_end", False):
        fq_input = f"-s {fq_input[0]}"
    else:
        fq_input = f"-0 {fq_input[0]}"

shell("samtools import {samtools_opts} {extra} {fq_input} {log}")