Ahmed Doghri Logo Image
Ahmed Doghri

crisprradar

One guide, both strands, every NGG site. The 149-base demo finds one exact target and two ranked off-targets without sending a sequence anywhere.

crisprradar guide RNA off-target radar
crisprradar working browser demo

The Genome Has Near Matches

A guide that matches its intended locus can still bind elsewhere. Risk depends not only on total mismatches, but where they land relative to the PAM-proximal seed.

crisprradar scans both DNA strands for 20-base protospacers beside SpCas9 NGG PAMs, compares each candidate with the guide, and reports total and seed mismatches with a transparent specificity score.

Keep Sequence Screening Local

FASTA-like sequence and guide input stay on the machine. The CLI, API, browser workbench, Docker image, and tests all execute the same scanner without an external service or API key.

The Demo

Across 149 bases, the scanner finds three candidate sites: one exact target and two off-targets. The highest-risk off-target has one mismatch, one seed mismatch, and specificity 85.

The scope is mismatch-only SpCas9 NGG screening. DNA or RNA bulges, chromatin accessibility, nuclease-specific behavior, and experimental validation are outside the claim.

Checking A Scanner's Honesty At The Edges

Before trusting a mismatch scanner, it's worth asking whether its core search is actually correct, not just its headline demo number. I property-tested the PAM-scanning and mismatch-scoring logic against an independent brute-force implementation across 500 randomized sequences and found zero discrepancies — the both-strand search, position mapping, and seed-weighted scoring were already sound.

What wasn't sound was the input boundary. max_mismatches accepted any value with no validation. A random 20-base sequence matches a fixed guide by chance at roughly 15 of 20 positions, so a threshold anywhere near that noise floor turns "scan for off-targets" into "list every NGG site in the genome" — every candidate passes regardless of any real similarity to the guide. Verified directly: loosening the threshold toward that floor on a random 4,000-base sequence balloons the hit count with sites sharing almost nothing with the guide, and the ranked specificity list stops meaning anything. Fixed by bounding max_mismatches to 0–8, a ceiling generous enough for the demo's own value of 4 but well clear of where the search degenerates into noise.

Research Basis

The implementation follows the inspectable search surface used by open CRISPR off-target tools such as CRISPRitz: explicit PAM-aware candidate enumeration and mismatch reporting.

Read the CRISPRitz.

Tools Used

Python
CRISPR-Cas9
Genomics
Guide RNA
Both-Strand Search
Property-Based Testing
Docker