diff --git a/.github/ISSUE_TEMPLATE/pilot_feedback.yml b/.github/ISSUE_TEMPLATE/pilot_feedback.yml new file mode 100644 index 00000000..42968987 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/pilot_feedback.yml @@ -0,0 +1,62 @@ +name: Evaluation feedback +description: Record scoped feedback from a DotMatch technical evaluation. +title: "[Evaluation]: " +labels: ["evaluation", "feedback", "needs-triage"] +body: + - type: dropdown + id: assay_context + attributes: + label: Assay Context + options: + - CRISPR guide counting + - Inline barcode demultiplexing + - Feature barcode assignment + - Perturb-seq guide capture + - Amplicon or panel target assignment + - Oligo or adapter-prefix assignment + - Other known-target workflow + validations: + required: true + - type: textarea + id: install_path + attributes: + label: Install Path + description: State PyPI, Bioconda, source checkout, container, or workflow wrapper version. + validations: + required: true + - type: textarea + id: inputs + attributes: + label: Inputs + description: Describe the target table and read window without sharing private raw data. + validations: + required: true + - type: checkboxes + id: outputs_reviewed + attributes: + label: Outputs Reviewed + options: + - label: sample_qc.tsv + - label: summary.json + - label: assignments.tsv + - label: top_unmatched.tsv + - label: HTML report + - label: methods.md / CITATION.bib / software_versions.yml + - type: textarea + id: findings + attributes: + label: Findings + description: What became clearer or blocked the evaluation? + validations: + required: true + - type: dropdown + id: public_use_permission + attributes: + label: Public Use Permission + options: + - No public use record approved + - Anonymized summary approved + - Public project name approved + - Approved public use record text and URL + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/workflow_integration.yml b/.github/ISSUE_TEMPLATE/workflow_integration.yml new file mode 100644 index 00000000..46adfec2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/workflow_integration.yml @@ -0,0 +1,54 @@ +name: Workflow integration review +description: Propose or review an external DotMatch workflow integration. +title: "[Integration]: " +labels: ["workflow", "integration", "needs-triage"] +body: + - type: dropdown + id: workflow_manager + attributes: + label: Workflow Manager + options: + - nf-core / Nextflow + - MultiQC + - Galaxy / IUC + - Snakemake + - bio.tools + - Institutional workflow + validations: + required: true + - type: textarea + id: workflow_context + attributes: + label: Workflow Context + description: Which known-target assay workflow would this integration support? + validations: + required: true + - type: textarea + id: source_assets + attributes: + label: Source Assets + description: Link the local module, wrapper, fixture, parser, schema, or registry draft. + validations: + required: true + - type: textarea + id: expected_outputs + attributes: + label: Expected Outputs + description: List the TSV, JSON, FASTQ, HTML, MultiQC, or citation artifacts the integration should expose. + validations: + required: true + - type: textarea + id: review_evidence + attributes: + label: Review Evidence + description: Include commands, CI links, fixture paths, lint output, or external review links. + render: bash + validations: + required: false + - type: textarea + id: validated_scope + attributes: + label: Validated Scope + description: State what the integration supports and what it must not imply. + validations: + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1ce91d81..c4487ce6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -20,6 +20,12 @@ - [ ] Large generated datasets or scratch outputs are not committed. - [ ] No real FASTQ/BAM/BCL/customer assay data is committed; examples are synthetic, minimized, or public and scoped. +## Public Language and Reviewer Readiness + +- [ ] This PR does not imply accepted external workflow integration. +- [ ] Broad replacement wording or launch copy was removed or avoided. +- [ ] Public-facing claims link to a checked artifact, gate, or scoped status record. + ## Acceptance Criteria - diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 911fe3dc..8600dcaf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -113,10 +113,10 @@ jobs: run: docker build -t dotmatch:ci . - name: Smoke test container run: | - docker run --rm dotmatch:ci --version | grep '^dotmatch 0.1.8$' + docker run --rm dotmatch:ci --version | grep '^dotmatch 0.2.0$' docker run --rm dotmatch:ci dist ACGT AGGT | grep '^1$' docker run --rm dotmatch:ci leq 1 ACGT AGGT | grep '^true$' - docker image inspect dotmatch:ci --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' | grep '^0.1.8$' + docker image inspect dotmatch:ci --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' | grep '^0.2.0$' - uses: docker/metadata-action@v6 id: meta with: diff --git a/.zenodo.json b/.zenodo.json index 44394c84..14540baf 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,7 +1,7 @@ { "title": "DotMatch: deterministic known-target short-DNA assignment for sequencing workflows", "upload_type": "software", - "version": "0.1.8", + "version": "0.2.0", "conceptdoi": "10.5281/zenodo.20541628", "creators": [ { diff --git a/CHANGELOG.md b/CHANGELOG.md index e983b3d3..e90a7091 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,19 @@ All notable user-facing changes are tracked here. Public statements in release notes must stay aligned with `docs/scientific-claims.md`. -## Unreleased / Next (post 0.1.7) +## 0.2.0 - Unreleased + +- Added a compatibility-safe AssayCode Bioconda metapackage template and a deterministic two-recipe release-handoff generator while preserving `dotmatch` as the engine package. + +- Added a deterministic experimental panel simulator for pre-sequencing yield, ambiguity, no-call, confusion, and FDR analysis. +### AssayCode platform + +- Added the additive `assaycode` CLI and Python namespace while preserving the `dotmatch` package, executable, ABI, DOI, schemas, and citation contract. +- Added AssayScript v2 compilation for R1/R2/I1/I2 segment declarations, fixed or anchored extraction, positional jitter, orientation, per-segment matching policies, allowed-combination tables, source and library fingerprints, bounded safety findings, deterministic strategy selection, and portable JSON plans. +- Added `assaycode compile`, `assaycode inspect`, and compatibility-safe assay workflow shortcuts. +- Added an explicitly experimental calibration module with per-cycle error fitting, Phred shrinkage, selective posterior calls, likelihood-ratio abstention, joint decoding over permitted tuples, Brier score, expected calibration error, held-out FDR threshold selection, and smoothed abundance priors. +- Added `assaycode watch`, a bounded-memory JSONL monitor that emits assignment-rate confidence intervals and threshold-based sequential QC decisions. +- Added a release-blocking AssayCode readiness gate, focused tests, updated scientific claim boundaries, a rewritten paper, and Bioconda smoke tests for both command identities. ### Added - `dotmatch.tl` submodule: scverse/scanpy-style tools (`tl.assign_features`, `tl.feature_counts`, aliases for CRISPR/feature barcodes). In-place modification or copy, with provenance in `.uns`. Excellent UX for AnnData-centric workflows. diff --git a/CITATION.cff b/CITATION.cff index f4c5043c..ce1fe7c6 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -8,7 +8,7 @@ authors: orcid: "https://orcid.org/0009-0003-5012-7229" repository-code: "https://github.com/dnncha/dotmatch" license: Apache-2.0 -version: "0.1.8" +version: "0.2.0" doi: 10.5281/zenodo.20541628 abstract: "DotMatch is a deterministic known-target short-DNA assignment engine for CRISPR guide counting, barcode demultiplexing, and fixed-target FASTQ workflows." keywords: @@ -21,7 +21,7 @@ keywords: - edit distance preferred-citation: type: article - title: "DotMatch: deterministic known-target short-DNA assignment for sequencing workflows" + title: "DotMatch: ambiguity-aware known-target DNA assignment and auditable assay workflows" authors: - given-names: "Donncha" family-names: "O'Toole" diff --git a/Dockerfile b/Dockerfile index dec6d930..5c209f04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ LABEL org.opencontainers.image.title="DotMatch" \ org.opencontainers.image.source="https://github.com/dnncha/dotmatch" \ org.opencontainers.image.url="https://dotmatch.readthedocs.io/" \ org.opencontainers.image.documentation="https://dotmatch.readthedocs.io/" \ - org.opencontainers.image.version="0.1.8" \ + org.opencontainers.image.version="0.2.0" \ org.opencontainers.image.licenses="Apache-2.0" \ org.opencontainers.image.authors="Donncha O'Toole" diff --git a/Makefile b/Makefile index 733ca826..60cc6b2d 100644 --- a/Makefile +++ b/Makefile @@ -454,7 +454,7 @@ repository-ready: python3 scripts/check_evidence_gallery.py $(MAKE) docs-ready -release-ready: python-test python-package-test docs-ready scientific-readiness-ready assay-evidence-ready alphabet-policy-ready citation-metadata-ready native-comparator-scope-ready workflow-examples-ready evidence-gallery-ready distribution-record-ready bioconda-recipe-ready gpu-evidence-gate native-exact-gate public-crispr-evidence-gate crispr-comparison-gate barcode-comparison-gate feature-barcode-public-gate perturb-seq-public-gate amplicon-panel-public-gate bcl-tiny-public-gate oligo-adapter-public-gate +release-ready: python-test python-package-test docs-ready scientific-readiness-ready assay-evidence-ready alphabet-policy-ready citation-metadata-ready native-comparator-scope-ready workflow-examples-ready evidence-gallery-ready distribution-record-ready bioconda-recipe-ready gpu-evidence-gate native-exact-gate public-crispr-evidence-gate crispr-comparison-gate barcode-comparison-gate feature-barcode-public-gate perturb-seq-public-gate amplicon-panel-public-gate bcl-tiny-public-gate oligo-adapter-public-gate reviewer-readiness-ready adoption-metrics-ready assaycode-readiness-ready python3 scripts/check_release_readiness.py pretag-ready: @@ -498,12 +498,25 @@ workflow-integration-test: dotmatch shared workflow-adoption-status: python3 scripts/check_workflow_adoption.py +.PHONY: reviewer-readiness-ready +reviewer-readiness-ready: + python3 scripts/check_reviewer_readiness_assets.py + +.PHONY: adoption-metrics-ready +adoption-metrics-ready: + python3 scripts/check_adoption_metrics.py + distribution-record-ready: python3 scripts/check_distribution_record.py +.PHONY: assaycode-readiness-ready +assaycode-readiness-ready: + python3 scripts/check_assaycode_readiness.py + bioconda-recipe-ready: python3 scripts/check_bioconda_recipe.py + python3 scripts/check_assaycode_bioconda_recipe.py distribution-channels: python3 scripts/check_distribution_channels.py diff --git a/README.md b/README.md index 975c1510..ed63aaac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# DotMatch +# AssayCode + +### Powered by the DotMatch engine [![CI](https://github.com/dnncha/dotmatch/actions/workflows/ci.yml/badge.svg)](https://github.com/dnncha/dotmatch/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/pypi/v/dotmatch?label=pypi)](https://pypi.org/project/dotmatch/) @@ -13,6 +15,38 @@ ![Cinematic DotMatch workflow: sequencing reads flow through a precise known-target matching gate into count matrices, demultiplexed barcode lanes, QC panels, and visible ambiguity diagnostics.](public/dotmatch-header-cinematic.png) +## AssayCode Platform + +**AssayCode is the assay-level platform powered by the DotMatch engine.** It gives +scientists one identity for specifying, validating, running, and diagnosing +sequencing assays built from known guides, barcodes, primers, feature tags, and +panel targets. **AssayScript** is the human-reviewable assay specification; +**DotMatch** remains the native assignment engine, published package, CLI, +scientific citation, and compatibility contract. + +The transition is additive: existing `dotmatch` commands, Python APIs, native +artifacts, output schemas, DOI, and citations remain supported. The same Python +distribution also installs the `assaycode` command: + +```bash +assaycode compile assay-v2.toml --out assay.plan.json +assaycode calibrate trusted.tsv --out error-model.json +assaycode simulate --targets targets.tsv --out simulation.json +assaycode watch assignments.jsonl --out snapshots.jsonl +assaycode start assay.toml +assaycode engine dist ACGT AGGT +``` + +See the [AssayCode Platform guide](docs/assaycode.md) for the product +architecture, compatibility boundary, simulation workflow, and honest current capability limits. + + +The 0.2.0 distribution rollout uses two Bioconda coordinates. `dotmatch` +remains the engine and uninterrupted compatibility package; a new `assaycode` +metapackage will provide the flagship `conda install -c bioconda assaycode` +path by pinning the matching DotMatch release. That command should be treated as +available only after both Anaconda pages and the clean-install release gate pass. + DotMatch counts CRISPR guides, splits inline barcodes, designs barcode panels, and writes QC reports from FASTQ. Use it when you already know the short DNA sequences you expect and need to see which reads matched, which did not, and @@ -45,16 +79,32 @@ scoped handoff documents: - [Homepage](https://dnncha.github.io/dotmatch): short positioning and audience routes for known-target sequencing assignment. -- [Industry Exposure Kit](docs/industry-exposure.md): the five highest-leverage - adoption moves, copy-paste outreach, and claim guardrails. -- [Next 10 Industry Exposure Wins](docs/industry-next-wins.md): decision tree, +- [Outreach and Integration Kit](docs/industry-exposure.md): the five + highest-leverage distribution moves, copy-paste outreach, and claim guardrails. +- [Next 10 Distribution Actions](docs/industry-next-wins.md): decision tree, persona one-pagers, integration tracker, reviewer packet, outreach copy, pilot scorecard, KPIs, and release communication calendar. +- [Bioinformatics Evaluation Packet](docs/bioinformatics-evaluation.md): + installation, evidence boundaries, evaluation commands, and output review + criteria for independent technical reviewers. +- [Pilot Program](docs/pilot-program.md): a reproducible intake, migration, + review, and public-use process for external laboratories. +- [Workflow Integration Roadmap](docs/workflow-integration-roadmap.md): the + maintainer handoff plan for nf-core, MultiQC, Galaxy/IUC, Snakemake, and + bio.tools. +- [Workflow Integration Kit](docs/workflow-integration-kit.md): the concrete + handoff assets, launch checklist, and reviewer rules for maintainers. +- [Reviewer Readiness Record](docs/reviewer-readiness.json) and + [Integration Target Tracker](docs/integration-targets.json): machine-readable + records that keep planned ecosystem work separate from accepted adoption. +- [Adoption Metrics](docs/adoption-metrics.json): a measurement contract that + separates package distribution health from completed evaluations and accepted + workflow integrations. - [Workflow Submission Pack](docs/workflow-submissions.md): nf-core, MultiQC, Galaxy, and Snakemake handoff checklist. - [Methods and Citation](docs/methods-and-citation.md): copyable language for reports, manuscripts, and release-specific citation. -- [Adopter Notes](docs/adopters/README.md): rules for public, quote-approved +- [Adopter Notes](docs/adopters/README.md): rules for public, approved used-by records. ## DotMatch Pro @@ -252,11 +302,14 @@ documented scope are especially welcome. ## Installation -DotMatch 0.1.8 is published on PyPI for Linux and macOS. The PyPI package -includes the `dotmatch` command, Python imports, and the bundled native library. +DotMatch 0.2.0 is the current release target. After the tagged release workflow +publishes the package and `make distribution-channels` verifies the channel, +the PyPI package includes the `dotmatch` command, Python imports, and the bundled +native library. ```bash -python3 -m pip install dotmatch==0.1.8 +python3 -m pip install dotmatch==0.2.0 +assaycode --version dotmatch --version dotmatch dist ACGT AGGT ``` @@ -289,14 +342,14 @@ docker build -t dotmatch:dev . docker run --rm -v "$PWD:/work" dotmatch:dev dist ACGT AGGT ``` -Bioconda is the Conda-based bioinformatics install path. DotMatch 0.1.8 package -metadata is visible on Anaconda's Bioconda channel for `linux-64`, `osx-64`, -and `osx-arm64`, including Apple Silicon Macs. Treat the install command as -fully released only after `make distribution-channels` verifies that Bioconda +Bioconda is the Conda-based bioinformatics install path. The 0.2.0 recipe update +keeps `linux-64`, `osx-64`, and `osx-arm64` support, including Apple Silicon +Macs. Treat the install command as released only after the Bioconda recipe +update is accepted and `make distribution-channels` verifies that Bioconda repodata and a clean `conda create` both resolve the package: ```bash -conda create -n dotmatch -c conda-forge -c bioconda dotmatch=0.1.8 +conda create -n dotmatch -c conda-forge -c bioconda dotmatch=0.2.0 conda activate dotmatch dotmatch --version ``` @@ -308,21 +361,23 @@ in [Packaging Notes](docs/packaging.md), the available for a release after `make distribution-channels` verifies public metadata and install smoke tests. -The tagged release workflow published the 0.1.8 source distribution, native +The tagged release workflow publishes the 0.2.0 source distribution, native macOS wheel, and repaired manylinux/musllinux Linux wheels. PyPI trusted publishing is configured for that workflow. The GitHub release workflow builds and smoke-tests repaired manylinux/musllinux wheels before upload. PyPI wheel -availability includes macOS, manylinux, and musllinux artifacts. The 0.1.8 -release files are visible on PyPI; the full multi-channel release record remains -open until `make distribution-channels` verifies clean Bioconda installs, -BioContainers propagation, GHCR runtime behavior, and DOI evidence. Raw +availability should include macOS, manylinux, and musllinux artifacts; release +files are visible on PyPI only after the tagged workflow publishes them. The +full multi-channel release record remains open until `make distribution-channels` +verifies clean Bioconda installs, BioContainers propagation, GHCR runtime +behavior, and DOI evidence. Raw `linux_x86_64` wheels remain GitHub release artifacts only and are not uploaded to PyPI. BioContainers publication is expected through the Bioconda automation rather -than a separate DotMatch container submission. After the accepted Bioconda 0.1.8 +than a separate DotMatch container submission. After the accepted Bioconda 0.2.0 package is converted by BioContainers, the expected image tag shape is -`quay.io/biocontainers/dotmatch:0.1.8--`. +`quay.io/biocontainers/dotmatch:0.1.9--` for the currently published +release. The 0.2.0 image will exist only after the Bioconda recipe is accepted. Bioconda provides the `dotmatch` command-line tool, Python workflow namespaces, Python imports, and C header/library artifacts for the published package @@ -383,6 +438,25 @@ mode. ## CRISPR Guide Counting +For the fastest safe evaluation, use the reviewable one-command path: + +```bash +dotmatch crispr quickstart \ + --library guides.csv \ + --fastq 'fastqs/*.fastq.gz' \ + --out crispr_screen/ +``` + +This infers the guide window, creates an AssaySpec project, and writes a +self-contained project for review. By default it leaves the inferred spec in +draft form. For an immediate, explicit run, pass `--accept-inference` on the +initial command; otherwise review the inference report, set `status = "ready"`, +and run `dotmatch assay start crispr_screen/assay.toml`. `--no-run` is an +explicit review-only form. Inputs are copied into the project +so the generated run remains portable. The command is a convenience layer over +the same `dotmatch assay start` path used by workflow examples and production +handoffs. + The default production path scaffolds a reviewable assay project, runs preflight `check`, counts guides, and writes a reliability report with suggested `assay.toml` fixes when QC thresholds fail. @@ -762,7 +836,7 @@ A short JOSS software-paper draft is available in [paper/paper.md](paper/paper.m @software{dotmatch_software, author = {{O'Toole}, Donncha}, title = {{DotMatch: deterministic known-target short-DNA assignment for sequencing workflows}}, - version = {0.1.8}, + version = {0.2.0}, date = {2026-06-04}, publisher = {Zenodo}, doi = {10.5281/zenodo.20541628}, diff --git a/TRADEMARKS.md b/TRADEMARKS.md index 96af3973..4d49c64f 100644 --- a/TRADEMARKS.md +++ b/TRADEMARKS.md @@ -1,18 +1,18 @@ -# DotMatch Trademark Guidelines +# AssayCode and DotMatch Trademark Guidelines This repository is licensed under the Apache License 2.0. That license grants copyright and patent rights for the code, but it does not grant trademark rights or permission to imply endorsement. -The names "DotMatch" and "DotMatch Pro", associated logos, and related product -branding are reserved by the project maintainer. You may use the DotMatch name +The names "AssayCode", "AssayScript", "DotMatch", and "DotMatch Pro", associated logos, and related product +branding are reserved by the project maintainer. You may use these names truthfully to describe compatibility, forks, packages, citations, and contributions, for example "built with DotMatch" or "compatible with DotMatch". -Do not use DotMatch or DotMatch Pro branding in a way that suggests your +Do not use AssayCode, AssayScript, DotMatch, or DotMatch Pro branding in a way that suggests your project, service, benchmark, or organization is official, endorsed, certified, or commercially supported by the maintainer unless you have written permission. Forks and redistributions should make material changes clear and should not use -DotMatch Pro branding for a separate commercial service. These trademark +the reserved branding for a separate commercial service. These trademark guidelines do not change the Apache-2.0 license for the code. diff --git a/app/layout.tsx b/app/layout.tsx index f0c17958..3b20e220 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -5,17 +5,17 @@ const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "https://dnncha.github.io/do const socialImageUrl = `${siteUrl}/dotmatch-og.png`; const twitterImageUrl = `${siteUrl}/dotmatch-twitter.png`; const socialImageAlt = - "DotMatch preview showing assignment reliability outcomes for known-target sequencing assays"; + "AssayCode preview showing the DotMatch assignment outcomes for known-target sequencing assays"; export const metadata: Metadata = { metadataBase: new URL(siteUrl), - applicationName: "DotMatch", - title: "DotMatch - Assignment Reliability for Known-Target Sequencing Assays", + applicationName: "AssayCode", + title: "AssayCode - Design, Decode, and Diagnose Known-Target Assays", description: - "DotMatch shows which known-target read assignments are unique, ambiguous, unmatched, or invalid.", + "AssayCode compiles, validates, decodes, and diagnoses known-target sequencing assays with the DotMatch engine.", authors: [{ name: "DotMatch maintainers", url: "https://github.com/dnncha/dotmatch" }], creator: "DotMatch maintainers", - publisher: "DotMatch", + publisher: "AssayCode", category: "Bioinformatics software", alternates: { canonical: siteUrl @@ -26,6 +26,8 @@ export const metadata: Metadata = { "CRISPR", "FASTQ", "known-target sequencing", + "assay compiler", + "AssayScript", "assignment reliability", "barcode demultiplexing", "barcode panel design", @@ -40,11 +42,11 @@ export const metadata: Metadata = { "sequencing core facility QC" ], openGraph: { - title: "DotMatch - Assignment Reliability", + title: "AssayCode - Assay Reliability", description: - "Know which read assignments you can trust for known-target sequencing assays.", + "Design the assay and trust the assignment with AssayCode, powered by DotMatch.", type: "website", - siteName: "DotMatch", + siteName: "AssayCode", locale: "en_US", url: siteUrl, images: [ @@ -60,9 +62,9 @@ export const metadata: Metadata = { }, twitter: { card: "summary_large_image", - title: "DotMatch - Assignment Reliability", + title: "AssayCode - Assay Reliability", description: - "Know which read assignments you can trust for known-target sequencing assays.", + "Design the assay and trust the assignment with AssayCode, powered by DotMatch.", images: [ { url: twitterImageUrl, diff --git a/app/page.tsx b/app/page.tsx index 0b30b0d2..de5e9f5b 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -7,6 +7,13 @@ const exposureUrl = `${repoUrl}/blob/main/docs/industry-exposure.md`; const nextWinsUrl = `${repoUrl}/blob/main/docs/industry-next-wins.md`; const workflowSubmissionsUrl = `${repoUrl}/blob/main/docs/workflow-submissions.md`; const adoptersUrl = `${repoUrl}/blob/main/docs/adopters/README.md`; +const evaluationUrl = `${repoUrl}/blob/main/docs/bioinformatics-evaluation.md`; +const pilotUrl = `${repoUrl}/blob/main/docs/pilot-program.md`; +const reviewPacketUrl = `${repoUrl}/blob/main/docs/external-review-packet.md`; +const integrationRoadmapUrl = `${repoUrl}/blob/main/docs/workflow-integration-roadmap.md`; +const integrationTargetsUrl = `${repoUrl}/blob/main/docs/integration-targets.json`; +const reviewerReadinessUrl = `${repoUrl}/blob/main/docs/reviewer-readiness.json`; +const adoptionMetricsUrl = `${repoUrl}/blob/main/docs/adoption-metrics.md`; const pypiUrl = "https://pypi.org/project/dotmatch/"; const basePath = process.env.NEXT_PUBLIC_BASE_PATH ?? ""; @@ -18,15 +25,17 @@ const structuredData = { { "@type": "WebSite", "@id": "https://dnncha.github.io/dotmatch/#website", - name: "DotMatch", + name: "AssayCode", + alternateName: "DotMatch", url: "https://dnncha.github.io/dotmatch", description: - "DotMatch is a deterministic known-target sequencing assignment toolkit for CRISPR guides, inline barcodes, feature tags, primers, and panel targets." + "AssayCode compiles, validates, decodes, and diagnoses known-target sequencing assays using the DotMatch engine." }, { "@type": "SoftwareApplication", "@id": "https://dnncha.github.io/dotmatch/#software", - name: "DotMatch", + name: "AssayCode", + alternateName: "DotMatch", applicationCategory: "Bioinformatics software", operatingSystem: "Linux, macOS", softwareHelp: "https://dotmatch.readthedocs.io/", @@ -34,7 +43,7 @@ const structuredData = { license: `${repoUrl}/blob/main/LICENSE`, programmingLanguage: ["C", "Python", "R"], description: - "DotMatch assigns fixed read windows to known short DNA targets and reports unique, ambiguous, none, and invalid outcomes for auditable sequencing workflows." + "AssayCode is an assay reliability platform powered by DotMatch for ambiguity-aware known-target DNA assignment." } ] }; @@ -155,12 +164,12 @@ const exposureActions = [ { title: "Pilot", body: - "Record quote-approved external pilots only after a public lab, workflow, or package integration can be linked and reviewed." + "Record approved external pilots only after a public lab, workflow, or package integration can be linked and reviewed." }, { title: "Share", body: - "Use the industry exposure kit for conference abstracts, repository announcements, short social copy, and direct maintainer outreach." + "Use the outreach and integration kit for conference abstracts, repository announcements, short social copy, and direct maintainer outreach." } ] as const; @@ -185,9 +194,9 @@ export default function Home() { dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }} />
- + @@ -204,11 +213,11 @@ export default function Home() {
-

Assignment reliability for known-target sequencing assays.

-

Know which read assignments you can trust.

+

Assay compilation and reliability for known-target sequencing.

+

Design the assay. Trust the assignment.

- DotMatch assigns fixed read windows to known short DNA targets and keeps - the outcome visible for every read: unique, ambiguous, none, or invalid. + AssayCode turns known-target assay descriptions into reviewable plans, then uses + the DotMatch engine to keep every read outcome visible: unique, ambiguous, none, or invalid.

Use it when the guide, inline barcode, feature tag, primer or panel @@ -220,7 +229,7 @@ export default function Home() { Review evidence

-
+
-
    +
      {nextWins.map((win) => (
    1. {win}
    2. ))} @@ -390,7 +406,7 @@ export default function Home() {

      The playbook and machine-readable tracker must stay aligned before release. Private outreach and unmerged PRs remain activity, not - adoption evidence. + an accepted external-use record.

      Open the next 10 playbook @@ -425,7 +441,7 @@ dotmatch --help`}