Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🕸️ FusionGraph

3D knowledge graph of fusion materials irradiation data — built from FusionMatDB.
134 nodes · 1,094 edges · 34,701 measurement records across materials, properties, irradiation conditions, facilities and ORNL reports.
A complementary, open-source extension of the UKAEA fusion knowledge graph — adding experimental measurement nodes.

Python 3.10+ Tests NetworkX + Plotly MIT License

Quick Start · Schema · White-Space Analysis · FusionMatDB · FusionGuide · FusionUQ · HuggingFace


FusionGraph rotating 3D knowledge graph

Rotating 3D view of FusionGraph — material classes (red), properties (blue), irradiation conditions (yellow), facilities (green), ORNL reports (purple). Edge weight = record count in FusionMatDB.


Why this matters

Fusion materials R&D is scattered across decades of experimental reports. Two recent UKAEA + DeepMind efforts laid the foundation:

  1. Loreti et al. (UKAEA, arXiv 2504.07738, April 2025) — extracted 108K nodes from the fusion literature corpus to build a scientific knowledge graph.
  2. MatDB4Fusion / EUROfusion EDDI — canonical material property tables, but unirradiated baselines only or behind EU consortium access.

FusionGraph adds the missing piece: experimental measurement nodes. It reads FusionMatDB's SQLite (22,269 structured records from 65 ORNL semi-annual progress reports 1990–2024 + SDC-IC ITER library), canonicalises messy reactor names (e.g. FFTF/MOTA 2B → FFTF), bins (dose, temperature) into a 3×3 condition space, and assembles a 5-node-type, 4-edge-type knowledge graph ready for reasoning, visualisation, and white-space analysis.

"An open-access, single source of truth for high-quality fusion materials data... is essential for this new phase of technology development." — Jim Pickles, Head of Materials, Tokamak Energy (COP29, November 2024)


Quick Start

git clone https://github.com/Khalizo/fusiongraph
cd fusiongraph
pip install -e .

# Summary of the graph built from FusionMatDB
fusiongraph stats --db /path/to/fusionmatdb.sqlite

# Render the rotating hero GIF (+ static hero PNG) into figures/
fusiongraph gif --output figures/ --frames 60 --fps 20

# Interactive HTML export — open in a browser, drag to rotate
fusiongraph render --html figures/fusiongraph.html

# Cache the graph as GraphML (loads into Gephi / Cytoscape / networkx)
fusiongraph build --output cache/fusiongraph.graphml

# White-space report — which (material class × condition bin) cells are unexplored?
fusiongraph gaps --csv data/white_space.csv
from fusiongraph import FusionGraphBuilder, find_white_space, graph_stats

G = FusionGraphBuilder.from_sqlite("fusionmatdb.sqlite").build()
print(graph_stats(G))
gaps = find_white_space(G)        # pandas DataFrame of empty research cells

Graph Schema

Five canonical node types and four directed edge types. Measurement rows are aggregated into weighted edges rather than duplicated as per-row nodes — this keeps the graph small enough to render and reason about while preserving the "who was tested where, under what conditions" story.

Node type What it represents Example
material 19+ material classes from FusionMatDB RAFM_steel, vanadium_alloy, tungsten, CuCrZr
property Measured mechanical / physical quantity yield_strength, uts, swelling, hardness, DBTT
condition 3 × 3 bin of (dose_dpa × irradiation_temp) mid_dose / mid_T
facility Canonicalised irradiation facility HFIR, FFTF, ATR, EBR-II, ion_beam, RTNS-II
report Source document (ORNL volume or SDC-IC) ornl_vol_42, sdc_ic
Edge type Direction Weight
exhibits Material → Property # rows with that property populated
tested_at Material → Facility # irradiation records at that facility
measured_under Material → Condition # records in that (dose × T) bin
documented_in Material → Report # material entries in that report

Summary (built from the full FusionMatDB)

FusionGraph: 134 nodes · 1,094 edges · total edge weight 34,701

Nodes by type:        Edges by type:
  material      21      exhibits          146
  property      12      tested_at         187
  condition      9      measured_under    136
  facility      26      documented_in     625
  report        66

White-Space Analysis

fusiongraph gaps enumerates every (material_class × dose_bin × temp_bin) cell and flags those with zero records in FusionMatDB — these are publicly-documented experimental gaps. Current FusionMatDB corpus: 53 of 189 cells empty. Examples:

Material class Missing (dose × temp) cells
HTS_tape all 9 irradiation cells — no irradiated HTS data in ORNL corpus
zirconium_alloy 8 of 9 cells empty
titanium_alloy 4 cells (notably all 3 high-dose)
nanolaminate 5 cells — a materials-by-design gap
beryllium high-temperature cells entirely
tungsten_alloy high-dose / mid-T

These cells feed directly into FusionGuide's Bayesian active-learning campaign planner.


How it's built

FusionMatDB SQLite (22,269 records)
        │
        ▼
┌─────────────────────────────────────────┐
│ FusionGraphBuilder.from_sqlite()         │
│   materials, irradiation, mech, papers   │
└────────────────┬────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────┐
│ Canonicalisation                         │
│  • reactor name → {HFIR, FFTF, ATR, ion} │
│  • dose_dpa     → {low, mid, high}       │
│  • irr_temp     → {low_T, mid_T, high_T} │
│  • source_url   → ornl_vol_N | sdc_ic    │
└────────────────┬────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────┐
│ networkx.MultiDiGraph                    │
│   5 node types, 4 edge types, weighted   │
└────────────────┬────────────────────────┘
                 │
      ┌──────────┼──────────┐
      ▼          ▼          ▼
  3D plotly   GraphML    White-space
  + GIF       (Gephi)    DataFrame

Related Projects

⚛️ FusionMatDB 22,269-record irradiation materials database — the source of truth
🧭 FusionGuide Bayesian active learning for experiment planning — consumes FusionGraph gaps
🔬 FusionUQ Uncertainty quantification for MACE-MP-0 ML interatomic potentials
🕸️ FusionGraph This repo — knowledge-graph view over FusionMatDB
📊 Dataset on HuggingFace Parquet + SQLite (DOI 10.57967/hf/8386)

Development

pip install -e ".[dev]"
pytest                              # 28 tests, < 2 s

Test coverage spans schema validation, builder correctness on a synthetic SQLite fixture, canonicalisation helpers (_canonicalise_facility, _bin_dose, _bin_temp, _report_label), white-space analysis, and CLI smoke tests (stats, build, gaps, render).


Citation

@software{fusiongraph_2026,
  author = {Babs Khalidson},
  title  = {FusionGraph: 3D knowledge graph of fusion materials irradiation data},
  year   = {2026},
  url    = {https://github.com/Khalizo/fusiongraph}
}

Licence

MIT. Copyright (c) 2026 Babs Khalidson.

About

3D knowledge graph of fusion materials irradiation data — built from FusionMatDB. 134 nodes, 1,094 edges, rotating GIF export. Open-source extension of the UKAEA fusion KG.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages