SAMTOOLS IMPORT
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.24snakemake-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).
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}")