|
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Tue Jan 7 15:25:36 2020
-
- @author: ljia
- """
-
- # draw all the praphs
- import matplotlib.pyplot as plt
-
- import networkx as nx
- import numpy as np
- from gklearn.utils.graphfiles import loadDataset, loadGXL
-
-
- def main():
- # MUTAG dataset.
- dataset, y = loadDataset("../../datasets/MUTAG/MUTAG_A.txt")
- for idx in [6]: #[65]:#
- G = dataset[idx]
- ncolors= []
- for node in G.nodes:
- if G.nodes[node]['atom'] == '0':
- G.nodes[node]['atom'] = 'C'
- ncolors.append('#bd3182')
- elif G.nodes[node]['atom'] == '1':
- G.nodes[node]['atom'] = 'N'
- ncolors.append('#3182bd')
- elif G.nodes[node]['atom'] == '2':
- G.nodes[node]['atom'] = 'O'
- ncolors.append('#82bd31')
- elif G.nodes[node]['atom'] == '3':
- G.nodes[node]['atom'] = 'F'
- elif G.nodes[node]['atom'] == '4':
- G.nodes[node]['atom'] = 'I'
- elif G.nodes[node]['atom'] == '5':
- G.nodes[node]['atom'] = 'Cl'
- elif G.nodes[node]['atom'] == '6':
- G.nodes[node]['atom'] = 'Br'
- ecolors = []
- for edge in G.edges:
- if G.edges[edge]['bond_type'] == '0':
- ecolors.append('#bd3182')
- elif G.edges[edge]['bond_type'] == '1':
- ecolors.append('#3182bd')
- elif G.edges[edge]['bond_type'] == '2':
- ecolors.append('#82bd31')
- elif G.edges[edge]['bond_type'] == '3':
- ecolors.append('orange')
-
- print(idx)
- print(nx.get_node_attributes(G, 'atom'))
- edge_labels = nx.get_edge_attributes(G, 'bond_type')
- print(edge_labels)
- pos=nx.spring_layout(G)
- nx.draw(G,
- pos,
- node_size=500,
- labels=nx.get_node_attributes(G, 'atom'),
- node_color=ncolors,
- font_color='w',
- edge_color=ecolors,
- width=3,
- with_labels=True)
- # edge_labels = nx.draw_networkx_edge_labels(G, pos,
- # edge_labels=edge_labels,
- # font_color='pink')
- plt.savefig('mol1_graph.svg', format='svg', dpi=300)
- plt.show()
- plt.clf()
-
-
- # # monoterpenoides dataset.
- # dataset, y = loadDataset("../../datasets/monoterpenoides/dataset_10+.ds")
- # for idx in [12,22,29,74]:
- # print(idx)
- # print(nx.get_node_attributes(dataset[idx], 'atom'))
- # edge_labels = nx.get_edge_attributes(dataset[idx], 'bond_type')
- # print(edge_labels)
- # pos=nx.spring_layout(dataset[idx])
- # nx.draw(dataset[idx], pos, labels=nx.get_node_attributes(dataset[idx], 'atom'), with_labels=True)
- # edge_labels = nx.draw_networkx_edge_labels(dataset[idx], pos,
- # edge_labels=edge_labels,
- # font_color='pink')
- # plt.show()
-
-
- # # Fingerprint dataset.
- # dataset = '/media/ljia/DATA/research-repo/codes/Linlin/gedlib/data/collections/Fingerprint.xml'
- # graph_dir = '/media/ljia/DATA/research-repo/codes/Linlin/gedlib/data/datasets/Fingerprint/data/'
- # Gn, y_all = loadDataset(dataset, extra_params=graph_dir)
- ## dataset = '/media/ljia/DATA/research-repo/codes/Linlin/graphkit-learn/datasets/Fingerprint/Fingerprint_A.txt'
- ## Gn, y_all = loadDataset(dataset)
- #
- # idx_no_node = []
- # idx_no_edge = []
- # idx_no_both = []
- # for idx, G in enumerate(Gn):
- # if nx.number_of_nodes(G) == 0:
- # idx_no_node.append(idx)
- # if nx.number_of_edges(G) == 0:
- # idx_no_both.append(idx)
- # if nx.number_of_edges(G) == 0:
- # idx_no_edge.append(idx)
- ## file_prefix = '../results/graph_images/Fingerprint/' + G.graph['name']
- ## draw_Fingerprint_graph(Gn[idx], file_prefix=file_prefix, save=True)
- # print('nb_no_node: ', len(idx_no_node))
- # print('nb_no_edge: ', len(idx_no_edge))
- # print('nb_no_both: ', len(idx_no_both))
- # print('idx_no_node: ', idx_no_node)
- # print('idx_no_edge: ', idx_no_edge)
- # print('idx_no_both: ', idx_no_both)
- #
- # for idx in [0, 10, 100, 1000]:
- # print(idx)
- # print(Gn[idx].nodes(data=True))
- # print(Gn[idx].edges(data=True))
- # draw_Fingerprint_graph(Gn[idx], file_prefix='')
-
-
- # # SYNTHETIC dataset.
- # dataset = '/media/ljia/DATA/research-repo/codes/Linlin/graphkit-learn/datasets/SYNTHETICnew/SYNTHETICnew_A.txt'
- # Gn, y_all = loadDataset(dataset)
- #
- # idx_no_node = []
- # idx_no_edge = []
- # idx_no_both = []
- # for idx, G in enumerate(Gn):
- # if nx.number_of_nodes(G) == 0:
- # idx_no_node.append(idx)
- # if nx.number_of_edges(G) == 0:
- # idx_no_both.append(idx)
- # if nx.number_of_edges(G) == 0:
- # idx_no_edge.append(idx)
- ## file_prefix = '../results/graph_images/SYNTHETIC/' + G.graph['name']
- ## draw_SYNTHETIC_graph(Gn[idx], file_prefix=file_prefix, save=True)
- ## draw_SYNTHETIC_graph(Gn[idx])
- # print('nb_no_node: ', len(idx_no_node))
- # print('nb_no_edge: ', len(idx_no_edge))
- # print('nb_no_both: ', len(idx_no_both))
- # print('idx_no_node: ', idx_no_node)
- # print('idx_no_edge: ', idx_no_edge)
- # print('idx_no_both: ', idx_no_both)
- #
- # for idx in [0, 10, 100]:
- # print(idx)
- # print(Gn[idx].nodes(data=True))
- # print(Gn[idx].edges(data=True))
- # draw_SYNTHETIC_graph(Gn[idx], save=None)
-
-
- def plot_a_graph(graph_filename):
- graph = loadGXL(graph_filename)
- print(nx.get_node_attributes(graph, 'atom'))
- edge_labels = nx.get_edge_attributes(graph, 'bond_type')
- print(edge_labels)
- pos=nx.spring_layout(graph)
- nx.draw(graph, pos, labels=nx.get_node_attributes(graph, 'atom'), with_labels=True)
- edge_labels = nx.draw_networkx_edge_labels(graph, pos,
- edge_labels=edge_labels,
- font_color='pink')
- plt.show()
-
-
- #Dessin median courrant
- def draw_Fingerprint_graph(graph, file_prefix=None, save=None):
- plt.figure()
- pos = {}
- for n in graph.nodes:
- pos[n] = np.array([float(graph.node[n]['x']), float(graph.node[n]['y'])])
- # set plot settings.
- max_x = np.max([p[0] for p in pos.values()]) if len(pos) > 0 else 10
- min_x = np.min([p[0] for p in pos.values()]) if len(pos) > 0 else 10
- max_y = np.max([p[1] for p in pos.values()]) if len(pos) > 0 else 10
- min_y = np.min([p[1] for p in pos.values()]) if len(pos) > 0 else 10
- padding_x = (max_x - min_x + 10) * 0.1
- padding_y = (max_y - min_y + 10) * 0.1
- range_x = max_x + padding_x - (min_x - padding_x)
- range_y = max_y + padding_y - (min_y - padding_y)
- if range_x > range_y:
- plt.xlim(min_x - padding_x, max_x + padding_x)
- plt.ylim(min_y - padding_y - (range_x - range_y) / 2,
- max_y + padding_y + (range_x - range_y) / 2)
- else:
- plt.xlim(min_x - padding_x - (range_y - range_x) / 2,
- max_x + padding_x + (range_y - range_x) / 2)
- plt.ylim(min_y - padding_y, max_y + padding_y)
- plt.gca().set_aspect('equal', adjustable='box')
- nx.draw_networkx(graph, pos)
- if save is not None:
- plt.savefig(file_prefix + '.eps', format='eps', dpi=300)
- else:
- plt.show()
- plt.clf()
-
-
- def draw_SYNTHETIC_graph(graph, file_prefix=None, save=None):
- plt.figure()
- nx.draw_networkx(graph)
- if save is not None:
- plt.savefig(file_prefix + '.eps', format='eps', dpi=300)
- else:
- plt.show()
- plt.clf()
-
-
- if __name__ == '__main__':
- main()
- # gfn = '/media/ljia/DATA/research-repo/codes/others/gedlib/tests_linlin/output/tmp_ged/set_median.gxl'
- # plot_a_graph(gfn)
- # gfn = '/media/ljia/DATA/research-repo/codes/others/gedlib/tests_linlin/output/tmp_ged/gen_median.gxl'
- # plot_a_graph(gfn)
|