From 2e9abeeb29e3d5b6c263dd3315367af49a4131d8 Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Mon, 14 Jul 2025 17:10:17 -0400 Subject: [PATCH] added plot per type --- book/plot.ipynb | 4616 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 3182 insertions(+), 1434 deletions(-) diff --git a/book/plot.ipynb b/book/plot.ipynb index e89656e..2eddfff 100644 --- a/book/plot.ipynb +++ b/book/plot.ipynb @@ -20,35 +20,6 @@ ] }, "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "application/vnd.plotly.v1+json": { @@ -95,26 +66,10 @@ "2025-02-21" ], "xaxis": "x", - "y": [ - 0, - 0, - 0, - 82, - 106, - 108, - 112, - 132, - 139, - 152, - 160, - 162, - 170, - 184, - 189, - 197, - 211, - 220 - ], + "y": { + "bdata": "AAAAAAAAUQBpAGsAbwCDAIoAlwCfAKEAqQC3ALwAxADSANsA", + "dtype": "i2" + }, "yaxis": "y" } ], @@ -318,57 +273,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -569,6 +473,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -973,41 +888,14 @@ ], "range": [ 0, - 220 + 219 ], "title": { "text": "" } } } - }, - "text/html": [ - "
" - ] + } }, "metadata": {}, "output_type": "display_data" @@ -1124,82 +1012,86 @@ "customdata": [ [ 1, - "Europe" + "Africa" ], [ - 4, - "Europe" + 1, + "Africa" ], [ 1, - "Europe" + "Africa" + ], + [ + 1, + "Asia" ], [ 2, - "North America" + "Asia" ], [ 1, - "Europe" + "Asia" ], [ - 3, - "Europe" + 2, + "Asia" ], [ - 5, - "North America" + 1, + "Asia" ], [ 1, - "North America" + "Asia" ], [ - 1, - "North America" + 9, + "Asia" ], [ 1, - "Europe" + "Asia" ], [ 1, - "Europe" + "Asia" ], [ 1, - "Europe" + "Asia" ], [ 1, - "Oceania" + "Asia" ], [ - 5, - "Europe" + 1, + "Asia" ], [ - 9, - "North America" + 1, + "Asia" ], [ - 8, - "North America" + 1, + "Asia" ], [ - 1, + 2, "Asia" ], [ 1, - "North America" + "Asia" ], [ - 3, + 6, "Europe" ], [ - 1, + 6, "Europe" ], [ @@ -1207,7 +1099,7 @@ "Europe" ], [ - 1, + 22, "Europe" ], [ @@ -1216,26 +1108,26 @@ ], [ 1, - "North America" + "Europe" ], [ 1, - "Asia" + "Europe" ], [ - 2, - "North America" + 1, + "Europe" ], [ 1, "Europe" ], [ - 1, + 5, "Europe" ], [ - 1, + 2, "Europe" ], [ @@ -1243,35 +1135,35 @@ "Europe" ], [ - 3, + 1, "Europe" ], [ - 7, + 12, "Europe" ], [ - 1, - "North America" + 2, + "Europe" ], [ - 8, + 141, "Europe" ], [ - 1, - "Asia" + 54, + "Europe" ], [ - 1, - "Asia" + 2, + "Europe" ], [ 1, "Europe" ], [ - 1, + 14, "Europe" ], [ @@ -1280,7 +1172,7 @@ ], [ 1, - "North America" + "Europe" ], [ 5, @@ -1288,30 +1180,30 @@ ], [ 1, - "North America" + "Europe" ], [ 1, "Europe" ], [ - 2, - "North America" + 3, + "Europe" ], [ - 1, - "North America" + 13, + "Europe" ], [ 1, "Europe" ], [ - 2, + 1, "Europe" ], [ - 2, + 16, "Europe" ], [ @@ -1319,39 +1211,35 @@ "Europe" ], [ - 3, + 5, "Europe" ], [ - 1, + 3, "Europe" ], [ - 1, + 5, "Europe" ], - [ - 2, - "North America" - ], [ 1, "Europe" ], [ - 4, + 3, "Europe" ], [ 1, - "Asia" + "Europe" ], [ - 2, + 3, "Europe" ], [ - 1, + 2, "Europe" ], [ @@ -1363,11 +1251,11 @@ "Europe" ], [ - 2, + 1, "Europe" ], [ - 2, + 1, "Europe" ], [ @@ -1375,12 +1263,12 @@ "Europe" ], [ - 4, + 5, "Europe" ], [ - 4, - "North America" + 8, + "Europe" ], [ 1, @@ -1391,15 +1279,15 @@ "Europe" ], [ - 3, - "North America" + 1, + "Europe" ], [ - 5, - "North America" + 3, + "Europe" ], [ - 1, + 7, "Europe" ], [ @@ -1408,7 +1296,7 @@ ], [ 1, - "Asia" + "Europe" ], [ 1, @@ -1416,58 +1304,58 @@ ], [ 1, - "North America" + "Europe" ], [ - 1, + 3, "Europe" ], [ 2, - "North America" + "Europe" ], [ 1, "Europe" ], [ - 6, + 3, "Europe" ], [ 1, - "North America" + "Europe" ], [ - 4, + 1, "Europe" ], [ 1, - "Oceania" + "Europe" ], [ - 3, + 1, "Europe" ], [ 2, - "Asia" + "Europe" ], [ - 1, - "North America" + 4, + "Europe" ], [ - 1, - "North America" + 4, + "Europe" ], [ 3, - "North America" + "Europe" ], [ - 23, + 1, "Europe" ], [ @@ -1479,24 +1367,24 @@ "Europe" ], [ - 1, - "North America" + 4, + "Europe" ], [ 1, - "Africa" + "Europe" ], [ 1, - "North America" + "Europe" ], [ 1, - "North America" + "Europe" ], [ 1, - "North America" + "Europe" ], [ 1, @@ -1504,15 +1392,15 @@ ], [ 1, - "North America" + "Europe" ], [ - 1, + 2, "Europe" ], [ 1, - "North America" + "Europe" ], [ 1, @@ -1520,155 +1408,155 @@ ], [ 1, - "Asia" + "Europe" + ], + [ + 59, + "North America" ], [ 6, - "Europe" + "North America" ], [ 1, - "Europe" + "North America" ], [ 1, - "Oceania" + "North America" ], [ 1, - "Europe" + "North America" ], [ 1, - "Asia" + "North America" ], [ 2, - "Europe" - ], - [ - 6, "North America" ], - [ - 3, - "Europe" - ], [ 5, - "Europe" + "North America" ], [ - 12, - "Europe" + 1, + "North America" ], [ - 16, - "Europe" + 2, + "North America" ], [ 1, - "Europe" + "North America" ], [ - 1, - "Europe" + 2, + "North America" ], [ - 2, - "Asia" + 5, + "North America" ], [ - 1, - "Asia" + 4, + "North America" ], [ - 2, - "Asia" + 65, + "North America" ], [ - 13, - "Europe" + 8, + "North America" ], [ 1, - "Asia" + "North America" ], [ - 3, - "Europe" + 9, + "North America" ], [ - 1, - "Africa" + 2, + "North America" ], [ - 5, - "Europe" + 1, + "North America" ], [ 1, - "Oceania" + "North America" ], [ - 1, - "Asia" + 3, + "North America" ], [ 1, - "Europe" + "North America" ], [ - 5, - "Europe" + 1, + "North America" ], [ 1, - "Europe" + "North America" ], [ 1, - "Asia" + "North America" ], [ 1, - "Europe" + "North America" ], [ - 15, - "Europe" + 1, + "North America" ], [ 1, - "Europe" + "North America" ], [ 2, - "Europe" + "North America" ], [ - 55, - "Europe" + 1, + "North America" ], [ - 59, + 1, + "North America" + ], + [ + 3, "North America" ], [ 1, - "Africa" + "Oceania" ], [ - 9, - "Asia" + 1, + "Oceania" ], [ - 143, - "Europe" + 1, + "Oceania" ], [ - 65, - "North America" + 1, + "Oceania" ], [ 2, @@ -1687,332 +1575,332 @@ }, "hovertemplate": "labels=%{label}
Registrations=%{customdata[0]:.0f}
parent=%{parent}
id=%{id}
Continent=%{customdata[1]}", "ids": [ - "Europe/France/ASNR", - "Europe/Spain/ATG Engineering S.L.", - "Europe/France/Aix-Marseille University", - "North America/United States/Argonne National Laboratory", - "Europe/Hungary/C3D Engineering Ltd.", - "Europe/France/CEA", - "North America/United States/CFS", - "North America/Canada/Canadian Nuclear Laboratories", - "North America/United States/Center for Astrophysics | Harvard & Smithsonian", - "Europe/Greece/National Technical University of Athens", - "Europe/Russian Federation/NRNU MEPhI", - "Europe/Russian Federation/NRC Kurchatov Institute", - "Oceania/Australia/Meranti Research Laboratories", - "Europe/Germany/Max Planck Institute for Plasma Physics", - "North America/United States/Massachusetts Institute of Technology", - "North America/United States/LBNL", - "Asia/India/Lovely Professional University", - "North America/United States/Lawrence Livermore National Lab", - "Europe/Luxembourg/Next Step Fusion", - "Europe/United Kingdom/Kyoto Fusioneering UK Ltd", - "Europe/Denmark/Knudsen", - "Europe/United Kingdom/Marathon Fusion Inc, The University of Bath", - "Europe/Spain/Next Step Fusion", - "North America/United States/PPPL", + "Africa/Morocco/The UM6P Vanguard Center", + "Africa/Morocco", + "Africa", + "Asia/Japan", + "Asia/Israel", + "Asia/Indonesia", + "Asia/India", + "Asia/Bangladesh", + "Asia/Pakistan", + "Asia", + "Asia/Singapore", + "Asia/Singapore/UOM", "Asia/Bangladesh/NukeHub", - "North America/United States/ORNL", - "Europe/Sweden/KTH Royal Institute of Technology", - "Europe/United Kingdom/Pasteur Labs", - "Europe/Russian Federation/Peter the Great St.Petersburg Polytechnic University", - "Europe/Belgium/Phd in nuclear physics (2007), currently a tech entrepreneur", - "Europe/Italy/Politecnico di Milano", - "Europe/Italy/Politecnico di Torino", - "North America/United States/Princeton University", - "Europe/Germany/Proxima Fusion", - "Asia/Pakistan/Quaid e Awam University of Engineering Science and Technology Nawabshah", + "Asia/India/Lovely Professional University", "Asia/India/Regional Institute of Education", - "Europe/France/Renaissance Fusion", + "Asia/Pakistan/Quaid e Awam University of Engineering Science and Technology Nawabshah", + "Asia/Indonesia/Universitas Gadjah Mada", + "Asia/Israel/nT-Tao", + "Asia/Japan/EX-Fusion Inc.", + "Europe/United Kingdom/nTtau Digital LTD", + "Europe/United Kingdom/University of York", + "Europe/United Kingdom/University of Manchester", + "Europe/United Kingdom/UKAEA", + "Europe/United Kingdom/UK Industrial Fusion Solutions", + "Europe/United Kingdom/Tokamak Energy Ltd.", + "Europe/United Kingdom/Pasteur Labs", "Europe/United Kingdom/Nuclear Institute", - "Europe/Serbia/Institute of Physics Belgrade", - "North America/Canada/Mercenary", + "Europe/United Kingdom/Kyoto Fusioneering UK Ltd", "Europe/United Kingdom/Imperial College London", - "North America/United States/Indiana University Bloomington", + "Europe/United Kingdom/IDOM UK Ltd", + "Europe/United Kingdom/Google DeepMind", + "Europe/United Kingdom/Marathon Fusion Inc, The University of Bath", + "Europe/France", + "Europe/Belgium", + "Europe", + "Europe/United Kingdom", + "Europe/Switzerland", + "Europe/Sweden", + "Europe/Spain", + "Europe/Slovenia", + "Europe/Serbia", + "Europe/Russian Federation", + "Europe/Austria", + "Europe/Poland", + "Europe/Luxembourg", + "Europe/Italy", + "Europe/Hungary", + "Europe/Greece", + "Europe/Germany", + "Europe/United Kingdom/First Light Fusion", + "Europe/Finland", + "Europe/Denmark", + "Europe/Netherlands", "Europe/United Kingdom/Cerberus Nuclear", - "North America/United States/Columbia University", - "North America/United States/Cornell University", - "Europe/Slovenia/Cosylab d.d.", - "Europe/Netherlands/DIFFER", - "Europe/Denmark/DTU", + "Europe/United Kingdom/Woodruff Scientific Ltd", "Europe/Switzerland/EPFL", - "Europe/Netherlands/Eindhoven University of Technology", - "Europe/Finland/FS Dynamics", - "Europe/United Kingdom/First Light Fusion", - "North America/United States/Flatiron Institute", - "Europe/Germany/Forschungszentrum Juelich", - "Europe/Spain/Fusion for Energy", - "Asia/Japan/EX-Fusion Inc.", + "Europe/France/CEA", "Europe/France/Gen-F", - "Europe/Germany/Gauss Fusion GmbH", - "Europe/Russian Federation/ITER RF Domestic Agency", - "Europe/France/ITER Organization", - "Europe/United Kingdom/IDOM UK Ltd", - "Europe/Spain/IDOM", - "Europe/Austria/IAEA", - "Europe/Spain/HI IBERIA", - "North America/United States/Idaho National Laboratory", - "Europe/United Kingdom/Google DeepMind", - "Europe/Belgium/Ghent University", - "North America/Canada/General Fusion Inc.", - "North America/United States/General Atomics", "Europe/France/Graneet", + "Europe/France/ITER Organization", + "Europe/France/Renaissance Fusion", + "Europe/Germany/Forschungszentrum Juelich", + "Europe/Germany/Gauss Fusion GmbH", + "Europe/Germany/Max Planck Institute for Plasma Physics", + "Europe/Germany/Proxima Fusion", + "Europe/France/Aix-Marseille University", "Europe/Germany/Uni Stuttgart", - "Asia/Indonesia/Universitas Gadjah Mada", - "Europe/United Kingdom/University of Manchester", - "North America/United States/University of Maryland", + "Europe/Hungary/C3D Engineering Ltd.", + "Europe/Italy/Politecnico di Milano", + "Europe/Italy/Politecnico di Torino", + "Europe/Italy/Sapienza University of Rome", "Europe/Italy/University of Padua", - "North America/United States/University of Rochester", + "Europe/Switzerland/SPC-EPFL", "Europe/Italy/University of Rome \"Tor Vergata\" | ENEA Frascati Research Centre", - "Europe/United Kingdom/University of York", - "North America/United States/University of Tennessee", + "Europe/Luxembourg/Next Step Fusion", + "Europe/Netherlands/DIFFER", + "Europe/Greece/National Technical University of Athens", + "Europe/Netherlands/Eindhoven University of Technology", + "Europe/France/ASNR", + "Europe/Finland/FS Dynamics", + "Europe/Sweden/KTH Royal Institute of Technology", + "Europe/Spain/Next Step Fusion", + "Europe/Spain/IDOM", + "Europe/Spain/HI IBERIA", + "Europe/Spain/Fusion for Energy", + "Europe/Spain/ATG Engineering S.L.", + "Europe/Slovenia/Cosylab d.d.", + "Europe/Serbia/Institute of Physics Belgrade", + "Europe/Russian Federation/Rosatom, Institution \"Project Center ITER\"", "Europe/Finland/VTT Technical Research Centre", - "Oceania/New Zealand/Victoria University of Wellington", - "Europe/United Kingdom/Woodruff Scientific Ltd", - "Asia/Israel/nT-Tao", - "North America/Canada/University of Saskatchewan", + "Europe/Russian Federation/Peter the Great St.Petersburg Polytechnic University", + "Europe/Russian Federation/NRC Kurchatov Institute", + "Europe/Austria/IAEA", + "Europe/Russian Federation/ITER RF Domestic Agency", + "Europe/Belgium/Ghent University", + "Europe/Belgium/Phd in nuclear physics (2007), currently a tech entrepreneur", + "Europe/Denmark/DTU", + "Europe/Denmark/Knudsen", + "Europe/Russian Federation/NRNU MEPhI", + "Europe/Poland/unaffiliated", + "North America/United States", + "North America/Canada", "North America/United States/UW-Madison", + "North America/United States/Indiana University Bloomington", + "North America/Canada/Mercenary", + "North America/Canada/University of Saskatchewan", + "North America/United States/Argonne National Laboratory", + "North America/United States/CFS", + "North America/United States/Center for Astrophysics | Harvard & Smithsonian", + "North America/United States/Columbia University", + "North America/United States/Cornell University", + "North America/United States/Flatiron Institute", + "North America/United States/General Atomics", + "North America/United States/Idaho National Laboratory", + "North America", + "North America/United States/LBNL", + "North America/United States/Lawrence Livermore National Lab", + "North America/United States/Massachusetts Institute of Technology", + "North America/United States/ORNL", + "North America/United States/PPPL", + "North America/United States/Princeton University", "North America/United States/Rensselaer Polytechnic Institute", - "Europe/United Kingdom/UKAEA", - "Europe/United Kingdom/UK Industrial Fusion Solutions", - "Europe/United Kingdom/Tokamak Energy Ltd.", - "North America/United States/Thea Energy", - "Africa/Morocco/The UM6P Vanguard Center", - "North America/United States/Texas A&M University", - "North America/United States/TAE Technologies", - "North America/United States/South Dakota School of Mines & Technology", - "Europe/Italy/Sapienza University of Rome", - "North America/United States/Sapientai LLC", - "Europe/Switzerland/SPC-EPFL", "North America/United States/Rutherford Energy Ventures", - "Europe/Russian Federation/Rosatom, Institution \"Project Center ITER\"", - "Asia/Singapore/UOM", - "Europe/United Kingdom/nTtau Digital LTD", - "Europe/Poland/unaffiliated", + "North America/United States/Sapientai LLC", + "North America/United States/South Dakota School of Mines & Technology", + "North America/United States/TAE Technologies", + "North America/United States/Texas A&M University", + "North America/United States/Thea Energy", + "North America/United States/University of Maryland", + "North America/United States/University of Rochester", + "North America/United States/University of Tennessee", + "North America/Canada/Canadian Nuclear Laboratories", + "North America/Canada/General Fusion Inc.", + "Oceania/Australia/Meranti Research Laboratories", "Oceania/Australia", - "Europe/Austria", - "Asia/Bangladesh", - "Europe/Belgium", - "North America/Canada", - "Europe/Denmark", - "Europe/Finland", - "Europe/France", - "Europe/Germany", - "Europe/Greece", - "Europe/Hungary", - "Asia/India", - "Asia/Indonesia", - "Asia/Israel", - "Europe/Italy", - "Asia/Japan", - "Europe/Luxembourg", - "Africa/Morocco", - "Europe/Netherlands", + "Oceania/New Zealand/Victoria University of Wellington", "Oceania/New Zealand", - "Asia/Pakistan", - "Europe/Poland", - "Europe/Russian Federation", - "Europe/Serbia", - "Asia/Singapore", - "Europe/Slovenia", - "Europe/Spain", - "Europe/Sweden", - "Europe/Switzerland", - "Europe/United Kingdom", - "North America/United States", - "Africa", - "Asia", - "Europe", - "North America", "Oceania" ], "labels": [ - "ASNR", - "ATG Engineering S.L.", - "Aix-Marseille University", - "Argonne National Laboratory", - "C3D Engineering Ltd.", - "CEA", - "CFS", - "Canadian Nuclear Laboratories", - "Center for Astrophysics | Harvard & Smithsonian", - "National Technical University of Athens", - "NRNU MEPhI", - "NRC Kurchatov Institute", - "Meranti Research Laboratories", - "Max Planck Institute for Plasma Physics", - "Massachusetts Institute of Technology", - "LBNL", - "Lovely Professional University", - "Lawrence Livermore National Lab", - "Next Step Fusion", - "Kyoto Fusioneering UK Ltd", - "Knudsen", - "Marathon Fusion Inc, The University of Bath", - "Next Step Fusion", - "PPPL", + "The UM6P Vanguard Center", + "Morocco", + "Africa", + "Japan", + "Israel", + "Indonesia", + "India", + "Bangladesh", + "Pakistan", + "Asia", + "Singapore", + "UOM", "NukeHub", - "ORNL", - "KTH Royal Institute of Technology", - "Pasteur Labs", - "Peter the Great St.Petersburg Polytechnic University", - "Phd in nuclear physics (2007), currently a tech entrepreneur", - "Politecnico di Milano", - "Politecnico di Torino", - "Princeton University", - "Proxima Fusion", - "Quaid e Awam University of Engineering Science and Technology Nawabshah", + "Lovely Professional University", "Regional Institute of Education", - "Renaissance Fusion", + "Quaid e Awam University of Engineering Science and Technology Nawabshah", + "Universitas Gadjah Mada", + "nT-Tao", + "EX-Fusion Inc.", + "nTtau Digital LTD", + "University of York", + "University of Manchester", + "UKAEA", + "UK Industrial Fusion Solutions", + "Tokamak Energy Ltd.", + "Pasteur Labs", "Nuclear Institute", - "Institute of Physics Belgrade", - "Mercenary", + "Kyoto Fusioneering UK Ltd", "Imperial College London", - "Indiana University Bloomington", + "IDOM UK Ltd", + "Google DeepMind", + "Marathon Fusion Inc, The University of Bath", + "France", + "Belgium", + "Europe", + "United Kingdom", + "Switzerland", + "Sweden", + "Spain", + "Slovenia", + "Serbia", + "Russian Federation", + "Austria", + "Poland", + "Luxembourg", + "Italy", + "Hungary", + "Greece", + "Germany", + "First Light Fusion", + "Finland", + "Denmark", + "Netherlands", "Cerberus Nuclear", - "Columbia University", - "Cornell University", - "Cosylab d.d.", - "DIFFER", - "DTU", + "Woodruff Scientific Ltd", "EPFL", - "Eindhoven University of Technology", - "FS Dynamics", - "First Light Fusion", - "Flatiron Institute", - "Forschungszentrum Juelich", - "Fusion for Energy", - "EX-Fusion Inc.", + "CEA", "Gen-F", - "Gauss Fusion GmbH", - "ITER RF Domestic Agency", - "ITER Organization", - "IDOM UK Ltd", - "IDOM", - "IAEA", - "HI IBERIA", - "Idaho National Laboratory", - "Google DeepMind", - "Ghent University", - "General Fusion Inc.", - "General Atomics", "Graneet", + "ITER Organization", + "Renaissance Fusion", + "Forschungszentrum Juelich", + "Gauss Fusion GmbH", + "Max Planck Institute for Plasma Physics", + "Proxima Fusion", + "Aix-Marseille University", "Uni Stuttgart", - "Universitas Gadjah Mada", - "University of Manchester", - "University of Maryland", + "C3D Engineering Ltd.", + "Politecnico di Milano", + "Politecnico di Torino", + "Sapienza University of Rome", "University of Padua", - "University of Rochester", + "SPC-EPFL", "University of Rome \"Tor Vergata\" | ENEA Frascati Research Centre", - "University of York", - "University of Tennessee", - "VTT Technical Research Centre", - "Victoria University of Wellington", - "Woodruff Scientific Ltd", - "nT-Tao", - "University of Saskatchewan", - "UW-Madison", - "Rensselaer Polytechnic Institute", - "UKAEA", - "UK Industrial Fusion Solutions", - "Tokamak Energy Ltd.", - "Thea Energy", - "The UM6P Vanguard Center", - "Texas A&M University", - "TAE Technologies", - "South Dakota School of Mines & Technology", - "Sapienza University of Rome", - "Sapientai LLC", - "SPC-EPFL", - "Rutherford Energy Ventures", + "Next Step Fusion", + "DIFFER", + "National Technical University of Athens", + "Eindhoven University of Technology", + "ASNR", + "FS Dynamics", + "KTH Royal Institute of Technology", + "Next Step Fusion", + "IDOM", + "HI IBERIA", + "Fusion for Energy", + "ATG Engineering S.L.", + "Cosylab d.d.", + "Institute of Physics Belgrade", "Rosatom, Institution \"Project Center ITER\"", - "UOM", - "nTtau Digital LTD", + "VTT Technical Research Centre", + "Peter the Great St.Petersburg Polytechnic University", + "NRC Kurchatov Institute", + "IAEA", + "ITER RF Domestic Agency", + "Ghent University", + "Phd in nuclear physics (2007), currently a tech entrepreneur", + "DTU", + "Knudsen", + "NRNU MEPhI", "unaffiliated", - "Australia", - "Austria", - "Bangladesh", - "Belgium", - "Canada", - "Denmark", - "Finland", - "France", - "Germany", - "Greece", - "Hungary", - "India", - "Indonesia", - "Israel", - "Italy", - "Japan", - "Luxembourg", - "Morocco", - "Netherlands", - "New Zealand", - "Pakistan", - "Poland", - "Russian Federation", - "Serbia", - "Singapore", - "Slovenia", - "Spain", - "Sweden", - "Switzerland", - "United Kingdom", "United States", - "Africa", - "Asia", - "Europe", + "Canada", + "UW-Madison", + "Indiana University Bloomington", + "Mercenary", + "University of Saskatchewan", + "Argonne National Laboratory", + "CFS", + "Center for Astrophysics | Harvard & Smithsonian", + "Columbia University", + "Cornell University", + "Flatiron Institute", + "General Atomics", + "Idaho National Laboratory", "North America", + "LBNL", + "Lawrence Livermore National Lab", + "Massachusetts Institute of Technology", + "ORNL", + "PPPL", + "Princeton University", + "Rensselaer Polytechnic Institute", + "Rutherford Energy Ventures", + "Sapientai LLC", + "South Dakota School of Mines & Technology", + "TAE Technologies", + "Texas A&M University", + "Thea Energy", + "University of Maryland", + "University of Rochester", + "University of Tennessee", + "Canadian Nuclear Laboratories", + "General Fusion Inc.", + "Meranti Research Laboratories", + "Australia", + "Victoria University of Wellington", + "New Zealand", "Oceania" ], "marker": { "colors": [ + "#c8b0b0", + "#c8b0b0", + "#c8b0b0", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", + "#907078", "#f87850", "#f87850", "#f87850", - "#e8d0a8", "#f87850", "#f87850", - "#e8d0a8", - "#e8d0a8", - "#e8d0a8", "#f87850", "#f87850", "#f87850", - "#a89090", "#f87850", - "#e8d0a8", - "#e8d0a8", - "#907078", - "#e8d0a8", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", - "#e8d0a8", - "#907078", - "#e8d0a8", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", - "#e8d0a8", "#f87850", - "#907078", - "#907078", "#f87850", "#f87850", "#f87850", - "#e8d0a8", "#f87850", - "#e8d0a8", "#f87850", - "#e8d0a8", - "#e8d0a8", "#f87850", "#f87850", "#f87850", @@ -2020,10 +1908,8 @@ "#f87850", "#f87850", "#f87850", - "#e8d0a8", "#f87850", "#f87850", - "#907078", "#f87850", "#f87850", "#f87850", @@ -2032,365 +1918,231 @@ "#f87850", "#f87850", "#f87850", - "#e8d0a8", "#f87850", "#f87850", - "#e8d0a8", - "#e8d0a8", "#f87850", "#f87850", - "#907078", "#f87850", - "#e8d0a8", "#f87850", - "#e8d0a8", "#f87850", "#f87850", - "#e8d0a8", "#f87850", - "#a89090", "#f87850", - "#907078", - "#e8d0a8", - "#e8d0a8", - "#e8d0a8", "#f87850", "#f87850", "#f87850", - "#e8d0a8", - "#c8b0b0", - "#e8d0a8", - "#e8d0a8", - "#e8d0a8", "#f87850", - "#e8d0a8", "#f87850", - "#e8d0a8", "#f87850", - "#907078", "#f87850", "#f87850", - "#a89090", "#f87850", - "#907078", "#f87850", - "#e8d0a8", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", - "#907078", - "#907078", - "#907078", "#f87850", - "#907078", "#f87850", - "#c8b0b0", "#f87850", - "#a89090", - "#907078", "#f87850", "#f87850", "#f87850", - "#907078", "#f87850", "#f87850", "#f87850", "#f87850", "#f87850", - "#e8d0a8", - "#c8b0b0", - "#907078", "#f87850", "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#a89090", + "#a89090", + "#a89090", + "#a89090", "#a89090" ] }, "name": "", "parents": [ - "Europe/France", - "Europe/Spain", - "Europe/France", - "North America/United States", - "Europe/Hungary", - "Europe/France", - "North America/United States", - "North America/Canada", - "North America/United States", - "Europe/Greece", - "Europe/Russian Federation", - "Europe/Russian Federation", - "Oceania/Australia", - "Europe/Germany", - "North America/United States", - "North America/United States", + "Africa/Morocco", + "Africa", + "", + "Asia", + "Asia", + "Asia", + "Asia", + "Asia", + "Asia", + "", + "Asia", + "Asia/Singapore", + "Asia/Bangladesh", "Asia/India", - "North America/United States", - "Europe/Luxembourg", + "Asia/India", + "Asia/Pakistan", + "Asia/Indonesia", + "Asia/Israel", + "Asia/Japan", "Europe/United Kingdom", - "Europe/Denmark", "Europe/United Kingdom", - "Europe/Spain", - "North America/United States", - "Asia/Bangladesh", - "North America/United States", - "Europe/Sweden", "Europe/United Kingdom", - "Europe/Russian Federation", - "Europe/Belgium", - "Europe/Italy", - "Europe/Italy", - "North America/United States", - "Europe/Germany", - "Asia/Pakistan", - "Asia/India", - "Europe/France", - "Europe/United Kingdom", - "Europe/Serbia", - "North America/Canada", - "Europe/United Kingdom", - "North America/United States", - "Europe/United Kingdom", - "North America/United States", - "North America/United States", - "Europe/Slovenia", - "Europe/Netherlands", - "Europe/Denmark", - "Europe/Switzerland", - "Europe/Netherlands", - "Europe/Finland", "Europe/United Kingdom", - "North America/United States", - "Europe/Germany", - "Europe/Spain", - "Asia/Japan", - "Europe/France", - "Europe/Germany", - "Europe/Russian Federation", - "Europe/France", "Europe/United Kingdom", - "Europe/Spain", - "Europe/Austria", - "Europe/Spain", - "North America/United States", "Europe/United Kingdom", - "Europe/Belgium", - "North America/Canada", - "North America/United States", - "Europe/France", - "Europe/Germany", - "Asia/Indonesia", "Europe/United Kingdom", - "North America/United States", - "Europe/Italy", - "North America/United States", - "Europe/Italy", "Europe/United Kingdom", - "North America/United States", - "Europe/Finland", - "Oceania/New Zealand", "Europe/United Kingdom", - "Asia/Israel", - "North America/Canada", - "North America/United States", - "North America/United States", "Europe/United Kingdom", "Europe/United Kingdom", "Europe/United Kingdom", - "North America/United States", - "Africa/Morocco", - "North America/United States", - "North America/United States", - "North America/United States", - "Europe/Italy", - "North America/United States", - "Europe/Switzerland", - "North America/United States", - "Europe/Russian Federation", - "Asia/Singapore", "Europe/United Kingdom", - "Europe/Poland", - "Oceania", "Europe", - "Asia", "Europe", - "North America", + "", "Europe", "Europe", "Europe", "Europe", "Europe", "Europe", - "Asia", - "Asia", - "Asia", "Europe", - "Asia", "Europe", - "Africa", "Europe", - "Oceania", - "Asia", "Europe", "Europe", "Europe", - "Asia", "Europe", "Europe", + "Europe/United Kingdom", "Europe", "Europe", "Europe", + "Europe/United Kingdom", + "Europe/United Kingdom", + "Europe/Switzerland", + "Europe/France", + "Europe/France", + "Europe/France", + "Europe/France", + "Europe/France", + "Europe/Germany", + "Europe/Germany", + "Europe/Germany", + "Europe/Germany", + "Europe/France", + "Europe/Germany", + "Europe/Hungary", + "Europe/Italy", + "Europe/Italy", + "Europe/Italy", + "Europe/Italy", + "Europe/Switzerland", + "Europe/Italy", + "Europe/Luxembourg", + "Europe/Netherlands", + "Europe/Greece", + "Europe/Netherlands", + "Europe/France", + "Europe/Finland", + "Europe/Sweden", + "Europe/Spain", + "Europe/Spain", + "Europe/Spain", + "Europe/Spain", + "Europe/Spain", + "Europe/Slovenia", + "Europe/Serbia", + "Europe/Russian Federation", + "Europe/Finland", + "Europe/Russian Federation", + "Europe/Russian Federation", + "Europe/Austria", + "Europe/Russian Federation", + "Europe/Belgium", + "Europe/Belgium", + "Europe/Denmark", + "Europe/Denmark", + "Europe/Russian Federation", + "Europe/Poland", "North America", + "North America", + "North America/United States", + "North America/United States", + "North America/Canada", + "North America/Canada", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", "", - "", - "", - "", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/United States", + "North America/Canada", + "North America/Canada", + "Oceania/Australia", + "Oceania", + "Oceania/New Zealand", + "Oceania", "" ], "texttemplate": "%{label} %{customdata[0]}", "type": "treemap", - "values": [ - 1, - 4, - 1, - 2, - 1, - 3, - 5, - 1, - 1, - 1, - 1, - 1, - 1, - 5, - 9, - 8, - 1, - 1, - 3, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 1, - 1, - 1, - 3, - 7, - 1, - 8, - 1, - 1, - 1, - 1, - 1, - 1, - 5, - 1, - 1, - 2, - 1, - 1, - 2, - 2, - 1, - 3, - 1, - 1, - 2, - 1, - 4, - 1, - 2, - 1, - 1, - 3, - 2, - 2, - 1, - 4, - 4, - 1, - 1, - 3, - 5, - 1, - 1, - 1, - 1, - 1, - 1, - 2, - 1, - 6, - 1, - 4, - 1, - 3, - 2, - 1, - 1, - 3, - 23, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 6, - 1, - 1, - 1, - 1, - 2, - 6, - 3, - 5, - 12, - 16, - 1, - 1, - 2, - 1, - 2, - 13, - 1, - 3, - 1, - 5, - 1, - 1, - 1, - 5, - 1, - 1, - 1, - 15, - 1, - 2, - 55, - 59, - 1, - 9, - 143, - 65, - 2 - ] + "values": { + "bdata": "AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAIkAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAAAYQAAAAAAAABhAAAAAAAAA8D8AAAAAAAA2QAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAUQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAChAAAAAAAAAAEAAAAAAAKBhQAAAAAAAAEtAAAAAAAAAAEAAAAAAAADwPwAAAAAAACxAAAAAAAAA8D8AAAAAAADwPwAAAAAAABRAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAKkAAAAAAAADwPwAAAAAAAPA/AAAAAAAAMEAAAAAAAADwPwAAAAAAABRAAAAAAAAACEAAAAAAAAAUQAAAAAAAAPA/AAAAAAAACEAAAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAFEAAAAAAAAAgQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAHEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAIBNQAAAAAAAABhAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAABRAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAUQAAAAAAAABBAAAAAAABAUEAAAAAAAAAgQAAAAAAAAPA/AAAAAAAAIkAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAACEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAABA", + "dtype": "f8" + } } ], "layout": { @@ -2583,57 +2335,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -2834,6 +2535,1240 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pycountry_convert as pc\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import matplotlib.colors as mcolors\n", + "\n", + "df = pd.read_csv(\"registrations.csv\")\n", + "\n", + "# remove trailing whitespaces from country names\n", + "df[\"Country\"] = df[\"Country\"].str.strip()\n", + "# replace double spaces by single space\n", + "df[\"Country\"] = df[\"Country\"].str.replace(\" \", \" \")\n", + "\n", + "\n", + "def lookup_country(name: str, *, allow_fuzzy: bool = False) -> str | None:\n", + " \"\"\"Lookup country name by country `name` using `pycountry`.\"\"\"\n", + "\n", + " import pycountry\n", + "\n", + " # Handle special cases\n", + " if name == \"UK\":\n", + " name = \"United Kingdom\"\n", + " if name == \"Cheshire\":\n", + " name = \"United Kingdom\"\n", + " if name == \"England\":\n", + " name = \"United Kingdom\"\n", + " elif name == \"Russia\":\n", + " name = \"Russian Federation\"\n", + " elif name == \"The Netherlands\":\n", + " name = \"Netherlands\"\n", + " elif name == \"USA and UK\":\n", + " name = \"United Kingdom\"\n", + " elif name == \"United States America\":\n", + " name = \"United States\"\n", + "\n", + " if country := pycountry.countries.get(name=name):\n", + " return country.name\n", + "\n", + " try:\n", + " return pycountry.countries.lookup(name).name\n", + " except LookupError:\n", + " pass\n", + "\n", + " try:\n", + " return (\n", + " pycountry.countries.search_fuzzy(query=name)[0].name\n", + " if allow_fuzzy\n", + " else None\n", + " )\n", + " except (LookupError, IndexError):\n", + " return None\n", + "\n", + "\n", + "# Apply the function to standardize country names\n", + "for country_name in df[\"Country\"].unique():\n", + " assert (\n", + " lookup_country(country_name) is not None\n", + " ), f\"Country name {country_name} not found\"\n", + "\n", + "df[\"Country\"] = df[\"Country\"].apply(lookup_country)\n", + "\n", + "# show where the country name is None\n", + "assert df[\"Country\"].isnull().sum() == 0, \"Some country names are None\"\n", + "\n", + "\n", + "# Function to get continent name from country name\n", + "def get_continent(country_name):\n", + " try:\n", + " country_alpha2 = pc.country_name_to_country_alpha2(country_name)\n", + " continent_code = pc.country_alpha2_to_continent_code(country_alpha2)\n", + " continent_name = pc.convert_continent_code_to_continent_name(continent_code)\n", + " return continent_name\n", + " except:\n", + " raise ValueError(f\"Country name {country_name} not found\")\n", + "\n", + "\n", + "# Add continent column\n", + "df[\"Continent\"] = df[\"Country\"].apply(get_continent)\n", + "\n", + "institution_map = {\n", + " \"UKAEA\": \"UKAEA\",\n", + " \"UK Atomic Energy Authority\": \"UKAEA\",\n", + " \"Imperial College London/UK Atomic Energy Authority\": \"Imperial College London\",\n", + " \"York Plasma Institute, University of York\": \"University of York\",\n", + " \"HI IBERIA (HIB) https://www.hi-iberia.es/artificial-intelligence\": \"HI IBERIA\",\n", + " \"HI-Iberia\": \"HI IBERIA\",\n", + " \"HI Iberia\": \"HI IBERIA\",\n", + " \"HI-Iberia, University Carlos II, Gregorio Millán Barbany Institute\": \"HI IBERIA\",\n", + " \"ATG Engineering S.L\": \"ATG Engineering S.L.\",\n", + " \"ATG Europe\": \"ATG Engineering S.L.\",\n", + " \"VTT Research Center of Finland\": \"VTT Technical Research Centre\",\n", + " \"VTT Technical Research Centre of Finland Ltd\": \"VTT Technical Research Centre\",\n", + " \"VTT Technical Research Centre of Finland Ltd.\": \"VTT Technical Research Centre\",\n", + " \"VTT\": \"VTT Technical Research Centre\",\n", + " \"CEA/IRFM\": \"CEA\",\n", + " \"CEA IRFM\": \"CEA\",\n", + " \"MIT\": \"Massachusetts Institute of Technology\",\n", + " \"General Fusion\": \"General Fusion Inc.\",\n", + " \"MIT PSFC\": \"Massachusetts Institute of Technology\",\n", + " \"ntTau Digital\": \"nTtau Digital LTD\",\n", + " \"nTtau Digital\": \"nTtau Digital LTD\",\n", + " \"nTtau Digital Ltd\": \"nTtau Digital LTD\",\n", + " \"Proxima Fusion GmbH\": \"Proxima Fusion\",\n", + " \"University of York Plasma Institute\": \"University of York\",\n", + " \"University of Rochester Laboratory for Laser Energetics\": \"University of Rochester\",\n", + " \"Politecnico of Turin\": \"Politecnico di Torino\",\n", + " \"Oak Ridge National Laboratory\": \"ORNL\",\n", + " \"Thales\": \"Gen-F\",\n", + " \"GenF\": \"Gen-F\",\n", + " \"ITER-FRANCE\": \"ITER Organization\",\n", + " \"Woodruff Scientific\": \"Woodruff Scientific Ltd\",\n", + " \"Lawrence Berkeley National Laboratory\": \"LBNL\",\n", + " \"IDOM UK\": \"IDOM UK Ltd\",\n", + " \"IDOM Nuclear Services\": \"IDOM\",\n", + " \"Flatiron institute\": \"Flatiron Institute\",\n", + " \"Commonwealth Fusion Systems\": \"CFS\",\n", + " \"Fusion for energy\": \"Fusion for Energy\",\n", + " \"Fusion For Energy\": \"Fusion for Energy\",\n", + " \"F4E\": \"Fusion for Energy\",\n", + " \"DTU - Technical University of Denmark\": \"DTU\",\n", + " \"Next Step Fusion s.a.r.l.\": \"Next Step Fusion\",\n", + "}\n", + "\n", + "# remove all trailing whitespaces from institutions\n", + "df[\"Institution\"] = df[\"Institution\"].str.strip()\n", + "\n", + "\n", + "def standardise_institutions(institution):\n", + " return institution_map.get(institution, institution)\n", + "\n", + "\n", + "df[\"Institution\"] = df[\"Institution\"].apply(standardise_institutions)\n", + "\n", + "# # compute number of registrations per country\n", + "df = (\n", + " df.groupby([\"Continent\", \"Country\", \"Institution\"]).size().reset_index(name=\"count\")\n", + ")\n", + "# Map colors to unique continents\n", + "unique_continents = (\n", + " df.groupby(\"Continent\")[\"count\"].sum().sort_values(ascending=False).index\n", + ")\n", + "\n", + "color_map = {\n", + " continent: mcolors.to_hex(cmap(i / (len(unique_continents) - 1)))\n", + " for i, continent in enumerate(unique_continents)\n", + "}\n", + "df[\"color\"] = df[\"Continent\"].map(color_map)\n", + "\n", + "\n", + "# make a treemap grouped by continent\n", + "fig = px.treemap(\n", + " df,\n", + " path=[\"Continent\", \"Country\", \"Institution\"], # Specify the hierarchy\n", + " values=\"count\", # Specify the values\n", + " color=\"Continent\", # Color by continent\n", + " color_discrete_map=color_map, # Set the color map\n", + " custom_data=df[[\"count\"]], # Add custom data for the count\n", + " hover_data={\"count\": \":.0f\"}, # Format the count\n", + " labels={\"count\": \"Registrations\"},\n", + ")\n", + "\n", + "\n", + "fig.update_traces(texttemplate=\"%{label} %{customdata[0]}\") # Show label and count\n", + "fig.update_layout(font=dict(family=\"Coolvetica\", color=\"black\"))\n", + "\n", + "# print number unique institutions\n", + "print(f\"Number of unique institutions: {len(df['Institution'].unique())}\")\n", + "\n", + "fig\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Participants per country\n", + "\n", + "The United States and the United Kingdom have the largest representations at OSSFE 2025, with 59 and 53 participants, respectively!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + [ + 1, + "Australia" + ], + [ + 1, + "Austria" + ], + [ + 1, + "Bangladesh" + ], + [ + 2, + "Belgium" + ], + [ + 6, + "Canada" + ], + [ + 3, + "Denmark" + ], + [ + 5, + "Finland" + ], + [ + 12, + "France" + ], + [ + 16, + "Germany" + ], + [ + 1, + "Greece" + ], + [ + 1, + "Hungary" + ], + [ + 2, + "India" + ], + [ + 1, + "Indonesia" + ], + [ + 2, + "Israel" + ], + [ + 13, + "Italy" + ], + [ + 1, + "Japan" + ], + [ + 3, + "Luxembourg" + ], + [ + 1, + "Morocco" + ], + [ + 5, + "Netherlands" + ], + [ + 1, + "New Zealand" + ], + [ + 1, + "Pakistan" + ], + [ + 1, + "Poland" + ], + [ + 5, + "Russian Federation" + ], + [ + 1, + "Serbia" + ], + [ + 1, + "Singapore" + ], + [ + 1, + "Slovenia" + ], + [ + 14, + "Spain" + ], + [ + 1, + "Sweden" + ], + [ + 2, + "Switzerland" + ], + [ + 54, + "United Kingdom" + ], + [ + 59, + "United States" + ] + ], + "geo": "geo", + "hovertemplate": "%{hovertext}

count=%{customdata[0]}", + "hovertext": [ + "Australia", + "Austria", + "Bangladesh", + "Belgium", + "Canada", + "Denmark", + "Finland", + "France", + "Germany", + "Greece", + "Hungary", + "India", + "Indonesia", + "Israel", + "Italy", + "Japan", + "Luxembourg", + "Morocco", + "Netherlands", + "New Zealand", + "Pakistan", + "Poland", + "Russian Federation", + "Serbia", + "Singapore", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "United Kingdom", + "United States" + ], + "legendgroup": "", + "locationmode": "country names", + "locations": [ + "Australia", + "Austria", + "Bangladesh", + "Belgium", + "Canada", + "Denmark", + "Finland", + "France", + "Germany", + "Greece", + "Hungary", + "India", + "Indonesia", + "Israel", + "Italy", + "Japan", + "Luxembourg", + "Morocco", + "Netherlands", + "New Zealand", + "Pakistan", + "Poland", + "Russian Federation", + "Serbia", + "Singapore", + "Slovenia", + "Spain", + "Sweden", + "Switzerland", + "United Kingdom", + "United States" + ], + "marker": { + "color": "#636efa", + "size": { + "bdata": "AQEBAgYDBQwQAQECAQINAQMBBQEBAQUBAQEOAQI2Ow==", + "dtype": "i1" + }, + "sizemode": "area", + "sizeref": 0.0236, + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "showlegend": false, + "type": "scattergeo" + } + ], + "layout": { + "font": { + "color": "black", + "family": "Coolvetica" + }, + "geo": { + "center": {}, + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "projection": { + "type": "natural earth" + }, + "showcoastlines": true, + "showframe": false + }, + "legend": { + "itemsizing": "constant", + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -3162,282 +4097,646 @@ }, "zaxis": { "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - } - } - }, - "text/html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import pycountry_convert as pc\n", - "import pandas as pd\n", - "import plotly.express as px\n", - "import matplotlib.colors as mcolors\n", - "\n", - "df = pd.read_csv(\"registrations.csv\")\n", - "\n", - "# remove trailing whitespaces from country names\n", - "df[\"Country\"] = df[\"Country\"].str.strip()\n", - "# replace double spaces by single space\n", - "df[\"Country\"] = df[\"Country\"].str.replace(\" \", \" \")\n", - "\n", - "\n", - "def lookup_country(name: str, *, allow_fuzzy: bool = False) -> str | None:\n", - " \"\"\"Lookup country name by country `name` using `pycountry`.\"\"\"\n", - "\n", - " import pycountry\n", - "\n", - " # Handle special cases\n", - " if name == \"UK\":\n", - " name = \"United Kingdom\"\n", - " if name == \"Cheshire\":\n", - " name = \"United Kingdom\"\n", - " if name == \"England\":\n", - " name = \"United Kingdom\"\n", - " elif name == \"Russia\":\n", - " name = \"Russian Federation\"\n", - " elif name == \"The Netherlands\":\n", - " name = \"Netherlands\"\n", - " elif name == \"USA and UK\":\n", - " name = \"United Kingdom\"\n", - " elif name == \"United States America\":\n", - " name = \"United States\"\n", - "\n", - " if country := pycountry.countries.get(name=name):\n", - " return country.name\n", - "\n", - " try:\n", - " return pycountry.countries.lookup(name).name\n", - " except LookupError:\n", - " pass\n", - "\n", - " try:\n", - " return (\n", - " pycountry.countries.search_fuzzy(query=name)[0].name\n", - " if allow_fuzzy\n", - " else None\n", - " )\n", - " except (LookupError, IndexError):\n", - " return None\n", - "\n", - "\n", - "# Apply the function to standardize country names\n", - "for country_name in df[\"Country\"].unique():\n", - " assert (\n", - " lookup_country(country_name) is not None\n", - " ), f\"Country name {country_name} not found\"\n", - "\n", - "df[\"Country\"] = df[\"Country\"].apply(lookup_country)\n", - "\n", - "# show where the country name is None\n", - "assert df[\"Country\"].isnull().sum() == 0, \"Some country names are None\"\n", - "\n", - "\n", - "# Function to get continent name from country name\n", - "def get_continent(country_name):\n", - " try:\n", - " country_alpha2 = pc.country_name_to_country_alpha2(country_name)\n", - " continent_code = pc.country_alpha2_to_continent_code(country_alpha2)\n", - " continent_name = pc.convert_continent_code_to_continent_name(continent_code)\n", - " return continent_name\n", - " except:\n", - " raise ValueError(f\"Country name {country_name} not found\")\n", - "\n", - "\n", - "# Add continent column\n", - "df[\"Continent\"] = df[\"Country\"].apply(get_continent)\n", - "\n", - "institution_map = {\n", - " \"UKAEA\": \"UKAEA\",\n", - " \"UK Atomic Energy Authority\": \"UKAEA\",\n", - " \"Imperial College London/UK Atomic Energy Authority\": \"Imperial College London\",\n", - " \"York Plasma Institute, University of York\": \"University of York\",\n", - " \"HI IBERIA (HIB) https://www.hi-iberia.es/artificial-intelligence\": \"HI IBERIA\",\n", - " \"HI-Iberia\": \"HI IBERIA\",\n", - " \"HI Iberia\": \"HI IBERIA\",\n", - " \"HI-Iberia, University Carlos II, Gregorio Millán Barbany Institute\": \"HI IBERIA\",\n", - " \"ATG Engineering S.L\": \"ATG Engineering S.L.\",\n", - " \"ATG Europe\": \"ATG Engineering S.L.\",\n", - " \"VTT Research Center of Finland\": \"VTT Technical Research Centre\",\n", - " \"VTT Technical Research Centre of Finland Ltd\": \"VTT Technical Research Centre\",\n", - " \"VTT Technical Research Centre of Finland Ltd.\": \"VTT Technical Research Centre\",\n", - " \"VTT\": \"VTT Technical Research Centre\",\n", - " \"CEA/IRFM\": \"CEA\",\n", - " \"CEA IRFM\": \"CEA\",\n", - " \"MIT\": \"Massachusetts Institute of Technology\",\n", - " \"General Fusion\": \"General Fusion Inc.\",\n", - " \"MIT PSFC\": \"Massachusetts Institute of Technology\",\n", - " \"ntTau Digital\": \"nTtau Digital LTD\",\n", - " \"nTtau Digital\": \"nTtau Digital LTD\",\n", - " \"nTtau Digital Ltd\": \"nTtau Digital LTD\",\n", - " \"Proxima Fusion GmbH\": \"Proxima Fusion\",\n", - " \"University of York Plasma Institute\": \"University of York\",\n", - " \"University of Rochester Laboratory for Laser Energetics\": \"University of Rochester\",\n", - " \"Politecnico of Turin\": \"Politecnico di Torino\",\n", - " \"Oak Ridge National Laboratory\": \"ORNL\",\n", - " \"Thales\": \"Gen-F\",\n", - " \"GenF\": \"Gen-F\",\n", - " \"ITER-FRANCE\": \"ITER Organization\",\n", - " \"Woodruff Scientific\": \"Woodruff Scientific Ltd\",\n", - " \"Lawrence Berkeley National Laboratory\": \"LBNL\",\n", - " \"IDOM UK\": \"IDOM UK Ltd\",\n", - " \"IDOM Nuclear Services\": \"IDOM\",\n", - " \"Flatiron institute\": \"Flatiron Institute\",\n", - " \"Commonwealth Fusion Systems\": \"CFS\",\n", - " \"Fusion for energy\": \"Fusion for Energy\",\n", - " \"Fusion For Energy\": \"Fusion for Energy\",\n", - " \"F4E\": \"Fusion for Energy\",\n", - " \"DTU - Technical University of Denmark\": \"DTU\",\n", - " \"Next Step Fusion s.a.r.l.\": \"Next Step Fusion\",\n", - "}\n", - "\n", - "# remove all trailing whitespaces from institutions\n", - "df[\"Institution\"] = df[\"Institution\"].str.strip()\n", - "\n", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a bubble chart on a map\n", + "# count by country and not institution\n", "\n", - "def standardise_institutions(institution):\n", - " return institution_map.get(institution, institution)\n", + "# keep only Country and Count columns\n", + "df2 = df[[\"Country\", \"count\"]]\n", "\n", + "# sum\n", + "df2 = df2.groupby(\"Country\").sum().reset_index()\n", "\n", - "df[\"Institution\"] = df[\"Institution\"].apply(standardise_institutions)\n", + "# df2[\"color\"] = df2[\"Continent\"].map(color_map)\n", "\n", - "# # compute number of registrations per country\n", - "df = (\n", - " df.groupby([\"Continent\", \"Country\", \"Institution\"]).size().reset_index(name=\"count\")\n", - ")\n", - "# Map colors to unique continents\n", - "unique_continents = (\n", - " df.groupby(\"Continent\")[\"count\"].sum().sort_values(ascending=False).index\n", + "fig = px.scatter_geo(\n", + " df2,\n", + " locations=\"Country\",\n", + " locationmode=\"country names\",\n", + " size=\"count\",\n", + " hover_name=\"Country\",\n", + " hover_data={\"count\": True, \"Country\": False},\n", + " projection=\"natural earth\",\n", + " size_max=50,\n", ")\n", "\n", - "color_map = {\n", - " continent: mcolors.to_hex(cmap(i / (len(unique_continents) - 1)))\n", - " for i, continent in enumerate(unique_continents)\n", - "}\n", - "df[\"color\"] = df[\"Continent\"].map(color_map)\n", - "\n", - "\n", - "# make a treemap grouped by continent\n", - "fig = px.treemap(\n", - " df,\n", - " path=[\"Continent\", \"Country\", \"Institution\"], # Specify the hierarchy\n", - " values=\"count\", # Specify the values\n", - " color=\"Continent\", # Color by continent\n", - " color_discrete_map=color_map, # Set the color map\n", - " custom_data=df[[\"count\"]], # Add custom data for the count\n", - " hover_data={\"count\": \":.0f\"}, # Format the count\n", - " labels={\"count\": \"Registrations\"},\n", + "# Update layout for better visualization\n", + "fig.update_layout(\n", + " # title=\"Registrations per Country\",\n", + " geo=dict(showframe=False, showcoastlines=True),\n", + " font=dict(family=\"Coolvetica\", color=\"black\"),\n", ")\n", "\n", - "\n", - "fig.update_traces(texttemplate=\"%{label} %{customdata[0]}\") # Show label and count\n", - "fig.update_layout(font=dict(family=\"Coolvetica\", color=\"black\"))\n", - "\n", - "# print number unique institutions\n", - "print(f\"Number of unique institutions: {len(df['Institution'].unique())}\")\n", - "\n", - "fig\n", - "\n" + "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Participants per country\n", + "## Participants per institution type" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "tags": [ + "hide-cell" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ContinentCountryInstitutioncountcolorType
1AsiaBangladeshNukeHub1#907078Industry
5AsiaIsraelnT-Tao2#907078Industry
6AsiaJapanEX-Fusion Inc.1#907078Industry
11EuropeBelgiumPhd in nuclear physics (2007), currently a tec...1#f87850Industry
13EuropeDenmarkKnudsen1#f87850Industry
14EuropeFinlandFS Dynamics1#f87850Industry
16EuropeFranceASNR1#f87850Industry
19EuropeFranceGen-F2#f87850Industry
20EuropeFranceGraneet1#f87850Industry
22EuropeFranceRenaissance Fusion1#f87850Industry
24EuropeGermanyGauss Fusion GmbH1#f87850Industry
26EuropeGermanyProxima Fusion8#f87850Industry
29EuropeHungaryC3D Engineering Ltd.1#f87850Industry
35EuropeLuxembourgNext Step Fusion3#f87850Industry
38EuropePolandunaffiliated1#f87850Industry
45EuropeSloveniaCosylab d.d.1#f87850Industry
46EuropeSpainATG Engineering S.L.3#f87850Industry
48EuropeSpainHI IBERIA4#f87850Industry
49EuropeSpainIDOM2#f87850Industry
50EuropeSpainNext Step Fusion1#f87850Industry
54EuropeUnited KingdomCerberus Nuclear1#f87850Industry
55EuropeUnited KingdomFirst Light Fusion1#f87850Industry
56EuropeUnited KingdomGoogle DeepMind1#f87850Industry
57EuropeUnited KingdomIDOM UK Ltd2#f87850Industry
59EuropeUnited KingdomKyoto Fusioneering UK Ltd1#f87850Industry
63EuropeUnited KingdomTokamak Energy Ltd.1#f87850Industry
64EuropeUnited KingdomUK Industrial Fusion Solutions1#f87850Industry
68EuropeUnited KingdomWoodruff Scientific Ltd3#f87850Industry
69EuropeUnited KingdomnTtau Digital LTD6#f87850Industry
71North AmericaCanadaGeneral Fusion Inc.3#e8d0a8Industry
72North AmericaCanadaMercenary1#e8d0a8Industry
75North AmericaUnited StatesCFS5#e8d0a8Industry
80North AmericaUnited StatesGeneral Atomics5#e8d0a8Industry
90North AmericaUnited StatesRutherford Energy Ventures1#e8d0a8Industry
91North AmericaUnited StatesSapientai LLC1#e8d0a8Industry
92North AmericaUnited StatesSouth Dakota School of Mines & Technology1#e8d0a8Industry
93North AmericaUnited StatesTAE Technologies1#e8d0a8Industry
95North AmericaUnited StatesThea Energy1#e8d0a8Industry
\n", + "
" + ], + "text/plain": [ + " Continent Country \\\n", + "1 Asia Bangladesh \n", + "5 Asia Israel \n", + "6 Asia Japan \n", + "11 Europe Belgium \n", + "13 Europe Denmark \n", + "14 Europe Finland \n", + "16 Europe France \n", + "19 Europe France \n", + "20 Europe France \n", + "22 Europe France \n", + "24 Europe Germany \n", + "26 Europe Germany \n", + "29 Europe Hungary \n", + "35 Europe Luxembourg \n", + "38 Europe Poland \n", + "45 Europe Slovenia \n", + "46 Europe Spain \n", + "48 Europe Spain \n", + "49 Europe Spain \n", + "50 Europe Spain \n", + "54 Europe United Kingdom \n", + "55 Europe United Kingdom \n", + "56 Europe United Kingdom \n", + "57 Europe United Kingdom \n", + "59 Europe United Kingdom \n", + "63 Europe United Kingdom \n", + "64 Europe United Kingdom \n", + "68 Europe United Kingdom \n", + "69 Europe United Kingdom \n", + "71 North America Canada \n", + "72 North America Canada \n", + "75 North America United States \n", + "80 North America United States \n", + "90 North America United States \n", + "91 North America United States \n", + "92 North America United States \n", + "93 North America United States \n", + "95 North America United States \n", + "\n", + " Institution count color \\\n", + "1 NukeHub 1 #907078 \n", + "5 nT-Tao 2 #907078 \n", + "6 EX-Fusion Inc. 1 #907078 \n", + "11 Phd in nuclear physics (2007), currently a tec... 1 #f87850 \n", + "13 Knudsen 1 #f87850 \n", + "14 FS Dynamics 1 #f87850 \n", + "16 ASNR 1 #f87850 \n", + "19 Gen-F 2 #f87850 \n", + "20 Graneet 1 #f87850 \n", + "22 Renaissance Fusion 1 #f87850 \n", + "24 Gauss Fusion GmbH 1 #f87850 \n", + "26 Proxima Fusion 8 #f87850 \n", + "29 C3D Engineering Ltd. 1 #f87850 \n", + "35 Next Step Fusion 3 #f87850 \n", + "38 unaffiliated 1 #f87850 \n", + "45 Cosylab d.d. 1 #f87850 \n", + "46 ATG Engineering S.L. 3 #f87850 \n", + "48 HI IBERIA 4 #f87850 \n", + "49 IDOM 2 #f87850 \n", + "50 Next Step Fusion 1 #f87850 \n", + "54 Cerberus Nuclear 1 #f87850 \n", + "55 First Light Fusion 1 #f87850 \n", + "56 Google DeepMind 1 #f87850 \n", + "57 IDOM UK Ltd 2 #f87850 \n", + "59 Kyoto Fusioneering UK Ltd 1 #f87850 \n", + "63 Tokamak Energy Ltd. 1 #f87850 \n", + "64 UK Industrial Fusion Solutions 1 #f87850 \n", + "68 Woodruff Scientific Ltd 3 #f87850 \n", + "69 nTtau Digital LTD 6 #f87850 \n", + "71 General Fusion Inc. 3 #e8d0a8 \n", + "72 Mercenary 1 #e8d0a8 \n", + "75 CFS 5 #e8d0a8 \n", + "80 General Atomics 5 #e8d0a8 \n", + "90 Rutherford Energy Ventures 1 #e8d0a8 \n", + "91 Sapientai LLC 1 #e8d0a8 \n", + "92 South Dakota School of Mines & Technology 1 #e8d0a8 \n", + "93 TAE Technologies 1 #e8d0a8 \n", + "95 Thea Energy 1 #e8d0a8 \n", + "\n", + " Type \n", + "1 Industry \n", + "5 Industry \n", + "6 Industry \n", + "11 Industry \n", + "13 Industry \n", + "14 Industry \n", + "16 Industry \n", + "19 Industry \n", + "20 Industry \n", + "22 Industry \n", + "24 Industry \n", + "26 Industry \n", + "29 Industry \n", + "35 Industry \n", + "38 Industry \n", + "45 Industry \n", + "46 Industry \n", + "48 Industry \n", + "49 Industry \n", + "50 Industry \n", + "54 Industry \n", + "55 Industry \n", + "56 Industry \n", + "57 Industry \n", + "59 Industry \n", + "63 Industry \n", + "64 Industry \n", + "68 Industry \n", + "69 Industry \n", + "71 Industry \n", + "72 Industry \n", + "75 Industry \n", + "80 Industry \n", + "90 Industry \n", + "91 Industry \n", + "92 Industry \n", + "93 Industry \n", + "95 Industry " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# distinguish between universities, national lab and industry\n", + "def institution_type(x):\n", + " if \"Univers\" in x or \"College\" in x or \"Center\" in x or \"Institute\" in x or \"Forschungszentrum\" in x or \"Uni\" in x or \"Politecnico\" in x or \"EPFL\" in x:\n", + " return \"University\"\n", + " elif x in [\"UW-Madison\", \"PPPL\", \"DTU\", \"UOM\"]:\n", + " return \"University\"\n", + " elif \"Lab\" in x or \"National\" in x or \"Differ\" in x or \"Research\" in x or \"R&D\" in x or \"National Laboratory\" in x or \"National Research\" in x:\n", + " return \"National Lab\"\n", + " elif x.endswith(\"NL\") or x in [\"UKAEA\", \"CEA\", \"DIFFER\", \"NRNU MEPhI\"]:\n", + " return \"National Lab\"\n", + " elif x in [\"IAEA\", \"ITER Organization\", \"Fusion for Energy\", \"F4E\", \"ITER-FRANCE\", \"ITER RF Domestic Agency\"]:\n", + " return \"Other\"\n", + " else:\n", + " return \"Industry\"\n", "\n", - "The United States and the United Kingdom have the largest representations at OSSFE 2025, with 59 and 53 participants, respectively!" + "df[\"Type\"] = df[\"Institution\"].apply(institution_type)\n", + "df[df[\"Type\"] == \"Industry\"]" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": { "tags": [ "hide-input" @@ -3452,272 +4751,775 @@ }, "data": [ { + "branchvalues": "total", "customdata": [ [ - 1, - "Australia" + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "Industry" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "National Lab" + ], + [ + "Other" + ], + [ + "Other" + ], + [ + "Other" ], [ - 1, - "Austria" + "Other" ], [ - 1, - "Bangladesh" + "Other" ], [ - 2, - "Belgium" + "University" ], [ - 6, - "Canada" + "University" ], [ - 3, - "Denmark" + "University" ], [ - 5, - "Finland" + "University" ], [ - 12, - "France" + "University" ], [ - 16, - "Germany" + "University" ], [ - 1, - "Greece" + "University" ], [ - 1, - "Hungary" + "University" ], [ - 2, - "India" + "University" ], [ - 1, - "Indonesia" + "University" ], [ - 2, - "Israel" + "University" ], [ - 13, - "Italy" + "University" ], [ - 1, - "Japan" + "University" ], [ - 3, - "Luxembourg" + "University" ], [ - 1, - "Morocco" + "University" ], [ - 5, - "Netherlands" + "University" ], [ - 1, - "New Zealand" + "University" ], [ - 1, - "Pakistan" + "University" ], [ - 1, - "Poland" + "University" ], [ - 5, - "Russian Federation" + "University" ], [ - 1, - "Serbia" + "University" ], [ - 1, - "Singapore" + "University" ], [ - 1, - "Slovenia" + "University" ], [ - 15, - "Spain" + "University" ], [ - 1, - "Sweden" + "University" ], [ - 2, - "Switzerland" + "University" ], [ - 55, - "United Kingdom" + "University" ], [ - 59, - "United States" + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" + ], + [ + "University" ] ], - "geo": "geo", - "hovertemplate": "%{hovertext}

count=%{customdata[0]}", - "hovertext": [ - "Australia", - "Austria", - "Bangladesh", - "Belgium", - "Canada", - "Denmark", - "Finland", - "France", - "Germany", - "Greece", - "Hungary", - "India", - "Indonesia", - "Israel", - "Italy", - "Japan", - "Luxembourg", - "Morocco", - "Netherlands", - "New Zealand", - "Pakistan", - "Poland", - "Russian Federation", - "Serbia", - "Singapore", - "Slovenia", - "Spain", - "Sweden", - "Switzerland", - "United Kingdom", - "United States" + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hovertemplate": "labels=%{label}
Count=%{value}
parent=%{parent}
id=%{id}
Type=%{customdata[0]}", + "ids": [ + "Industry/ASNR", + "Industry/Next Step Fusion", + "Industry/NukeHub", + "Industry/Phd in nuclear physics (2007), currently a tech entrepreneur", + "Industry/Proxima Fusion", + "Industry/Renaissance Fusion", + "Industry", + "Industry/Sapientai LLC", + "Industry/Mercenary", + "Industry/South Dakota School of Mines & Technology", + "Industry/Thea Energy", + "Industry/Tokamak Energy Ltd.", + "Industry/UK Industrial Fusion Solutions", + "Industry/Woodruff Scientific Ltd", + "Industry/nT-Tao", + "Industry/nTtau Digital LTD", + "Industry/unaffiliated", + "Industry/TAE Technologies", + "Industry/Kyoto Fusioneering UK Ltd", + "Industry/Rutherford Energy Ventures", + "Industry/IDOM UK Ltd", + "Industry/Knudsen", + "Industry/C3D Engineering Ltd.", + "Industry/CFS", + "Industry/Cerberus Nuclear", + "Industry/Cosylab d.d.", + "Industry/EX-Fusion Inc.", + "Industry/FS Dynamics", + "Industry/First Light Fusion", + "Industry/ATG Engineering S.L.", + "Industry/Gen-F", + "Industry/General Atomics", + "Industry/General Fusion Inc.", + "Industry/Google DeepMind", + "Industry/Graneet", + "Industry/HI IBERIA", + "Industry/IDOM", + "Industry/Gauss Fusion GmbH", + "National Lab", + "National Lab/VTT Technical Research Centre", + "National Lab/UKAEA", + "National Lab/Pasteur Labs", + "National Lab/ORNL", + "National Lab/NRNU MEPhI", + "National Lab/Idaho National Laboratory", + "National Lab/Lawrence Livermore National Lab", + "National Lab/LBNL", + "National Lab/DIFFER", + "National Lab/Canadian Nuclear Laboratories", + "National Lab/CEA", + "National Lab/Argonne National Laboratory", + "National Lab/Meranti Research Laboratories", + "Other/ITER RF Domestic Agency", + "Other/ITER Organization", + "Other", + "Other/Fusion for Energy", + "Other/IAEA", + "University/Regional Institute of Education", + "University/Rensselaer Polytechnic Institute", + "University/Rosatom, Institution \"Project Center ITER\"", + "University/SPC-EPFL", + "University/Sapienza University of Rome", + "University/Texas A&M University", + "University/The UM6P Vanguard Center", + "University/UOM", + "University/UW-Madison", + "University/Uni Stuttgart", + "University/Aix-Marseille University", + "University/University of Manchester", + "University/University of Maryland", + "University/University of Padua", + "University/University of Rochester", + "University/University of Rome \"Tor Vergata\" | ENEA Frascati Research Centre", + "University/University of Saskatchewan", + "University/University of Tennessee", + "University/University of York", + "University/Victoria University of Wellington", + "University/Quaid e Awam University of Engineering Science and Technology Nawabshah", + "University/Universitas Gadjah Mada", + "University/Princeton University", + "University/Politecnico di Milano", + "University/Center for Astrophysics | Harvard & Smithsonian", + "University/Columbia University", + "University/Cornell University", + "University/DTU", + "University/EPFL", + "University/Eindhoven University of Technology", + "University/Flatiron Institute", + "University/Forschungszentrum Juelich", + "University/Ghent University", + "University/Imperial College London", + "University/Politecnico di Torino", + "University/Indiana University Bloomington", + "University/KTH Royal Institute of Technology", + "University/Lovely Professional University", + "University/Marathon Fusion Inc, The University of Bath", + "University/Massachusetts Institute of Technology", + "University/Max Planck Institute for Plasma Physics", + "University/NRC Kurchatov Institute", + "University/National Technical University of Athens", + "University/Nuclear Institute", + "University/PPPL", + "University/Peter the Great St.Petersburg Polytechnic University", + "University/Institute of Physics Belgrade", + "University" ], - "legendgroup": "", - "locationmode": "country names", - "locations": [ - "Australia", - "Austria", - "Bangladesh", - "Belgium", - "Canada", - "Denmark", - "Finland", - "France", - "Germany", - "Greece", - "Hungary", - "India", - "Indonesia", - "Israel", - "Italy", - "Japan", - "Luxembourg", - "Morocco", - "Netherlands", - "New Zealand", - "Pakistan", - "Poland", - "Russian Federation", - "Serbia", - "Singapore", - "Slovenia", - "Spain", - "Sweden", - "Switzerland", - "United Kingdom", - "United States" + "labels": [ + "ASNR", + "Next Step Fusion", + "NukeHub", + "Phd in nuclear physics (2007), currently a tech entrepreneur", + "Proxima Fusion", + "Renaissance Fusion", + "Industry", + "Sapientai LLC", + "Mercenary", + "South Dakota School of Mines & Technology", + "Thea Energy", + "Tokamak Energy Ltd.", + "UK Industrial Fusion Solutions", + "Woodruff Scientific Ltd", + "nT-Tao", + "nTtau Digital LTD", + "unaffiliated", + "TAE Technologies", + "Kyoto Fusioneering UK Ltd", + "Rutherford Energy Ventures", + "IDOM UK Ltd", + "Knudsen", + "C3D Engineering Ltd.", + "CFS", + "Cerberus Nuclear", + "Cosylab d.d.", + "EX-Fusion Inc.", + "FS Dynamics", + "First Light Fusion", + "ATG Engineering S.L.", + "Gen-F", + "General Atomics", + "General Fusion Inc.", + "Google DeepMind", + "Graneet", + "HI IBERIA", + "IDOM", + "Gauss Fusion GmbH", + "National Lab", + "VTT Technical Research Centre", + "UKAEA", + "Pasteur Labs", + "ORNL", + "NRNU MEPhI", + "Idaho National Laboratory", + "Lawrence Livermore National Lab", + "LBNL", + "DIFFER", + "Canadian Nuclear Laboratories", + "CEA", + "Argonne National Laboratory", + "Meranti Research Laboratories", + "ITER RF Domestic Agency", + "ITER Organization", + "Other", + "Fusion for Energy", + "IAEA", + "Regional Institute of Education", + "Rensselaer Polytechnic Institute", + "Rosatom, Institution \"Project Center ITER\"", + "SPC-EPFL", + "Sapienza University of Rome", + "Texas A&M University", + "The UM6P Vanguard Center", + "UOM", + "UW-Madison", + "Uni Stuttgart", + "Aix-Marseille University", + "University of Manchester", + "University of Maryland", + "University of Padua", + "University of Rochester", + "University of Rome \"Tor Vergata\" | ENEA Frascati Research Centre", + "University of Saskatchewan", + "University of Tennessee", + "University of York", + "Victoria University of Wellington", + "Quaid e Awam University of Engineering Science and Technology Nawabshah", + "Universitas Gadjah Mada", + "Princeton University", + "Politecnico di Milano", + "Center for Astrophysics | Harvard & Smithsonian", + "Columbia University", + "Cornell University", + "DTU", + "EPFL", + "Eindhoven University of Technology", + "Flatiron Institute", + "Forschungszentrum Juelich", + "Ghent University", + "Imperial College London", + "Politecnico di Torino", + "Indiana University Bloomington", + "KTH Royal Institute of Technology", + "Lovely Professional University", + "Marathon Fusion Inc, The University of Bath", + "Massachusetts Institute of Technology", + "Max Planck Institute for Plasma Physics", + "NRC Kurchatov Institute", + "National Technical University of Athens", + "Nuclear Institute", + "PPPL", + "Peter the Great St.Petersburg Polytechnic University", + "Institute of Physics Belgrade", + "University" ], "marker": { - "color": "#636efa", - "size": [ - 1, - 1, - 1, - 2, - 6, - 3, - 5, - 12, - 16, - 1, - 1, - 2, - 1, - 2, - 13, - 1, - 3, - 1, - 5, - 1, - 1, - 1, - 5, - 1, - 1, - 1, - 15, - 1, - 2, - 55, - 59 - ], - "sizemode": "area", - "sizeref": 0.0236, - "symbol": "circle" + "colors": [ + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#f8d068", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#482840", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#e8d0a8", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850", + "#f87850" + ] }, - "mode": "markers", "name": "", - "showlegend": false, - "type": "scattergeo" + "parents": [ + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "Industry", + "", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "National Lab", + "Other", + "Other", + "", + "Other", + "Other", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "University", + "" + ], + "type": "treemap", + "values": { + "bdata": "AAAAAAAA8D8AAAAAAAAQQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAgQAAAAAAAAPA/AAAAAABAUkAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAABAAAAAAAAAGEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAABRAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAAAEAAAAAAAADwPwAAAAAAAEpAAAAAAAAAEEAAAAAAAAA2QAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAABBAAAAAAAAA8D8AAAAAAAAgQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAIkAAAAAAAAAQQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAGEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAFEAAAAAAAAAcQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAIkAAAAAAAAAUQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAFVA", + "dtype": "f8" + } } ], "layout": { - "font": { - "color": "black", - "family": "Coolvetica" - }, - "geo": { - "center": {}, - "domain": { - "x": [ - 0, - 1 - ], - "y": [ - 0, - 1 - ] - }, - "projection": { - "type": "natural earth" - }, - "showcoastlines": true, - "showframe": false - }, "legend": { - "itemsizing": "constant", "tracegroupgap": 0 }, "margin": { @@ -3902,57 +5704,6 @@ "type": "heatmap" } ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], "histogram": [ { "marker": { @@ -4153,6 +5904,17 @@ "type": "scattergl" } ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], "scattermapbox": [ { "marker": { @@ -4540,76 +6302,62 @@ } } } - }, - "text/html": [ - "
" - ] + } }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "# Create a bubble chart on a map\n", - "# count by country and not institution\n", - "\n", - "# keep only Country and Count columns\n", - "df2 = df[[\"Country\", \"count\"]]\n", - "\n", - "# sum\n", - "df2 = df2.groupby(\"Country\").sum().reset_index()\n", + "# treemap grouped by Type\n", + "df_new = df.groupby([\"Type\", \"Institution\"])[\"count\"].sum().reset_index(name=\"Count\")\n", "\n", - "# df2[\"color\"] = df2[\"Continent\"].map(color_map)\n", "\n", - "fig = px.scatter_geo(\n", - " df2,\n", - " locations=\"Country\",\n", - " locationmode=\"country names\",\n", - " size=\"count\",\n", - " hover_name=\"Country\",\n", - " hover_data={\"count\": True, \"Country\": False},\n", - " projection=\"natural earth\",\n", - " size_max=50,\n", - ")\n", + "color_map = {\n", + " 'University': mcolors.to_hex(cmap(0)),\n", + " 'Industry': mcolors.to_hex(cmap(1)),\n", + " 'National Lab': mcolors.to_hex(cmap(2)),\n", + " 'Other': mcolors.to_hex(cmap(3)),\n", + "}\n", "\n", - "# Update layout for better visualization\n", - "fig.update_layout(\n", - " # title=\"Registrations per Country\",\n", - " geo=dict(showframe=False, showcoastlines=True),\n", - " font=dict(family=\"Coolvetica\", color=\"black\"),\n", - ")\n", + "fig = px.treemap(df_new, path=['Type', 'Institution'], values='Count', color='Type', color_discrete_map=color_map,)\n", "\n", - "fig" + "fig.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique institutions: 101\n", + "Percentage of universities: 46.53%\n", + "Percentage of industry: 36.63%\n", + "Percentage of national labs: 12.87%\n", + "Percentage of other institutions: 3.96%\n" + ] + } + ], + "source": [ + "print(f\"Number of unique institutions: {len(df_new['Institution'].unique())}\")\n", + "print(f\"Percentage of universities: {len(df_new[df_new['Type'] == 'University']) / len(df_new):.2%}\")\n", + "print(f\"Percentage of industry: {len(df_new[df_new['Type'] == 'Industry']) / len(df_new):.2%}\")\n", + "print(f\"Percentage of national labs: {len(df_new[df_new['Type'] == 'National Lab']) / len(df_new):.2%}\")\n", + "print(f\"Percentage of other institutions: {len(df_new[df_new['Type'] == 'Other']) / len(df_new):.2%}\")" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "fusion_papers", "language": "python", "name": "python3" }, @@ -4623,7 +6371,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.1" + "version": "3.13.5" } }, "nbformat": 4,