Download data/load_full_graph.py from abuz8studios/FAIE: direct link, hf CLI and curl.
- Browser
- Download file 1.49 kB
-
https://huggingface.co/abuz8studios/FAIE/resolve/main/data/load_full_graph.py
- Command line
-
hf download hf://abuz8studios/FAIE/data/load_full_graph.py
-
curl -L -o load_full_graph.py https://huggingface.co/abuz8studios/FAIE/resolve/main/data/load_full_graph.py
1.49 kB
| """Load the complete Quranic root graph from the pre-built JSON.""" | |
| import json | |
| from pathlib import Path | |
| import networkx as nx | |
| GRAPH_PATH = Path(__file__).parent / "full_graph.json" | |
| def load_graph(path=None): | |
| path = path or GRAPH_PATH | |
| with open(path, "r", encoding="utf-8") as f: | |
| data = json.load(f) | |
| G = nx.DiGraph() | |
| for node_id, attrs in data["nodes"].items(): | |
| G.add_node(node_id, **attrs) | |
| for edge in data["edges"]: | |
| src = edge.pop("source") | |
| tgt = edge.pop("target") | |
| G.add_edge(src, tgt, **edge) | |
| return G | |
| def graph_stats(G): | |
| roots = [n for n, d in G.nodes(data=True) if d.get("type") == "root"] | |
| derived = [n for n, d in G.nodes(data=True) if d.get("type") == "derived"] | |
| deriv_edges = sum(1 for _, _, d in G.edges(data=True) if d.get("relation") == "derivation") | |
| sem_edges = sum(1 for _, _, d in G.edges(data=True) if d.get("relation") == "semantic") | |
| top_roots = sorted(roots, key=lambda n: G.nodes[n].get("frequency", 0), reverse=True)[:20] | |
| return { | |
| "total_nodes": G.number_of_nodes(), | |
| "root_nodes": len(roots), | |
| "derived_nodes": len(derived), | |
| "total_edges": G.number_of_edges(), | |
| "derivation_edges": deriv_edges, | |
| "semantic_edges": sem_edges, | |
| "top_roots": [ | |
| {"root": r, "frequency": G.nodes[r].get("frequency", 0), | |
| "summary": G.nodes[r].get("summary", "")[:80]} | |
| for r in top_roots | |
| ], | |
| } | |