Skip to main content

Prismalign

N-color nucleotide-conversion alignment engine with pluggable backends.

Prismalign maps sequencing reads from any nucleotide-conversion chemistry (bisulfite-seq C→T, SLAM-seq T→C, m6A / A-to-I A→G, MK/KM dual-base, or a custom 3rd channel) using a HISAT-3N-style strategy:

  1. build a converted reference index (scheme.ref_from → ref_to)
  2. transform each read per color channel and align it to the converted index via a pluggable backend (bwamem by default; a built-in native C k-mer backend; WFA2-lib; minimap2/mappy optional)
  3. re-score every hit against the original reference so that real conversions are rewarded (not counted as mismatches), emitting a color-correct MD plus per-channel Y/Z counts in BAM tags.

All per-read kernels are C (bwamem / WFA2-lib / the built-in k-mer aligner); the Python layer is a thin, friendly wrapper.

Install

pip install -e .              # bwamem + built-in C k-mer backends
pip install -e "./[mappy]"    # + minimap2 backend

Usage — Python (clean wrapper)

import prismalign as ps

# one-shot mapping -> BAM (builds indexes, maps, cleans up)
ps.map_reads("reads.fq", "ref.fa", "out.bam",
             scheme="MK", backend="bwamem", threads=4)

# object API / reuse
with ps.NColorMapper(scheme=ps.BS, backend="python") as mapper:
    mapper.map_file("reads.fq", ref_files=["ref.fa"], output_files=["bs.bam"])

Usage — CLI

# classic two-color (MK: A->G + C->T) on bwamem
prismalign map -s MK --backend bwamem -r ref.fa -o out.bam reads.fq

# bisulfite-seq (3-nt single channel C->T)
prismalign map -s BS -r genome.fa -o bs.bam --index-dir idx reads.fq

# parallel (2 copies of the reads, byte-identical output to -t 1)
prismalign map -s MK -r ref.fa -o out.bam -t 4 reads.fq

# list built-in schemes
prismalign schemes

Schemes

name reference index channels use case
MK AC→GT 2 dual-base conversion A→G + C→T (classic two-color)
KM GT→AC 2 reverse of MK
BS C→T 1 bisulfite-seq (3-nt)
SLAM T→C 1 SLAM-seq
A2G A→G 1 m6A / A-to-I editing
THREE AC→GT 3 three-color demo (add your 3rd base pair in schemes.py)

Python API

from prismalign import NColorMapper, BS

mapper = NColorMapper(scheme=BS, backend="bwamem", index_dir="idx")
mapper.map_file(r1_file="reads.fq", ref_files=["genome.fa"],
                output_files=["out.bam"])

Backends

Prismalign's engine only needs align() -> [RawHit] from a backend (re-scoring against the original reference is engine-side), so adding one is easy:

backend engine notes
bwamem BWA-MEM via the bwamem package default, fast C backend
python native C k-mer kernel (python/pyalign.c) fast built-in reference aligner (~150x the old pure-Python one); no extra deps
wfa2 WFA2-lib (vendored v2.3.6, MIT) compiled in-process exact gapped (indel-aware) wavefront alignment; no CLI wrapper
mappy minimap2 via mappy official minimap2 Python binding
minibwa lh3/minibwa (bwa-mem successor) via PyO3 pip binding minibwa (fg-labs) ~2-3x faster than bwa-mem; pip install minibwa
sam generic SAM-emitting mapper (subprocess) wrap bwa, bwa-mem2, bowtie2, hisat2, … via a command template
strobealign ksahlin/strobealign (Rust, ultra-fast short reads) .sti index, SAM out; subprocess

Direct vs CLI backends. bwamem, minibwa, mappy, wfa2 and python are direct/in-process (native bindings / compiled C). The only CLI (subprocess) backends are sam (generic) and strobealign (ultra-fast short reads — no Rust→Python binding). wfa2 reuses PythonBackend's k-mer seeding to anchor a diagonal and runs WFA2's exact gap-affine alignment for true I/D CIGARs — the same "one core algorithm" as wfmash/gem3, minus the CLI layer. On exact / simple-mismatch reads every backend's output is identical; on gapped reads WFA2 may pick a different-but-equally-valid split of the M-runs around an indel than BWA (same position and I/D set), so byte-identity applies to the mapping, not to the exact CIGAR representation.

Full inventory — including where each Python wrapper lives — is in docs/backends.md.

Speed & IO

  • Parallel mapping: -t/--threads N maps reads in an ordered fork+COW process pool (any backend); batches are drained in read order so the BAM is byte-identical to threads=1. --batch-size tunes reads per worker.
  • Reduced repeated IO: references are copy+converted once even when reused across layers (cache keyed by path+scheme); per-hit reference fetch is cached in memory for small contigs (RNA/transcript references), so only one indexed read per contig.

Limitations (v0.0.1)

  • paired-end needs the bwamem backend (python/mappy backends are SE-only)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prismalign-0.2.0.tar.gz (153.0 kB view details)

Uploaded Source

File details

Details for the file prismalign-0.2.0.tar.gz.

File metadata

  • Download URL: prismalign-0.2.0.tar.gz
  • Upload date:
  • Size: 153.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for prismalign-0.2.0.tar.gz
Algorithm Hash digest
SHA256 63319c7d5d6a483333e3e955360cf4e39a3fef72ef6c5b176da8a74692e886c0
MD5 2a9ec3243622b2ec4d8a6bd14cd7316c
BLAKE2b-256 996eca2d228c7ed71e0f097104a84da49ec020de845b0ebba45ec5e51aa81599

See more details on using hashes here.

Provenance

The following attestation bundles were made for prismalign-0.2.0.tar.gz:

Publisher: workflow.yml on y9c/prismalign

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.8

1 file

0.3.7

1 file

0.3.6

1 file

0.3.5

1 file

0.3.4

1 file

0.3.3

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

0.2.12

1 file

0.2.11

1 file

0.2.10

1 file

0.2.9

1 file

0.2.8

1 file

0.2.7

1 file

0.2.6

1 file

0.2.5

1 file

0.2.4

1 file

0.2.2

1 file

0.2.1

1 file

This release

0.2.0 This release

1 file

0.1.0

1 file

0.0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page