I’m new to Pytorch-geometric, and geometric deep learning. I’m trying to visualize the datasets available in pytorch-geometric, but couldn’t find anything to do so.
How do I visualize these graph datasets. Is there provision to do so in pytorch-geometric? How else can we visualize this ?
from torch_geometric.datasets import KarateClub
dataset = KarateClub()
for i in dataset[0]:
print(i)
# this torch.geometric.datasets object comprises of edge(edge information for each node), x(nodes) and y(labels for each node)
edge,x,y = dataset[0]
numpyx = x[1].numpy()
numpyy = y[1].numpy()
numpyedge = edge[1].numpy()
import networkx as nx
g = nx.Graph(numpyx)
name,edgeinfo = edge
src = edgeinfo[0].numpy()
dst = edgeinfo[1].numpy()
edgelist = zip(src,dst)
for i,j in edgelist:
g.add_edge(i,j)
nx.draw_networkx(g)
Hello all! I am also new in PyG… I am trying to import the dataset using Colab but following your instructions outputs an error: module ‘community’ has no attribute ‘best_partition’. Do you know why this could be happening? Thanks for the help!!
from torch_geometric.datasets import KarateClub
dataset = KarateClub()
AttributeError: module ‘community’ has no attribute ‘best_partition’
For future issues, python-louvain already installs networkx package. Therefore, if the previous error appears uninstall both libraries and install back only python-louvain.
I tried with enzyme datset in the same way but i didnt get and i tried in this way and it is giving error: please help:
def convert_to_networkx(graph, n_sample=None):
g = to_networkx(graph, node_attrs=["x"])
y = graph.y.numpy()
if n_sample is not None:
if n_sample >= len(g.nodes):
# If n_sample is larger or equal to the number of nodes, use all nodes
sampled_nodes = list(g.nodes)
else:
# Sample n_sample nodes from the graph
sampled_nodes = random.sample(list(g.nodes), n_sample)
g = g.subgraph(sampled_nodes)
y = y[sampled_nodes]
return g, y
def plot_graph(g, y):
plt.figure(figsize=(9, 7))
nx.draw_spring(g, node_size=30, arrows=False, node_color=y)
plt.show()
from torch_geometric.datasets import TUDataset
import random
# Load the Enzymes dataset
dataset = TUDataset(root='/path/to/your/dataset', name='ENZYMES')
# Check the total number of graphs in the dataset
num_graphs_in_dataset = len(dataset)
# Define the number of graphs you want to visualize (e.g., 5 random graphs)
num_graphs_to_visualize = 5
# Ensure you don't sample more graphs than are available in the dataset
if num_graphs_to_visualize > num_graphs_in_dataset:
num_graphs_to_visualize = num_graphs_in_dataset
# Create a list of unique indices to select random graphs
random_graph_indices = random.sample(range(num_graphs_in_dataset), num_graphs_to_visualize)
# Iterate through the selected graphs
for i in random_graph_indices:
g, y = convert_to_networkx(dataset[i], n_sample=1000) # You can adjust n_sample as needed
plot_graph(g, y)
I am getting error:
Untitled-2.ipynb Cell 4 line 2
22 for i in random_graph_indices:
23 print("i=",i )
---> 24 g, y = convert_to_networkx(dataset[i], n_sample=1000) # You can adjust n_sample as needed
25 plot_graph(g, y)
Untitled-2.ipynb Cell 4 line 4
37 sampled_nodes = random.sample(list(g.nodes), n_sample)
39 g = g.subgraph(sampled_nodes)
---> 40 y = y[sampled_nodes]
42 return g, y
IndexError: index 1 is out of bounds for axis 0 with size 1