VIS · Claude Sonnet 5 · C6

IEEE VIS author-community analysis — C6 · faithful translation

C6

Designed by Claude Sonnet 5. Faithful ATWL translation of the model's own C4 prose design (continuing that chat); instructed not to fabricate structure. ↓ download raw .atwl

Workflow header & template

workflow vis-coauthorship-community-evolution template: define-unit (authors) → characterise (full-period co-authorship) → loop(define-unit (windows) → characterise (per-window co-authorship) → define-unit (anchor + per-window communities) → characterise (cross-time overlap/flow) → contextualise (state projection + flow layout) → visualise → abstract (evolution events) → assess) → generate-knowledge (evolution findings) → characterise (author tenure/centrality/cross-membership) → define-unit (author roles) → visualise (NodeTrix + author timelines) → abstract (stability patterns) → generate-knowledge (stability findings) → characterise (text features) → loop(build-model (topic model) → visualise → assess) → characterise (topic profiles per community-period) → visualise (topic evolution) → abstract (research foci) → generate-knowledge (foci findings) → characterise (pairwise overlap matrix) → visualise (overlap matrix) → abstract (overlap patterns) → generate-knowledge (integrated synthesis) description: "Visual analytics workflow for identifying and characterising the intellectual communities of the IEEE VIS co-authorship network, tracking their core stability, membership drift, merge/split/dissolution events, and associated research foci across 1990-2024"

Input

artifact D_papers : entities origin: given internal structure: elementary embedment: {set, time} features: - id: f_authors value structure: list value type: reference description: "Disambiguated author IDs" - id: f_year value structure: atomic value type: temporal description: "Publication year" - id: f_title value structure: atomic value type: text - id: f_abstract value structure: atomic value type: text - id: f_keywords value structure: list value type: text - id: f_citations value structure: list value type: reference description: "Citation links (provided but not used in this workflow)" description: "3596 IEEE VIS papers (Vis/InfoVis/VAST/SciVis), 1990-2024"

Phase 0: Define Authors And Full-Period Co-Authorship Network

transform T_define_authors : intent: define-unit manner: "extract" input: D_papers output: D_authors actor: machine description: "Extract distinct disambiguated authors as analysis units" artifact D_authors : entities internal structure: elementary embedment: {time, relational structure} features: - id: f_active_years value structure: list value type: temporal description: "Years in which the author published" description: "Distinct disambiguated authors, situated in publication time and in the co-authorship network" transform T_char_coauthor_full : intent: characterise manner: "define-relations (co-authorship, full period)" input: D_authors, D_papers output: F_coauthor_full actor: machine description: "Compute weighted co-authorship relation across the full 1990-2024 period, edge weight = number of joint papers" artifact F_coauthor_full : feature(D_authors) value structure: relational configuration value type: numeric representation form: "weighted co-authorship graph, full period (anchor structure)" description: "Full-period network used to anchor long-run community structure"

Specification: Community-Detection Parameters

artifact S_detection_spec : specification origin: given representation form: "parameter settings (window length, window step, community-detection algorithm and resolution)" description: "Initial analyst-defined choices governing temporal windowing and community-detection granularity"

Phase 1-3 (Looped): Windowing, Community Detection, Cross-Time Matching

loop L_community_structure: purpose: "Refine temporal windowing and community-detection resolution until communities are neither too fragmented nor too coarse, and community-flow matches (persistence/merge/split/dissolution) are plausible given domain knowledge of the VIS community" until: "Community partition granularity and cross-time matches are judged adequate by the analyst" body: transform T_partition_windows : intent: define-unit manner: "time-partitioning with overlapping windows" input: D_papers, S_detection_spec output: D_windows actor: hybrid description: "Partition 1990-2024 into overlapping time windows (e.g. 5-year windows advancing by 1-2 years)" artifact D_windows : entities internal structure: episode embedment: time features: - id: f_window_span value structure: atomic value type: temporal description: "Start and end year of the window" description: "Overlapping time windows over the publication period" transform T_char_window_graphs : intent: characterise manner: "define-relations (co-authorship, per window)" input: D_authors, D_papers, D_windows output: F_coauthor_windows actor: machine description: "Compute weighted co-authorship subgraph restricted to authors/papers active within each window" artifact F_coauthor_windows : feature(D_windows) value structure: relational configuration value type: numeric representation form: "weighted co-authorship graph per window" description: "Sequence of comparable network snapshots" transform T_anchor_communities : intent: define-unit manner: "cluster-by-similarity (graph community detection, full period)" input: D_authors, F_coauthor_full, S_detection_spec output: D_anchor_communities, F_anchor_membership actor: machine description: "Detect long-term reference communities from the full-period network" artifact D_anchor_communities : entities internal structure: group/cluster embedment: set features: - id: f_size value structure: atomic value type: numeric description: "Long-run reference communities of collaborating authors" artifact F_anchor_membership : feature(D_authors) value structure: atomic value type: categorical description: "Anchor-community label per author" transform T_window_communities : intent: define-unit manner: "cluster-by-similarity (graph community detection, per window)" input: D_authors, F_coauthor_windows, S_detection_spec output: D_window_communities, F_window_membership actor: machine description: "Detect communities independently within each windowed snapshot, capturing short-lived alliances and emerging groups" artifact D_window_communities : entities internal structure: group/cluster embedment: {set, time} features: - id: f_size value structure: atomic value type: numeric - id: f_window value structure: atomic value type: reference description: "Per-window communities of collaborating authors" artifact F_window_membership : feature(D_authors) value structure: atomic value type: categorical description: "Per-window community label per author (varies by window)" transform T_char_overlap : intent: characterise manner: "define-relations (membership overlap across adjacent windows)" input: D_window_communities, F_window_membership output: F_community_flow actor: machine description: "Compute weighted overlap of author membership between communities in adjacent/overlapping windows" artifact F_community_flow : feature(D_window_communities) value structure: relational configuration value type: numeric representation form: "directed weighted graph linking (community,window) pairs by membership overlap" description: "Community-flow structure capturing persistence, split, merge, emergence, dissolution" transform T_project_states : intent: contextualise manner: "projection-based (community-state embedding)" input: D_window_communities, F_community_flow output: D_state_space, A_state_projection actor: machine description: "Embed each (community,window) state in 2D by member/topic similarity to reveal stable regimes vs. transient states" artifact D_state_space : entities internal structure: elementary features: - id: f_dimensions value structure: atomic value type: numeric description: "Computed 2D projection space for community-window states" artifact A_state_projection : arrangement(D_window_communities) context: D_state_space principle: "similarity-preserving projection of member/topic vectors" description: "Layout where proximity indicates persistence across windows" transform T_arrange_flow : intent: contextualise manner: "flow/alluvial arrangement based on temporal order and overlap" input: D_window_communities, F_community_flow, D_windows output: A_flow_layout actor: machine description: "Arrange communities along the temporal axis with ribbon widths determined by overlap weights" artifact A_flow_layout : arrangement(D_window_communities) context: D_windows principle: "alluvial/stream layout ordered by time window, ribbon width by overlap weight" description: "Temporal arrangement suitable for visualising merges, splits, and dissolutions" transform T_vis_evolution : intent: visualise manner: "coordinated alluvial diagram and projection scatterplot" input: A_flow_layout, A_state_projection, F_community_flow output: V_evolution actor: machine description: "Render community-flow as alluvial diagram alongside a 2D state-projection scatterplot with trails linking matched states" artifact V_evolution : visualisation(A_flow_layout, A_state_projection, F_community_flow) layout: "alluvial diagram; 2D projection scatterplot" form: "stream ribbons; coloured points with trails" encoding: "ribbon width/position from F_community_flow; point position from A_state_projection; trails connect matched states across windows" description: "Overview for detecting persistent, merging, splitting, emerging, and dissolving communities" transform T_abstract_events : intent: abstract manner: "perception-and-interpretation of evolution events" input: V_evolution, F_community_flow output: P_evolution_events actor: human description: "Visually identify and classify evolution events (persist/split/merge/emerge/dissolve) per community trajectory" artifact P_evolution_events : pattern(D_window_communities) representation form: "labelled event templates (persist/split/merge/ emerge/dissolve) per community trajectory" description: "Identified structural evolution events" transform T_assess_structure : intent: assess manner: "judge community granularity and match plausibility" input: V_evolution, P_evolution_events output: K_structure_quality actor: human description: "Judge whether communities are appropriately resolved and whether identified merge/split/dissolution matches are plausible given domain knowledge of the VIS community" artifact K_structure_quality : knowledge(D_window_communities, P_evolution_events) representation form: "quality judgment" description: "Assessment of whether resolution/windowing needs adjustment" if K_structure_quality indicates refinement needed: then: transform T_refine_detection_spec : intent: generate-knowledge manner: "formulate methodological adjustment" input: K_structure_quality, S_detection_spec output: S_detection_spec_r actor: human description: "Adjust window size/step, clustering algorithm or resolution parameter based on assessment" artifact S_detection_spec_r : specification representation form: "updated parameter settings" description: "Refined temporal-windowing and community-detection configuration" assign: S_detection_spec := S_detection_spec_r else: exit loop L_community_structure end loop L_community_structure transform T_knowledge_evolution : intent: generate-knowledge manner: "formulate-statements" input: P_evolution_events, V_evolution output: K_evolution actor: human description: "Formulate conclusions about the number of distinct long-run communities and when/how they merged, split, or dissolved" artifact K_evolution : knowledge(P_evolution_events, D_window_communities) representation form: "statements" description: "Conclusions about community count and evolution events"

Phase 4: Core Stability And Leadership

transform T_char_author_metrics : intent: characterise manner: "compute-statistics (tenure, centrality, cross-membership)" input: D_authors, F_window_membership, F_coauthor_windows output: F_author_metrics actor: machine description: "Compute per-author tenure (fraction of windows in a given community), within-community centrality per window, and count of distinct communities occupied over the full period" artifact F_author_metrics : feature(D_authors) value structure: vector value type: numeric description: "Tenure, centrality, and cross-membership count per author" transform T_classify_authors : intent: define-unit manner: "rule-based classification (core / peripheral / boundary-spanning)" input: D_authors, F_author_metrics output: D_author_roles, F_role_label actor: hybrid description: "Classify authors into core (high tenure+centrality), peripheral/transient, and boundary-spanning (multi-community) roles" artifact D_author_roles : entities internal structure: group/cluster embedment: set description: "Groups of authors sharing the same structural role" artifact F_role_label : feature(D_authors) value structure: atomic value type: categorical description: "Assigned role label per author" transform T_vis_nodetrix : intent: visualise manner: "node-link/matrix hybrid (NodeTrix)" input: D_window_communities, F_coauthor_windows, F_role_label output: V_nodetrix actor: machine description: "For a selected community-period, render the dense collaboration core as an adjacency matrix and bridging ties as node-link edges" artifact V_nodetrix : visualisation(D_window_communities, F_coauthor_windows, F_role_label) layout: "hybrid node-link and matrix" form: "adjacency matrix blocks for dense cores; node-link edges for inter-community ties" encoding: "matrix cell = intra-core edge weight; node colour = role label; external edges = bridging ties" description: "Detailed core-periphery/leadership structure of one community" transform T_vis_author_timeline : intent: visualise manner: "scarf-plot / event-sequence timeline per author" input: D_authors, F_window_membership, D_windows output: V_author_timeline actor: machine description: "Render each author as a track with coloured segments indicating community membership per window" artifact V_author_timeline : visualisation(D_authors, F_window_membership, D_windows) layout: "aligned horizontal timelines, one row per author" form: "coloured segments" encoding: "row = author; horizontal position = time window; colour = community membership" description: "Author-level view of membership stability and drift" transform T_abstract_stability : intent: abstract manner: "perception-and-interpretation of stability/leadership patterns" input: V_nodetrix, V_author_timeline, F_author_metrics output: P_stability_patterns actor: human description: "Identify stable cores/leaders per community and members who move between or span multiple communities" artifact P_stability_patterns : pattern(D_authors, D_window_communities) representation form: "labelled roles with textual descriptions" description: "Core stability, leadership, and drift characterisation" transform T_knowledge_stability : intent: generate-knowledge manner: "formulate-statements" input: P_stability_patterns output: K_stability actor: human description: "Formulate conclusions about core stability and leadership per community" artifact K_stability : knowledge(P_stability_patterns) representation form: "statements" description: "Conclusions on which communities have stable cores/leaders and which show high turnover"

Phase 5: Research Foci (Human-Steered Topic Modelling)

transform T_char_text_features : intent: characterise manner: "encode (term-document representation)" input: D_papers output: F_text_features actor: machine description: "Build term-document matrix from titles, abstracts, and keywords" artifact F_text_features : feature(D_papers) value structure: matrix value type: numeric representation form: "term-document matrix" description: "Textual representation of papers for topic modelling" artifact S_topic_spec : specification origin: given representation form: "parameter settings (number of topics, seed terms)" description: "Initial topic-model configuration" loop L_topic_refinement: purpose: "Interactively steer the NMF topic model until topics are coherent, non-redundant, and align with recognisable VIS research areas" until: "Topics are judged coherent and interpretable" body: transform T_build_topic_model : intent: build-model manner: "fit-topic-model (NMF)" input: F_text_features, S_topic_spec output: M_topic_model actor: machine description: "Fit NMF topic model using current specification" artifact M_topic_model : model(F_text_features) model type: "topic model" representation form: "matrix factorisation (W,H)" description: "NMF-based topic model of the paper corpus" transform T_vis_topics : intent: visualise manner: "topic term/document display" input: M_topic_model output: V_topics actor: machine description: "Display top terms per topic and representative documents" artifact V_topics : visualisation(M_topic_model) layout: "ranked term lists with representative documents" form: "ranked term lists, document excerpts" encoding: "topic weight -> term rank; document-topic weight -> representative document selection" description: "Interface for inspecting the current topic decomposition" transform T_assess_topics : intent: assess manner: "judge topic coherence and interpretability" input: V_topics output: K_topic_quality actor: human description: "Judge whether topics are coherent, distinct, and align with known VIS research areas" artifact K_topic_quality : knowledge(M_topic_model) representation form: "quality judgment" description: "Assessment of topic coherence/redundancy" if K_topic_quality indicates refinement needed: then: transform T_refine_topic_spec : intent: generate-knowledge manner: "formulate methodological adjustment (merge/split/seed topics)" input: K_topic_quality, S_topic_spec output: S_topic_spec_r actor: human description: "Merge redundant topics, split overly broad ones, or seed new topics from representative terms/documents" artifact S_topic_spec_r : specification representation form: "updated parameter settings and seed constraints" description: "Refined topic-model configuration" assign: S_topic_spec := S_topic_spec_r else: exit loop L_topic_refinement end loop L_topic_refinement transform T_char_topic_profiles : intent: characterise manner: "aggregate (topic-mixture per community-period)" input: D_window_communities, M_topic_model, D_papers output: F_topic_profiles actor: machine description: "Aggregate topic-mixtures of papers authored within each community-period into a single topic profile" artifact F_topic_profiles : feature(D_window_communities) value structure: vector value type: numeric description: "Topic-mixture (research-foci) profile per community-window" transform T_vis_topic_evolution : intent: visualise manner: "matrix / small-multiples" input: F_topic_profiles, D_window_communities, D_windows output: V_topic_evolution actor: machine description: "Visualise topic-profile distributions across communities and time" artifact V_topic_evolution : visualisation(F_topic_profiles, D_window_communities, D_windows) layout: "matrix (community x time) / small multiples" form: "stacked bars or heatmap cells" encoding: "rows = communities; columns = time windows; cell content = topic-mixture profile" description: "Display of research-foci evolution per community" transform T_abstract_foci : intent: abstract manner: "name-patterns" input: V_topic_evolution, F_topic_profiles output: P_research_foci actor: human description: "Assign descriptive labels to dominant topics per community-period and identify foci shifts over time" artifact P_research_foci : pattern(D_window_communities) representation form: "labelled topic descriptions per community-period" description: "Named research foci and their temporal evolution" transform T_knowledge_foci : intent: generate-knowledge manner: "formulate-statements" input: P_research_foci output: K_foci actor: human description: "Formulate conclusions about each community's main research foci and how they evolved" artifact K_foci : knowledge(P_research_foci) representation form: "statements" description: "Conclusions about community-specific research foci and their evolution"

Phase 6: Cross-Community Membership Overlap

transform T_char_overlap_matrix : intent: characterise manner: "define-relations (pairwise membership overlap within a window)" input: D_window_communities, F_window_membership output: F_overlap_matrix actor: machine description: "For each window, compute a pairwise overlap matrix among communities based on shared author membership" artifact F_overlap_matrix : feature(D_window_communities) value structure: matrix value type: numeric representation form: "pairwise community overlap matrix per window" description: "Cross-community membership overlap" transform T_vis_overlap : intent: visualise manner: "matrix-plot" input: F_overlap_matrix output: V_overlap actor: machine description: "Display community x community overlap matrix per window" artifact V_overlap : visualisation(F_overlap_matrix) layout: "matrix grid, selectable per time window" form: "heatmap cells" encoding: "cell colour intensity = degree of shared authorship" description: "Overview for detecting high-overlap community pairs and their change over time" transform T_abstract_overlap : intent: abstract manner: "find-salient-groups" input: V_overlap output: P_overlap_patterns actor: human description: "Identify community pairs with persistently high overlap, candidates for merging or loss of distinctiveness" artifact P_overlap_patterns : pattern(D_window_communities) representation form: "ranked list of high-overlap community pairs" description: "Salient overlap relationships between communities across time"

Final Synthesis

transform T_final_synthesis : intent: generate-knowledge manner: "formulate-statements (integrated synthesis)" input: K_evolution, K_stability, K_foci, P_overlap_patterns output: K_findings actor: human description: "Synthesise conclusions across community evolution, core stability/leadership, research foci, and cross-community overlap" artifact K_findings : knowledge(D_window_communities, D_authors) representation form: "statements and structured summary" description: "Integrated findings: number/identity of major communities, core stability and leadership, research foci and their evolution, membership overlap and its change over time, and merge/split/ dissolution events with plausible interpretations"