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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257
  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, StructuralSP, using CONSTANT, symbolic only.
  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': 'StructuralSP',
  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'] * 10:
  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_9_2():
  73. """xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  74. """
  75. # set parameters.
  76. ds_name = 'MAO' #
  77. mpg_options = {'fit_method': 'k-graphs',
  78. 'init_ecc': [4, 4, 2, 1, 1, 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. kernel_options = {'name': 'PathUpToH',
  88. 'depth': 2, #
  89. 'k_func': 'MinMax', #
  90. 'compute_method': 'trie',
  91. 'parallel': 'imap_unordered',
  92. # 'parallel': None,
  93. 'n_jobs': multiprocessing.cpu_count(),
  94. 'normalize': True,
  95. 'verbose': 2}
  96. ged_options = {'method': 'IPFP',
  97. 'initialization_method': 'RANDOM', # 'NODE'
  98. 'initial_solutions': 10, # 1
  99. 'edit_cost': 'CONSTANT', #
  100. 'attr_distance': 'euclidean',
  101. 'ratio_runs_from_initial_solutions': 1,
  102. 'threads': multiprocessing.cpu_count(),
  103. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  104. mge_options = {'init_type': 'MEDOID',
  105. 'random_inits': 10,
  106. 'time_limit': 600,
  107. 'verbose': 2,
  108. 'refine': False}
  109. save_results = True
  110. dir_save='../results/xp_median_preimage/'
  111. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  112. edge_required = False #
  113. # print settings.
  114. print('parameters:')
  115. print('dataset name:', ds_name)
  116. print('mpg_options:', mpg_options)
  117. print('kernel_options:', kernel_options)
  118. print('ged_options:', ged_options)
  119. print('mge_options:', mge_options)
  120. print('save_results:', save_results)
  121. print('irrelevant_labels:', irrelevant_labels)
  122. print()
  123. # generate preimages.
  124. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  125. print('\n-------------------------------------')
  126. print('fit method:', fit_method, '\n')
  127. mpg_options['fit_method'] = fit_method
  128. 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)
  129. def xp_median_preimage_8_1():
  130. """xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  131. """
  132. # set parameters.
  133. ds_name = 'Monoterpenoides' #
  134. mpg_options = {'fit_method': 'k-graphs',
  135. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  136. 'ds_name': ds_name,
  137. 'parallel': True, # False
  138. 'time_limit_in_sec': 0,
  139. 'max_itrs': 100, #
  140. 'max_itrs_without_update': 3,
  141. 'epsilon_residual': 0.01,
  142. 'epsilon_ec': 0.1,
  143. 'verbose': 2}
  144. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  145. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  146. kernel_options = {'name': 'StructuralSP',
  147. 'edge_weight': None,
  148. 'node_kernels': sub_kernels,
  149. 'edge_kernels': sub_kernels,
  150. 'compute_method': 'naive',
  151. 'parallel': 'imap_unordered',
  152. # 'parallel': None,
  153. 'n_jobs': multiprocessing.cpu_count(),
  154. 'normalize': True,
  155. 'verbose': 2}
  156. ged_options = {'method': 'IPFP',
  157. 'initialization_method': 'RANDOM', # 'NODE'
  158. 'initial_solutions': 10, # 1
  159. 'edit_cost': 'CONSTANT', #
  160. 'attr_distance': 'euclidean',
  161. 'ratio_runs_from_initial_solutions': 1,
  162. 'threads': multiprocessing.cpu_count(),
  163. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  164. mge_options = {'init_type': 'MEDOID',
  165. 'random_inits': 10,
  166. 'time_limit': 600,
  167. 'verbose': 2,
  168. 'refine': False}
  169. save_results = True
  170. dir_save='../results/xp_median_preimage/'
  171. irrelevant_labels = None #
  172. edge_required = False #
  173. # print settings.
  174. print('parameters:')
  175. print('dataset name:', ds_name)
  176. print('mpg_options:', mpg_options)
  177. print('kernel_options:', kernel_options)
  178. print('ged_options:', ged_options)
  179. print('mge_options:', mge_options)
  180. print('save_results:', save_results)
  181. print('irrelevant_labels:', irrelevant_labels)
  182. print()
  183. # generate preimages.
  184. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  185. print('\n-------------------------------------')
  186. print('fit method:', fit_method, '\n')
  187. mpg_options['fit_method'] = fit_method
  188. 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)
  189. def xp_median_preimage_8_2():
  190. """xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  191. """
  192. # set parameters.
  193. ds_name = 'Monoterpenoides' #
  194. mpg_options = {'fit_method': 'k-graphs',
  195. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  196. 'ds_name': ds_name,
  197. 'parallel': True, # False
  198. 'time_limit_in_sec': 0,
  199. 'max_itrs': 100, #
  200. 'max_itrs_without_update': 3,
  201. 'epsilon_residual': 0.01,
  202. 'epsilon_ec': 0.1,
  203. 'verbose': 2}
  204. kernel_options = {'name': 'PathUpToH',
  205. 'depth': 2, #
  206. 'k_func': 'MinMax', #
  207. 'compute_method': 'trie',
  208. 'parallel': 'imap_unordered',
  209. # 'parallel': None,
  210. 'n_jobs': multiprocessing.cpu_count(),
  211. 'normalize': True,
  212. 'verbose': 2}
  213. ged_options = {'method': 'IPFP',
  214. 'initialization_method': 'RANDOM', # 'NODE'
  215. 'initial_solutions': 10, # 1
  216. 'edit_cost': 'CONSTANT', #
  217. 'attr_distance': 'euclidean',
  218. 'ratio_runs_from_initial_solutions': 1,
  219. 'threads': multiprocessing.cpu_count(),
  220. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  221. mge_options = {'init_type': 'MEDOID',
  222. 'random_inits': 10,
  223. 'time_limit': 600,
  224. 'verbose': 2,
  225. 'refine': False}
  226. save_results = True
  227. dir_save='../results/xp_median_preimage/'
  228. irrelevant_labels = None #
  229. edge_required = False #
  230. # print settings.
  231. print('parameters:')
  232. print('dataset name:', ds_name)
  233. print('mpg_options:', mpg_options)
  234. print('kernel_options:', kernel_options)
  235. print('ged_options:', ged_options)
  236. print('mge_options:', mge_options)
  237. print('save_results:', save_results)
  238. print('irrelevant_labels:', irrelevant_labels)
  239. print()
  240. # generate preimages.
  241. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  242. print('\n-------------------------------------')
  243. print('fit method:', fit_method, '\n')
  244. mpg_options['fit_method'] = fit_method
  245. 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)
  246. def xp_median_preimage_7_1():
  247. """xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  248. """
  249. # set parameters.
  250. ds_name = 'MUTAG' #
  251. mpg_options = {'fit_method': 'k-graphs',
  252. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  253. 'ds_name': ds_name,
  254. 'parallel': True, # False
  255. 'time_limit_in_sec': 0,
  256. 'max_itrs': 100, #
  257. 'max_itrs_without_update': 3,
  258. 'epsilon_residual': 0.01,
  259. 'epsilon_ec': 0.1,
  260. 'verbose': 2}
  261. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  262. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  263. kernel_options = {'name': 'StructuralSP',
  264. 'edge_weight': None,
  265. 'node_kernels': sub_kernels,
  266. 'edge_kernels': sub_kernels,
  267. 'compute_method': 'naive',
  268. 'parallel': 'imap_unordered',
  269. # 'parallel': None,
  270. 'n_jobs': multiprocessing.cpu_count(),
  271. 'normalize': True,
  272. 'verbose': 2}
  273. ged_options = {'method': 'IPFP',
  274. 'initialization_method': 'RANDOM', # 'NODE'
  275. 'initial_solutions': 10, # 1
  276. 'edit_cost': 'CONSTANT', #
  277. 'attr_distance': 'euclidean',
  278. 'ratio_runs_from_initial_solutions': 1,
  279. 'threads': multiprocessing.cpu_count(),
  280. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  281. mge_options = {'init_type': 'MEDOID',
  282. 'random_inits': 10,
  283. 'time_limit': 600,
  284. 'verbose': 2,
  285. 'refine': False}
  286. save_results = True
  287. dir_save='../results/xp_median_preimage/'
  288. irrelevant_labels = None #
  289. edge_required = False #
  290. # print settings.
  291. print('parameters:')
  292. print('dataset name:', ds_name)
  293. print('mpg_options:', mpg_options)
  294. print('kernel_options:', kernel_options)
  295. print('ged_options:', ged_options)
  296. print('mge_options:', mge_options)
  297. print('save_results:', save_results)
  298. print('irrelevant_labels:', irrelevant_labels)
  299. print()
  300. # generate preimages.
  301. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  302. print('\n-------------------------------------')
  303. print('fit method:', fit_method, '\n')
  304. mpg_options['fit_method'] = fit_method
  305. 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)
  306. def xp_median_preimage_7_2():
  307. """xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  308. """
  309. # set parameters.
  310. ds_name = 'MUTAG' #
  311. mpg_options = {'fit_method': 'k-graphs',
  312. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  313. 'ds_name': ds_name,
  314. 'parallel': True, # False
  315. 'time_limit_in_sec': 0,
  316. 'max_itrs': 100, #
  317. 'max_itrs_without_update': 3,
  318. 'epsilon_residual': 0.01,
  319. 'epsilon_ec': 0.1,
  320. 'verbose': 2}
  321. kernel_options = {'name': 'PathUpToH',
  322. 'depth': 2, #
  323. 'k_func': 'MinMax', #
  324. 'compute_method': 'trie',
  325. 'parallel': 'imap_unordered',
  326. # 'parallel': None,
  327. 'n_jobs': multiprocessing.cpu_count(),
  328. 'normalize': True,
  329. 'verbose': 2}
  330. ged_options = {'method': 'IPFP',
  331. 'initialization_method': 'RANDOM', # 'NODE'
  332. 'initial_solutions': 10, # 1
  333. 'edit_cost': 'CONSTANT', #
  334. 'attr_distance': 'euclidean',
  335. 'ratio_runs_from_initial_solutions': 1,
  336. 'threads': multiprocessing.cpu_count(),
  337. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  338. mge_options = {'init_type': 'MEDOID',
  339. 'random_inits': 10,
  340. 'time_limit': 600,
  341. 'verbose': 2,
  342. 'refine': False}
  343. save_results = True
  344. dir_save='../results/xp_median_preimage/'
  345. irrelevant_labels = None #
  346. edge_required = False #
  347. # print settings.
  348. print('parameters:')
  349. print('dataset name:', ds_name)
  350. print('mpg_options:', mpg_options)
  351. print('kernel_options:', kernel_options)
  352. print('ged_options:', ged_options)
  353. print('mge_options:', mge_options)
  354. print('save_results:', save_results)
  355. print('irrelevant_labels:', irrelevant_labels)
  356. print()
  357. # generate preimages.
  358. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  359. print('\n-------------------------------------')
  360. print('fit method:', fit_method, '\n')
  361. mpg_options['fit_method'] = fit_method
  362. 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)
  363. def xp_median_preimage_6_1():
  364. """xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  365. """
  366. # set parameters.
  367. ds_name = 'COIL-RAG' #
  368. mpg_options = {'fit_method': 'k-graphs',
  369. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  370. 'ds_name': ds_name,
  371. 'parallel': True, # False
  372. 'time_limit_in_sec': 0,
  373. 'max_itrs': 100,
  374. 'max_itrs_without_update': 3,
  375. 'epsilon_residual': 0.01,
  376. 'epsilon_ec': 0.1,
  377. 'verbose': 2}
  378. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  379. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  380. kernel_options = {'name': 'StructuralSP',
  381. 'edge_weight': None,
  382. 'node_kernels': sub_kernels,
  383. 'edge_kernels': sub_kernels,
  384. 'compute_method': 'naive',
  385. 'parallel': 'imap_unordered',
  386. # 'parallel': None,
  387. 'n_jobs': multiprocessing.cpu_count(),
  388. 'normalize': True,
  389. 'verbose': 2}
  390. ged_options = {'method': 'IPFP',
  391. 'initialization_method': 'RANDOM', # 'NODE'
  392. 'initial_solutions': 10, # 1
  393. 'edit_cost': 'NON_SYMBOLIC', #
  394. 'attr_distance': 'euclidean',
  395. 'ratio_runs_from_initial_solutions': 1,
  396. 'threads': multiprocessing.cpu_count(),
  397. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  398. mge_options = {'init_type': 'MEDOID',
  399. 'random_inits': 10,
  400. 'time_limit': 600,
  401. 'verbose': 2,
  402. 'refine': False}
  403. save_results = True
  404. dir_save='../results/xp_median_preimage/'
  405. irrelevant_labels = None #
  406. edge_required = False #
  407. # print settings.
  408. print('parameters:')
  409. print('dataset name:', ds_name)
  410. print('mpg_options:', mpg_options)
  411. print('kernel_options:', kernel_options)
  412. print('ged_options:', ged_options)
  413. print('mge_options:', mge_options)
  414. print('save_results:', save_results)
  415. print('irrelevant_labels:', irrelevant_labels)
  416. print()
  417. # generate preimages.
  418. for fit_method in ['k-graphs'] + ['random'] * 10:
  419. print('\n-------------------------------------')
  420. print('fit method:', fit_method, '\n')
  421. mpg_options['fit_method'] = fit_method
  422. 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)
  423. def xp_median_preimage_6_2():
  424. """xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  425. """
  426. # set parameters.
  427. ds_name = 'COIL-RAG' #
  428. mpg_options = {'fit_method': 'k-graphs',
  429. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  430. 'ds_name': ds_name,
  431. 'parallel': True, # False
  432. 'time_limit_in_sec': 0,
  433. 'max_itrs': 100,
  434. 'max_itrs_without_update': 3,
  435. 'epsilon_residual': 0.01,
  436. 'epsilon_ec': 0.1,
  437. 'verbose': 2}
  438. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  439. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  440. kernel_options = {'name': 'ShortestPath',
  441. 'edge_weight': None,
  442. 'node_kernels': sub_kernels,
  443. 'parallel': 'imap_unordered',
  444. # 'parallel': None,
  445. 'n_jobs': multiprocessing.cpu_count(),
  446. 'normalize': True,
  447. 'verbose': 2}
  448. ged_options = {'method': 'IPFP',
  449. 'initialization_method': 'RANDOM', # 'NODE'
  450. 'initial_solutions': 10, # 1
  451. 'edit_cost': 'NON_SYMBOLIC', #
  452. 'attr_distance': 'euclidean',
  453. 'ratio_runs_from_initial_solutions': 1,
  454. 'threads': multiprocessing.cpu_count(),
  455. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  456. mge_options = {'init_type': 'MEDOID',
  457. 'random_inits': 10,
  458. 'time_limit': 600,
  459. 'verbose': 2,
  460. 'refine': False}
  461. save_results = True
  462. dir_save='../results/xp_median_preimage/'
  463. irrelevant_labels = None #
  464. edge_required = True #
  465. # print settings.
  466. print('parameters:')
  467. print('dataset name:', ds_name)
  468. print('mpg_options:', mpg_options)
  469. print('kernel_options:', kernel_options)
  470. print('ged_options:', ged_options)
  471. print('mge_options:', mge_options)
  472. print('save_results:', save_results)
  473. print('irrelevant_labels:', irrelevant_labels)
  474. print()
  475. # generate preimages.
  476. for fit_method in ['k-graphs'] + ['random'] * 10:
  477. print('\n-------------------------------------')
  478. print('fit method:', fit_method, '\n')
  479. mpg_options['fit_method'] = fit_method
  480. 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)
  481. def xp_median_preimage_5_1():
  482. """xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  483. """
  484. # set parameters.
  485. ds_name = 'FRANKENSTEIN' #
  486. mpg_options = {'fit_method': 'k-graphs',
  487. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  488. 'ds_name': ds_name,
  489. 'parallel': True, # False
  490. 'time_limit_in_sec': 0,
  491. 'max_itrs': 100,
  492. 'max_itrs_without_update': 3,
  493. 'epsilon_residual': 0.01,
  494. 'epsilon_ec': 0.1,
  495. 'verbose': 2}
  496. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  497. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  498. kernel_options = {'name': 'StructuralSP',
  499. 'edge_weight': None,
  500. 'node_kernels': sub_kernels,
  501. 'edge_kernels': sub_kernels,
  502. 'compute_method': 'naive',
  503. 'parallel': 'imap_unordered',
  504. # 'parallel': None,
  505. 'n_jobs': multiprocessing.cpu_count(),
  506. 'normalize': True,
  507. 'verbose': 2}
  508. ged_options = {'method': 'IPFP',
  509. 'initialization_method': 'RANDOM', # 'NODE'
  510. 'initial_solutions': 10, # 1
  511. 'edit_cost': 'NON_SYMBOLIC',
  512. 'attr_distance': 'euclidean',
  513. 'ratio_runs_from_initial_solutions': 1,
  514. 'threads': multiprocessing.cpu_count(),
  515. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  516. mge_options = {'init_type': 'MEDOID',
  517. 'random_inits': 10,
  518. 'time_limit': 600,
  519. 'verbose': 2,
  520. 'refine': False}
  521. save_results = True
  522. dir_save='../results/xp_median_preimage/'
  523. irrelevant_labels = None #
  524. edge_required = False #
  525. # print settings.
  526. print('parameters:')
  527. print('dataset name:', ds_name)
  528. print('mpg_options:', mpg_options)
  529. print('kernel_options:', kernel_options)
  530. print('ged_options:', ged_options)
  531. print('mge_options:', mge_options)
  532. print('save_results:', save_results)
  533. print('irrelevant_labels:', irrelevant_labels)
  534. print()
  535. # generate preimages.
  536. for fit_method in ['k-graphs'] + ['random'] * 10:
  537. print('\n-------------------------------------')
  538. print('fit method:', fit_method, '\n')
  539. mpg_options['fit_method'] = fit_method
  540. 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)
  541. def xp_median_preimage_4_1():
  542. """xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  543. """
  544. # set parameters.
  545. ds_name = 'COLORS-3' #
  546. mpg_options = {'fit_method': 'k-graphs',
  547. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  548. 'ds_name': ds_name,
  549. 'parallel': True, # False
  550. 'time_limit_in_sec': 0,
  551. 'max_itrs': 100,
  552. 'max_itrs_without_update': 3,
  553. 'epsilon_residual': 0.01,
  554. 'epsilon_ec': 0.1,
  555. 'verbose': 2}
  556. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  557. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  558. kernel_options = {'name': 'StructuralSP',
  559. 'edge_weight': None,
  560. 'node_kernels': sub_kernels,
  561. 'edge_kernels': sub_kernels,
  562. 'compute_method': 'naive',
  563. 'parallel': 'imap_unordered',
  564. # 'parallel': None,
  565. 'n_jobs': multiprocessing.cpu_count(),
  566. 'normalize': True,
  567. 'verbose': 2}
  568. ged_options = {'method': 'IPFP',
  569. 'initialization_method': 'RANDOM', # 'NODE'
  570. 'initial_solutions': 10, # 1
  571. 'edit_cost': 'NON_SYMBOLIC',
  572. 'attr_distance': 'euclidean',
  573. 'ratio_runs_from_initial_solutions': 1,
  574. 'threads': multiprocessing.cpu_count(),
  575. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  576. mge_options = {'init_type': 'MEDOID',
  577. 'random_inits': 10,
  578. 'time_limit': 600,
  579. 'verbose': 2,
  580. 'refine': False}
  581. save_results = True
  582. dir_save='../results/xp_median_preimage/'
  583. irrelevant_labels = None #
  584. edge_required = False #
  585. # print settings.
  586. print('parameters:')
  587. print('dataset name:', ds_name)
  588. print('mpg_options:', mpg_options)
  589. print('kernel_options:', kernel_options)
  590. print('ged_options:', ged_options)
  591. print('mge_options:', mge_options)
  592. print('save_results:', save_results)
  593. print('irrelevant_labels:', irrelevant_labels)
  594. print()
  595. # generate preimages.
  596. for fit_method in ['k-graphs'] + ['random'] * 10:
  597. print('\n-------------------------------------')
  598. print('fit method:', fit_method, '\n')
  599. mpg_options['fit_method'] = fit_method
  600. 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)
  601. def xp_median_preimage_3_2():
  602. """xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  603. """
  604. # set parameters.
  605. ds_name = 'Fingerprint' #
  606. mpg_options = {'fit_method': 'k-graphs',
  607. 'init_ecc': [0.525, 0.525, 0.001, 0.125, 0.125], #
  608. 'ds_name': ds_name,
  609. 'parallel': True, # False
  610. 'time_limit_in_sec': 0,
  611. 'max_itrs': 100,
  612. 'max_itrs_without_update': 3,
  613. 'epsilon_residual': 0.01,
  614. 'epsilon_ec': 0.1,
  615. 'verbose': 2}
  616. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  617. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  618. kernel_options = {'name': 'ShortestPath',
  619. 'edge_weight': None,
  620. 'node_kernels': sub_kernels,
  621. 'parallel': 'imap_unordered',
  622. # 'parallel': None,
  623. 'n_jobs': multiprocessing.cpu_count(),
  624. 'normalize': True,
  625. 'verbose': 2}
  626. ged_options = {'method': 'IPFP',
  627. 'initialization_method': 'RANDOM', # 'NODE'
  628. 'initial_solutions': 10, # 1
  629. 'edit_cost': 'LETTER2',
  630. 'attr_distance': 'euclidean',
  631. 'ratio_runs_from_initial_solutions': 1,
  632. 'threads': multiprocessing.cpu_count(),
  633. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  634. mge_options = {'init_type': 'MEDOID',
  635. 'random_inits': 10,
  636. 'time_limit': 600,
  637. 'verbose': 2,
  638. 'refine': False}
  639. save_results = True
  640. dir_save='../results/xp_median_preimage/'
  641. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  642. edge_required = True #
  643. # print settings.
  644. print('parameters:')
  645. print('dataset name:', ds_name)
  646. print('mpg_options:', mpg_options)
  647. print('kernel_options:', kernel_options)
  648. print('ged_options:', ged_options)
  649. print('mge_options:', mge_options)
  650. print('save_results:', save_results)
  651. print('irrelevant_labels:', irrelevant_labels)
  652. print()
  653. # generate preimages.
  654. for fit_method in ['k-graphs'] + ['random'] * 10:
  655. print('\n-------------------------------------')
  656. print('fit method:', fit_method, '\n')
  657. mpg_options['fit_method'] = fit_method
  658. 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)
  659. def xp_median_preimage_3_1():
  660. """xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  661. """
  662. # set parameters.
  663. ds_name = 'Fingerprint' #
  664. mpg_options = {'fit_method': 'k-graphs',
  665. 'init_ecc': [0.525, 0.525, 0.001, 0.125, 0.125], #
  666. 'ds_name': ds_name,
  667. 'parallel': True, # False
  668. 'time_limit_in_sec': 0,
  669. 'max_itrs': 100,
  670. 'max_itrs_without_update': 3,
  671. 'epsilon_residual': 0.01,
  672. 'epsilon_ec': 0.1,
  673. 'verbose': 2}
  674. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  675. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  676. kernel_options = {'name': 'StructuralSP',
  677. 'edge_weight': None,
  678. 'node_kernels': sub_kernels,
  679. 'edge_kernels': sub_kernels,
  680. 'compute_method': 'naive',
  681. 'parallel': 'imap_unordered',
  682. # 'parallel': None,
  683. 'n_jobs': multiprocessing.cpu_count(),
  684. 'normalize': True,
  685. 'verbose': 2}
  686. ged_options = {'method': 'IPFP',
  687. 'initialization_method': 'RANDOM', # 'NODE'
  688. 'initial_solutions': 10, # 1
  689. 'edit_cost': 'LETTER2',
  690. 'attr_distance': 'euclidean',
  691. 'ratio_runs_from_initial_solutions': 1,
  692. 'threads': multiprocessing.cpu_count(),
  693. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  694. mge_options = {'init_type': 'MEDOID',
  695. 'random_inits': 10,
  696. 'time_limit': 600,
  697. 'verbose': 2,
  698. 'refine': False}
  699. save_results = True
  700. dir_save='../results/xp_median_preimage/'
  701. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  702. edge_required = False #
  703. # print settings.
  704. print('parameters:')
  705. print('dataset name:', ds_name)
  706. print('mpg_options:', mpg_options)
  707. print('kernel_options:', kernel_options)
  708. print('ged_options:', ged_options)
  709. print('mge_options:', mge_options)
  710. print('save_results:', save_results)
  711. print('irrelevant_labels:', irrelevant_labels)
  712. print()
  713. # generate preimages.
  714. for fit_method in ['k-graphs'] + ['random'] * 10:
  715. print('\n-------------------------------------')
  716. print('fit method:', fit_method, '\n')
  717. mpg_options['fit_method'] = fit_method
  718. 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)
  719. def xp_median_preimage_2_1():
  720. """xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  721. """
  722. # set parameters.
  723. ds_name = 'COIL-DEL' #
  724. mpg_options = {'fit_method': 'k-graphs',
  725. 'init_ecc': [3, 3, 1, 3, 3],
  726. 'ds_name': ds_name,
  727. 'parallel': True, # False
  728. 'time_limit_in_sec': 0,
  729. 'max_itrs': 100,
  730. 'max_itrs_without_update': 3,
  731. 'epsilon_residual': 0.01,
  732. 'epsilon_ec': 0.1,
  733. 'verbose': 2}
  734. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  735. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  736. kernel_options = {'name': 'StructuralSP',
  737. 'edge_weight': None,
  738. 'node_kernels': sub_kernels,
  739. 'edge_kernels': sub_kernels,
  740. 'compute_method': 'naive',
  741. 'parallel': 'imap_unordered',
  742. # 'parallel': None,
  743. 'n_jobs': multiprocessing.cpu_count(),
  744. 'normalize': True,
  745. 'verbose': 2}
  746. ged_options = {'method': 'IPFP',
  747. 'initialization_method': 'RANDOM', # 'NODE'
  748. 'initial_solutions': 10, # 1
  749. 'edit_cost': 'LETTER2',
  750. 'attr_distance': 'euclidean',
  751. 'ratio_runs_from_initial_solutions': 1,
  752. 'threads': multiprocessing.cpu_count(),
  753. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  754. mge_options = {'init_type': 'MEDOID',
  755. 'random_inits': 10,
  756. 'time_limit': 600,
  757. 'verbose': 2,
  758. 'refine': False}
  759. save_results = True
  760. dir_save='../results/xp_median_preimage/'
  761. irrelevant_labels = {'edge_labels': ['valence']}
  762. # print settings.
  763. print('parameters:')
  764. print('dataset name:', ds_name)
  765. print('mpg_options:', mpg_options)
  766. print('kernel_options:', kernel_options)
  767. print('ged_options:', ged_options)
  768. print('mge_options:', mge_options)
  769. print('save_results:', save_results)
  770. print('irrelevant_labels:', irrelevant_labels)
  771. print()
  772. # # compute gram matrices for each class a priori.
  773. # print('Compute gram matrices for each class a priori.')
  774. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  775. # generate preimages.
  776. for fit_method in ['k-graphs'] + ['random'] * 10:
  777. print('\n-------------------------------------')
  778. print('fit method:', fit_method, '\n')
  779. mpg_options['fit_method'] = fit_method
  780. 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)
  781. def xp_median_preimage_1_1():
  782. """xp 1_1: Letter-high, StructuralSP.
  783. """
  784. # set parameters.
  785. ds_name = 'Letter-high'
  786. mpg_options = {'fit_method': 'k-graphs',
  787. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  788. 'ds_name': ds_name,
  789. 'parallel': True, # False
  790. 'time_limit_in_sec': 0,
  791. 'max_itrs': 100,
  792. 'max_itrs_without_update': 3,
  793. 'epsilon_residual': 0.01,
  794. 'epsilon_ec': 0.1,
  795. 'verbose': 2}
  796. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  797. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  798. kernel_options = {'name': 'StructuralSP',
  799. 'edge_weight': None,
  800. 'node_kernels': sub_kernels,
  801. 'edge_kernels': sub_kernels,
  802. 'compute_method': 'naive',
  803. 'parallel': 'imap_unordered',
  804. # 'parallel': None,
  805. 'n_jobs': multiprocessing.cpu_count(),
  806. 'normalize': True,
  807. 'verbose': 2}
  808. ged_options = {'method': 'IPFP',
  809. 'initialization_method': 'RANDOM', # 'NODE'
  810. 'initial_solutions': 10, # 1
  811. 'edit_cost': 'LETTER2',
  812. 'attr_distance': 'euclidean',
  813. 'ratio_runs_from_initial_solutions': 1,
  814. 'threads': multiprocessing.cpu_count(),
  815. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  816. mge_options = {'init_type': 'MEDOID',
  817. 'random_inits': 10,
  818. 'time_limit': 600,
  819. 'verbose': 2,
  820. 'refine': False}
  821. save_results = True
  822. # print settings.
  823. print('parameters:')
  824. print('dataset name:', ds_name)
  825. print('mpg_options:', mpg_options)
  826. print('kernel_options:', kernel_options)
  827. print('ged_options:', ged_options)
  828. print('mge_options:', mge_options)
  829. print('save_results:', save_results)
  830. # generate preimages.
  831. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  832. print('\n-------------------------------------')
  833. print('fit method:', fit_method, '\n')
  834. mpg_options['fit_method'] = fit_method
  835. 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/')
  836. def xp_median_preimage_1_2():
  837. """xp 1_2: Letter-high, ShortestPath.
  838. """
  839. # set parameters.
  840. ds_name = 'Letter-high'
  841. mpg_options = {'fit_method': 'k-graphs',
  842. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  843. 'ds_name': ds_name,
  844. 'parallel': True, # False
  845. 'time_limit_in_sec': 0,
  846. 'max_itrs': 100,
  847. 'max_itrs_without_update': 3,
  848. 'epsilon_residual': 0.01,
  849. 'epsilon_ec': 0.1,
  850. 'verbose': 2}
  851. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  852. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  853. kernel_options = {'name': 'ShortestPath',
  854. 'edge_weight': None,
  855. 'node_kernels': sub_kernels,
  856. 'parallel': 'imap_unordered',
  857. # 'parallel': None,
  858. 'n_jobs': multiprocessing.cpu_count(),
  859. 'normalize': True,
  860. 'verbose': 2}
  861. ged_options = {'method': 'IPFP',
  862. 'initialization_method': 'RANDOM', # 'NODE'
  863. 'initial_solutions': 10, # 1
  864. 'edit_cost': 'LETTER2',
  865. 'attr_distance': 'euclidean',
  866. 'ratio_runs_from_initial_solutions': 1,
  867. 'threads': multiprocessing.cpu_count(),
  868. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  869. mge_options = {'init_type': 'MEDOID',
  870. 'random_inits': 10,
  871. 'time_limit': 600,
  872. 'verbose': 2,
  873. 'refine': False}
  874. save_results = True
  875. dir_save='../results/xp_median_preimage/'
  876. irrelevant_labels = None #
  877. edge_required = True #
  878. # print settings.
  879. print('parameters:')
  880. print('dataset name:', ds_name)
  881. print('mpg_options:', mpg_options)
  882. print('kernel_options:', kernel_options)
  883. print('ged_options:', ged_options)
  884. print('mge_options:', mge_options)
  885. print('save_results:', save_results)
  886. print('irrelevant_labels:', irrelevant_labels)
  887. print()
  888. # generate preimages.
  889. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  890. print('\n-------------------------------------')
  891. print('fit method:', fit_method, '\n')
  892. mpg_options['fit_method'] = fit_method
  893. 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)
  894. def xp_median_preimage_10_1():
  895. """xp 10_1: Letter-med, StructuralSP.
  896. """
  897. # set parameters.
  898. ds_name = 'Letter-med'
  899. mpg_options = {'fit_method': 'k-graphs',
  900. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  901. 'ds_name': ds_name,
  902. 'parallel': True, # False
  903. 'time_limit_in_sec': 0,
  904. 'max_itrs': 100,
  905. 'max_itrs_without_update': 3,
  906. 'epsilon_residual': 0.01,
  907. 'epsilon_ec': 0.1,
  908. 'verbose': 2}
  909. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  910. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  911. kernel_options = {'name': 'StructuralSP',
  912. 'edge_weight': None,
  913. 'node_kernels': sub_kernels,
  914. 'edge_kernels': sub_kernels,
  915. 'compute_method': 'naive',
  916. 'parallel': 'imap_unordered',
  917. # 'parallel': None,
  918. 'n_jobs': multiprocessing.cpu_count(),
  919. 'normalize': True,
  920. 'verbose': 2}
  921. ged_options = {'method': 'IPFP',
  922. 'initialization_method': 'RANDOM', # 'NODE'
  923. 'initial_solutions': 10, # 1
  924. 'edit_cost': 'LETTER2',
  925. 'attr_distance': 'euclidean',
  926. 'ratio_runs_from_initial_solutions': 1,
  927. 'threads': multiprocessing.cpu_count(),
  928. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  929. mge_options = {'init_type': 'MEDOID',
  930. 'random_inits': 10,
  931. 'time_limit': 600,
  932. 'verbose': 2,
  933. 'refine': False}
  934. save_results = True
  935. # print settings.
  936. print('parameters:')
  937. print('dataset name:', ds_name)
  938. print('mpg_options:', mpg_options)
  939. print('kernel_options:', kernel_options)
  940. print('ged_options:', ged_options)
  941. print('mge_options:', mge_options)
  942. print('save_results:', save_results)
  943. # generate preimages.
  944. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  945. print('\n-------------------------------------')
  946. print('fit method:', fit_method, '\n')
  947. mpg_options['fit_method'] = fit_method
  948. 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/')
  949. def xp_median_preimage_10_2():
  950. """xp 10_2: Letter-med, ShortestPath.
  951. """
  952. # set parameters.
  953. ds_name = 'Letter-med'
  954. mpg_options = {'fit_method': 'k-graphs',
  955. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  956. 'ds_name': ds_name,
  957. 'parallel': True, # False
  958. 'time_limit_in_sec': 0,
  959. 'max_itrs': 100,
  960. 'max_itrs_without_update': 3,
  961. 'epsilon_residual': 0.01,
  962. 'epsilon_ec': 0.1,
  963. 'verbose': 2}
  964. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  965. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  966. kernel_options = {'name': 'ShortestPath',
  967. 'edge_weight': None,
  968. 'node_kernels': sub_kernels,
  969. 'parallel': 'imap_unordered',
  970. # 'parallel': None,
  971. 'n_jobs': multiprocessing.cpu_count(),
  972. 'normalize': True,
  973. 'verbose': 2}
  974. ged_options = {'method': 'IPFP',
  975. 'initialization_method': 'RANDOM', # 'NODE'
  976. 'initial_solutions': 10, # 1
  977. 'edit_cost': 'LETTER2',
  978. 'attr_distance': 'euclidean',
  979. 'ratio_runs_from_initial_solutions': 1,
  980. 'threads': multiprocessing.cpu_count(),
  981. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  982. mge_options = {'init_type': 'MEDOID',
  983. 'random_inits': 10,
  984. 'time_limit': 600,
  985. 'verbose': 2,
  986. 'refine': False}
  987. save_results = True
  988. dir_save='../results/xp_median_preimage/'
  989. irrelevant_labels = None #
  990. edge_required = True #
  991. # print settings.
  992. print('parameters:')
  993. print('dataset name:', ds_name)
  994. print('mpg_options:', mpg_options)
  995. print('kernel_options:', kernel_options)
  996. print('ged_options:', ged_options)
  997. print('mge_options:', mge_options)
  998. print('save_results:', save_results)
  999. print('irrelevant_labels:', irrelevant_labels)
  1000. print()
  1001. # generate preimages.
  1002. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  1003. print('\n-------------------------------------')
  1004. print('fit method:', fit_method, '\n')
  1005. mpg_options['fit_method'] = fit_method
  1006. 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)
  1007. def xp_median_preimage_11_1():
  1008. """xp 11_1: Letter-low, StructuralSP.
  1009. """
  1010. # set parameters.
  1011. ds_name = 'Letter-low'
  1012. mpg_options = {'fit_method': 'k-graphs',
  1013. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  1014. 'ds_name': ds_name,
  1015. 'parallel': True, # False
  1016. 'time_limit_in_sec': 0,
  1017. 'max_itrs': 100,
  1018. 'max_itrs_without_update': 3,
  1019. 'epsilon_residual': 0.01,
  1020. 'epsilon_ec': 0.1,
  1021. 'verbose': 2}
  1022. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1023. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1024. kernel_options = {'name': 'StructuralSP',
  1025. 'edge_weight': None,
  1026. 'node_kernels': sub_kernels,
  1027. 'edge_kernels': sub_kernels,
  1028. 'compute_method': 'naive',
  1029. 'parallel': 'imap_unordered',
  1030. # 'parallel': None,
  1031. 'n_jobs': multiprocessing.cpu_count(),
  1032. 'normalize': True,
  1033. 'verbose': 2}
  1034. ged_options = {'method': 'IPFP',
  1035. 'initialization_method': 'RANDOM', # 'NODE'
  1036. 'initial_solutions': 10, # 1
  1037. 'edit_cost': 'LETTER2',
  1038. 'attr_distance': 'euclidean',
  1039. 'ratio_runs_from_initial_solutions': 1,
  1040. 'threads': multiprocessing.cpu_count(),
  1041. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1042. mge_options = {'init_type': 'MEDOID',
  1043. 'random_inits': 10,
  1044. 'time_limit': 600,
  1045. 'verbose': 2,
  1046. 'refine': False}
  1047. save_results = True
  1048. # print settings.
  1049. print('parameters:')
  1050. print('dataset name:', ds_name)
  1051. print('mpg_options:', mpg_options)
  1052. print('kernel_options:', kernel_options)
  1053. print('ged_options:', ged_options)
  1054. print('mge_options:', mge_options)
  1055. print('save_results:', save_results)
  1056. # generate preimages.
  1057. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  1058. print('\n-------------------------------------')
  1059. print('fit method:', fit_method, '\n')
  1060. mpg_options['fit_method'] = fit_method
  1061. 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/')
  1062. def xp_median_preimage_11_2():
  1063. """xp 11_2: Letter-low, ShortestPath.
  1064. """
  1065. # set parameters.
  1066. ds_name = 'Letter-low'
  1067. mpg_options = {'fit_method': 'k-graphs',
  1068. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  1069. 'ds_name': ds_name,
  1070. 'parallel': True, # False
  1071. 'time_limit_in_sec': 0,
  1072. 'max_itrs': 100,
  1073. 'max_itrs_without_update': 3,
  1074. 'epsilon_residual': 0.01,
  1075. 'epsilon_ec': 0.1,
  1076. 'verbose': 2}
  1077. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1078. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1079. kernel_options = {'name': 'ShortestPath',
  1080. 'edge_weight': None,
  1081. 'node_kernels': sub_kernels,
  1082. 'parallel': 'imap_unordered',
  1083. # 'parallel': None,
  1084. 'n_jobs': multiprocessing.cpu_count(),
  1085. 'normalize': True,
  1086. 'verbose': 2}
  1087. ged_options = {'method': 'IPFP',
  1088. 'initialization_method': 'RANDOM', # 'NODE'
  1089. 'initial_solutions': 10, # 1
  1090. 'edit_cost': 'LETTER2',
  1091. 'attr_distance': 'euclidean',
  1092. 'ratio_runs_from_initial_solutions': 1,
  1093. 'threads': multiprocessing.cpu_count(),
  1094. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1095. mge_options = {'init_type': 'MEDOID',
  1096. 'random_inits': 10,
  1097. 'time_limit': 600,
  1098. 'verbose': 2,
  1099. 'refine': False}
  1100. save_results = True
  1101. dir_save='../results/xp_median_preimage/'
  1102. irrelevant_labels = None #
  1103. edge_required = True #
  1104. # print settings.
  1105. print('parameters:')
  1106. print('dataset name:', ds_name)
  1107. print('mpg_options:', mpg_options)
  1108. print('kernel_options:', kernel_options)
  1109. print('ged_options:', ged_options)
  1110. print('mge_options:', mge_options)
  1111. print('save_results:', save_results)
  1112. print('irrelevant_labels:', irrelevant_labels)
  1113. print()
  1114. # generate preimages.
  1115. for fit_method in ['k-graphs', 'expert'] + ['random'] * 10:
  1116. print('\n-------------------------------------')
  1117. print('fit method:', fit_method, '\n')
  1118. mpg_options['fit_method'] = fit_method
  1119. 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)
  1120. if __name__ == "__main__":
  1121. #### xp 1_1: Letter-high, StructuralSP.
  1122. # xp_median_preimage_1_1()
  1123. #### xp 1_2: Letter-high, ShortestPath.
  1124. # xp_median_preimage_1_2()
  1125. #### xp 10_1: Letter-med, StructuralSP.
  1126. # xp_median_preimage_10_1()
  1127. #### xp 10_2: Letter-med, ShortestPath.
  1128. # xp_median_preimage_10_2()
  1129. #### xp 11_1: Letter-low, StructuralSP.
  1130. # xp_median_preimage_11_1()
  1131. #### xp 11_2: Letter-low, ShortestPath.
  1132. # xp_median_preimage_11_2()
  1133. #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  1134. # xp_median_preimage_2_1()
  1135. #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  1136. # xp_median_preimage_3_1()
  1137. #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  1138. # xp_median_preimage_3_2()
  1139. #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  1140. # xp_median_preimage_4_1()
  1141. #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  1142. # xp_median_preimage_5_1()
  1143. #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  1144. # xp_median_preimage_6_1()
  1145. #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  1146. # xp_median_preimage_6_2()
  1147. #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  1148. # xp_median_preimage_7_1()
  1149. #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  1150. xp_median_preimage_7_2()
  1151. #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  1152. # xp_median_preimage_8_1()
  1153. #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  1154. # xp_median_preimage_8_2()
  1155. #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  1156. # xp_median_preimage_9_1()
  1157. #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  1158. # xp_median_preimage_9_2()

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