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.

xp_median_preimage.py 23 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Tue Jan 14 15:39:29 2020
  5. @author: ljia
  6. """
  7. import multiprocessing
  8. import functools
  9. from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
  10. from gklearn.preimage.utils import generate_median_preimages_by_class
  11. from gklearn.utils import compute_gram_matrices_by_class
  12. def xp_median_preimage_9_1():
  13. """xp 9_1: MAO, sspkernel, using CONSTANT.
  14. """
  15. # set parameters.
  16. ds_name = 'MAO' #
  17. mpg_options = {'fit_method': 'k-graphs',
  18. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  19. 'ds_name': ds_name,
  20. 'parallel': True, # False
  21. 'time_limit_in_sec': 0,
  22. 'max_itrs': 100, #
  23. 'max_itrs_without_update': 3,
  24. 'epsilon_residual': 0.01,
  25. 'epsilon_ec': 0.1,
  26. 'verbose': 2}
  27. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  28. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  29. kernel_options = {'name': 'structuralspkernel',
  30. 'edge_weight': None,
  31. 'node_kernels': sub_kernels,
  32. 'edge_kernels': sub_kernels,
  33. 'compute_method': 'naive',
  34. 'parallel': 'imap_unordered',
  35. # 'parallel': None,
  36. 'n_jobs': multiprocessing.cpu_count(),
  37. 'normalize': True,
  38. 'verbose': 2}
  39. ged_options = {'method': 'IPFP',
  40. 'initialization_method': 'RANDOM', # 'NODE'
  41. 'initial_solutions': 10, # 1
  42. 'edit_cost': 'CONSTANT', #
  43. 'attr_distance': 'euclidean',
  44. 'ratio_runs_from_initial_solutions': 1,
  45. 'threads': multiprocessing.cpu_count(),
  46. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  47. mge_options = {'init_type': 'MEDOID',
  48. 'random_inits': 10,
  49. 'time_limit': 600,
  50. 'verbose': 2,
  51. 'refine': False}
  52. save_results = True
  53. dir_save='../results/xp_median_preimage/'
  54. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  55. edge_required = False #
  56. # print settings.
  57. print('parameters:')
  58. print('dataset name:', ds_name)
  59. print('mpg_options:', mpg_options)
  60. print('kernel_options:', kernel_options)
  61. print('ged_options:', ged_options)
  62. print('mge_options:', mge_options)
  63. print('save_results:', save_results)
  64. print('irrelevant_labels:', irrelevant_labels)
  65. print()
  66. # generate preimages.
  67. for fit_method in ['k-graphs', 'expert', 'random', 'random', 'random']:
  68. print('\n-------------------------------------')
  69. print('fit method:', fit_method, '\n')
  70. mpg_options['fit_method'] = fit_method
  71. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  72. def xp_median_preimage_8_1():
  73. """xp 8_1: Monoterpenoides, sspkernel, using CONSTANT.
  74. """
  75. # set parameters.
  76. ds_name = 'Monoterpenoides' #
  77. mpg_options = {'fit_method': 'k-graphs',
  78. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  79. 'ds_name': ds_name,
  80. 'parallel': True, # False
  81. 'time_limit_in_sec': 0,
  82. 'max_itrs': 100, #
  83. 'max_itrs_without_update': 3,
  84. 'epsilon_residual': 0.01,
  85. 'epsilon_ec': 0.1,
  86. 'verbose': 2}
  87. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  88. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  89. kernel_options = {'name': 'structuralspkernel',
  90. 'edge_weight': None,
  91. 'node_kernels': sub_kernels,
  92. 'edge_kernels': sub_kernels,
  93. 'compute_method': 'naive',
  94. 'parallel': 'imap_unordered',
  95. # 'parallel': None,
  96. 'n_jobs': multiprocessing.cpu_count(),
  97. 'normalize': True,
  98. 'verbose': 2}
  99. ged_options = {'method': 'IPFP',
  100. 'initialization_method': 'RANDOM', # 'NODE'
  101. 'initial_solutions': 10, # 1
  102. 'edit_cost': 'CONSTANT', #
  103. 'attr_distance': 'euclidean',
  104. 'ratio_runs_from_initial_solutions': 1,
  105. 'threads': multiprocessing.cpu_count(),
  106. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  107. mge_options = {'init_type': 'MEDOID',
  108. 'random_inits': 10,
  109. 'time_limit': 600,
  110. 'verbose': 2,
  111. 'refine': False}
  112. save_results = True
  113. dir_save='../results/xp_median_preimage/'
  114. irrelevant_labels = None #
  115. edge_required = False #
  116. # print settings.
  117. print('parameters:')
  118. print('dataset name:', ds_name)
  119. print('mpg_options:', mpg_options)
  120. print('kernel_options:', kernel_options)
  121. print('ged_options:', ged_options)
  122. print('mge_options:', mge_options)
  123. print('save_results:', save_results)
  124. print('irrelevant_labels:', irrelevant_labels)
  125. print()
  126. # generate preimages.
  127. for fit_method in ['k-graphs', 'expert', 'random', 'random', 'random']:
  128. print('\n-------------------------------------')
  129. print('fit method:', fit_method, '\n')
  130. mpg_options['fit_method'] = fit_method
  131. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  132. def xp_median_preimage_7_1():
  133. """xp 7_1: MUTAG, sspkernel, using CONSTANT.
  134. """
  135. # set parameters.
  136. ds_name = 'MUTAG' #
  137. mpg_options = {'fit_method': 'k-graphs',
  138. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  139. 'ds_name': ds_name,
  140. 'parallel': True, # False
  141. 'time_limit_in_sec': 0,
  142. 'max_itrs': 100, #
  143. 'max_itrs_without_update': 3,
  144. 'epsilon_residual': 0.01,
  145. 'epsilon_ec': 0.1,
  146. 'verbose': 2}
  147. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  148. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  149. kernel_options = {'name': 'structuralspkernel',
  150. 'edge_weight': None,
  151. 'node_kernels': sub_kernels,
  152. 'edge_kernels': sub_kernels,
  153. 'compute_method': 'naive',
  154. 'parallel': 'imap_unordered',
  155. # 'parallel': None,
  156. 'n_jobs': multiprocessing.cpu_count(),
  157. 'normalize': True,
  158. 'verbose': 2}
  159. ged_options = {'method': 'IPFP',
  160. 'initialization_method': 'RANDOM', # 'NODE'
  161. 'initial_solutions': 10, # 1
  162. 'edit_cost': 'CONSTANT', #
  163. 'attr_distance': 'euclidean',
  164. 'ratio_runs_from_initial_solutions': 1,
  165. 'threads': multiprocessing.cpu_count(),
  166. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  167. mge_options = {'init_type': 'MEDOID',
  168. 'random_inits': 10,
  169. 'time_limit': 600,
  170. 'verbose': 2,
  171. 'refine': False}
  172. save_results = True
  173. dir_save='../results/xp_median_preimage/'
  174. irrelevant_labels = None #
  175. edge_required = False #
  176. # print settings.
  177. print('parameters:')
  178. print('dataset name:', ds_name)
  179. print('mpg_options:', mpg_options)
  180. print('kernel_options:', kernel_options)
  181. print('ged_options:', ged_options)
  182. print('mge_options:', mge_options)
  183. print('save_results:', save_results)
  184. print('irrelevant_labels:', irrelevant_labels)
  185. print()
  186. # generate preimages.
  187. for fit_method in ['k-graphs', 'expert', 'random', 'random', 'random']:
  188. print('\n-------------------------------------')
  189. print('fit method:', fit_method, '\n')
  190. mpg_options['fit_method'] = fit_method
  191. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  192. def xp_median_preimage_6_1():
  193. """xp 6_1: COIL-RAG, sspkernel, using NON_SYMBOLIC.
  194. """
  195. # set parameters.
  196. ds_name = 'COIL-RAG' #
  197. mpg_options = {'fit_method': 'k-graphs',
  198. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  199. 'ds_name': ds_name,
  200. 'parallel': True, # False
  201. 'time_limit_in_sec': 0,
  202. 'max_itrs': 100,
  203. 'max_itrs_without_update': 3,
  204. 'epsilon_residual': 0.01,
  205. 'epsilon_ec': 0.1,
  206. 'verbose': 2}
  207. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  208. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  209. kernel_options = {'name': 'structuralspkernel',
  210. 'edge_weight': None,
  211. 'node_kernels': sub_kernels,
  212. 'edge_kernels': sub_kernels,
  213. 'compute_method': 'naive',
  214. 'parallel': 'imap_unordered',
  215. # 'parallel': None,
  216. 'n_jobs': multiprocessing.cpu_count(),
  217. 'normalize': True,
  218. 'verbose': 2}
  219. ged_options = {'method': 'IPFP',
  220. 'initialization_method': 'RANDOM', # 'NODE'
  221. 'initial_solutions': 10, # 1
  222. 'edit_cost': 'NON_SYMBOLIC', #
  223. 'attr_distance': 'euclidean',
  224. 'ratio_runs_from_initial_solutions': 1,
  225. 'threads': multiprocessing.cpu_count(),
  226. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  227. mge_options = {'init_type': 'MEDOID',
  228. 'random_inits': 10,
  229. 'time_limit': 600,
  230. 'verbose': 2,
  231. 'refine': False}
  232. save_results = True
  233. dir_save='../results/xp_median_preimage/'
  234. irrelevant_labels = None #
  235. edge_required = False #
  236. # print settings.
  237. print('parameters:')
  238. print('dataset name:', ds_name)
  239. print('mpg_options:', mpg_options)
  240. print('kernel_options:', kernel_options)
  241. print('ged_options:', ged_options)
  242. print('mge_options:', mge_options)
  243. print('save_results:', save_results)
  244. print('irrelevant_labels:', irrelevant_labels)
  245. print()
  246. # generate preimages.
  247. for fit_method in ['k-graphs', 'random', 'random', 'random']:
  248. print('\n-------------------------------------')
  249. print('fit method:', fit_method, '\n')
  250. mpg_options['fit_method'] = fit_method
  251. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  252. def xp_median_preimage_5_1():
  253. """xp 5_1: FRANKENSTEIN, sspkernel, using NON_SYMBOLIC.
  254. """
  255. # set parameters.
  256. ds_name = 'FRANKENSTEIN' #
  257. mpg_options = {'fit_method': 'k-graphs',
  258. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  259. 'ds_name': ds_name,
  260. 'parallel': True, # False
  261. 'time_limit_in_sec': 0,
  262. 'max_itrs': 100,
  263. 'max_itrs_without_update': 3,
  264. 'epsilon_residual': 0.01,
  265. 'epsilon_ec': 0.1,
  266. 'verbose': 2}
  267. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  268. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  269. kernel_options = {'name': 'structuralspkernel',
  270. 'edge_weight': None,
  271. 'node_kernels': sub_kernels,
  272. 'edge_kernels': sub_kernels,
  273. 'compute_method': 'naive',
  274. 'parallel': 'imap_unordered',
  275. # 'parallel': None,
  276. 'n_jobs': multiprocessing.cpu_count(),
  277. 'normalize': True,
  278. 'verbose': 2}
  279. ged_options = {'method': 'IPFP',
  280. 'initialization_method': 'RANDOM', # 'NODE'
  281. 'initial_solutions': 10, # 1
  282. 'edit_cost': 'NON_SYMBOLIC',
  283. 'attr_distance': 'euclidean',
  284. 'ratio_runs_from_initial_solutions': 1,
  285. 'threads': multiprocessing.cpu_count(),
  286. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  287. mge_options = {'init_type': 'MEDOID',
  288. 'random_inits': 10,
  289. 'time_limit': 600,
  290. 'verbose': 2,
  291. 'refine': False}
  292. save_results = True
  293. dir_save='../results/xp_median_preimage/'
  294. irrelevant_labels = None #
  295. edge_required = False #
  296. # print settings.
  297. print('parameters:')
  298. print('dataset name:', ds_name)
  299. print('mpg_options:', mpg_options)
  300. print('kernel_options:', kernel_options)
  301. print('ged_options:', ged_options)
  302. print('mge_options:', mge_options)
  303. print('save_results:', save_results)
  304. print('irrelevant_labels:', irrelevant_labels)
  305. print()
  306. # generate preimages.
  307. for fit_method in ['k-graphs', 'random', 'random', 'random']:
  308. print('\n-------------------------------------')
  309. print('fit method:', fit_method, '\n')
  310. mpg_options['fit_method'] = fit_method
  311. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  312. def xp_median_preimage_4_1():
  313. """xp 4_1: COLORS-3, sspkernel, using NON_SYMBOLIC.
  314. """
  315. # set parameters.
  316. ds_name = 'COLORS-3' #
  317. mpg_options = {'fit_method': 'k-graphs',
  318. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  319. 'ds_name': ds_name,
  320. 'parallel': True, # False
  321. 'time_limit_in_sec': 0,
  322. 'max_itrs': 100,
  323. 'max_itrs_without_update': 3,
  324. 'epsilon_residual': 0.01,
  325. 'epsilon_ec': 0.1,
  326. 'verbose': 2}
  327. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  328. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  329. kernel_options = {'name': 'structuralspkernel',
  330. 'edge_weight': None,
  331. 'node_kernels': sub_kernels,
  332. 'edge_kernels': sub_kernels,
  333. 'compute_method': 'naive',
  334. 'parallel': 'imap_unordered',
  335. # 'parallel': None,
  336. 'n_jobs': multiprocessing.cpu_count(),
  337. 'normalize': True,
  338. 'verbose': 2}
  339. ged_options = {'method': 'IPFP',
  340. 'initialization_method': 'RANDOM', # 'NODE'
  341. 'initial_solutions': 10, # 1
  342. 'edit_cost': 'NON_SYMBOLIC',
  343. 'attr_distance': 'euclidean',
  344. 'ratio_runs_from_initial_solutions': 1,
  345. 'threads': multiprocessing.cpu_count(),
  346. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  347. mge_options = {'init_type': 'MEDOID',
  348. 'random_inits': 10,
  349. 'time_limit': 600,
  350. 'verbose': 2,
  351. 'refine': False}
  352. save_results = True
  353. dir_save='../results/xp_median_preimage/'
  354. irrelevant_labels = None #
  355. edge_required = False #
  356. # print settings.
  357. print('parameters:')
  358. print('dataset name:', ds_name)
  359. print('mpg_options:', mpg_options)
  360. print('kernel_options:', kernel_options)
  361. print('ged_options:', ged_options)
  362. print('mge_options:', mge_options)
  363. print('save_results:', save_results)
  364. print('irrelevant_labels:', irrelevant_labels)
  365. print()
  366. # generate preimages.
  367. for fit_method in ['k-graphs', 'random', 'random', 'random']:
  368. print('\n-------------------------------------')
  369. print('fit method:', fit_method, '\n')
  370. mpg_options['fit_method'] = fit_method
  371. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  372. def xp_median_preimage_3_1():
  373. """xp 3_1: Fingerprint, sspkernel, using LETTER2, only node attrs.
  374. """
  375. # set parameters.
  376. ds_name = 'Fingerprint' #
  377. mpg_options = {'fit_method': 'k-graphs',
  378. 'init_ecc': [0.525, 0.525, 0.001, 0.125, 0.125], #
  379. 'ds_name': ds_name,
  380. 'parallel': True, # False
  381. 'time_limit_in_sec': 0,
  382. 'max_itrs': 100,
  383. 'max_itrs_without_update': 3,
  384. 'epsilon_residual': 0.01,
  385. 'epsilon_ec': 0.1,
  386. 'verbose': 2}
  387. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  388. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  389. kernel_options = {'name': 'structuralspkernel',
  390. 'edge_weight': None,
  391. 'node_kernels': sub_kernels,
  392. 'edge_kernels': sub_kernels,
  393. 'compute_method': 'naive',
  394. 'parallel': 'imap_unordered',
  395. # 'parallel': None,
  396. 'n_jobs': multiprocessing.cpu_count(),
  397. 'normalize': True,
  398. 'verbose': 2}
  399. ged_options = {'method': 'IPFP',
  400. 'initialization_method': 'RANDOM', # 'NODE'
  401. 'initial_solutions': 10, # 1
  402. 'edit_cost': 'LETTER2',
  403. 'attr_distance': 'euclidean',
  404. 'ratio_runs_from_initial_solutions': 1,
  405. 'threads': multiprocessing.cpu_count(),
  406. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  407. mge_options = {'init_type': 'MEDOID',
  408. 'random_inits': 10,
  409. 'time_limit': 600,
  410. 'verbose': 2,
  411. 'refine': False}
  412. save_results = True
  413. dir_save='../results/xp_median_preimage/'
  414. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  415. edge_required = False #
  416. # print settings.
  417. print('parameters:')
  418. print('dataset name:', ds_name)
  419. print('mpg_options:', mpg_options)
  420. print('kernel_options:', kernel_options)
  421. print('ged_options:', ged_options)
  422. print('mge_options:', mge_options)
  423. print('save_results:', save_results)
  424. print('irrelevant_labels:', irrelevant_labels)
  425. print()
  426. # generate preimages.
  427. for fit_method in ['k-graphs', 'random', 'random', 'random']:
  428. print('\n-------------------------------------')
  429. print('fit method:', fit_method, '\n')
  430. mpg_options['fit_method'] = fit_method
  431. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  432. def xp_median_preimage_2_1():
  433. """xp 2_1: COIL-DEL, sspkernel, using LETTER2, only node attrs.
  434. """
  435. # set parameters.
  436. ds_name = 'COIL-DEL' #
  437. mpg_options = {'fit_method': 'k-graphs',
  438. 'init_ecc': [3, 3, 1, 3, 3],
  439. 'ds_name': ds_name,
  440. 'parallel': True, # False
  441. 'time_limit_in_sec': 0,
  442. 'max_itrs': 100,
  443. 'max_itrs_without_update': 3,
  444. 'epsilon_residual': 0.01,
  445. 'epsilon_ec': 0.1,
  446. 'verbose': 2}
  447. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  448. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  449. kernel_options = {'name': 'structuralspkernel',
  450. 'edge_weight': None,
  451. 'node_kernels': sub_kernels,
  452. 'edge_kernels': sub_kernels,
  453. 'compute_method': 'naive',
  454. 'parallel': 'imap_unordered',
  455. # 'parallel': None,
  456. 'n_jobs': multiprocessing.cpu_count(),
  457. 'normalize': True,
  458. 'verbose': 2}
  459. ged_options = {'method': 'IPFP',
  460. 'initialization_method': 'RANDOM', # 'NODE'
  461. 'initial_solutions': 10, # 1
  462. 'edit_cost': 'LETTER2',
  463. 'attr_distance': 'euclidean',
  464. 'ratio_runs_from_initial_solutions': 1,
  465. 'threads': multiprocessing.cpu_count(),
  466. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  467. mge_options = {'init_type': 'MEDOID',
  468. 'random_inits': 10,
  469. 'time_limit': 600,
  470. 'verbose': 2,
  471. 'refine': False}
  472. save_results = True
  473. dir_save='../results/xp_median_preimage/'
  474. irrelevant_labels = {'edge_labels': ['valence']}
  475. # print settings.
  476. print('parameters:')
  477. print('dataset name:', ds_name)
  478. print('mpg_options:', mpg_options)
  479. print('kernel_options:', kernel_options)
  480. print('ged_options:', ged_options)
  481. print('mge_options:', mge_options)
  482. print('save_results:', save_results)
  483. print('irrelevant_labels:', irrelevant_labels)
  484. print()
  485. # # compute gram matrices for each class a priori.
  486. # print('Compute gram matrices for each class a priori.')
  487. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  488. # generate preimages.
  489. for fit_method in ['k-graphs', 'random', 'random', 'random']:
  490. print('\n-------------------------------------')
  491. print('fit method:', fit_method, '\n')
  492. mpg_options['fit_method'] = fit_method
  493. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  494. def xp_median_preimage_1_1():
  495. """xp 1_1: Letter-high, sspkernel.
  496. """
  497. # set parameters.
  498. ds_name = 'Letter-high'
  499. mpg_options = {'fit_method': 'k-graphs',
  500. 'init_ecc': [3, 3, 1, 3, 3],
  501. 'ds_name': ds_name,
  502. 'parallel': True, # False
  503. 'time_limit_in_sec': 0,
  504. 'max_itrs': 100,
  505. 'max_itrs_without_update': 3,
  506. 'epsilon_residual': 0.01,
  507. 'epsilon_ec': 0.1,
  508. 'verbose': 2}
  509. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  510. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  511. kernel_options = {'name': 'structuralspkernel',
  512. 'edge_weight': None,
  513. 'node_kernels': sub_kernels,
  514. 'edge_kernels': sub_kernels,
  515. 'compute_method': 'naive',
  516. 'parallel': 'imap_unordered',
  517. # 'parallel': None,
  518. 'n_jobs': multiprocessing.cpu_count(),
  519. 'normalize': True,
  520. 'verbose': 2}
  521. ged_options = {'method': 'IPFP',
  522. 'initialization_method': 'RANDOM', # 'NODE'
  523. 'initial_solutions': 1, # 1
  524. 'edit_cost': 'LETTER2',
  525. 'attr_distance': 'euclidean',
  526. 'ratio_runs_from_initial_solutions': 1,
  527. 'threads': multiprocessing.cpu_count(),
  528. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  529. mge_options = {'init_type': 'MEDOID',
  530. 'random_inits': 10,
  531. 'time_limit': 600,
  532. 'verbose': 2,
  533. 'refine': False}
  534. save_results = True
  535. # print settings.
  536. print('parameters:')
  537. print('dataset name:', ds_name)
  538. print('mpg_options:', mpg_options)
  539. print('kernel_options:', kernel_options)
  540. print('ged_options:', ged_options)
  541. print('mge_options:', mge_options)
  542. print('save_results:', save_results)
  543. # generate preimages.
  544. for fit_method in ['k-graphs', 'expert', 'random', 'random', 'random']:
  545. print('\n-------------------------------------')
  546. print('fit method:', fit_method, '\n')
  547. mpg_options['fit_method'] = fit_method
  548. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save='../results/xp_median_preimage/')
  549. if __name__ == "__main__":
  550. #### xp 1_1: Letter-high, sspkernel.
  551. # xp_median_preimage_1_1()
  552. #### xp 2_1: COIL-DEL, sspkernel, using LETTER2, only node attrs.
  553. # xp_median_preimage_2_1()
  554. #### xp 3_1: Fingerprint, sspkernel, using LETTER2, only node attrs.
  555. # xp_median_preimage_3_1()
  556. #### xp 4_1: COLORS-3, sspkernel, using NON_SYMBOLIC.
  557. # xp_median_preimage_4_1()
  558. #### xp 5_1: FRANKENSTEIN, sspkernel, using NON_SYMBOLIC.
  559. # xp_median_preimage_5_1()
  560. #### xp 6_1: COIL-RAG, sspkernel, using NON_SYMBOLIC.
  561. # xp_median_preimage_6_1()
  562. #### xp 7_1: MUTAG, sspkernel, using CONSTANT.
  563. # xp_median_preimage_7_1()
  564. #### xp 8_1: Monoterpenoides, sspkernel, using CONSTANT.
  565. # xp_median_preimage_8_1()
  566. #### xp 9_1: MAO, sspkernel, using CONSTANT.
  567. xp_median_preimage_9_1()

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