You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_networkx.ipynb 89 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [
  8. {
  9. "name": "stdout",
  10. "output_type": "stream",
  11. "text": [
  12. "[(1, {}), (2, {}), (3, {})]\n",
  13. "[(1, 2, {}), (2, 1, {}), (3, 1, {})]\n",
  14. "{2: {}}\n"
  15. ]
  16. }
  17. ],
  18. "source": [
  19. "import networkx as nx\n",
  20. "dg = nx.DiGraph()\n",
  21. "dg.add_nodes_from([1, 2, 3])\n",
  22. "dg.add_edges_from([(1, 2), (2, 1), (3, 1)])\n",
  23. "print(dg.nodes(data=True))\n",
  24. "print(dg.edges(data=True))\n",
  25. "print(dg[1])"
  26. ]
  27. },
  28. {
  29. "cell_type": "code",
  30. "execution_count": 2,
  31. "metadata": {},
  32. "outputs": [],
  33. "source": [
  34. "import networkx as nx"
  35. ]
  36. },
  37. {
  38. "cell_type": "code",
  39. "execution_count": 3,
  40. "metadata": {},
  41. "outputs": [],
  42. "source": [
  43. "def loadCT(filename):\n",
  44. " content = open(filename).read().splitlines()\n",
  45. " G = nx.Graph(name=str(content[0]))\n",
  46. " tmp = content[1].split(\" \")\n",
  47. " if tmp[0] == '':\n",
  48. " nb_nodes = int(tmp[1])\n",
  49. " nb_edges = int(tmp[2])\n",
  50. " else:\n",
  51. " nb_nodes = int(tmp[0])\n",
  52. " nb_edges = int(tmp[1])\n",
  53. "\n",
  54. " for i in range(0, nb_nodes):\n",
  55. " tmp = content[i + 2].split(\" \")\n",
  56. " tmp = [x for x in tmp if x != '']\n",
  57. " G.add_node(i, label=tmp[3])\n",
  58. "\n",
  59. " for i in range(0, nb_edges):\n",
  60. " tmp = content[i+G.number_of_nodes()+2].split(\" \")\n",
  61. " tmp = [x for x in tmp if x != '']\n",
  62. " G.add_edge(int(tmp[0]) - 1, int(tmp[1]) - 1, label=int(tmp[3]))\n",
  63. " return G\n"
  64. ]
  65. },
  66. {
  67. "cell_type": "code",
  68. "execution_count": 4,
  69. "metadata": {},
  70. "outputs": [],
  71. "source": [
  72. "def loadDataset(filename):\n",
  73. " from os.path import dirname, splitext\n",
  74. "\n",
  75. " dirname_dataset = dirname(filename)\n",
  76. " extension = splitext(filename)[1][1:]\n",
  77. " data = []\n",
  78. " y = []\n",
  79. " if(extension == \"ds\"):\n",
  80. " content = open(filename).read().splitlines()\n",
  81. " for i in range(0, len(content)):\n",
  82. " tmp = content[i].split(' ')\n",
  83. " data.append(loadCT(dirname_dataset + '/' + tmp[0].replace('#', '', 1)))\n",
  84. " y.append(float(tmp[1]))\n",
  85. " elif(extension == \"cxl\"):\n",
  86. " import xml.etree.ElementTree as ET\n",
  87. "\n",
  88. " tree = ET.parse(filename)\n",
  89. " root = tree.getroot()\n",
  90. " data = []\n",
  91. " y = []\n",
  92. " for graph in root.iter('print'):\n",
  93. " mol_filename = graph.attrib['file']\n",
  94. " mol_class = graph.attrib['class']\n",
  95. " data.append(loadGXL(dirname_dataset + '/' + mol_filename))\n",
  96. " y.append(mol_class)\n",
  97. "\n",
  98. " return data, y"
  99. ]
  100. },
  101. {
  102. "cell_type": "code",
  103. "execution_count": 5,
  104. "metadata": {},
  105. "outputs": [],
  106. "source": [
  107. "dataset, y = loadDataset(\"../../datasets/acyclic/dataset_bps.ds\")"
  108. ]
  109. },
  110. {
  111. "cell_type": "code",
  112. "execution_count": 6,
  113. "metadata": {},
  114. "outputs": [],
  115. "source": [
  116. "import networkx as nx\n",
  117. "import numpy as np\n",
  118. "\n",
  119. "\n",
  120. "def getSPLengths(G1):\n",
  121. " sp = nx.shortest_path(G1)\n",
  122. " distances = np.zeros((G1.number_of_nodes(), G1.number_of_nodes()))\n",
  123. " for i in np.keys():\n",
  124. " for j in np[i].keys():\n",
  125. " distances[i, j] = len(sp[i][j])-1\n",
  126. "\n",
  127. "def getSPGraph(G):\n",
  128. " \"\"\"Transform graph G to its corresponding shortest-paths graph.\n",
  129. " \n",
  130. " Parameters\n",
  131. " ----------\n",
  132. " G : NetworkX graph\n",
  133. " The graph to be tramsformed.\n",
  134. " \n",
  135. " Return\n",
  136. " ------\n",
  137. " S : NetworkX graph\n",
  138. " The shortest-paths graph corresponding to G.\n",
  139. " \n",
  140. " Notes\n",
  141. " ------\n",
  142. " For an input graph G, its corresponding shortest-paths graph S contains the same set of nodes as G, while there exists an edge between all nodes in S which are connected by a walk in G. Every edge in S between two nodes is labeled by the shortest distance between these two nodes.\n",
  143. " \n",
  144. " References\n",
  145. " ----------\n",
  146. " [1] Borgwardt KM, Kriegel HP. Shortest-path kernels on graphs. InData Mining, Fifth IEEE International Conference on 2005 Nov 27 (pp. 8-pp). IEEE.\n",
  147. " \"\"\"\n",
  148. " return floydTransformation(G)\n",
  149. " \n",
  150. "def floydTransformation(G):\n",
  151. " \"\"\"Transform graph G to its corresponding shortest-paths graph using Floyd-transformation.\n",
  152. " \n",
  153. " Parameters\n",
  154. " ----------\n",
  155. " G : NetworkX graph\n",
  156. " The graph to be tramsformed.\n",
  157. " \n",
  158. " Return\n",
  159. " ------\n",
  160. " S : NetworkX graph\n",
  161. " The shortest-paths graph corresponding to G.\n",
  162. " \n",
  163. " References\n",
  164. " ----------\n",
  165. " [1] Borgwardt KM, Kriegel HP. Shortest-path kernels on graphs. InData Mining, Fifth IEEE International Conference on 2005 Nov 27 (pp. 8-pp). IEEE.\n",
  166. " \"\"\"\n",
  167. " spMatrix = nx.floyd_warshall_numpy(G) # @todo weigth label not considered\n",
  168. " S = nx.Graph()\n",
  169. " S.add_nodes_from(G)\n",
  170. " for i in range(0, G.number_of_nodes()):\n",
  171. " for j in range(0, G.number_of_nodes()):\n",
  172. " print(spMatrix[i, j])\n",
  173. " S.add_edge(i, j, cost = spMatrix[i, j])\n",
  174. " return S"
  175. ]
  176. },
  177. {
  178. "cell_type": "code",
  179. "execution_count": 12,
  180. "metadata": {
  181. "scrolled": false
  182. },
  183. "outputs": [
  184. {
  185. "name": "stdout",
  186. "output_type": "stream",
  187. "text": [
  188. "[[0. 2. 3. 1. 2.]]\n",
  189. "{0: {0: [0], 3: [0, 3], 1: [0, 3, 1], 4: [0, 3, 4], 2: [0, 3, 4, 2]}, 1: {1: [1], 3: [1, 3], 0: [1, 3, 0], 4: [1, 3, 4], 2: [1, 3, 4, 2]}, 2: {2: [2], 4: [2, 4], 3: [2, 4, 3], 0: [2, 4, 3, 0], 1: [2, 4, 3, 1]}, 3: {3: [3], 0: [3, 0], 1: [3, 1], 4: [3, 4], 2: [3, 4, 2]}, 4: {4: [4], 2: [4, 2], 3: [4, 3], 0: [4, 3, 0], 1: [4, 3, 1]}}\n",
  190. "[[0. 2. 3. 1. 2.]\n",
  191. " [2. 0. 3. 1. 2.]\n",
  192. " [3. 3. 0. 2. 1.]\n",
  193. " [1. 1. 2. 0. 1.]\n",
  194. " [2. 2. 1. 1. 0.]]\n"
  195. ]
  196. },
  197. {
  198. "data": {
  199. "image/png": "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\n",
  200. "text/plain": [
  201. "<Figure size 432x288 with 1 Axes>"
  202. ]
  203. },
  204. "metadata": {
  205. "needs_background": "light"
  206. },
  207. "output_type": "display_data"
  208. },
  209. {
  210. "name": "stdout",
  211. "output_type": "stream",
  212. "text": [
  213. "0.0\n",
  214. "2.0\n",
  215. "3.0\n",
  216. "1.0\n",
  217. "2.0\n",
  218. "2.0\n",
  219. "0.0\n",
  220. "3.0\n",
  221. "1.0\n",
  222. "2.0\n",
  223. "3.0\n",
  224. "3.0\n",
  225. "0.0\n",
  226. "2.0\n",
  227. "1.0\n",
  228. "1.0\n",
  229. "1.0\n",
  230. "2.0\n",
  231. "0.0\n",
  232. "1.0\n",
  233. "2.0\n",
  234. "2.0\n",
  235. "1.0\n",
  236. "1.0\n",
  237. "0.0\n",
  238. "{(0, 0): 0.0, (0, 1): 2.0, (0, 2): 3.0, (0, 3): 1.0, (0, 4): 2.0, (1, 1): 0.0, (1, 2): 3.0, (1, 3): 1.0, (1, 4): 2.0, (2, 2): 0.0, (2, 3): 2.0, (2, 4): 1.0, (3, 3): 0.0, (3, 4): 1.0, (4, 4): 0.0}\n"
  239. ]
  240. },
  241. {
  242. "data": {
  243. "image/png": "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Zmb88MMP2NnZ4eXlxdOnTw1mi7m5Oc2bN2fatGkEBQURFRXF3LlzsbS0ZM6cOdja2mqFYseOHflKKIwtfYBCWqSU+Pv706ZNG2bMmMHy5cszHGEXKlSI9evXY25uXqDFwdgWt4EiDG+Mqakpa9asoWrVqrRv395oOtzUQhEcHExkZCRz5szBwsKC2bNnY2try9tvv83EiRPzvFAY4xOWgoaYmBh8fHxYtWoVR44coUePHq9sX6hQIX799VcsLCzo0qUL8TlMk58XMcYHHUUYsoGpqSnff/89NWrUoE2bNjoLLZVScuHCBQJ0UGDIwsICT09P/Pz8tEIxe/ZsihQpwqxZs7C1taVRo0ZMmjSJnTt3GnT086YowmCcnDx5knr16lGuXDmOHj1KtWrVsnReipu2aNGidO7cucCJgzF+nxVhyCYmJiYsW7YMd3d3WrdurZMkekIInj17xtSpU7O1qO5VpAjFl19+yf79+4mMjOTrr7+mcOHCfP3115QvXz7PCIUx/pAKMlJKvvvuO9q3b8/s2bPx9/d/40pkKeJQokSJAiUOiYmJREdHU758eUObkgZFGHKAEILvvvuOJk2a0KpVK6Kjo7N87sWLF9O8j4uLY//+/WzdupX79+9z7NixTM7UDRYWFrRo0eIloShUqBBfffUV5cuXT5M00JiEQhEG4+Hx48d07dqVgIAAjh07Rrdu3bJ9LTMzM37++WdKlixJp06dCoQ4REREUK5cOUxNdZc7VBcowpBDhBDMnz+fli1b8u677xIVFZWl80aPHs2mTZsIDQ1l8uTJtGrVis8++4zY2FgOHz5M06ZNc6V2bmakCMX06dM5cOAADx48YObMmZiZmTFz5syXhOLZs2d6sy09xjhZVxA5fvw49erVw87OjiNHjlC1atUcX9PMzIyffvqJ0qVL8/777xMXF6cDS40XY5xfAHSzwE3fm74XuGUFtVotP//8c1mrVi15//7917ZfvHixFELIRo0ayaFDh8r9+/frwcrs8+zZM7lnzx45ZcoU+c4778iiRYvKxo0by88//1zu2rVLPn36VG+2WFlZyXv37untfgppUavVcsGCBdLa2lpu3LgxV+6RmJgofX19ZevWreXz589z5R7GwIYNG2SXLl30dj+UBW76R0rJl19+yW+//caBAwcoW7Zspm2jo6OpUKHCS8NllUqFEMLo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\n",
  244. "text/plain": [
  245. "<Figure size 432x288 with 1 Axes>"
  246. ]
  247. },
  248. "metadata": {
  249. "needs_background": "light"
  250. },
  251. "output_type": "display_data"
  252. }
  253. ],
  254. "source": [
  255. "dataset, y = loadDataset(\"../../datasets/acyclic/dataset_bps.ds\")\n",
  256. "G1 = dataset[12]\n",
  257. "\n",
  258. "nx.draw_networkx(G1)\n",
  259. "# print(list(dataset[12][4]))\n",
  260. "\n",
  261. "l = nx.shortest_path(G1)\n",
  262. "\n",
  263. "l2 = nx.floyd_warshall_numpy(G1)\n",
  264. "print(np.array(l2[0]))\n",
  265. "print(l)\n",
  266. "print(l2)\n",
  267. "from matplotlib import pyplot as plt\n",
  268. "plt.show()\n",
  269. "\n",
  270. "S = getSPGraph(G1)\n",
  271. "nx.draw_networkx(S)\n",
  272. "pos = nx.spring_layout(S)\n",
  273. "edge_labels = nx.get_edge_attributes(S,'cost')\n",
  274. "print(edge_labels)\n",
  275. "nx.draw_networkx_edge_labels(S, pos, edge_labels = edge_labels)\n",
  276. "plt.show()"
  277. ]
  278. },
  279. {
  280. "cell_type": "code",
  281. "execution_count": 18,
  282. "metadata": {
  283. "scrolled": false
  284. },
  285. "outputs": [
  286. {
  287. "data": {
  288. "image/png": "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\n",
  289. "text/plain": [
  290. "<Figure size 432x288 with 1 Axes>"
  291. ]
  292. },
  293. "metadata": {
  294. "needs_background": "light"
  295. },
  296. "output_type": "display_data"
  297. },
  298. {
  299. "data": {
  300. "image/png": "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\n",
  301. "text/plain": [
  302. "<Figure size 432x288 with 1 Axes>"
  303. ]
  304. },
  305. "metadata": {
  306. "needs_background": "light"
  307. },
  308. "output_type": "display_data"
  309. },
  310. {
  311. "data": {
  312. "text/plain": [
  313. "3"
  314. ]
  315. },
  316. "execution_count": 18,
  317. "metadata": {},
  318. "output_type": "execute_result"
  319. }
  320. ],
  321. "source": [
  322. "import matplotlib.pyplot as plt\n",
  323. "G = dataset[155]\n",
  324. "G.clear()\n",
  325. "G.add_edges_from([(1, 2), (1, 3)])\n",
  326. "G.add_node(1)\n",
  327. "G.add_edge(1, 2)\n",
  328. "G.add_node(\"spam\") # adds node \"spam\"\n",
  329. "G.add_nodes_from(\"spam\") # adds 4 nodes: 's', 'p', 'a', 'm'\n",
  330. "G.add_edge(3, 'm')\n",
  331. "nx.draw_networkx(G)\n",
  332. "plt.show()\n",
  333. "\n",
  334. "K_5 = nx.random_lobster(30, 0.9, 0.9)\n",
  335. "nx.draw_networkx(K_5)\n",
  336. "plt.show()\n",
  337. "G.number_of_nodes()\n",
  338. "G.number_of_edges()"
  339. ]
  340. }
  341. ],
  342. "metadata": {
  343. "kernelspec": {
  344. "display_name": "Python 3",
  345. "language": "python",
  346. "name": "python3"
  347. },
  348. "language_info": {
  349. "codemirror_mode": {
  350. "name": "ipython",
  351. "version": 3
  352. },
  353. "file_extension": ".py",
  354. "mimetype": "text/x-python",
  355. "name": "python",
  356. "nbconvert_exporter": "python",
  357. "pygments_lexer": "ipython3",
  358. "version": "3.6.7"
  359. }
  360. },
  361. "nbformat": 4,
  362. "nbformat_minor": 2
  363. }

A Python package for graph kernels, graph edit distances and graph pre-image problem.