[Developers]

Open Graph Layout and GEXF Export

An analyst reviewing a criminal network on the platform wants the same arrangement of nodes when they open the graph tomorrow, and they want to hand the graph to a colleague who uses Gephi without asking IT to export a b

Category: InvestigationLast Updated: Apr 17, 2026
investigationreal-timegeospatial

Overview#

An analyst reviewing a criminal network on the platform wants the same arrangement of nodes when they open the graph tomorrow, and they want to hand the graph to a colleague who uses Gephi without asking IT to export a bespoke format. The platform's investigation graphs therefore need two properties: a layout that is reproducible and based on published algorithms rather than a closed in-house heuristic, and an export that any standards-compliant third-party tool can consume.

The Open Graph Layout and GEXF Export module provides both. Server-side layout is computed using the Fruchterman-Reingold and Kamada-Kawai algorithms, both of which are published peer-reviewed methods with known convergence properties. Graph exports are serialised as GEXF 1.3, the open Graph Exchange XML Format maintained by the GEXF Working Group. Both sides are strictly organisation-scoped so a layout or export never carries data from another tenant.

Last Reviewed: 2026-04-17 Last Updated: 2026-04-17

Key Features#

  • Fruchterman-Reingold Layout: The platform implements the original Fruchterman-Reingold force-directed placement algorithm (Software: Practice and Experience, 1991). Repulsive forces push unconnected nodes apart, attractive forces pull connected nodes together, and a cooling temperature schedule lets the layout settle. The iteration count, canvas dimensions, temperature, and cooling factor are configurable per request without changing code.

  • Kamada-Kawai Layout: The Kamada-Kawai algorithm (Information Processing Letters, 1989) treats the graph as a spring system and minimises the energy of the layout. For smaller or more structured networks it produces more readable arrangements than force-directed placement. The engine selects Kamada-Kawai automatically for networks under a configurable size threshold when the caller does not specify an algorithm.

  • Deterministic Seeding: Both algorithms accept a seed so that re-opening a graph produces the same node positions unless the graph itself has changed. This means an analyst returns to the layout they left, and two reviewers comparing the same graph see the same arrangement.

  • GEXF 1.3 Export: Graph data is serialised to the GEXF 1.3 format maintained by the GEXF Working Group (https://gexf.net/). The export includes node identifiers, labels, typed attributes, edges, edge weights, and a creator timestamp. The output is a single XML string suitable for streaming to a file download or a partner system.

  • Organisation-Scoped Export: Every node is filtered against organization_id before it is written to the GEXF document. Edges are included only when both endpoints survived the filter. Cross-tenant leakage through an export is structurally impossible at the serialisation boundary.

  • HTML-Safe Serialisation: Node labels and attribute values that contain characters requiring XML escaping are escaped at write time. This lets the export handle real-world intelligence data, including names with ampersands, quotation marks, and non-ASCII characters, without producing a corrupt XML file.

  • No Proprietary Dependencies: The layout service has no runtime dependency on a proprietary visualisation library. The algorithms are implemented in Python using only the standard library and domain graph data structures, so the service runs in constrained deployment environments without a heavy native dependency.

Use Cases#

  • Reproducible Investigation Layout: An analyst working a complex network leaves for the weekend, opens the graph again on Monday, and sees the same arrangement they left. They can continue reviewing without spending ten minutes reorientating.

  • Analyst Collaboration Across Tools: An analyst hands off a portion of an investigation to a specialist who prefers Gephi for community detection work. They export the subgraph as a GEXF 1.3 file, the specialist opens it in Gephi, runs the analysis, and returns findings as a GEXF file that is imported back into the investigation.

  • Partner Agency Graph Sharing: A partner agency without an Argus deployment receives a GEXF 1.3 file containing the entities and relationships the analyst has chosen to share. The partner imports it into their own toolchain, be it Gephi, Cytoscape, or a custom GraphML pipeline that supports GEXF.

  • Long-Term Archival: Completed investigations are archived as GEXF 1.3 files alongside the platform's internal records. Years later the graph can be rehydrated into the platform or any other GEXF-compatible tool, independent of the platform's version history.

  • Cross-Vendor Verification: A defence auditor reviewing an intelligence product can import the same GEXF file into an independent graph tool and verify that the entities and relationships presented on the platform match the underlying data, without needing a platform login.

Integration#

  • Sigma Large-Graph Rendering: The Sigma front-end renderer can accept a pre-computed server-side layout for very large graphs and skip the in-browser force simulation. The GraphLayoutService provides that layout.
  • D3 Graph View: The smaller-graph D3 renderer requests a Kamada-Kawai layout for networks that render better under energy minimisation than under force-directed placement.
  • Graph Intelligence Domain: The GraphLayoutService reads nodes and edges from the graph_relationships table scoped to the caller's organisation and returns a mapping of node identifier to computed position.
  • Briefing Package: A published BriefingPackage can carry a GEXF 1.3 attachment in addition to its JSON-LD payload, giving the partner system a ready-to-open graph view of the shared entities.
  • Investigation Workspace: The export action in the workspace toolbar calls the GEXFExportService with the current investigation identifier and streams the result to the analyst's browser as a .gexf file.

Open Standards#

  • Fruchterman, T.M.J. and Reingold, E.M. (1991): Graph Drawing by Force-directed Placement. Software: Practice and Experience, 21(11), pp. 1129-1164. DOI: 10.1002/spe.4380211102. Published algorithm, no proprietary encumbrance.
  • Kamada, T. and Kawai, S. (1989): An Algorithm for Drawing General Undirected Graphs. Information Processing Letters, 31(1), pp. 7-15. DOI: 10.1016/0020-0190(89)90102-6. Published algorithm, no proprietary encumbrance.
  • GEXF 1.3 (https://gexf.net/): Graph Exchange XML Format, maintained by the GEXF Working Group. Open specification with no licensing restrictions. Supported by Gephi, NetworkX, Cytoscape, and other mainstream graph tools.
  • XML 1.0 (https://www.w3.org/TR/xml/): W3C Recommendation governing the underlying serialisation.

Ready to Build?

Get started with our APIs or contact our integration team for support.