From deee10b65b3bff1ec582fd241292e91637e44311 Mon Sep 17 00:00:00 2001 From: Jorel97 Date: Mon, 1 Jun 2026 08:40:10 -0600 Subject: [PATCH 1/2] Add model assumption diagnostics assistant --- .../README.md | 40 +++ .../demo.js | 25 ++ .../demo_video.py | 44 +++ .../index.js | 260 ++++++++++++++++++ .../package.json | 12 + .../reports/demo-script.txt | 7 + .../reports/demo.gif | Bin 0 -> 49490 bytes .../reports/model-assumption-report.json | 119 ++++++++ .../reports/model-assumption-report.md | 83 ++++++ .../reports/summary.svg | 23 ++ .../requirements-map.md | 27 ++ .../sample-data.js | 78 ++++++ .../test.js | 29 ++ 13 files changed, 747 insertions(+) create mode 100644 model-assumption-diagnostics-assistant/README.md create mode 100644 model-assumption-diagnostics-assistant/demo.js create mode 100644 model-assumption-diagnostics-assistant/demo_video.py create mode 100644 model-assumption-diagnostics-assistant/index.js create mode 100644 model-assumption-diagnostics-assistant/package.json create mode 100644 model-assumption-diagnostics-assistant/reports/demo-script.txt create mode 100644 model-assumption-diagnostics-assistant/reports/demo.gif create mode 100644 model-assumption-diagnostics-assistant/reports/model-assumption-report.json create mode 100644 model-assumption-diagnostics-assistant/reports/model-assumption-report.md create mode 100644 model-assumption-diagnostics-assistant/reports/summary.svg create mode 100644 model-assumption-diagnostics-assistant/requirements-map.md create mode 100644 model-assumption-diagnostics-assistant/sample-data.js create mode 100644 model-assumption-diagnostics-assistant/test.js diff --git a/model-assumption-diagnostics-assistant/README.md b/model-assumption-diagnostics-assistant/README.md new file mode 100644 index 00000000..e8f1f9f8 --- /dev/null +++ b/model-assumption-diagnostics-assistant/README.md @@ -0,0 +1,40 @@ +# Model Assumption Diagnostics Assistant + +This slice adds a synthetic, dependency-free assistant for the SCIBASE AI-Powered Research Assistant Suite. It reviews analysis packets before an automated peer-review summary is trusted and flags model-assumption failures that can make otherwise polished AI review output misleading. + +The assistant focuses on modeling diagnostics that are separate from existing same-issue submissions covering power feasibility, Bayesian prior sensitivity, missing data, causal adjustment, uncertainty calibration, figure-claim consistency, external validity, and sample chain-of-custody. + +## What It Checks + +- Binary outcomes modeled with an identity-link linear model. +- Low events per predictor. +- Complete or quasi-separation risk. +- Heteroscedasticity without robust uncertainty. +- High multicollinearity. +- Residual skew and influential outliers. +- Residual autocorrelation. +- Too few clusters for clustered claims. +- Missing calibration evidence for binary prediction claims. +- Missing sensitivity models or reviewer-facing diagnostic handoff links. + +## Reviewer Output + +Running the demo generates: + +- `reports/model-assumption-report.json` +- `reports/model-assumption-report.md` +- `reports/summary.svg` +- `reports/demo-script.txt` +- `reports/demo.gif` + +The generated reviewer packet is synthetic only. It does not call external APIs, run live models, use credentials, or include private research data. + +## Commands + +```bash +npm test +npm run demo +npm run demo:video +``` + +`demo:video` renders a small local GIF demo from generated synthetic frames when Pillow is available. diff --git a/model-assumption-diagnostics-assistant/demo.js b/model-assumption-diagnostics-assistant/demo.js new file mode 100644 index 00000000..34ef44d6 --- /dev/null +++ b/model-assumption-diagnostics-assistant/demo.js @@ -0,0 +1,25 @@ +import { mkdir, writeFile } from "node:fs/promises"; +import { riskyAnalysisPacket } from "./sample-data.js"; +import { buildReviewerMarkdown, buildSummarySvg, reviewModelAssumptions } from "./index.js"; + +const reportsDir = new URL("./reports/", import.meta.url); +await mkdir(reportsDir, { recursive: true }); + +const report = reviewModelAssumptions(riskyAnalysisPacket); +await writeFile(new URL("model-assumption-report.json", reportsDir), `${JSON.stringify(report, null, 2)}\n`); +await writeFile(new URL("model-assumption-report.md", reportsDir), buildReviewerMarkdown(report)); +await writeFile(new URL("summary.svg", reportsDir), buildSummarySvg(report)); +await writeFile( + new URL("demo-script.txt", reportsDir), + [ + "Demo: Model Assumption Diagnostics Assistant", + `Manuscript: ${report.manuscriptId}`, + `Decision: ${report.decision}`, + `Risk score: ${report.riskScore}/100`, + `Blockers: ${report.summary.blockCount}`, + `Warnings: ${report.summary.warnCount}`, + "Reviewer action: hold AI review until model family, separation, sensitivity, and diagnostic handoff blockers are fixed.", + ].join("\n"), +); + +console.log(JSON.stringify(report.summary, null, 2)); diff --git a/model-assumption-diagnostics-assistant/demo_video.py b/model-assumption-diagnostics-assistant/demo_video.py new file mode 100644 index 00000000..c6f63ef9 --- /dev/null +++ b/model-assumption-diagnostics-assistant/demo_video.py @@ -0,0 +1,44 @@ +from pathlib import Path + +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +REPORTS.mkdir(exist_ok=True) + + +def font(size): + for name in ("arial.ttf", "segoeui.ttf"): + try: + return ImageFont.truetype(name, size) + except OSError: + pass + return ImageFont.load_default() + + +frames = [] +slides = [ + ("Model Assumption Diagnostics", "Synthetic reviewer packet for SCIBASE #16"), + ("Decision", "hold-ai-review · risk score 100/100"), + ("Blockers", "model-family mismatch · low events per predictor · separation"), + ("Reviewer Action", "Refit, add sensitivity evidence, and link diagnostics before AI review release"), +] + +for title, subtitle in slides: + image = Image.new("RGB", (960, 540), "#0e1726") + draw = ImageDraw.Draw(image) + draw.rectangle((48, 58, 912, 482), outline="#334155", width=3) + draw.text((82, 132), title, fill="#f8fafc", font=font(44)) + draw.text((82, 214), subtitle, fill="#cbd5e1", font=font(24)) + draw.rectangle((82, 340, 690, 380), fill="#ef4444") + draw.text((82, 410), "No external services, credentials, or private research data.", fill="#94a3b8", font=font(20)) + frames.extend([image] * 14) + +gif_path = REPORTS / "demo.gif" +frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) + +# A GIF is committed as the visual demo artifact because this repository has no +# video toolchain. Keep an MP4-named placeholder out of the PR rather than +# pretending a non-video binary is playable. +print(f"wrote {gif_path}") diff --git a/model-assumption-diagnostics-assistant/index.js b/model-assumption-diagnostics-assistant/index.js new file mode 100644 index 00000000..05662f5d --- /dev/null +++ b/model-assumption-diagnostics-assistant/index.js @@ -0,0 +1,260 @@ +const SEVERITY_ORDER = { block: 3, warn: 2, info: 1 }; + +function issue(code, severity, message, evidence, remediation) { + return { code, severity, message, evidence, remediation }; +} + +function isBinaryOutcome(packet) { + return packet.declaredPrimaryModel?.outcomeType === "binary"; +} + +function usesLinearIdentityModel(packet) { + const model = packet.declaredPrimaryModel || {}; + return model.family === "linear-regression" || model.linkFunction === "identity"; +} + +function assumptionsMentioned(packet) { + const claims = packet.reviewerClaims || []; + return claims.some((claim) => /assumption|diagnostic|limitation/i.test(claim)); +} + +export function reviewModelAssumptions(packet) { + if (!packet || typeof packet !== "object") { + throw new TypeError("analysis packet must be an object"); + } + + const diagnostics = packet.diagnostics || {}; + const remediation = packet.remediationEvidence || {}; + const findings = []; + + if (isBinaryOutcome(packet) && usesLinearIdentityModel(packet)) { + findings.push( + issue( + "MODEL_FAMILY_OUTCOME_MISMATCH", + "block", + "Binary outcomes should not be released through an identity-link linear model without an explicit sensitivity justification.", + { + outcomeType: packet.declaredPrimaryModel?.outcomeType, + family: packet.declaredPrimaryModel?.family, + linkFunction: packet.declaredPrimaryModel?.linkFunction, + }, + "Refit with a logistic or mixed-effects logistic model, or add a documented sensitivity analysis before AI review conclusions are trusted.", + ), + ); + } + + if (diagnostics.eventCount && diagnostics.predictors && diagnostics.eventCount / diagnostics.predictors < 5) { + findings.push( + issue( + "LOW_EVENTS_PER_PREDICTOR", + "block", + "The event-per-predictor ratio is too low for stable adjusted effects.", + { + eventCount: diagnostics.eventCount, + predictors: diagnostics.predictors, + eventsPerPredictor: Number((diagnostics.eventCount / diagnostics.predictors).toFixed(2)), + }, + "Reduce predictors, use penalization, or present the model as exploratory until stability is demonstrated.", + ), + ); + } + + if (diagnostics.completeSeparationIndicators > 0) { + findings.push( + issue( + "SEPARATION_RISK", + "block", + "Separation indicators suggest coefficient estimates may be unstable or infinite.", + { completeSeparationIndicators: diagnostics.completeSeparationIndicators }, + "Use penalized logistic regression or exact methods and report the separation diagnostic in the reviewer packet.", + ), + ); + } + + if (diagnostics.breuschPaganPValue < 0.05 && !diagnostics.robustStandardErrorsDeclared) { + findings.push( + issue( + "HETEROSCEDASTICITY_UNHANDLED", + "warn", + "Residual variance is not constant and no robust standard errors were declared.", + { breuschPaganPValue: diagnostics.breuschPaganPValue }, + "Report robust or clustered standard errors and flag affected inference in the limitations section.", + ), + ); + } + + if (diagnostics.maxVarianceInflationFactor > 8) { + findings.push( + issue( + "MULTICOLLINEARITY_HIGH", + "warn", + "Predictors show high variance inflation, so independent-effect claims may be overstated.", + { maxVarianceInflationFactor: diagnostics.maxVarianceInflationFactor }, + "Collapse correlated predictors, use regularization, or downgrade independent-effect language.", + ), + ); + } + + if (diagnostics.residualSkew > 1.25 || diagnostics.outlierStudentizedResidualMax > 4) { + findings.push( + issue( + "RESIDUAL_OUTLIER_PRESSURE", + "warn", + "Residual skew or influential outliers are large enough to require sensitivity reporting.", + { + residualSkew: diagnostics.residualSkew, + outlierStudentizedResidualMax: diagnostics.outlierStudentizedResidualMax, + }, + "Add influence diagnostics, robust fit sensitivity, and a reviewer-facing note describing impacted claims.", + ), + ); + } + + if (diagnostics.durbinWatson && (diagnostics.durbinWatson < 1.4 || diagnostics.durbinWatson > 2.6)) { + findings.push( + issue( + "AUTOCORRELATION_RISK", + "warn", + "Residual autocorrelation may invalidate nominal uncertainty estimates.", + { durbinWatson: diagnostics.durbinWatson }, + "Model temporal or batch correlation explicitly, or use clustered uncertainty estimates.", + ), + ); + } + + if (diagnostics.clusterCount && diagnostics.clusterCount < 5) { + findings.push( + issue( + "TOO_FEW_CLUSTERS", + "warn", + "Cluster-adjusted claims are fragile with very few clusters.", + { clusterCount: diagnostics.clusterCount, smallestClusterSize: diagnostics.smallestClusterSize }, + "Report cluster limitations and avoid generalizing beyond the observed sites or batches.", + ), + ); + } + + if (!diagnostics.calibrationReported && isBinaryOutcome(packet)) { + findings.push( + issue( + "CALIBRATION_MISSING", + "warn", + "Binary prediction claims need calibration evidence before reviewer summaries treat them as reliable.", + { calibrationReported: diagnostics.calibrationReported }, + "Add calibration curve, Brier score, or held-out calibration summary.", + ), + ); + } + + if (!remediation.sensitivityModelIncluded || !remediation.reviewerPacketLinksDiagnostics) { + findings.push( + issue( + "REVIEW_PACKET_INCOMPLETE", + "block", + "The reviewer handoff is missing sensitivity evidence or links to diagnostics.", + { + sensitivityModelIncluded: remediation.sensitivityModelIncluded, + reviewerPacketLinksDiagnostics: remediation.reviewerPacketLinksDiagnostics, + }, + "Hold automated peer-review approval until the handoff packet includes diagnostics and sensitivity results.", + ), + ); + } + + if (findings.length > 0 && assumptionsMentioned(packet) && !remediation.limitationTextMentionsAssumptionRisk) { + findings.push( + issue( + "OVERCONFIDENT_ASSUMPTION_CLAIM", + "warn", + "The manuscript claims diagnostics were considered but does not disclose assumption risk in limitations.", + { limitationTextMentionsAssumptionRisk: remediation.limitationTextMentionsAssumptionRisk }, + "Add limitation language that names the specific modeling assumptions still under review.", + ), + ); + } + + const blockCount = findings.filter((finding) => finding.severity === "block").length; + const warnCount = findings.filter((finding) => finding.severity === "warn").length; + const riskScore = Math.min(100, blockCount * 28 + warnCount * 11); + const decision = blockCount > 0 ? "hold-ai-review" : warnCount > 0 ? "needs-reviewer-note" : "ready-for-ai-review"; + + return { + manuscriptId: packet.manuscriptId, + title: packet.title, + decision, + riskScore, + summary: { + blockCount, + warnCount, + findingCount: findings.length, + }, + findings: findings.sort((a, b) => SEVERITY_ORDER[b.severity] - SEVERITY_ORDER[a.severity] || a.code.localeCompare(b.code)), + }; +} + +export function buildReviewerMarkdown(report) { + const lines = [ + `# Model Assumption Diagnostics: ${report.manuscriptId}`, + "", + `Decision: **${report.decision}**`, + `Risk score: **${report.riskScore}/100**`, + "", + `Findings: ${report.summary.blockCount} blockers, ${report.summary.warnCount} warnings.`, + "", + ]; + + for (const finding of report.findings) { + lines.push(`## ${finding.severity.toUpperCase()}: ${finding.code}`); + lines.push(finding.message); + lines.push(""); + lines.push(`Evidence: \`${JSON.stringify(finding.evidence)}\``); + lines.push(""); + lines.push(`Remediation: ${finding.remediation}`); + lines.push(""); + } + + if (report.findings.length === 0) { + lines.push("No assumption blockers or warnings were detected in the synthetic packet."); + lines.push(""); + } + + return lines.join("\n"); +} + +export function buildSummarySvg(report) { + const blockers = report.summary.blockCount; + const warnings = report.summary.warnCount; + const safe = Math.max(0, 10 - blockers - warnings); + return ` + + Model Assumption Diagnostics + ${escapeXml(report.manuscriptId)} · ${escapeXml(report.decision)} + + + ${report.riskScore}/100 + + + ${blockers} + blockers + + + + ${warnings} + warnings + + + + ${safe} + assumption checks clear + + +`; +} + +function escapeXml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """); +} diff --git a/model-assumption-diagnostics-assistant/package.json b/model-assumption-diagnostics-assistant/package.json new file mode 100644 index 00000000..705ffd1b --- /dev/null +++ b/model-assumption-diagnostics-assistant/package.json @@ -0,0 +1,12 @@ +{ + "name": "model-assumption-diagnostics-assistant", + "version": "1.0.0", + "description": "Synthetic model-assumption diagnostics assistant for SCIBASE AI review workflows.", + "type": "module", + "private": true, + "scripts": { + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "python demo_video.py" + } +} diff --git a/model-assumption-diagnostics-assistant/reports/demo-script.txt b/model-assumption-diagnostics-assistant/reports/demo-script.txt new file mode 100644 index 00000000..5a7452c1 --- /dev/null +++ b/model-assumption-diagnostics-assistant/reports/demo-script.txt @@ -0,0 +1,7 @@ +Demo: Model Assumption Diagnostics Assistant +Manuscript: SCI-MODEL-ASSUMPTION-001 +Decision: hold-ai-review +Risk score: 100/100 +Blockers: 4 +Warnings: 7 +Reviewer action: hold AI review until model family, separation, sensitivity, and diagnostic handoff blockers are fixed. \ No newline at end of file diff --git a/model-assumption-diagnostics-assistant/reports/demo.gif b/model-assumption-diagnostics-assistant/reports/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..15efea989d166d047c80bcf95c2d98dabebd43e3 GIT binary patch literal 49490 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%0A=dx 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 + + Model Assumption Diagnostics + SCI-MODEL-ASSUMPTION-001 · hold-ai-review + + + 100/100 + + + 4 + blockers + + + + 7 + warnings + + + + 0 + assumption checks clear + + diff --git a/model-assumption-diagnostics-assistant/requirements-map.md b/model-assumption-diagnostics-assistant/requirements-map.md new file mode 100644 index 00000000..a4af0fe3 --- /dev/null +++ b/model-assumption-diagnostics-assistant/requirements-map.md @@ -0,0 +1,27 @@ +# Requirements Map + +Issue #16 asks for an AI-powered research assistant suite that can detect methodology red flags, check claims against evidence, and provide useful review suggestions before public release. + +This contribution covers a distinct review capability: model-assumption diagnostics before an AI peer-review report is trusted. + +| Issue capability | Implementation | +| --- | --- | +| Methodological red flags | `reviewModelAssumptions()` flags model-family mismatch, low events per predictor, separation, heteroscedasticity, multicollinearity, outliers, autocorrelation, cluster fragility, and missing calibration. | +| Claims vs. evidence alignment | The assistant compares reviewer claims and remediation evidence against actual diagnostics. | +| Internal team review output | `buildReviewerMarkdown()` emits a reviewer-facing packet with evidence and remediation. | +| Reproducible synthetic demo | `demo.js` creates deterministic JSON, Markdown, SVG, and demo script artifacts from `sample-data.js`. | +| No private data or credentials | All inputs are synthetic and local; there are no network calls, secrets, patient records, payment data, or external services. | + +## Non-Overlap + +This is not: + +- A study-power or sample-size feasibility assistant. +- A missing-data sensitivity assistant. +- A causal adjustment or DAG review assistant. +- A Bayesian prior sensitivity assistant. +- An uncertainty calibration assistant. +- A figure or citation claim consistency assistant. +- A sample chain-of-custody assistant. + +The slice is specifically about whether the primary statistical or ML model can support the manuscript claims under its declared assumptions. diff --git a/model-assumption-diagnostics-assistant/sample-data.js b/model-assumption-diagnostics-assistant/sample-data.js new file mode 100644 index 00000000..108a4b4e --- /dev/null +++ b/model-assumption-diagnostics-assistant/sample-data.js @@ -0,0 +1,78 @@ +export const riskyAnalysisPacket = { + manuscriptId: "SCI-MODEL-ASSUMPTION-001", + title: "Predicting wet-lab replication yield from multi-site assay metadata", + domain: "computational biology", + declaredPrimaryModel: { + family: "linear-regression", + outcomeType: "binary", + outcomeDescription: "successful replication on follow-up assay", + linkFunction: "identity", + }, + reviewerClaims: [ + "The model explains assay replication success across partner labs.", + "No material modeling limitations were detected by the automated review assistant.", + "The top three features have independent effects after adjustment.", + ], + diagnostics: { + sampleSize: 84, + eventCount: 18, + predictors: 14, + residualSkew: 1.8, + outlierStudentizedResidualMax: 4.9, + breuschPaganPValue: 0.004, + maxVarianceInflationFactor: 12.6, + durbinWatson: 1.12, + completeSeparationIndicators: 2, + clusterCount: 3, + smallestClusterSize: 6, + transformationDeclared: false, + robustStandardErrorsDeclared: false, + crossValidationFolds: 3, + calibrationReported: false, + }, + remediationEvidence: { + sensitivityModelIncluded: false, + reviewerPacketLinksDiagnostics: false, + limitationTextMentionsAssumptionRisk: false, + plannedRefitFamily: "none", + }, +}; + +export const cleanAnalysisPacket = { + manuscriptId: "SCI-MODEL-ASSUMPTION-002", + title: "Estimating spectroscopy drift with pre-registered mixed-effects models", + domain: "instrumentation", + declaredPrimaryModel: { + family: "mixed-effects-logistic", + outcomeType: "binary", + outcomeDescription: "instrument drift outside tolerance", + linkFunction: "logit", + }, + reviewerClaims: [ + "The model uses an outcome-appropriate link function.", + "Diagnostics and limitations were included in the review packet.", + ], + diagnostics: { + sampleSize: 640, + eventCount: 214, + predictors: 8, + residualSkew: 0.42, + outlierStudentizedResidualMax: 2.4, + breuschPaganPValue: 0.21, + maxVarianceInflationFactor: 3.2, + durbinWatson: 1.96, + completeSeparationIndicators: 0, + clusterCount: 16, + smallestClusterSize: 28, + transformationDeclared: true, + robustStandardErrorsDeclared: true, + crossValidationFolds: 10, + calibrationReported: true, + }, + remediationEvidence: { + sensitivityModelIncluded: true, + reviewerPacketLinksDiagnostics: true, + limitationTextMentionsAssumptionRisk: true, + plannedRefitFamily: "mixed-effects-logistic", + }, +}; diff --git a/model-assumption-diagnostics-assistant/test.js b/model-assumption-diagnostics-assistant/test.js new file mode 100644 index 00000000..32d4b4d0 --- /dev/null +++ b/model-assumption-diagnostics-assistant/test.js @@ -0,0 +1,29 @@ +import assert from "node:assert/strict"; +import { cleanAnalysisPacket, riskyAnalysisPacket } from "./sample-data.js"; +import { buildReviewerMarkdown, buildSummarySvg, reviewModelAssumptions } from "./index.js"; + +const risky = reviewModelAssumptions(riskyAnalysisPacket); +assert.equal(risky.decision, "hold-ai-review"); +assert.ok(risky.riskScore >= 90); +assert.ok(risky.findings.some((finding) => finding.code === "MODEL_FAMILY_OUTCOME_MISMATCH")); +assert.ok(risky.findings.some((finding) => finding.code === "LOW_EVENTS_PER_PREDICTOR")); +assert.ok(risky.findings.some((finding) => finding.code === "SEPARATION_RISK")); +assert.ok(risky.findings.some((finding) => finding.code === "REVIEW_PACKET_INCOMPLETE")); +assert.ok(risky.findings.some((finding) => finding.code === "MULTICOLLINEARITY_HIGH")); + +const clean = reviewModelAssumptions(cleanAnalysisPacket); +assert.equal(clean.decision, "ready-for-ai-review"); +assert.equal(clean.summary.findingCount, 0); +assert.equal(clean.riskScore, 0); + +assert.throws(() => reviewModelAssumptions(null), /analysis packet must be an object/); + +const markdown = buildReviewerMarkdown(risky); +assert.match(markdown, /MODEL_FAMILY_OUTCOME_MISMATCH/); +assert.match(markdown, /hold-ai-review/); + +const svg = buildSummarySvg(risky); +assert.match(svg, / Date: Mon, 1 Jun 2026 09:02:39 -0600 Subject: [PATCH 2/2] Add MP4 demo for model assumption assistant --- .../README.md | 3 ++- .../demo_video.py | 8 +++++--- .../reports/demo.mp4 | Bin 0 -> 39332 bytes 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 model-assumption-diagnostics-assistant/reports/demo.mp4 diff --git a/model-assumption-diagnostics-assistant/README.md b/model-assumption-diagnostics-assistant/README.md index e8f1f9f8..f65363f4 100644 --- a/model-assumption-diagnostics-assistant/README.md +++ b/model-assumption-diagnostics-assistant/README.md @@ -26,6 +26,7 @@ Running the demo generates: - `reports/summary.svg` - `reports/demo-script.txt` - `reports/demo.gif` +- `reports/demo.mp4` The generated reviewer packet is synthetic only. It does not call external APIs, run live models, use credentials, or include private research data. @@ -37,4 +38,4 @@ npm run demo npm run demo:video ``` -`demo:video` renders a small local GIF demo from generated synthetic frames when Pillow is available. +`demo:video` renders small local GIF and MP4 demos from generated synthetic frames. diff --git a/model-assumption-diagnostics-assistant/demo_video.py b/model-assumption-diagnostics-assistant/demo_video.py index c6f63ef9..b62bfe6e 100644 --- a/model-assumption-diagnostics-assistant/demo_video.py +++ b/model-assumption-diagnostics-assistant/demo_video.py @@ -1,5 +1,7 @@ from pathlib import Path +import imageio.v3 as iio +import numpy as np from PIL import Image, ImageDraw, ImageFont @@ -37,8 +39,8 @@ def font(size): gif_path = REPORTS / "demo.gif" frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) +mp4_path = REPORTS / "demo.mp4" +iio.imwrite(mp4_path, [np.asarray(frame) for frame in frames], fps=8, codec="libx264") -# A GIF is committed as the visual demo artifact because this repository has no -# video toolchain. Keep an MP4-named placeholder out of the PR rather than -# pretending a non-video binary is playable. print(f"wrote {gif_path}") +print(f"wrote {mp4_path}") diff --git a/model-assumption-diagnostics-assistant/reports/demo.mp4 b/model-assumption-diagnostics-assistant/reports/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c05281998a89951b85fcfe9f6083a1608d4ae895 GIT binary patch literal 39332 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 WL1rXkzcXYM05A4U@M6nA_xe9pk