DotMatch / CRISPR guide counting

A local, reviewable workflow

From FASTQ to CRISPR guide counts.

Start with sequencing reads and a known guide library. Review the extraction window, count compatible reads, and inspect what was left out before downstream screen analysis.

What goes in. What comes out.

Inputs

A guide CSV/TSV with IDs and sequences, and FASTQ files for your samples. Keep sample identity, guide orientation, assay layout, and gene annotations explicit.

Outputs

MAGeCK-compatible guide-by-sample counts, assignment QC, reports, and a reproducible handoff. DotMatch does not run gene-level significance testing or infer biological hits.

Prepare, review, then count.

Install the published CLI. Use a new output directory so an earlier analysis is not overwritten.

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

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

Before executing the assay, review crispr_screen/inference_report.json and assay.toml. Confirm the expected read window, orientation, library, and sample files. An inferred setting is a proposal, not a guarantee.

dotmatch assay start crispr_screen/assay.toml

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

The handoff includes configuration, reports, methods, and checksums without copying raw FASTQs. Review identifiers and other metadata before sharing it.

Choose correction rules deliberately.

Exact matching

Require the configured read window to equal a known target. Useful as a transparent baseline, but it does not recover substitution or indel errors.

Hamming matching

Allow substitutions in equal-length windows. Inspect overlapping target neighbourhoods and the difference between radius and best-distance ambiguity policies.

Levenshtein matching

Include insertions and deletions under the configured extraction and matching rules. Different semantics and costs require separate evidence, not a speed claim borrowed from exact matching.

A higher assigned fraction is not automatically a more accurate result. Do not increase the mismatch allowance simply to improve a headline percentage. Inspect unmatched sequences, extraction failures, ambiguity, and changed assignments.

Inspect radius-one Hamming collisions in your browser

Fit into an existing analysis, not replace it blindly.

Different tools perform different parts of the job
WorkflowHow to evaluate the fit
MAGeCKUse DotMatch for counting when its assignment semantics fit your assay; retain downstream statistics. Compare count tables, not only runtime. MAGeCK documentation
guide-counterCompare equal offset, mismatch, and ambiguity policies. It supports one-mismatch/no-indel and exact-counting routes. Official guide-counter repository
nf-core/crisprseqA supplied count table is an integration route, not proof of an accepted DotMatch module. Validate the pinned pipeline version, headers, sample names, and gene identifiers; its documented columns include sgRNA and gene. Official screening workflow
Adapter-aware processingVariable read structures may need upstream extraction or trimming rather than a single fixed window. Record those transformations in the analysis methods.

Read benchmark status as evidence, not a verdict.

The public comparison report separates exact, Hamming, and Levenshtein results. Some rows marked ok still contain differing guide counts. That status alone does not establish count identity or biological correctness.

Inspect dataset and sample scope, repeated versus full-file runs, per-guide differences, and the reference implementation used. Oracle agreement checks algorithmic behaviour under defined rules; it does not reveal a read’s true biological origin.

Working with Perturb-seq?

Guide-capture read assignment is one stage. Cell-barcode correction, UMI processing, ambient-guide filtering, guide-per-cell calls, expression analysis, and perturbation effects require additional methods. Do not interpret per-read counts as completed single-cell analysis.

Review the feature-matrix and scverse boundary