VAST · GPT-5.6-Terra · C3

Vastopolis outbreak investigation — C3 · ATWL + library

C3

Designed by GPT-5.6-Terra. ATWL specification + example + the 54-workflow library, pre-formalised in ATWL. ↓ download raw .atwl

Workflow header & template

workflow vastopolis-outbreak-origin-and-transmission-analysis template: characterise → loop(visualise → abstract → assess → generate-knowledge → characterise) → define-unit → loop(define-unit → characterise → contextualise → visualise → build-model → characterise → visualise → abstract → assess → generate-knowledge) → generate-knowledge description: "Human-in-the-loop visual analytics workflow for detecting a flu-like illness outbreak from geolocated microblogs, estimating plausible origin areas, comparing transmission-mechanism hypotheses, and producing uncertainty-aware emergency-response guidance."

Input

artifact D_posts : entities origin: given internal structure: elementary embedment: {set, space, time} features: - id: timestamp value structure: atomic value type: temporal description: "Posting time" - id: location value structure: atomic value type: spatial description: "GPS coordinate recorded by the mobile device" - id: text value structure: atomic value type: text description: "Microblog message content" description: "Geolocated and timestamped microblog messages posted in Vastopolis during the outbreak observation period." artifact D_zones : entities origin: given internal structure: region embedment: space features: - id: zone_name value structure: atomic value type: categorical description: "Identifier of one of the 13 city zones" - id: population value structure: atomic value type: numeric description: "Resident population of the zone" description: "Metropolitan analysis zones with population statistics." artifact D_map_features : entities origin: given internal structure: elementary embedment: space features: - id: feature_type value structure: atomic value type: categorical description: "Highway, hospital, landmark, water body, or other map feature" - id: geometry value structure: atomic value type: spatial description: "Spatial geometry of the map feature" description: "Mapped highways, hospitals, landmarks, and water bodies." artifact D_weather : entities origin: given internal structure: elementary embedment: time features: - id: wind_speed value structure: atomic value type: numeric description: "Observed wind speed" - id: wind_direction value structure: atomic value type: numeric description: "Observed wind direction" description: "Daily weather observations for Vastopolis." artifact K_epidemiology : knowledge(D_posts, D_zones, D_weather) origin: given representation form: "domain assumptions and interpretation criteria" description: "Public-health knowledge concerning flu-like symptoms, plausible incubation and reporting delays, expected spread mechanisms, intervention constraints, and known limitations of social-media signals." artifact S_signal_detection : specification origin: given representation form: "text-classification and filtering settings" description: "Initial syndrome vocabulary, symptom phrases, language rules, confidence threshold, and exclusion rules for news, metaphorical, historical, or non-local illness references." artifact S_outbreak_analysis : specification origin: given representation form: "spatio-temporal and mechanism-model settings" description: "Initial time-bin size, outbreak threshold, smoothing method, candidate lag range, spatial neighbourhood definition, and assumptions for person-to-person, airborne, waterborne, and other-source models."

Step 1: Initial Syndrome-Signal Extraction

transform T_extract_signal : intent: characterise manner: "text classification and symptom extraction" input: D_posts, S_signal_detection, K_epidemiology output: F_illness_signal actor: hybrid description: "Score each message for evidence of a contemporaneous, first-person or locally observed flu-like illness report; retain symptom terms, confidence, and exclusion rationale." artifact F_illness_signal : feature(D_posts) value structure: vector value type: {numeric, categorical, text} description: "Per-message illness relevance score, symptom indicators, report category, and exclusion reason."

Step 2: Signal-Quality Refinement Loop

loop L_signal_refinement: purpose: "Ensure that microblog-derived illness reports provide a credible outbreak signal rather than primarily news, noise, or reporting artefacts" until: "The analyst judges that retained messages plausibly indicate current local illness and that obvious false-positive patterns are controlled" body: transform T_visualise_signal : intent: visualise manner: "linked message map, timeline, and text inspection" input: D_posts, F_illness_signal, D_zones output: V_signal actor: machine description: "Show illness-score distributions over time and space, representative message text, and linked zone summaries." artifact V_signal : visualisation(D_posts, F_illness_signal, D_zones) layout: "geographic map, temporal histogram, ranked message list" form: "points, bars, and text records" encoding: "map position from GPS coordinates; point colour from illness confidence; temporal position from timestamp; text panel shows message content and classification rationale" description: "Coordinated view for inspecting whether extracted messages plausibly reflect an emerging outbreak." transform T_interpret_signal : intent: abstract manner: "perception-and-interpretation of message validity" input: V_signal, K_epidemiology output: P_signal_characteristics actor: human description: "Identify false-positive themes, reporting biases, plausible symptom language, and spatial or temporal concentrations." artifact P_signal_characteristics : pattern(D_posts) representation form: "descriptions of reliable and unreliable message types" description: "Observed message patterns indicating credible illness reports, likely news or metaphor, and possible reporting biases." transform T_assess_signal : intent: assess manner: "evaluate syndrome-detection adequacy" input: V_signal, P_signal_characteristics, K_epidemiology output: K_signal_quality actor: human description: "Judge whether the extraction settings produce a sufficiently credible illness signal for outbreak analysis." artifact K_signal_quality : knowledge(F_illness_signal) representation form: "quality judgment" description: "Assessment of signal validity, noise, likely reporting artefacts, and need for further detection refinement." if K_signal_quality indicates refinement needed: then: transform T_refine_signal_detection : intent: generate-knowledge manner: "revise classification and filtering criteria" input: K_signal_quality, P_signal_characteristics, S_signal_detection output: S_signal_detection_r actor: human description: "Adjust symptom vocabulary, confidence thresholds, exclusion patterns, or language rules." artifact S_signal_detection_r : specification representation form: "revised text-classification settings" description: "Updated syndrome-detection criteria." transform T_reextract_signal : intent: characterise manner: "reclassify messages with revised settings" input: D_posts, S_signal_detection_r, K_epidemiology output: F_illness_signal_r actor: machine description: "Recompute illness-report relevance and categories." artifact F_illness_signal_r : feature(D_posts) value structure: vector value type: {numeric, categorical, text} description: "Updated illness-signal classification results." assign: S_signal_detection := S_signal_detection_r F_illness_signal := F_illness_signal_r else: exit loop L_signal_refinement end loop L_signal_refinement

Step 3: Define Illness-Report Analysis Units

transform T_select_illness_posts : intent: define-unit manner: "filter high-confidence illness reports" input: D_posts, F_illness_signal, S_signal_detection output: D_illness_posts actor: machine description: "Retain posts meeting the validated illness-report criteria." artifact D_illness_posts : entities internal structure: elementary embedment: {set, space, time} features: - id: illness_confidence value structure: atomic value type: numeric description: "Validated confidence that the post reports current illness" - id: symptom_terms value structure: list value type: text description: "Extracted symptom terms" description: "Filtered geolocated microblog reports treated as an outbreak-surveillance signal rather than confirmed clinical cases."

Step 4: Outbreak Hypothesis Refinement Loop

loop L_outbreak_hypothesis: purpose: "Estimate outbreak origin and compare transmission explanations through iterative spatial-temporal modelling and visual residual analysis" until: "A source-area hypothesis and transmission explanation are sufficiently supported for provisional emergency action, with uncertainty and alternative explanations explicitly documented" body: # ------------------------------------------------------------------------ # 4a. Construct population-normalised zone-time episodes # ------------------------------------------------------------------------ transform T_aggregate_zone_time : intent: define-unit manner: "spatio-temporal aggregation into zone-time episodes" input: D_illness_posts, D_zones, S_outbreak_analysis output: D_zone_time, F_burden actor: machine description: "Aggregate illness reports into configurable time bins within zones; compute population-normalised illness-report burden." artifact D_zone_time : entities internal structure: episode embedment: {space, time} features: - id: zone_reference value structure: atomic value type: reference description: "Associated city zone" - id: temporal_extent value structure: atomic value type: temporal description: "Start and end of the aggregation interval" description: "Zone-by-time outbreak-surveillance episodes." artifact F_burden : feature(D_zone_time) value structure: vector value type: numeric representation form: "counts and population-normalised rates" description: "Illness-post count, rate per resident population, symptom composition, and confidence-weighted burden per zone-time unit." # ------------------------------------------------------------------------ # 4b. Derive propagation and contextual features # ------------------------------------------------------------------------ transform T_characterise_spread : intent: characterise manner: "compute onset, growth, neighbourhood, and exposure features" input: D_zone_time, F_burden, D_map_features, D_weather, S_outbreak_analysis output: F_spread, F_context actor: machine description: "Compute sustained-onset time, growth rate, local propagation relations, zone adjacency, wind-aligned exposure, proximity to water, hospitals, landmarks, and highways." artifact F_spread : feature(D_zone_time) value structure: vector value type: {numeric, temporal} description: "Temporal outbreak descriptors including baseline-adjusted burden, onset time, growth rate, persistence, and lagged spread relationships to neighbouring zones." artifact F_context : feature(D_zone_time) value structure: vector value type: {numeric, spatial, categorical} description: "Contextual descriptors including population, zone adjacency, distance to water, highways, landmarks and hospitals, plus wind direction and speed during plausible exposure windows." transform T_arrange_zone_time_map : intent: contextualise manner: "map-based arrangement with temporal small multiples" input: D_zone_time, D_zones output: A_zone_time_map actor: machine description: "Place each zone-time episode in its geographic zone, retaining time as an animation, small-multiple, or timeline dimension." artifact A_zone_time_map : arrangement(D_zone_time) context: D_zones principle: "geographic zone placement with ordered temporal bins" description: "Map arrangement for comparing burden, onset, and growth across zones through time." transform T_visualise_outbreak : intent: visualise manner: "coordinated outbreak map, timeline, and space-time view" input: A_zone_time_map, F_burden, F_spread, F_context, D_map_features, D_weather output: V_outbreak actor: machine description: "Visualise population-normalised burden, onset order, growth, contextual infrastructure, water bodies, and wind vectors." artifact V_outbreak : visualisation(A_zone_time_map, F_burden, F_spread, F_context, D_map_features, D_weather) layout: "linked map, zone timelines, onset-ranking chart, and space-time display" form: "coloured regions, proportional marks, lines, arrows, and bars" encoding: "map position from zones; colour from burden or onset; mark size from growth; arrows from wind direction and speed; overlays identify water, highways, hospitals, and landmarks" description: "Interactive overview for visually identifying early clusters, propagation fronts, and contextual correspondences." # ------------------------------------------------------------------------ # 4c. Build source and competing-mechanism models # ------------------------------------------------------------------------ transform T_build_hypothesis_models : intent: build-model manner: "fit source inference and competing spread models" input: D_zone_time, F_burden, F_spread, F_context, K_epidemiology, S_outbreak_analysis output: M_origin, M_transmission actor: hybrid description: "Build a source-ranking model and alternative spatio-temporal transmission models using epidemiologically plausible lags and mechanisms." artifact M_origin : model(D_zone_time, F_burden, F_spread) model type: "spatio-temporal source inference model" representation form: "candidate source zone-time likelihood surface" description: "Ranks candidate origin locations and times according to early sustained burden and subsequent outward propagation." artifact M_transmission : model(F_spread, F_context, D_weather) model type: "competing transmission-mechanism models" representation form: "mechanism-specific lagged spatial propagation models" description: "Alternative explanatory models for person-to-person or local-contact spread, wind-aligned airborne spread, water-associated spread, and other/common-source or reporting-bias explanations." transform T_score_hypotheses : intent: characterise manner: "estimate fit, prediction, and residual patterns" input: M_origin, M_transmission, D_zone_time, F_burden, F_spread, F_context output: F_origin_scores, F_mechanism_fit, F_residuals actor: machine description: "Compute candidate-origin scores, mechanism-specific fit statistics, predicted propagation patterns, and unexplained spatial-temporal residuals." artifact F_origin_scores : feature(D_zone_time) value structure: atomic value type: numeric description: "Relative support for each zone-time unit as a plausible outbreak origin." artifact F_mechanism_fit : feature(M_transmission) value structure: vector value type: numeric description: "Comparative fit, lag consistency, and uncertainty for person-to-person, airborne, waterborne, and other-source hypotheses." artifact F_residuals : feature(D_zone_time) value structure: vector value type: numeric description: "Differences between observed and model-predicted burden or propagation, used to detect systematic unexplained patterns." transform T_visualise_hypotheses : intent: visualise manner: "comparative origin and mechanism evidence dashboard" input: V_outbreak, F_origin_scores, F_mechanism_fit, F_residuals, M_transmission output: V_hypotheses actor: machine description: "Compare observed spread with mechanism-specific expected fronts, residual maps, source rankings, wind alignment, and lag plots." artifact V_hypotheses : visualisation(V_outbreak, F_origin_scores, F_mechanism_fit, F_residuals, M_transmission) layout: "coordinated source-ranking panel, observed-versus-predicted maps, lag plots, mechanism comparison chart, and residual map" form: "ranked bars, maps, temporal curves, directional arrows, uncertainty intervals, and residual marks" encoding: "source rank from origin score; model colour from mechanism; observed and predicted burden shown comparatively; residual colour from under- or over-prediction; uncertainty shown by intervals" description: "Evidence dashboard for judging where the outbreak likely started and which transmission explanation best accounts for spread." # ------------------------------------------------------------------------ # 4d. Human interpretation and assessment # ------------------------------------------------------------------------ transform T_interpret_hypotheses : intent: abstract manner: "epidemiological interpretation of competing explanations" input: V_hypotheses, K_epidemiology output: P_outbreak_hypotheses actor: human description: "Interpret candidate origin areas, probable propagation sequence, support for each mechanism, contradictory evidence, and possible reporting artefacts." artifact P_outbreak_hypotheses : pattern(D_zone_time, M_transmission) representation form: "ranked origin and transmission hypotheses" description: "Interpreted candidate origin zone-time areas, likely propagation paths, leading mechanism explanation, alternatives, residual anomalies, and explicit uncertainty." transform T_assess_hypotheses : intent: assess manner: "evaluate evidential adequacy and actionability" input: P_outbreak_hypotheses, V_hypotheses, K_epidemiology output: K_hypothesis_quality actor: human description: "Judge whether source and mechanism inferences are stable, epidemiologically plausible, and adequate for provisional action." artifact K_hypothesis_quality : knowledge(P_outbreak_hypotheses) representation form: "quality judgment" description: "Assessment of confidence, unresolved alternatives, sensitivity to assumptions, and whether refinement is required." if K_hypothesis_quality indicates refinement needed: then: transform T_refine_outbreak_analysis : intent: generate-knowledge manner: "revise temporal scale, lag assumptions, thresholds, contextual covariates, or mechanism comparison criteria" input: K_hypothesis_quality, P_outbreak_hypotheses, V_hypotheses, S_outbreak_analysis output: S_outbreak_analysis_r actor: human description: "Refine the analysis configuration in response to residual patterns, implausible assumptions, or unresolved mechanism ambiguity." artifact S_outbreak_analysis_r : specification representation form: "revised outbreak-analysis settings" description: "Updated aggregation, lag, spatial-neighbourhood, mechanism-model, and evaluation settings." assign: S_outbreak_analysis := S_outbreak_analysis_r else: exit loop L_outbreak_hypothesis end loop L_outbreak_hypothesis

Step 5: Operational Knowledge Synthesis

transform T_generate_response_guidance : intent: generate-knowledge manner: "formulate uncertainty-aware emergency recommendations" input: P_outbreak_hypotheses, K_hypothesis_quality, F_origin_scores, F_mechanism_fit, F_residuals, K_epidemiology output: K_response_guidance actor: human description: "Produce a ranked, conditional response plan: priority areas for field investigation and care deployment; mechanism-specific interventions; required confirmatory evidence; and surveillance actions." artifact K_response_guidance : knowledge(P_outbreak_hypotheses, K_hypothesis_quality) representation form: "ranked findings, conditional recommendations, and uncertainty statement" description: "Operational guidance stating: likely origin area(s) and onset period; ranked transmission hypotheses and supporting evidence; unexplained anomalies; priority zones for clinical outreach and case investigation; conditional environmental sampling or airflow/water investigation; recommended additional data collection; and explicit caveat that microblog evidence alone cannot establish causality."