Skip to main content

DotMatch

Count your guides. Account for every read.

DotMatch turns FASTQ reads and a known guide library into count tables and assignment QC. Use it for CRISPR guide counting, fixed-position barcode demultiplexing, and other short-DNA assays with known targets. It runs locally on Linux and macOS and writes MAGeCK-compatible counts.

CI PyPI Documentation DOI

Start counting guides · Check a library in your browser · Documentation · Methods and results

Why use DotMatch?

An assigned-read percentage cannot tell you which targets gained counts, which reads fit several targets, or whether a more permissive matching rule changed the result. DotMatch keeps those decisions inspectable.

Every read has an explicit outcome: unique, ambiguous, none (unmatched), or invalid (the requested window could not be extracted). Only unique calls contribute to a target count. Choose the matching policy deliberately; a unique call is not proof of biological origin.

Keep downstream screen statistics in the workflow you already use. DotMatch is not a genome aligner, basecaller, cell/UMI pipeline or gene-level hit-calling package.

Install

Release 0.5.0 includes the six dotmatch agent tools described below:

python3 -m pip install dotmatch==0.5.0
dotmatch --version

Conda and container routes:

conda create -n dotmatch -c conda-forge -c bioconda dotmatch
conda activate dotmatch

# Or use the pinned release container:
docker run --rm ghcr.io/dnncha/dotmatch:v0.5.0 --version

Bioconda and its generated BioContainers images can lag PyPI/GHCR. When a newly tagged version has not reached Bioconda yet, use PyPI or the source build. Check the installed version. The Bioconda recipe includes osx-arm64 for Apple Silicon. Review the packaging details for platform and container verification. See the installation guide for platform details, source builds and the third-party Homebrew tap. The optional desktop Workbench is maintained separately.

Count a CRISPR screen

Prepare a guide CSV/TSV and FASTQ files. Start a new assay project:

dotmatch crispr quickstart \
  --library guides.csv \
  --fastq 'fastqs/*.fastq.gz' \
  --out crispr_screen/

This creates a draft project. Review crispr_screen/inference_report.json and assay.toml: confirm the guide window, orientation, library and sample files. After confirming the settings, change the top-level status = "draft" to status = "ready" in assay.toml, then run and review:

dotmatch assay start crispr_screen/assay.toml

# After reviewing a completed run:
dotmatch assay handoff crispr_screen/assay.toml

The handoff carries configuration, QC, methods and checksums without copying raw FASTQs. Follow the complete CRISPR tutorial for inputs, direct CLI options and count-table outputs.

Understand the effect of mismatch correction

The dotmatch sensitivity command, introduced in 0.5.0, compares exact, radius-one and best-distance Hamming assignment using the same windows in one FASTQ pass. It produces three count matrices, per-guide deltas, read-state transitions, checksums and a self-contained HTML report. It never selects a policy for you.

Run the included synthetic example from a checkout of the v0.5.0 release:

python3 -m pip install dotmatch==0.5.0
dotmatch sensitivity \
  --targets examples/assignment_sensitivity/targets.tsv \
  --reads examples/assignment_sensitivity/reads.fastq \
  --target-start 0 --target-length 20 \
  --write-read-changes --out-dir sensitivity-example

The nine-read synthetic example shows why equal assigned totals can hide different per-guide counts. Read the output contract. This is sensitivity analysis, not an estimate of biological accuracy.

Choose by task

Task Entry point Workflow
CRISPR guide counting dotmatch crispr-count First run
Inline barcode demultiplexing dotmatch demux Getting started
High unmatched or ambiguous barcode rate dotmatch barcode autopsy Barcode diagnostics
Target-library collisions dotmatch audit Browser checker
Barcode panel design dotmatch panel design Panel documentation
Paired target counting dotmatch pair-count Command reference
Cell-by-feature matrix from extracted observations dotmatch feature matrix scverse handoff

Feature matrices require upstream cell identifiers and extracted feature windows. They do not perform cell calling, UMI deduplication or perturbation-effect analysis.

Reproduce the evidence

The benchmark reports include commands, hardware and assignment rules. Those reports cover the tested workloads; they are not universal speed or biological-accuracy guarantees.

Public CRISPR comparisons record Yusa and Brunello inputs, methods, count differences, runtime and memory. Exact, Hamming and Levenshtein results use different semantics and should be compared separately. A comparison that completed successfully is not necessarily an identical count matrix or biological validation.

The GSE146194 direct-guide-capture case study separates discovery and evaluation reads and checks per-read assignments against independent reference implementations. It does not establish guide-per-cell or perturbation-effect accuracy.

For an installation-free synthetic smoke demo, use Binder or Google Colab. For a shareable or de-identified workflow evaluation, see the public validation invitation. Do not post private reads or unpublished guide libraries.

Pipelines, Python and local agents

DotMatch provides a Python streaming API, output schemas, and workflow examples. The ecosystem status ledger distinguishes local examples from accepted upstream integrations.

The six structured agent tools are included in release 0.5.0:

dotmatch capabilities --json
dotmatch agent tools --json
dotmatch agent export-skill --target ./dotmatch-agent

They prepare, preflight, run, review and hand off local assays without accepting free-form shell commands or uploading research data. Start with the Agent guide, CRISPR agent route, or Perturb-seq agent route. Machine-readable discovery: agent-capabilities.json, agent-tools.json, and the checked contract fixture.

Citation and contributing

DotMatch is Apache-2.0 licensed. Use dotmatch citation and CITATION.cff to record the actual software version. Use the methods and citation guide to cite the actual release and configuration used. Improvements, discrepancy fixtures and reproducible bug reports are welcome: contributing guide.

Release files for dotmatch 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotmatch 0.5.0
File Size Uploaded
dotmatch-0.5.0.tar.gz 276.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for dotmatch 0.5.0
File
dotmatch-0.5.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
dotmatch-0.5.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
dotmatch-0.5.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
dotmatch-0.5.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
dotmatch-0.5.0-py3-none-macosx_11_0_universal2.whl Python 3 none macOS 11.0+ universal2 (ARM64, x86-64) Details

Total release size: 2.2 MB

Release files / dotmatch-0.5.0.tar.gz

Download URL dotmatch-0.5.0.tar.gz
Size 276.1 kB
Tags Source
SHA-256 checksum
How to use checksums
04632c12058ac40c8b219533d5aa3a3609e13e13ad1bec339e4a25fbde2eceb6
BLAKE2b-256 checksum
How to use checksums
2864867b55a425c31d3010db46328ecb4f4bdcf6e0d539d7797f1320bcb9eb3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / dotmatch-0.5.0-py3-none-musllinux_1_2_x86_64.whl

Download URL dotmatch-0.5.0-py3-none-musllinux_1_2_x86_64.whl
Size 359.9 kB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
775a48115abe7d5d5b8cdbff9197ef16e98f520c63f4cbf28c7f53bf035bb5ac
BLAKE2b-256 checksum
How to use checksums
d474f0e51d00e3a1128e70d8fcfe77db0f940d64a8750a6dcdf6cfeb3759ad7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / dotmatch-0.5.0-py3-none-musllinux_1_2_aarch64.whl

Download URL dotmatch-0.5.0-py3-none-musllinux_1_2_aarch64.whl
Size 359.3 kB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
3323e0b8eac6637f54f0a49f98459525188e85f809a0d18ca25b2d64894398fb
BLAKE2b-256 checksum
How to use checksums
8f5c0a9a84275eff8d126512c99ca182a9850b26e1580c7bfb3a550743403447
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / dotmatch-0.5.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL dotmatch-0.5.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 355.4 kB
Tags Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
12b6f9286de86b02fbd4c2896c5cde3aaf3a15399dc4692bde3c4d6befaa71a5
BLAKE2b-256 checksum
How to use checksums
f5e5856ae1e002e782e78609bf83a551d5f1e04ddbf957521ad718ee940989e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / dotmatch-0.5.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL dotmatch-0.5.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 357.9 kB
Tags Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
0347920d2dd806c27812e18d774c8756a87144ed9ffceb748145b3f598854b96
BLAKE2b-256 checksum
How to use checksums
60744ef4890847069293c58a2fc3ecc4a7208639c0e54ed92c20cf0a82048f6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / dotmatch-0.5.0-py3-none-macosx_11_0_universal2.whl

Download URL dotmatch-0.5.0-py3-none-macosx_11_0_universal2.whl
Size 465.9 kB
Tags Python 3 macOS 11.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
345bac5a31419f1ceebb5a6041aef3793f3a72f2ac5b0918cbf7052fce8b9611
BLAKE2b-256 checksum
How to use checksums
6de22384b00802b10e53dbc73a65188fb3e4eb84cde3b814192058cbf103b103
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

6 release files

This release

0.5.0 This release

6 release files

0.4.1

6 release files

0.4.0

6 release files

0.3.1

6 release files

0.3.0

6 release files

0.2.2

4 release files

0.2.1

4 release files

0.2.0

4 release files

0.1.9

4 release files

0.1.8

4 release files

0.1.7

4 release files

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