AssaySentinel.jl

Know when the measurement changed before the science does.

A Julia instrument for scientists, assay developers, biostatisticians, clinical laboratory researchers, and physicians doing measurement-quality or method work. It watches the measurement process — instruments, reagent lots, calibrations, batches, controls, and distributions — and reconstructs a dated, uncertainty-aware, plotted, provenance-complete account of whether that process changed.

Research use only. This software is intended for research, analytical-quality assessment, method development, and scientific decision support. It is not a diagnostic medical device and must not independently determine patient diagnosis or treatment.

A result is stored as a system, not a bare number: instrument, lot, calibration, batch, uncertainty, units, controls, processing history, and provenance travel together. analyze → explain → report is the intended path from a history to an auditable reconstruction.

How AssaySentinel reconstructs a measurement history: ingest, detect, reconstruct, deliver

Ingest a history, run an explainable detector bank, then reconstruct, explain, and report.

First reconstruction

using AssaySentinel

data = showcase_dataset()
result = analyze(data.stream)
println(result)
explain(result)
report(result, "assay-report.html")

showcase_dataset() is twelve months of synthetic glucose controls: three reagent lots, two instruments, a calibration event, gradual drift, a variance shift, and a handful of control failures. The HTML report is the same object explain narrates.

AssaySentinel: analyze, reconstruct, explain, and report a year of assay measurements

Install until General registration merges:

using Pkg
Pkg.add(url="https://github.com/theworker02/AssaySentinel.jl")

After the General registry PR is merged, Pkg.add("AssaySentinel") will work. The core package is stdlib-only.

What it answers

  • Did this instrument begin drifting?
  • Did a reagent lot change alter the measurement distribution?
  • Did a calibration curve shift?
  • Is this batch statistically inconsistent with previous batches?
  • When did the change most likely begin?
  • How confident are we, and can the conclusion be reproduced?

It does not diagnose patients, label disease, or independently determine treatment. Severity labels (info, watch, warning, critical) and the Sentinel Score describe the analytical process, not clinical risk.

Reconstruction story: Stable, Calibration, Lot change, Drift

The pedagogical chain scientists read first: Stable → Calibration → Lot change → Drift.

Walk through the docs

Get a reconstruction

Quickstart and the examples page run analyze, explain, and report on synthetic streams.

QC and drift

QC, drift / change-points, and streaming sentinels for ongoing surveillance.

Markdown equivalents: Quickstart, Examples, Quality control, Drift and change points, Streaming, Method and instrument comparison, Calibration, Batch effects, Reference intervals, Statistical methods, Validation, Provenance and reports, References, API, Extensions.

AssaySentinel HTML analytical report Levey–Jennings control chart with lot and calibration events

Live site

Published docs: https://theworker02.github.io/AssaySentinel.jl

Rebuild locally on save:

julia --project=docs docs/live.jl

Citation and funding

See CITATION.cff. If you use AssaySentinel in research, cite the package and the statistical methods you invoked.

GitHub Sponsors · thanks.dev/u/gh/theworker02