| | import os |
| | import sys |
| | import json |
| | import networkx as nx |
| | import matplotlib.pyplot as plt |
| |
|
| |
|
| | domain_colors = { |
| | "Legislation": "red", |
| | "Healthcare Systems": "blue", |
| | "Healthcare Policies": "green", |
| | "Default": "grey" |
| | } |
| |
|
| |
|
| | |
| | sys.path.append(os.path.join(os.path.dirname(__file__), "../")) |
| | from app.services.agn_service.build_graph import build_graph |
| | from app.services.agn_service.visualize_graph import visualize_graph |
| |
|
| | |
| | index_file_path = "graphs/index.json" |
| | output_image = "expanded_graph_visualization.png" |
| |
|
| | |
| | def load_index_data(file_path): |
| | with open(file_path, "r") as file: |
| | return json.load(file) |
| |
|
| | |
| | def build_expanded_graph(data): |
| | G = nx.DiGraph() |
| | for entity_id, entity_info in data["entities"].items(): |
| | label = entity_info.get("label", entity_id) |
| | domain = entity_info.get("inherits_from", "Default") |
| | color = domain_colors.get(domain, "grey") |
| | G.add_node(entity_id, label=label, color=color) |
| |
|
| | |
| | file_path = entity_info.get("file_path") |
| | if file_path and os.path.exists(file_path): |
| | with open(file_path, "r") as f: |
| | entity_data = json.load(f) |
| | for rel in entity_data.get("relationships", []): |
| | G.add_edge(rel["source"], rel["target"], label=rel["attributes"]["relationship"]) |
| |
|
| | |
| | for relationship in data["relationships"]: |
| | G.add_edge(relationship["source"], relationship["target"], label=relationship["attributes"].get("relationship", "related_to")) |
| |
|
| | return G |
| |
|
| | |
| | if __name__ == "__main__": |
| | data = load_index_data(index_file_path) |
| | G = build_expanded_graph(data) |
| | |
| | if G: |
| | visualize_graph(G, output_file=output_image) |
| | print(f"Expanded graph visualization saved as {output_image}") |
| | else: |
| | print("Failed to build expanded graph.") |