Public CRISPR Workflow Comparator

This report tracks the MAGeCK/Yusa public CRISPR benchmark. The single-run table below is a smoke/latest wiring check only; repeated rows and comparison-gated rows are the only rows intended to support user-facing performance statements.

Smoke/Latest Wiring Table

Reduced evidence. These rows are secondary benchmark context. Use the repeated-run statistics below, and use docs/benchmarks/crispr_comparison/README.md once make crispr-comparison-gate passes for two real CRISPR datasets.

tool

version

semantics

n_reads

n_targets

seconds

reads_per_sec

peak_rss_kb

assigned_reads

corrected_reads

ambiguous_reads

rejected_reads

overcount_reads

verified_per_read

exit_code

dotmatch_exact_k0

local

exact_k0_no_errors

20394663

87437

3.831934

5322290.4

31616

17091377

0

0

3303286

0

0.8380

0

dotmatch_levenshtein_k1

local

levenshtein_k1_substitution_insertion_deletion

20394663

87437

7.039597

2897134.9

471392

18869012

1777635

30939

1494712

0

0.9383

0

dotmatch_hamming_k1

local

hamming_k1_no_indels

20394663

87437

4.357828

4680006.0

44048

17929586

838209

683

2464394

0

1.0002

0

mageck_count_exact

0.5.9.5

exact_fastq_count_trim5_23

20394663

87437

18.442125

1105873.8

159328

17091377

0

3303286

0

0

guide_counter_one_mismatch

0.1.3

hamming_k1_no_indels_auto_offset

20394663

87437

3.027415

6736659.7

541392

20270172

124491

0

0

guide_counter_exact

0.1.3

exact_k0_no_errors

20394663

87437

2.213606

9213322.9

50416

18234150

2160513

0

0

Public CRISPR throughput

Public CRISPR runtime

Public CRISPR memory

Public CRISPR assignment impact

Public CRISPR verified candidates

Repeated-Run Statistics

tool

semantics

records_per_sample

repeats

mean_reads_per_sec

p50_reads_per_sec

p95_reads_per_sec

mean_seconds

p50_seconds

cv

max_peak_rss_mb

mean_verified_per_read

dotmatch_exact_k0

exact_k0_no_errors

10000

5

413018.2

406534.7

433658.8

0.0485

0.0492

0.0323

29.3

0.895

dotmatch_exact_k0

exact_k0_no_errors

100000

5

2309133.0

2348618.1

2461506.9

0.0869

0.0852

0.0608

30.9

0.894

dotmatch_hamming_k1

hamming_k1_no_indels

10000

5

314571.2

312080.8

330483.6

0.0636

0.0641

0.0336

35.8

0.997

dotmatch_hamming_k1

hamming_k1_no_indels

100000

5

737770.8

750324.9

774832.8

0.2718

0.2666

0.0556

48.7

0.996

dotmatch_levenshtein_k1

levenshtein_k1_substitution_insertion_deletion

10000

5

47867.7

47705.9

48975.4

0.4179

0.4192

0.0141

462.8

0.985

dotmatch_levenshtein_k1

levenshtein_k1_substitution_insertion_deletion

100000

5

301767.4

306335.2

311960.7

0.6638

0.6529

0.0433

465.8

0.981

guide_counter_exact

exact_k0_no_errors

10000

5

365902.5

362357.7

375024.9

0.0547

0.0552

0.0193

49.2

guide_counter_exact

exact_k0_no_errors

100000

5

1519653.6

1465494.0

1678255.4

0.1320

0.1365

0.0618

49.2

guide_counter_one_mismatch

hamming_k1_no_indels_auto_offset

10000

5

57722.5

57636.9

59781.0

0.3468

0.3470

0.0330

528.7

guide_counter_one_mismatch

hamming_k1_no_indels_auto_offset

100000

5

413398.6

414591.2

439341.3

0.4848

0.4824

0.0509

528.7

mageck_count_exact

exact_fastq_count_trim5_23

10000

5

56128.8

58790.9

59323.0

0.3604

0.3402

0.1102

132.6

mageck_count_exact

exact_fastq_count_trim5_23

100000

5

318392.5

320957.0

322513.3

0.6283

0.6231

0.0168

153.2

Repeated public CRISPR throughput

Repeated public CRISPR runtime

Repeated public CRISPR peak memory

Repeated public CRISPR verified candidates

DotMatch Hamming Speedup

This table keeps the fair CRISPR speed lane separate: DotMatch Hamming k=1 versus tools with one-mismatch/no-indel semantics.

baseline

records_per_sample

dotmatch_hamming_reads_per_sec

baseline_reads_per_sec

speedup

guide_counter_one_mismatch

10000

314571.2

57722.5

5.45x

guide_counter_one_mismatch

100000

737770.8

413398.6

1.78x

DotMatch Exact Count Speedup

This table compares exact-count semantics only: DotMatch exact k=0 versus exact-count baselines.

baseline

records_per_sample

dotmatch_exact_reads_per_sec

baseline_reads_per_sec

speedup

guide_counter_exact

10000

413018.2

365902.5

1.13x

guide_counter_exact

100000

2309133.0

1519653.6

1.52x

mageck_count_exact

10000

413018.2

56128.8

7.36x

mageck_count_exact

100000

2309133.0

318392.5

7.25x

Count Agreement

comparison

status

n_guides

total_left

total_right

total_delta

differing_guides

max_abs_delta

pearson

spearman

dotmatch_hamming_vs_guide_counter

ok

87437

18261

20956

-2695

2409

7

0.93013799

0.93268449

dotmatch_exact_vs_mageck_exact

ok

87437

17894

17894

0

0

0

1.00000000

1.00000000

Public CRISPR count agreement

Multi-Sample Scaling

tool

n_samples

records_per_sample

total_reads

threads

seconds

reads_per_sec

peak_rss_kb

assigned_reads

overcount_reads

exit_code

dotmatch_hamming_k1_threaded

2

100000

200000

2

0.498202

401443.9

124416

182657

0

0

guide_counter_one_mismatch

2

100000

200000

1

0.772011

259063.6

541376

208700

8700

0

dotmatch_hamming_k1_threaded

4

100000

400000

4

0.525465

761230.2

139696

365314

0

0

guide_counter_one_mismatch

4

100000

400000

1

1.055745

378879.3

541312

417400

17400

0

dotmatch_hamming_k1_threaded

8

100000

800000

8

0.551423

1450791.2

178560

730628

0

0

guide_counter_one_mismatch

8

100000

800000

1

1.640900

487537.2

541312

834800

34800

0

Public CRISPR sample scaling throughput

Public CRISPR sample scaling memory

Edlib Oracle Validation

dataset

sample

oracle

checked_reads

mismatches

indel_window

oracle_strategy

edlib_alignments

bounded_windows

fallback_windows

stratum_exact

stratum_corrected

stratum_ambiguous

stratum_unmatched

stratum_contains_n

mageck_yusa

plasmid

edlib_native

1000

0

1

bounded_edlib_candidates

2101308

2976

24

839

81

56

24

8

mageck_yusa

ESC1

edlib_native

1000

0

1

bounded_edlib_candidates

1314381

2985

15

848

77

50

25

5

Interpretation

  • dotmatch_hamming_k1 is the fair lane for guide-counter-style one-mismatch/no-indel guide counting.

  • dotmatch_levenshtein_k1 is DotMatch’s stronger lane: substitutions plus one-base insertions/deletions with explicit ambiguity reporting.

  • dotmatch_exact_k0 is the fair exact-count lane for MAGeCK’s direct FASTQ counting mode.

  • MAGeCK is run as exact FASTQ counting with --trim-5 23, matching the public Yusa demo workflow.

  • guide-counter is fast, but on the 10k Yusa run its own stats report more mapped reads than input reads, consistent with its multi-offset counting loop; DotMatch assigns at most one target per read and reports ambiguity instead.

  • In the multi-sample scaling table, DotMatch processes sample batches with threads while staying in the tens of MB. guide-counter uses roughly half a GB and its count total grows beyond input reads.

  • Cutadapt and Bowtie2 rows are workflow comparators on extracted guide windows; they are not exact assignment oracles.

  • Native Edlib scan remains the exact semantic oracle for assignment correctness; the public evidence gate requires bounded Edlib validation where recorded and caps fallback windows at 5% of checked reads.

  • Public speed statements should cite only repeated rows with zero validation mismatches and explicit semantics.

Raw Commands

tool

command

dotmatch_exact_k0

dotmatch count –targets examples/crispr_guides/data/yusa_library.csv –reads examples/crispr_guides/data/ERR376998.fastq.gz –reads examples/crispr_guides/data/ERR376999.fastq.gz –sample-label plasmid,ESC1 –target-start 23 –target-length 19 –k 0 –metric hamming –format mageck –out examples/crispr_guides/output/counts.exact.mageck.tsv –summary examples/crispr_guides/output/summary.exact.json

dotmatch_levenshtein_k1

dotmatch count –targets examples/crispr_guides/data/yusa_library.csv –reads examples/crispr_guides/data/ERR376998.fastq.gz –reads examples/crispr_guides/data/ERR376999.fastq.gz –sample-label plasmid,ESC1 –target-start 23 –target-length 19 –k 1 –metric levenshtein –ambiguity-policy best –indel-window 1 –auto-offset 5 –auto-offset-sample 100000 –format mageck –out examples/crispr_guides/output/counts.levenshtein.mageck.tsv –summary examples/crispr_guides/output/summary.levenshtein.json

dotmatch_hamming_k1

dotmatch count –targets examples/crispr_guides/data/yusa_library.csv –reads examples/crispr_guides/data/ERR376998.fastq.gz –reads examples/crispr_guides/data/ERR376999.fastq.gz –sample-label plasmid,ESC1 –target-start 23 –target-length 19 –k 1 –metric hamming –ambiguity-policy best –auto-offset 5 –auto-offset-sample 100000 –offset-min-fraction 0.0025 –format mageck –out examples/crispr_guides/output/counts.hamming.mageck.tsv –summary examples/crispr_guides/output/summary.hamming.json

mageck_count_exact

build/competitor-env/bin/mageck count -l examples/crispr_guides/data/yusa_library.csv -n mageck_exact_benchmark –sample-label plasmid,ESC1 –trim-5 23 –fastq examples/crispr_guides/data/ERR376998.fastq.gz examples/crispr_guides/data/ERR376999.fastq.gz

guide_counter_one_mismatch

build/guide-counter/bin/guide-counter count –input examples/crispr_guides/data/ERR376998.fastq.gz examples/crispr_guides/data/ERR376999.fastq.gz –samples plasmid ESC1 –library examples/crispr_guides/data/yusa_library.csv –output examples/crispr_guides/output/guide_counter –offset-sample-size 100000

guide_counter_exact

build/guide-counter/bin/guide-counter count –input examples/crispr_guides/data/ERR376998.fastq.gz examples/crispr_guides/data/ERR376999.fastq.gz –samples plasmid ESC1 –library examples/crispr_guides/data/yusa_library.csv –output examples/crispr_guides/output/guide_counter_exact –exact-match