<div id="sigma-container"></div>
<style> #sigma-container { width: 100%; height: 100%; }</style>
<script> import Graph from "graphology"; import { parse } from "graphology-gexf/browser"; import Sigma from "sigma"; import { layerFill, sdfCircle, sdfDiamond } from "sigma/rendering"; import { DEFAULT_STYLES } from "sigma/types";
const container = document.getElementById("sigma-container") as HTMLElement;
const res = await fetch("/data/diseasome.gexf"); const gexf = await res.text(); const graph = parse(Graph, gexf);
new Sigma(graph, container, { primitives: { nodes: { shapes: [sdfCircle(), sdfDiamond()], layers: [layerFill()], label: { margin: 5, }, }, }, styles: { nodes: [ DEFAULT_STYLES.nodes, { whenState: "isHovered", then: { backdropVisibility: "visible", backdropColor: "#ffffff", backdropShadowColor: "rgba(0, 0, 0, 0.5)", backdropShadowBlur: 12, backdropPadding: 6, }, }, { matchData: "type", cases: { disease: { shape: "circle", labelFont: "bold Arial, sans-serif", labelSize: 16, labelPosition: "over", }, gene: { shape: "diamond", labelFont: "'Courier New', monospace", labelSize: 10, labelPosition: "right", labelAngle: Math.PI / 4, }, }, }, ], }, settings: { itemSizesReference: "positions", zoomToSizeRatioFunction: (x: number) => x, autoRescale: true, }, });</script>