WorkflowListener · Git · JSON sidecar
"annotations": 47,
✓ "validation": "T. McKee · HIGH"
Sound familiar?
The reproducibility crisis
hits every lab doing spatial biology
Lost context. Missing classifiers. Impossible-to-recreate analyses. qTrace captures everything QuPath does — so you never lose the thread.
"Who trained this classifier — and when?"
Every classifier is recorded with its SHA-256 hash and parameters, next to the analysis that used it.
"I spent four hours recreating last month's analysis."
One-click Replay reconstructs the full pipeline from any .qtrace file.
"The reviewer wants the complete protocol."
Compliance certificate. PDF. One click. Every operation, every analyst, every version.
qTrace is the audit trail QuPath was missing.
Designed for compliance
21 CFR Part 11 — What qTrace provides
- ✓§11.10(e) — Time-stamped record of each QuPath workflow step (workstation clock)
- ✓§11.10(b) — Human-readable and electronic copies: JSON, PDF certificate, batch export
- ✓§11.50(a) — Signature shows name, date-time, and meaning, inside the signed bytes
- ✓§11.70 — Ed25519 signature linked to the stamp, image and .qpdata hashes; edits fail verification
- ✓§11.100(b) — Signer identity KYC-verified before the signing key is issued
- ✓§11.200(a) — Licence + passphrase; the passphrase is asked once per QuPath session
Signed stamps require a Compliance licence. qTrace is not a validated system: IQ/OQ/PQ, access control, signing procedures and §11.100(c) certification remain with the laboratory.
GLP / ALCOA+ — How qTrace contributes
- ✓Attributable — contributor per session; KYC-verified, signed identity with a Compliance licence
- ✓Legible — plain-text JSON, readable without qTrace
- ✓Contemporaneous — each QuPath step recorded as it happens
- ✓Original — sessions appended, not rewritten; changes after a stamp are flagged
- ✓Accurate — direct QuPath capture; corrections recorded separately
- ✓Complete (+) — steps, classifiers, annotations, parameters; some extensions only partially captured
- ✓Consistent (+) — versioned JSON schema, ISO 8601 UTC timestamps
- ✓Enduring (+) — open format next to the image, optional off-site copy
- ✓Available (+) — Dashboard filters, batch ZIP export
Scoped to QuPath analysis records. Unstamped sessions are not tamper-evident. Retention, wet-lab data, SOPs, training records and system validation (GAMP 5) remain with the laboratory.
ISO 15189:2022 — What qTrace provides
- ✓§7.3.1d — Operator recorded per session (KYC-verified with a Compliance licence)
- ✓§7.3.6 — Analysis steps exported as a replay script (MetaScript)
- ✓§7.3.2 — Replay of a recorded workflow (Compliance module)
- ✓§7.4.1.8 — Changes after a stamp detected and flagged
- ✓§7.5 — Manual correction records (Dashboard Card 7)
- ✓§7.6.3 — Signed stamps: Ed25519 + SHA-256 of image and .qpdata
- ✓§8.4.1 — Records created at the time of each act
- ✓§8.8 — Dashboard indicators as input to management review
Scoped to the QuPath analysis part of the examination process. Access control, backup, retention, pre-analytical phases, calibration and IQC remain with the laboratory.
IVDR 2017/746 — What qTrace can feed
- ✓Art. 5(5) — Evidence for the QuPath analysis part of a health institution’s QMS
- ✓Art. 10(3–4) — Performance evaluation and technical documentation inputs
- ✓Art. 68(3) — Performance study analysis steps recorded with the operator
- ✓Art. 78 — Accumulated sessions as a post-market surveillance dataset
qTrace is not a medical device and not CE-marked. Retention, QMS, CE marking, Eudamed, clinical evidence and notified body assessment remain with the manufacturer or institution.
ICH E6(R3) GCP — What qTrace provides
- ✓Principle 9.4 — Traceability of QuPath image analysis: who, what, when, which parameters
- ✓§3.16.1(i–j) — Corrections recorded with operator and timestamp (justification optional today)
- ✓§3.16.1(l) — Signed certificates verifiable by anyone; OpenTimestamps anchoring after Cloud Push
- ✓§3.16.4(a) — Direct access for monitors: JSON, batch ZIP, verification page
- ✓§4.2.1(b) — Operator, QuPath version, extensions, classifier hash, parameters per step
- ✓§4.2.2(a)(ii–iii) — Workflow actions recorded as they happen
Scoped to QuPath image analysis in clinical trials. Access logs, audit-trail protection of local files, retention, clinical source records and system validation remain with the investigator/sponsor.
Each validation stamp is KYC-signed, then embedded in the world's largest proof-of-work consensus chain — cryptographic Proof of Prior Existence, backdating-proof, verifiable by anyone, forever, with no dependency on qTrace.
The problem
Three gaps spatial biology
cannot afford
A single QuPath analysis may involve 50+ sequential operations across multiple analysts and machines. Yet no native mechanism exists to certify what was done, in what order, by whom — or whether results remain reproducible.
No tamper evidence
A single modified annotation or retrained classifier goes undetected. Regulators and reviewers have no mechanism to verify the analysis was not altered after sign-off.
.qpdata is not bound to results
The QuPath project file is mutable and unpinned. Nothing links the raw image to the classifier version, annotation set, and quantification parameters that produced the reported numbers.
No trusted timestamp
There is no cryptographic proof of when an analysis was performed. Reproducibility claims cannot be independently verified — a fatal gap for clinical translation and inter-lab trust.
Use case
Glioma Multi-Omics · Workflow
Provenance Map
Each arrow shows the QuPath action captured by qTrace. ⏺ REC = step recorded in .qtrace passport. H&E is the spatial coordinate reference.
(stRNA-Seq)
(IMC)
(MSI)

FFPE · TMA core
174K cells
Clustering
cell states
Cell Typing
MES/AC/NPC/OPC
Segmentation
CD163 · Ki-67
proliferation index
Pixels
20µm · metabolites
Overlay
spatial metabolomics
Multi-Omics View
RCTD · Ki-67 · Metabolites
H&E coordinate space
Features
Everything your workflow needs
to be certifiable
Automatic Provenance
Hooks directly into the QuPath API — no manual logging. Every WorkflowStep, pixel classifier change, and annotation edit is captured in real time via the histogram listener.
Expert Validation Stamp
A named validator signs off on scope, confidence, and classifier fidelity. The stamp is embedded in the .qtrace, next to the analysis record. With Compliance, it is signed and any later edit is detected.
Cohort Dashboard
Real-time QA status across all images in a project. Filterable by contributor, annotation class, tissue region, or validation state. Identify outliers before submission.
Batch Export
Generate .qtrace passports for every image in a project with a single operation. Stamp, export, and append to the master CSV log without opening each image manually.
Chain of Custody
Ed25519 signature binds the .qtrace to the raw .qpdata at validation time. After Cloud Workspace Push, OpenTimestamps anchors the certificate hash to Bitcoin — Proof of Prior Existence verifiable without trusting qTrace.
Replay Engine
From a .qtrace passport, reconstruct and execute the exact analysis on a new image — classifier models embedded, annotation coordinates preserved. Analytical fidelity confirmed.
Ecosystem
Works with your full QuPath stack
qTrace is tested against 18 popular QuPath extensions. From deep-learning segmentation to multi-modal registration — every step is captured, regardless of which extension ran it.
How it works
From raw image to
certified analysis
Capture
Automatic — zero effort
Install the JAR in QuPath extensions. qTrace hooks into the QuPath API silently — every WorkflowStep, classifier change, annotation edit, and script run is recorded without any user action.
- ▸Pixel classifier versions (SHA-256 + Git hash)
- ▸Manual annotations with author attribution
- ▸Image-alignment transforms (AffineServer / Warpy)
- ▸Script runs + terminal output
Validate
One-click expert sign-off
When the analysis is complete, the expert clicks "Validate & Stamp". A dialog captures validator identity, analytical scope, confidence level, and classifier fidelity — all embedded in the .qtrace.
- ▸Named validator + institutional context
- ▸Analytical scope declaration
- ▸HIGH / MEDIUM / LOW confidence
- ▸Classifier fidelity check (modified since training?)
Certify
Compliance — cryptographic proof
The Compliance plugin generates a .qtcert binding the .qtrace to the raw .qpdata via Ed25519 signature. Once pushed to the Cloud Workspace, OpenTimestamps anchors the hash to Bitcoin — Proof of Prior Existence verifiable without trusting qTrace.
- ▸Ed25519 signature
- ▸SHA-256 of .qpdata at validation moment
- ▸chain.jsonl — hash-chained custody log
- ▸qtrace-verify check → GREEN / RED in 1 command
The tamper-evidence moment
Open the validated .qpdata in a text editor. Modify a single byte. Save. Run qtrace-verify check --case-dir ./case/ --qpdata ./Core_01.qpdata. Result: RED "qpdata hash mismatch". That moment is the entire value proposition — irrefutable, in one command.
Anatomy
Inside a .qtrace passport
A single self-contained JSON file — one per image, accumulating sessions. No database. No external service. Drop it next to your .qpdata and it travels with the data.
Source metadata + SHA-256 integrity hash
"sha256": "a3f8d2c1e4b7…" // integrity lock at export time
"width": 4096, "height": 4096, "channels": 25
User · machine · versions Git snapshot · extensions captured
"qtrace_version": "1.0.2", "qupath_version": "0.7.0"
"git": { "commit": "c3d91f2" }, "steps_captured": 28
"extensions": [ { "name": "InstanSeg", "version": "0.1.6" },{ "name": "StarDist", "version": "0.5.0" } }]
License-locked identity · passphrase-protected Fidelity · scope · confidence
"license_verified": true, "pin_required": true
"confidence": "HIGH", "classifier_fidelity": "HIGH"
"scope": "Full pipeline — annotation + classification + alignment"
Affine transform matrix Moving → reference image
"transform_type": "Affine", "matrix": [0.98, -0.02, 45.3, 0.02, 0.97, -12.1]
"scale_x": 0.981, "scale_y": 0.972
All QuPath WorkflowSteps in execution order + Groovy
"extension": "qupath-extension-instanseg", "model_name": "fluorescence_nuclei_and_cells"
"script_fragment": "InstanSeg.builder().modelPath(…).build().detectObjects()"
SHA-256 + Git hash Channels · training info · fidelity
"sha256": "7e4ab3c2…", "git_hash": "9a1f4d8" // version-locked
"channels": ["DAPI", "CD163", "Ki-67"], "fidelity": "HIGH"
ROI geometry · author attribution by_class · by_author counts
"by_class": { "Tumour Core": 18, "Edge": 29 }
"roi_type": "Polygon", "area_um2": 14820.4
Get started with
qTrace
Download the open-source Core and start capturing QuPath provenance today — every alignment, segmentation, pixel classification, and cell-typing step recorded into a self-contained .qtrace passport. Create a free account to upload and share your records. Certifying them with a verified identity is the one step that asks for an identity certificate.
Create your free account
No code, no payment, no identity check to start.
- Install qTrace in QuPath and click Sign in or create an account.
- Capture, stamp, upload and share your records. Without a certificate they are marked not certified.
- Verify your identity on qtrace.ca when you want certified records: the certificate arrives in QuPath on its own.
Questions? Write to tourteromain@gmail.com.