Author one of the most decision-relevant live dashboards SciDEX could carry:
the Alzheimer's-disease therapeutic landscape, joining our internal
hypothesis ranking against external clinical-trial reality. Render mechanism
(amyloid / tau / inflammation / synaptic / metabolic / other) × phase
(preclinical / I / II / III / approved) × sponsor-class
(industry / academia / consortia), with cell coloring by SciDEX
composite_score of the dominant supporting hypothesis. Use the existing
view_spec_json DSL + evaluate_view_spec engine (no new rendering
infrastructure).
scidex.atlas.artifact_registry.register_dashboard with slugad-therapeutic-landscape.
_validate_query inscidex/senate/dashboard_engine.py:455:trials — joins clinical_trials (table fromsearch.py/ClinicalTrials.gov ingest) on AD-related conditions,internal_scores — hypotheses aggregated by mechanism tag.convergence — pulls Q-OPENQ field leaderboard top-5 to surfacerender.template = new landscape_heatmap.html template added to_TEMPLATES registry. Cell tooltip shows trialcache_ttl_seconds=3600; manual force-refresh viaGET /api/dashboard/{id}/refresh.
POST /api/dashboard/{id}/snapshot from done task12b77c9e) produces an immutable child artifact whosemetadata.parent_dashboard_id equals this one. Acceptance: take amaterialized_data differs.
/dashboard/ad-therapeutic-landscape.scidex/senate/dashboard_engine.py:739 (render_dashboard) and_TEMPLATES to learn what's needed to add a new template.
clinical_trials table schema (likely populated bytools/search_trials.py or search.py).
mechanism_tags and trial intervention names (no LLM in render path —mechanism_bucketse352460b-2d76 — view_spec_json DSL (done)12b77c9e-5e9e — snapshot endpoint (done)41620b88-115d — seed dashboards pattern (done; this follows the sameregister_dashboard shape)Implementation notes:
clinical_trials does not exist as a standalone table. The ingest stores trial data astargets.clinical_trials. Queries were written accordingly using a CTE to unnestjsonb_array_elements().
"targets" to ALLOWED_TABLES in dashboard_engine.py to allow the trials query._compile_named_query: bare % chars in ILIKE patterns were passed as-is_pc() helper to% → %% everywhere except the named-param %s replacements.
landscape_heatmap.html Jinja2 template to _TEMPLATES. Uses JS pivot logicscColor() for score gradient).
ad-therapeutic-landscape viascripts/seed_ad_landscape_dashboard.py (follows seed_production_dashboards.py pattern).
12b77c9e) not exercised: POST /api/dashboard/{id}/snapshotFiles changed:
scidex/senate/dashboard_engine.py — ALLOWED_TABLES, _pc() fix, landscape_heatmap.htmlscripts/seed_ad_landscape_dashboard.py — new registration scripttests/test_ad_therapeutic_landscape.py — 15 testsdocs/planning/specs/q-live-ad-therapeutic-landscape_spec.md — this work log