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 125 kB

7 years ago
7 years ago
7 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 7,
  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. "def loadDataset(filename):\n",
  35. " from os.path import dirname, splitext\n",
  36. "\n",
  37. " dirname_dataset = dirname(filename)\n",
  38. " extension = splitext(filename)[1][1:]\n",
  39. " data = []\n",
  40. " y = []\n",
  41. " if(extension == \"ds\"):\n",
  42. " content = open(filename).read().splitlines()\n",
  43. " for i in range(0, len(content)):\n",
  44. " tmp = content[i].split(' ')\n",
  45. " data.append(loadCT(dirname_dataset + '/' + tmp[0]))\n",
  46. " y.append(float(tmp[1]))\n",
  47. " elif(extension == \"cxl\"):\n",
  48. " import xml.etree.ElementTree as ET\n",
  49. "\n",
  50. " tree = ET.parse(filename)\n",
  51. " root = tree.getroot()\n",
  52. " data = []\n",
  53. " y = []\n",
  54. " for graph in root.iter('print'):\n",
  55. " mol_filename = graph.attrib['file']\n",
  56. " mol_class = graph.attrib['class']\n",
  57. " data.append(loadGXL(dirname_dataset + '/' + mol_filename))\n",
  58. " y.append(mol_class)\n",
  59. "\n",
  60. " return data, y"
  61. ]
  62. },
  63. {
  64. "cell_type": "code",
  65. "execution_count": 3,
  66. "metadata": {},
  67. "outputs": [
  68. {
  69. "ename": "FileNotFoundError",
  70. "evalue": "[Errno 2] No such file or directory: '/home/bgauzere/work/Datasets/Acyclic/dataset_bps.ds'",
  71. "output_type": "error",
  72. "traceback": [
  73. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  74. "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
  75. "\u001b[0;32m<ipython-input-3-7ebb4e3a81de>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/home/bgauzere/work/Datasets/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  76. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  77. "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/home/bgauzere/work/Datasets/Acyclic/dataset_bps.ds'"
  78. ]
  79. }
  80. ],
  81. "source": [
  82. "dataset, y = loadDataset(\"/home/bgauzere/work/Datasets/Acyclic/dataset_bps.ds\")"
  83. ]
  84. },
  85. {
  86. "cell_type": "code",
  87. "execution_count": 5,
  88. "metadata": {},
  89. "outputs": [
  90. {
  91. "ename": "FileNotFoundError",
  92. "evalue": "[Errno 2] No such file or directory: '/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'",
  93. "output_type": "error",
  94. "traceback": [
  95. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  96. "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
  97. "\u001b[0;32m<ipython-input-5-fe7b61e2fb4d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  98. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  99. "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'"
  100. ]
  101. }
  102. ],
  103. "source": [
  104. "dataset, y = loadDataset(\"/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")"
  105. ]
  106. },
  107. {
  108. "cell_type": "code",
  109. "execution_count": 6,
  110. "metadata": {},
  111. "outputs": [
  112. {
  113. "ename": "FileNotFoundError",
  114. "evalue": "[Errno 2] No such file or directory: '/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'",
  115. "output_type": "error",
  116. "traceback": [
  117. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  118. "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
  119. "\u001b[0;32m<ipython-input-6-fe7b61e2fb4d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  120. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  121. "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'"
  122. ]
  123. }
  124. ],
  125. "source": [
  126. "dataset, y = loadDataset(\"/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")"
  127. ]
  128. },
  129. {
  130. "cell_type": "code",
  131. "execution_count": 7,
  132. "metadata": {},
  133. "outputs": [
  134. {
  135. "ename": "FileNotFoundError",
  136. "evalue": "[Errno 2] No such file or directory: 'Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'",
  137. "output_type": "error",
  138. "traceback": [
  139. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  140. "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
  141. "\u001b[0;32m<ipython-input-7-90ad1e087423>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  142. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  143. "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'"
  144. ]
  145. }
  146. ],
  147. "source": [
  148. "dataset, y = loadDataset(\"Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")"
  149. ]
  150. },
  151. {
  152. "cell_type": "code",
  153. "execution_count": 8,
  154. "metadata": {},
  155. "outputs": [
  156. {
  157. "ename": "FileNotFoundError",
  158. "evalue": "[Errno 2] No such file or directory: '~/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'",
  159. "output_type": "error",
  160. "traceback": [
  161. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  162. "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
  163. "\u001b[0;32m<ipython-input-8-388fbbf72f9a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"~/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  164. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  165. "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '~/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds'"
  166. ]
  167. }
  168. ],
  169. "source": [
  170. "dataset, y = loadDataset(\"~/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")"
  171. ]
  172. },
  173. {
  174. "cell_type": "code",
  175. "execution_count": 16,
  176. "metadata": {
  177. "scrolled": false
  178. },
  179. "outputs": [
  180. {
  181. "ename": "TypeError",
  182. "evalue": "vars() argument must have __dict__ attribute",
  183. "output_type": "error",
  184. "traceback": [
  185. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  186. "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
  187. "\u001b[0;32m<ipython-input-16-061ad4023bd9>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/home/ljia/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  188. "\u001b[0;32m<ipython-input-15-e4695123992f>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mcontent\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvars\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  189. "\u001b[0;31mTypeError\u001b[0m: vars() argument must have __dict__ attribute"
  190. ]
  191. }
  192. ],
  193. "source": [
  194. "dataset, y = loadDataset(\"/home/ljia/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")"
  195. ]
  196. },
  197. {
  198. "cell_type": "code",
  199. "execution_count": 9,
  200. "metadata": {},
  201. "outputs": [
  202. {
  203. "ename": "NameError",
  204. "evalue": "name 'loadCT' is not defined",
  205. "output_type": "error",
  206. "traceback": [
  207. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  208. "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
  209. "\u001b[0;32m<ipython-input-9-d5015a571752>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloadDataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"../../datasets/acyclic/Acyclic/dataset_bps.ds\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  210. "\u001b[0;32m<ipython-input-2-48607ff671f8>\u001b[0m in \u001b[0;36mloadDataset\u001b[0;34m(filename)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mtmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloadCT\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdirname_dataset\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'/'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtmp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtmp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32melif\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mextension\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"cxl\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  211. "\u001b[0;31mNameError\u001b[0m: name 'loadCT' is not defined"
  212. ]
  213. }
  214. ],
  215. "source": [
  216. "dataset, y = loadDataset(\"../../datasets/acyclic/Acyclic/dataset_bps.ds\")"
  217. ]
  218. },
  219. {
  220. "cell_type": "code",
  221. "execution_count": 132,
  222. "metadata": {},
  223. "outputs": [],
  224. "source": [
  225. "import networkx as nx"
  226. ]
  227. },
  228. {
  229. "cell_type": "code",
  230. "execution_count": 183,
  231. "metadata": {},
  232. "outputs": [],
  233. "source": [
  234. "def loadDataset(filename):\n",
  235. " from os.path import dirname, splitext\n",
  236. "\n",
  237. " dirname_dataset = dirname(filename)\n",
  238. " extension = splitext(filename)[1][1:]\n",
  239. " data = []\n",
  240. " y = []\n",
  241. " if(extension == \"ds\"):\n",
  242. " content = open(filename).read().splitlines()\n",
  243. " for i in range(0, len(content)):\n",
  244. " tmp = content[i].split(' ')\n",
  245. " data.append(loadCT(dirname_dataset + '/' + tmp[0].replace('#', '', 1)))\n",
  246. " y.append(float(tmp[1]))\n",
  247. " elif(extension == \"cxl\"):\n",
  248. " import xml.etree.ElementTree as ET\n",
  249. "\n",
  250. " tree = ET.parse(filename)\n",
  251. " root = tree.getroot()\n",
  252. " data = []\n",
  253. " y = []\n",
  254. " for graph in root.iter('print'):\n",
  255. " mol_filename = graph.attrib['file']\n",
  256. " mol_class = graph.attrib['class']\n",
  257. " data.append(loadGXL(dirname_dataset + '/' + mol_filename))\n",
  258. " y.append(mol_class)\n",
  259. "\n",
  260. " return data, y"
  261. ]
  262. },
  263. {
  264. "cell_type": "code",
  265. "execution_count": 184,
  266. "metadata": {},
  267. "outputs": [],
  268. "source": [
  269. "def loadCT(filename):\n",
  270. " content = open(filename).read().splitlines()\n",
  271. " G = nx.Graph(name=str(content[0]))\n",
  272. " tmp = content[1].split(\" \")\n",
  273. " if tmp[0] == '':\n",
  274. " nb_nodes = int(tmp[1])\n",
  275. " nb_edges = int(tmp[2])\n",
  276. " else:\n",
  277. " nb_nodes = int(tmp[0])\n",
  278. " nb_edges = int(tmp[1])\n",
  279. "\n",
  280. " for i in range(0, nb_nodes):\n",
  281. " tmp = content[i + 2].split(\" \")\n",
  282. " tmp = [x for x in tmp if x != '']\n",
  283. " G.add_node(i, label=tmp[3])\n",
  284. "\n",
  285. " for i in range(0, nb_edges):\n",
  286. " tmp = content[i+G.number_of_nodes()+2].split(\" \")\n",
  287. " tmp = [x for x in tmp if x != '']\n",
  288. " G.add_edge(int(tmp[0]) - 1, int(tmp[1]) - 1, label=int(tmp[3]))\n",
  289. " return G\n"
  290. ]
  291. },
  292. {
  293. "cell_type": "code",
  294. "execution_count": 290,
  295. "metadata": {},
  296. "outputs": [],
  297. "source": [
  298. "import networkx as nx\n",
  299. "import numpy as np\n",
  300. "\n",
  301. "\n",
  302. "def getSPLengths(G1):\n",
  303. " sp = nx.shortest_path(G1)\n",
  304. " distances = np.zeros((G1.number_of_nodes(), G1.number_of_nodes()))\n",
  305. " for i in np.keys():\n",
  306. " for j in np[i].keys():\n",
  307. " distances[i, j] = len(sp[i][j])-1\n",
  308. "\n",
  309. "def getSPGraph(G):\n",
  310. " \"\"\"Transform graph G to its corresponding shortest-paths graph.\n",
  311. " \n",
  312. " Parameters\n",
  313. " ----------\n",
  314. " G : NetworkX graph\n",
  315. " The graph to be tramsformed.\n",
  316. " \n",
  317. " Return\n",
  318. " ------\n",
  319. " S : NetworkX graph\n",
  320. " The shortest-paths graph corresponding to G.\n",
  321. " \n",
  322. " Notes\n",
  323. " ------\n",
  324. " 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",
  325. " \n",
  326. " References\n",
  327. " ----------\n",
  328. " [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",
  329. " \"\"\"\n",
  330. " return floydTransformation(G)\n",
  331. " \n",
  332. "def floydTransformation(G):\n",
  333. " \"\"\"Transform graph G to its corresponding shortest-paths graph using Floyd-transformation.\n",
  334. " \n",
  335. " Parameters\n",
  336. " ----------\n",
  337. " G : NetworkX graph\n",
  338. " The graph to be tramsformed.\n",
  339. " \n",
  340. " Return\n",
  341. " ------\n",
  342. " S : NetworkX graph\n",
  343. " The shortest-paths graph corresponding to G.\n",
  344. " \n",
  345. " References\n",
  346. " ----------\n",
  347. " [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",
  348. " \"\"\"\n",
  349. " spMatrix = nx.floyd_warshall_numpy(G) # @todo weigth label not considered\n",
  350. " S = nx.Graph()\n",
  351. " S.add_nodes_from(G)\n",
  352. " for i in range(0, G.number_of_nodes()):\n",
  353. " for j in range(0, G.number_of_nodes()):\n",
  354. " print(spMatrix[i, j])\n",
  355. " S.add_edge(i, j, cost = spMatrix[i, j])\n",
  356. " return S"
  357. ]
  358. },
  359. {
  360. "cell_type": "code",
  361. "execution_count": 292,
  362. "metadata": {
  363. "scrolled": false
  364. },
  365. "outputs": [
  366. {
  367. "name": "stdout",
  368. "output_type": "stream",
  369. "text": [
  370. "[[ 0. 2. 3. 1. 2.]]\n",
  371. "{0: {0: [0], 1: [0, 3, 1], 2: [0, 3, 4, 2], 3: [0, 3], 4: [0, 3, 4]}, 1: {0: [1, 3, 0], 1: [1], 2: [1, 3, 4, 2], 3: [1, 3], 4: [1, 3, 4]}, 2: {0: [2, 4, 3, 0], 1: [2, 4, 3, 1], 2: [2], 3: [2, 4, 3], 4: [2, 4]}, 3: {0: [3, 0], 1: [3, 1], 2: [3, 4, 2], 3: [3], 4: [3, 4]}, 4: {0: [4, 3, 0], 1: [4, 3, 1], 2: [4, 2], 3: [4, 3], 4: [4]}}\n",
  372. "[[ 0. 2. 3. 1. 2.]\n",
  373. " [ 2. 0. 3. 1. 2.]\n",
  374. " [ 3. 3. 0. 2. 1.]\n",
  375. " [ 1. 1. 2. 0. 1.]\n",
  376. " [ 2. 2. 1. 1. 0.]]\n"
  377. ]
  378. },
  379. {
  380. "data": {
  381. "image/png": "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\nIhJi/wt6qJB07qybrgAAAABJRU5ErkJggg==\n",
  382. "text/plain": [
  383. "<matplotlib.figure.Figure at 0x7fe534212fd0>"
  384. ]
  385. },
  386. "metadata": {},
  387. "output_type": "display_data"
  388. },
  389. {
  390. "name": "stdout",
  391. "output_type": "stream",
  392. "text": [
  393. "0.0\n",
  394. "2.0\n",
  395. "3.0\n",
  396. "1.0\n",
  397. "2.0\n",
  398. "2.0\n",
  399. "0.0\n",
  400. "3.0\n",
  401. "1.0\n",
  402. "2.0\n",
  403. "3.0\n",
  404. "3.0\n",
  405. "0.0\n",
  406. "2.0\n",
  407. "1.0\n",
  408. "1.0\n",
  409. "1.0\n",
  410. "2.0\n",
  411. "0.0\n",
  412. "1.0\n",
  413. "2.0\n",
  414. "2.0\n",
  415. "1.0\n",
  416. "1.0\n",
  417. "0.0\n",
  418. "{(0, 1): 2.0, (1, 2): 3.0, (0, 0): 0.0, (3, 3): 0.0, (2, 2): 0.0, (4, 4): 0.0, (1, 4): 2.0, (1, 1): 0.0, (1, 3): 1.0, (2, 3): 2.0, (0, 4): 2.0, (2, 4): 1.0, (0, 3): 1.0, (3, 4): 1.0, (0, 2): 3.0}\n"
  419. ]
  420. },
  421. {
  422. "data": {
  423. "image/png": "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\nAAAASUVORK5CYII=\n",
  424. "text/plain": [
  425. "<matplotlib.figure.Figure at 0x7fe533d89940>"
  426. ]
  427. },
  428. "metadata": {},
  429. "output_type": "display_data"
  430. }
  431. ],
  432. "source": [
  433. "dataset, y = loadDataset(\"/home/ljia/Documents/research-repo/datasets/acyclic/Acyclic/dataset_bps.ds\")\n",
  434. "G1 = dataset[12]\n",
  435. "\n",
  436. "nx.draw_networkx(G1)\n",
  437. "# print(list(dataset[12][4]))\n",
  438. "\n",
  439. "l = nx.shortest_path(G1)\n",
  440. "\n",
  441. "l2 = nx.floyd_warshall_numpy(G1)\n",
  442. "print(np.array(l2[0]))\n",
  443. "print(l)\n",
  444. "print(l2)\n",
  445. "plt.show()\n",
  446. "\n",
  447. "S = getSPGraph(G1)\n",
  448. "nx.draw_networkx(S)\n",
  449. "pos = nx.spring_layout(S)\n",
  450. "edge_labels = nx.get_edge_attributes(S,'cost')\n",
  451. "print(edge_labels)\n",
  452. "nx.draw_networkx_edge_labels(S, pos, edge_labels = edge_labels)\n",
  453. "plt.show()"
  454. ]
  455. },
  456. {
  457. "cell_type": "code",
  458. "execution_count": 294,
  459. "metadata": {
  460. "scrolled": false
  461. },
  462. "outputs": [
  463. {
  464. "data": {
  465. "image/png": "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\nAAAASUVORK5CYII=\n",
  466. "text/plain": [
  467. "<matplotlib.figure.Figure at 0x7fe5341ac908>"
  468. ]
  469. },
  470. "metadata": {},
  471. "output_type": "display_data"
  472. },
  473. {
  474. "data": {
  475. "text/plain": [
  476. "3"
  477. ]
  478. },
  479. "execution_count": 294,
  480. "metadata": {},
  481. "output_type": "execute_result"
  482. }
  483. ],
  484. "source": [
  485. "G.clear()\n",
  486. "G.add_edges_from([(1, 2), (1, 3)])\n",
  487. "G.add_node(1)\n",
  488. "G.add_edge(1, 2)\n",
  489. "G.add_node(\"spam\") # adds node \"spam\"\n",
  490. "G.add_nodes_from(\"spam\") # adds 4 nodes: 's', 'p', 'a', 'm'\n",
  491. "G.add_edge(3, 'm')\n",
  492. "K_5 = nx.random_lobster(30, 0.9, 0.9)\n",
  493. "nx.draw_networkx(K_5)\n",
  494. "import matplotlib.pyplot as plt\n",
  495. "plt.show()\n",
  496. "G.number_of_nodes()\n",
  497. "G.number_of_edges()"
  498. ]
  499. }
  500. ],
  501. "metadata": {
  502. "kernelspec": {
  503. "display_name": "Python 3",
  504. "language": "python",
  505. "name": "python3"
  506. },
  507. "language_info": {
  508. "codemirror_mode": {
  509. "name": "ipython",
  510. "version": 3
  511. },
  512. "file_extension": ".py",
  513. "mimetype": "text/x-python",
  514. "name": "python",
  515. "nbconvert_exporter": "python",
  516. "pygments_lexer": "ipython3",
  517. "version": "3.6.5"
  518. }
  519. },
  520. "nbformat": 4,
  521. "nbformat_minor": 2
  522. }

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