[Investigation]

Graph Link Analysis

An analyst tracking a financial crime network may have dozens of entities — persons, companies, addresses, accounts — spread across separate profiles and investigations.

Module metadata

An analyst tracking a financial crime network may have dozens of entities — persons, companies, addresses, accounts — spread across separate profiles and investigations.

Back to All Modules

Source reference

content/modules/graph-link-analysis.md

Last Updated

Apr 14, 2026

Category

Investigation

Content checksum

a5b62d43eeec59fd

Tags

investigationai

Overview#

An analyst tracking a financial crime network may have dozens of entities — persons, companies, addresses, accounts — spread across separate profiles and investigations. The relationships between them are only visible when all the entities are placed on a canvas together and the connections between them drawn as edges. A well-laid-out graph makes clusters of associated entities obvious, reveals previously unnoticed bridges between communities, and allows the analyst to trace a path from a known bad actor to an unknown one in a few seconds of visual inspection rather than hours of manual cross-referencing.

The Graph Link Analysis module renders investigation graph data as an interactive node-edge diagram with server-computed and client-side layout algorithms based on published academic standards. Entities become nodes; relationships become directed edges. The layout engine positions nodes using force-directed or energy-minimisation algorithms so that connected entities are drawn near each other and the overall diagram minimises visual clutter. Analysts can export the full graph in GEXF 1.3 format for further analysis in external tools such as Gephi.

Diagram

graph LR
    A[Entities] --> C[Layout Algorithm]
    B[Relationships] --> C
    C --> D1[Fruchterman-Reingold]
    C --> D2[Kamada-Kawai]
    D1 --> E[Positioned Graph]
    D2 --> E
    E --> F[WebGL Render]
    E --> G[GEXF Export]
    F --> H[Interactive Canvas]
    G --> I[External Analysis Tools]

Last Reviewed: 2026-04-14 Last Updated: 2026-04-14

Key Features#

  • Force-Directed Graph Layout: Node positions are computed with the Fruchterman-Reingold force-directed algorithm (1991). Repulsive forces push all node pairs apart while attractive forces pull connected pairs together. A geometrically cooled temperature limits displacement each iteration, allowing the layout to converge to a low-energy configuration that places related entities close together and reduces edge crossings.

  • Energy-Minimisation Layout: The Kamada-Kawai algorithm (1989) computes positions by minimising the difference between Euclidean node distances and graph-theoretic (shortest-path) distances. Spring constants and desired edge lengths are derived from the all-pairs shortest-path matrix via Floyd-Warshall. This algorithm produces aesthetically clean layouts for sparse graphs where geodesic distance is meaningful.

  • GEXF 1.3 Export: The complete investigation graph — filtered to the requesting organisation — can be exported as a GEXF 1.3 XML file. Each node carries entity type, display name, and colour attributes; each edge carries relationship type and weight. The GEXF format is readable by Gephi and other open graph analysis tools without any proprietary plugins.

  • Force Simulation for Large Graphs: Client-side rendering uses simplified Fruchterman-Reingold for graphs up to 500 nodes. Graphs above this threshold delegate to D3-force (ISC License) for performant browser-side simulation that remains interactive at scale.

  • Constraint-Based Layout: The layout engine exposes a COLA_CONSTRAINT routing point for integration with cola.js (MIT License, Monash University) to support constraint-based layouts such as hierarchical grouping, fixed-position anchors, and non-overlap constraints for dense investigation graphs.

  • Graph Statistics: The module exposes node count, relationship count, average degree, maximum degree, connected components, isolated nodes, clustering coefficient, and type distributions. Statistics are available as structured data for embedding in briefing packages and for driving analytical overlays on the canvas.

Use Cases#

  • Network Exploration: Navigate a large investigation graph to identify dense clusters of connected entities, isolated subgraphs, and high-degree hub nodes that may represent key actors in a network.
  • Relationship Mapping: Visualise the full set of relationships between persons, organisations, addresses, devices, and indicators in an investigation, making indirect connections visible that would not be apparent in tabular data.
  • Graph Export for External Tools: Export the investigation graph in GEXF 1.3 format for ingestion into Gephi, NetworkX, or other graph analysis tools for community detection, centrality analysis, or custom visualisation.
  • Briefing Support: Produce a positioned graph layout at a fixed canvas size suitable for inclusion in intelligence briefings and court-disclosure packages.
  • Cross-Entity Pattern Discovery: Lay out entities from multiple investigations on a shared canvas to reveal shared infrastructure, common associates, or overlapping networks across otherwise unconnected cases.

Integration#

  • Graph Domain: The layout service operates directly on the GraphData domain model (app/domains/graph/graph_model.py), consuming Node and Edge objects produced by the existing GraphService.
  • Investigation Domain: Investigation graph queries provide the source GraphData fed into the layout and export services.
  • Entity Domain: Entity type and display name properties on graph nodes populate GEXF node labels and colour attributes.
  • Evidence Domain: Evidence nodes linked to investigation entities appear in the exported graph with their relationship types preserved.
  • Frontend Interactive Graph: The @argus/interactive-graph-shared package exposes computeLayout from OpenLayoutEngine.ts, allowing the client to perform layout locally and update node positions in the React Flow canvas without a server round-trip.

Open Standards Compliance#

StandardReference
Fruchterman-Reingold force-directed layoutFruchterman, T.M.J. & Reingold, E.M. (1991). Graph Drawing by Force-directed Placement. Software—Practice & Experience, 21(11), 1129–1164. DOI:10.1002/spe.4380211102
Kamada-Kawai energy-minimisation layoutKamada, T. & Kawai, S. (1989). An Algorithm for Drawing General Undirected Graphs. Information Processing Letters, 31(1), 7–15. DOI:10.1016/0020-0190(89)90102-6
GEXF 1.3 graph exchange formatGEXF Working Group. GEXF 1.3 Specification. Open format, no licensing restrictions. https://gexf.net/
D3-force browser simulationBostock, M. et al. d3-force. ISC License. https://github.com/d3/d3-force
cola.js constraint-based layoutDwyer, T. et al. WebCola. MIT License, Monash University. https://ialab.it.monash.edu/webcola/