safety.viz v1.6.0
safety.viz v1.6.0
See it move: the annotated v1.6.0 demo walks each update with captures and try-it-yourself steps against the live gallery.
The gallery crosses into nephrotoxicity. A twelfth renderer ports the KDIGO acute-kidney-injury creatinine scatter from SafetyGraphics/nepExplorer, and the Hepatic Safety Explorer gets back the feature the original renderer was best known for — the study-day playback — alongside an opt-in hepatocyte-loss estimate and the last of its v1.2 polish list. No existing API is removed or renamed.
What's new
-
Nephrotoxicity Explorer — a new renderer for KDIGO acute-kidney-injury screening (obot.roadmap#35, #120, PR #121). One point per participant at their maximum post-baseline fold change in serum creatinine against their maximum absolute change, over the L-shaped KDIGO stage zones — the fold bands at any absolute change, plus the ≥ 0.3 mg/dL arm below 1.5× — with the lower-left box, where both criteria are clear, left unpainted. The ≥ 4.0 mg/dL Stage-3 rule is a mark, not a zone: a larger triangular point with its own tooltip line, so a high-baseline chronic-kidney-disease participant sitting in the Stage-1 band is still read as Stage 3 and says why. Units resolve per record (mg/dL and µmol/L can mix within one participant); a record that resolves to neither suppresses absolute-change staging chart-wide rather than guessing. Nothing is dropped silently — participants whose creatinine only fell stay on the chart below zero, and every dropped record and participant downloads as a CSV naming its reason. The stage summary table counts the population three ways, with dashes, not zeroes, where KDIGO defines no stage on absolute change. Marked Experimental pending clinical confirmation of the staging ladder. Try it live.
-
Study-day playback with motion trails on the Hepatic Safety Explorer (obot.roadmap#88, #46, PRs #118, #119). Press play and the eDISH cloud walks each participant along their own lab trajectory, motion trails accumulating behind the moving points; scrub the day slider and the playback yields to you rather than fighting for the day. The original's four drawing rules are ported verbatim: a point sits on its most recent result at or before the shown day, holds at its first result before it is measured, shrinks outside its own measured span, and is not drawn before its first record.
-
An opt-in P_ALT hepatocyte-loss estimate (same requirement, #49 partial, PR #118). With
calculate_palt: true, the participant profile header shows the estimated fraction of hepatocytes lost, with the arithmetic behind it. Off by default on purpose: the estimate integrates ALT over study day × 24 hours and carries unit and sampling assumptions only the data owner can confirm. -
The eDISH axes finish their v1.2 polish list (#54, PR #122). On log axes a Log Base picker chooses decades or doublings — a tick generator, not a transform, so the cloud never moves, only the gridlines. Manual axis limits on both axes load pre-filled with the limit actually in force; clear one to hand that side back to auto, and a limit typed for one measure never survives to another. The drill-down labs chart names each measure in full in its legend and writes each line's short key at its own last point. The Clinical guide links the R / nR primary sources and states the nR formula.
Also in this release
HEP-ANIM-008(scrub stops playback) had shipped implemented but unevidenced; #119 gives it a named, asserted browser test — under the done-gate a requirement row is only as good as the evidence it points at.- Release prep #123:
dist/safety.viz-1.5.0/is restored to the bytes v1.5.0 shipped,dist/safety.viz-1.6.0/is vendored fresh, fixtures and README repointed.
The gallery
Twelve renderers are now available, up from eleven:
| Renderer | Factory | What it shows |
|---|---|---|
| Safety Histogram | histogram |
Distribution of a lab or vital-sign measure, with a normal-range overlay and a linked listing |
| Safety Outlier Explorer | outlierExplorer |
One line per participant over time against a population normal-range band |
| Safety Results Over Time | resultsOverTime |
Population distribution of a measure at each visit |
| Safety Shift Plot | shiftPlot |
Baseline versus comparison-visit values on a scatter with an identity line |
| Safety Delta-Delta | deltaDelta |
Paired change-from-baseline comparison of two measures |
| Hepatic Safety Explorer | hepExplorer |
eDISH / mDISH scatter with Hy's-Law quadrants, composite and migration views, and study-day playback |
| Hepatic ALT Waterfall | hepWaterfall |
Baseline → maximum on-treatment ALT in absolute U/L, for abnormal-baseline trials |
| Participant Profile | participantProfile |
One participant's whole lab course, demographics and adverse events — standalone or as any chart's rail |
| Nephrotoxicity Explorer | nepExplorer |
KDIGO creatinine scatter: fold vs absolute change over stage zones, with a stage summary table |
| Adverse Event Explorer | aeExplorer |
Hierarchical adverse-event browser with rates and differences by arm |
| Adverse Event Timelines | aeTimelines |
One bar per event on the study-day axis, per participant |
| QT Safety Explorer | qtExplorer |
Central tendency Δ/ΔΔ with CIs against ICH E14 references, outliers and categorical views |
Tests and provenance
1 178 unit and 236 browser tests are green; every requirement row on the evidence pages traces to a named test, with screenshots captured on the canonical Linux environment. The vendored dist/safety.viz-1.6.0/ is byte-checked against a fresh build in CI.
This release was drafted by Claude Code using Fable 5 and reviewed by @jwildfire