File size: 3,371 Bytes
5ce695c 4525147 5ce695c 4525147 5ce695c 4525147 5ce695c 4525147 84d90da 4525147 2877d69 4525147 94ec9ca 5ce695c dfe5fc6 4525147 5ce695c 0d30669 5ce695c 4525147 2cd6b7d 0d30669 4525147 5ce695c bea81d8 4525147 7b8b1b0 4525147 5ce695c 0d30669 5ce695c 4525147 5ce695c 50ae381 8c1382e dfe5fc6 4525147 efcd777 4525147 5ce695c dfe5fc6 5ce695c 4525147 5ce695c 4525147 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
import gradio as gr
from datasets import load_dataset, Dataset
from PIL import Image
import io
import base64
import json
from graph_visualization import visualize_graph
# branch_name = "edges-sorted-ascending"
branch_name = "Sorted_edges"
# Load the dataset
# dataset = load_dataset("Zaherrr/OOP_KG_Dataset", split='data', revision=branch_name)
dataset = load_dataset("Zaherrr/OOP_KG_MarkMap_Synthetic_Dataset", split='data') #, revision=branch_name)
print(f'This is the dataset: {dataset}')
print(dataset.info)
print(f'This is an example: {dataset[-5]}')
def reshape_json_data_to_fit_visualize_graph(graph_data):
nodes = graph_data["nodes"]
edges = graph_data["edges"]
transformed_nodes = [
{"id": nodes["id"][idx], "label": nodes["label"][idx]}
for idx in range(len(nodes["id"]))
]
transformed_edges = [
{"source": edges["source"][idx], "target": edges["target"][idx], "type": "->"}
for idx in range(len(edges["source"]))
]
graph_data = {"nodes": transformed_nodes, "edges": transformed_edges}
return graph_data
def display_example(index):
example = dataset[index]
img = example["image"]
# Get image dimensions
img_width, img_height = img.size
# Prepare the graph data
graph_data = {"nodes": example["nodes"], "edges": example["edges"]}
transformed_graph_data = reshape_json_data_to_fit_visualize_graph(graph_data)
# Generate the graph visualization
graph_html = visualize_graph(transformed_graph_data)
# Modify the iframe to have a fixed height
graph_html = graph_html.replace('height: 100vh;', 'height: 500px;')
# Convert graph_data to a formatted JSON string
json_data = json.dumps(transformed_graph_data, indent=2)
return img, graph_html, json_data, transformed_graph_data, f"Width: {img_width}px, Height: {img_height}px"
def create_interface():
with gr.Blocks() as demo:
gr.Markdown("# Knowledge Graph Visualizer for the [Zaherrr/OOP_KG_MarkMap_Synthetic_Dataset](https://huggingface.co/datasets/Zaherrr/OOP_KG_MarkMap_Synthetic_Dataset) dataset")
with gr.Row():
index_slider = gr.Slider(
minimum=0,
maximum=len(dataset) - 1,
step=1,
label="Example Index"
)
with gr.Row():
image_output = gr.Image(type="pil", label="Image", height=500)
graph_output = gr.HTML(label="Knowledge Graph")
with gr.Row():
dimensions_output = gr.Textbox(
label="Image Dimensions (pixels)",
placeholder="Width and Height will appear here",
interactive=False,
)
with gr.Row():
json_output = gr.Code(language="json", label="Graph JSON Data")
text_output = gr.Textbox(
label="Graph Text Data",
placeholder="Text data will appear here",
interactive=False,
)
index_slider.change(
fn=display_example,
inputs=[index_slider],
outputs=[image_output, graph_output, json_output, text_output, dimensions_output],
)
return demo
# Create and launch the interface
if __name__ == "__main__":
demo = create_interface()
demo.launch() |