-
Notifications
You must be signed in to change notification settings - Fork 0
docs/perf: define and measure the 10x evidence gates #84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dnncha
wants to merge
5
commits into
main
Choose a base branch
from
codex/10x-baseline
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
9f8e876
docs: define measurable 10x evidence gates
dnncha f585b3f
perf: add auditable 10x control harness
dnncha 7c10386
perf: record control peak memory
dnncha c8ae024
test: broaden literal alphabet differential coverage
dnncha dfafe28
docs: surface independent 10x evaluation path
dnncha File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| # DotMatch evaluation request | ||
|
|
||
| DotMatch is looking for a small number of independent evaluations on real | ||
| known-target short-DNA workflows. This is a request for evidence, not a claim | ||
| of adoption or performance. | ||
|
|
||
| ## Who this is for | ||
|
|
||
| - CRISPR guide counting or screen QC; | ||
| - barcode demultiplexing or whitelist assignment; | ||
| - primer, amplicon, or targeted-panel matching; | ||
| - a core facility or production pipeline that already has a deterministic | ||
| target set and a measurable counting or QC step. | ||
|
|
||
| The workflow must have a declared target set and an explicit matching contract. | ||
| DotMatch is not a genome aligner and does not emit SAM/BAM or CIGAR output. | ||
|
|
||
| ## Smallest useful evaluation | ||
|
|
||
| 1. Install a tagged DotMatch release from the documented package or source | ||
| route. | ||
| 2. Record the target-file format, read window, metric (`hamming` or | ||
| `levenshtein`), threshold, ambiguity policy, and DotMatch version. | ||
| 3. Run the equivalent existing tool or workflow on the same inputs when one | ||
| exists. | ||
| 4. Compare at least one outcome and one operational measure: assignment | ||
| agreement, ambiguous/none rates, counts, wall time, peak memory, or failure | ||
| rate. | ||
| 5. Keep private data private. A public-safe report can describe the workflow | ||
| class and aggregate results without exposing sequences or identifiers. | ||
|
|
||
| The project can provide a command template and help interpret a result, but an | ||
| independent evaluator should own the input, comparator, and conclusion. | ||
|
|
||
| ## Evidence record | ||
|
|
||
| For a public-safe record, open an issue or pull request containing: | ||
|
|
||
| ```text | ||
| DotMatch version and install route: | ||
| Workflow/data class: | ||
| Input scope and read window: | ||
| Metric, threshold, and ambiguity policy: | ||
| Comparator or truth source: | ||
| Reads/records evaluated: | ||
| Expected result: | ||
| Observed result: | ||
| Operational metric (if measured): | ||
| Hardware/software environment: | ||
| What this does not establish: | ||
| Publication/permission status: | ||
| ``` | ||
|
|
||
| Do not include private sequences, patient information, proprietary sample | ||
| identifiers, or an organization's name without permission. A project-authored | ||
| example, an open integration submission, a download count, or a repository | ||
| view is not an independent impact record. | ||
|
|
||
| ## How records are counted for the 10x goal | ||
|
|
||
| Scientific records require an independently authored public URL, release and | ||
| install route, workflow/data scope, expected-versus-observed result, and a | ||
| clear boundary on the conclusion. An integration counts only after an upstream | ||
| release or public external-use evidence. | ||
|
|
||
| Industry records additionally require permission to describe the evaluation | ||
| and a measured before/after operational metric. Confidential data may remain | ||
| private; the existence and wording of the record still require approval. | ||
|
|
||
| To start, use the public repository issue tracker and title the report | ||
| `Independent evaluation: <workflow class>`. No data upload is required. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,119 @@ | ||
| # DotMatch 10x goal: baseline and evidence gates | ||
|
|
||
| This document turns the 10x objective into measurable project targets. It is a | ||
| planning and evidence boundary, not a claim that any target has already been | ||
| met. Accuracy, speed, scientific impact, and industry impact are measured | ||
| separately; downloads, stars, open pull requests, and local synthetic tests do | ||
| not substitute for the relevant evidence. | ||
|
|
||
| ## Baseline snapshot | ||
|
|
||
| The baseline is the public DotMatch 0.2.2 evidence in this repository. The | ||
| canonical working checkout is intentionally not used for this snapshot because | ||
| it contains unrelated uncommitted changes. | ||
|
|
||
| | Dimension | Current recorded evidence | Baseline used for the goal | | ||
| | --- | --- | --- | | ||
| | Scientific accuracy | The CRISPR comparison report records six public-data Edlib-oracle rows of 10,000 reads each, all with zero assignment mismatches. Count agreement, ambiguity, and outcome semantics are reported separately. | 60,000 oracle-checked reads, zero observed mismatches. Because zero is an observed floor, not a measurable positive accuracy margin, improvement is defined as 10x broader independent validation with the same zero-mismatch and semantic gates. | | ||
| | Speed | The full Sanson/Brunello public Hamming `k=1` row records 634,950.2 reads/s and 388.9288 seconds against guide-counter at 473,609.5 reads/s. The report marks this as a single full-data row, not a repeated claim. A new deterministic indexed-Hamming control is documented in `docs/10x-performance-control.md`. | 634,950.2 reads/s and 388.9288 seconds on the recorded workload and hardware. A repeated baseline must be captured before publishing a speed multiplier. The local control is diagnostic evidence only. | | ||
| | Scientific impact | `docs/workflow-adoption.json` is `not_ready` with no accepted external workflow entries. `docs/adopters/` contains only the record template. Open external PRs are not counted as adoption. | Zero verified independent public use records in the project evidence registry. A multiplicative ratio from zero is undefined, so the 10x operational target is ten independently authored, public-safe scientific evaluation or use records. | | ||
| | Industry impact | There is no permissioned public industry, core-facility, or production-use record in `docs/adopters/`. Package availability and downloads are distribution evidence, not industry impact. | Zero verified industry-use records in the project evidence registry. The 10x operational target is ten permissioned evaluation or deployment records with workflow scope and at least one before/after operational metric. | | ||
|
|
||
| ### Baseline boundaries | ||
|
|
||
| - The two public CRISPR datasets and existing benchmark lanes demonstrate | ||
| scoped scientific evidence; they do not establish universal accuracy or | ||
| superiority. | ||
| - The local differential-fuzz suite now exercises literal ambiguity symbols, | ||
| lowercase bytes, mixed target lengths, and targets beyond the 32-base encoded | ||
| path. It is a regression guard, not independent scientific validation, and | ||
| does not count toward the 600,000-read target. | ||
| - A zero-mismatch result is retained as zero mismatches. It is not converted | ||
| into a claim of perfect accuracy. | ||
| - Speed comparisons must preserve input data, target set, read window, metric, | ||
| ambiguity policy, output contract, hardware, software versions, warm-up | ||
| policy, repeat count, and memory measurement. | ||
| - Scientific and industry records require an external author or an explicitly | ||
| approved organization. A project-authored integration PR, download counter, | ||
| repository view, or unapproved logo is not an impact record. | ||
|
|
||
| ## 10x targets | ||
|
|
||
| ### 1. Scientific accuracy | ||
|
|
||
| Pass the accuracy target only when all of the following are true: | ||
|
|
||
| 1. At least 600,000 reads are checked across at least ten public or | ||
| permission-cleared datasets/lanes that were not used to tune the matcher. | ||
| 2. Each lane has a declared truth source or independent edit-distance oracle, | ||
| recorded commands, versions, input window, target set, and ambiguity policy. | ||
| 3. The aggregate assignment mismatch count is zero, and the report retains | ||
| `unique`, `ambiguous`, `none`, and `invalid` outcomes rather than collapsing | ||
| them into a single accuracy number. | ||
| 4. Count-level agreement and relevant per-read invariants pass for every lane. | ||
|
|
||
| With zero mismatches, the simple one-sided Rule-of-3 upper bound moves from | ||
| approximately `3/60,000` to `3/600,000`, a tenfold tighter observed-error bound. | ||
| This is the defensible interpretation of “10x more accurate” for a system whose | ||
| current checked error count is already zero. | ||
|
|
||
| ### 2. Performance | ||
|
|
||
| Pass the speed target only when a five-repeat baseline and five-repeat candidate | ||
| are run on the same full Sanson/Brunello Hamming `k=1` workload and the same | ||
| declared hardware/software environment: | ||
|
|
||
| - candidate throughput: at least 6,349,502 reads/s, or | ||
| - candidate wall time: at most 38.8929 seconds, | ||
|
|
||
| while preserving zero oracle mismatches, count semantics, output equivalence, | ||
| and a separately reported peak-memory budget. If the workload or comparator | ||
| changes, it is a new benchmark lane and cannot be called a 10x improvement of | ||
| this baseline. | ||
|
|
||
| ### 3. Scientific impact | ||
|
|
||
| Reach ten independently authored public-safe scientific evaluation or use | ||
| records. Each record must include a public URL, DotMatch version, install | ||
| route, workflow/data class, expected-versus-observed result, and the boundary | ||
| of what was actually tested. Accepted nf-core, Galaxy, MultiQC, Snakemake, or | ||
| other workflow integrations may count as records only after upstream release | ||
| or explicit external use evidence is public. | ||
|
|
||
| ### 4. Industry impact | ||
|
|
||
| Reach ten permissioned records from distinct organizations, core facilities, or | ||
| production workflow owners. Each record must document the workflow scope, the | ||
| release used, the operational problem, and at least one measured before/after | ||
| metric such as runtime, memory, failure rate, QC visibility, or reproducibility. | ||
| Confidential data may remain private, but the existence and wording of the | ||
| record must be approved before publication. Downloads alone never satisfy this | ||
| gate. | ||
|
|
||
| ## Evidence ledger | ||
|
|
||
| The target ledger should keep these fields separate: | ||
|
|
||
| - accuracy: dataset, truth source, reads checked, mismatches, ambiguity/outcome | ||
| counts, and reproducibility command; | ||
| - performance: workload, comparator, hardware, versions, repeat statistics, | ||
| throughput, wall time, peak memory, and output-equivalence status; | ||
| - scientific impact: external author, public URL, workflow, release, result, | ||
| and scope boundary; | ||
| - industry impact: permission status, organization or anonymized identifier, | ||
| workflow, release, before/after metric, and approved wording. | ||
|
|
||
| Do not combine the four dimensions into a single score until the underlying | ||
| records exist. A 10x claim is valid only when the corresponding gate above is | ||
| green and the evidence is independently auditable. | ||
|
|
||
| ## Current next actions | ||
|
|
||
| 1. Re-run the full Sanson/Brunello Hamming `k=1` lane five times and freeze the | ||
| baseline artifact before optimizing. | ||
| 2. Expand held-out oracle validation to ten lanes without changing semantics. | ||
| 3. Convert open workflow submissions into accepted/released integrations before | ||
| counting scientific impact. | ||
| 4. Invite independent scientific and industry evaluators through | ||
| `docs/10x-evaluation-request.md`; do not publish private data or infer impact | ||
| from replies alone. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| # Reproducible 10x performance control | ||
|
|
||
| The `bench-10x-control` target measures the reusable indexed Hamming API on a | ||
| deterministic synthetic workload. It is a local hot-path control, not an | ||
| end-to-end scientific workflow claim and not a replacement for the public | ||
| Sanson/Brunello comparison. | ||
|
|
||
| ```bash | ||
| make bench-10x-control | ||
| ``` | ||
|
|
||
| The default control is 1,000,000 reads, 4,096 targets, 20-base windows, | ||
| Hamming `k=1`, and five timed repeats. Override the workload when diagnosing a | ||
| different lane: | ||
|
|
||
| ```bash | ||
| DOTMATCH_10X_READS=1000000 \ | ||
| DOTMATCH_10X_TARGETS=4096 \ | ||
| DOTMATCH_10X_LENGTH=20 \ | ||
| DOTMATCH_10X_K=1 \ | ||
| DOTMATCH_10X_REPEATS=5 \ | ||
| make bench-10x-control | ||
| ``` | ||
|
|
||
| Before timing, the harness compares a 256-read prefix against the exhaustive | ||
| scan API. Each repeat reports throughput, candidate rates, and a checksum; | ||
| different checksums or a failed preflight invalidate the run. The target | ||
| library is built once outside the timed region. | ||
|
|
||
| For an auditable comparison, record the exact commit, compiler and flags, | ||
| machine model, operating-system version, workload arguments, repeat rows, | ||
| peak-memory method, and whether other CPU-heavy work was running. A noisy or | ||
| partially captured run is a control failure, not a speed result. | ||
|
|
||
| The project speed gate remains the repeated full Sanson/Brunello Hamming | ||
| `k=1` lane in `docs/10x-goal-baseline.md`. A local synthetic control can | ||
| identify a hot path and reject regressions; it cannot establish a 10x | ||
| end-to-end improvement by itself. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the required five-repeat baseline differs from the existing single-run measurement, these fixed thresholds are no longer a 10x comparison against that baseline: a candidate could pass while improving by less than 10x, or fail despite improving by more than 10x. This is especially problematic because the document requires capturing the repeated baseline before publishing the multiplier; define the gate as a candidate-to-baseline ratio using a specified repeat statistic, then derive any absolute thresholds from that frozen result.
Useful? React with 👍 / 👎.