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

5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641
  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/' + ds_name + '.' + kernel_options['name'] + '/'
  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'] * 5:
  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': 9, #
  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/' + ds_name + '.' + kernel_options['name'] + '/'
  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'] * 5:
  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_9_3():
  130. """xp 9_3: MAO, Treelet, using CONSTANT.
  131. """
  132. from gklearn.utils.kernels import polynomialkernel
  133. # set parameters.
  134. ds_name = 'MAO' #
  135. mpg_options = {'fit_method': 'k-graphs',
  136. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  137. 'ds_name': ds_name,
  138. 'parallel': True, # False
  139. 'time_limit_in_sec': 0,
  140. 'max_itrs': 100, #
  141. 'max_itrs_without_update': 3,
  142. 'epsilon_residual': 0.01,
  143. 'epsilon_ec': 0.1,
  144. 'verbose': 2}
  145. pkernel = functools.partial(polynomialkernel, d=4, c=1e+7)
  146. kernel_options = {'name': 'Treelet', #
  147. 'sub_kernel': pkernel,
  148. 'parallel': 'imap_unordered',
  149. # 'parallel': None,
  150. 'n_jobs': multiprocessing.cpu_count(),
  151. 'normalize': True,
  152. 'verbose': 2}
  153. ged_options = {'method': 'IPFP',
  154. 'initialization_method': 'RANDOM', # 'NODE'
  155. 'initial_solutions': 10, # 1
  156. 'edit_cost': 'CONSTANT', #
  157. 'attr_distance': 'euclidean',
  158. 'ratio_runs_from_initial_solutions': 1,
  159. 'threads': multiprocessing.cpu_count(),
  160. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  161. mge_options = {'init_type': 'MEDOID',
  162. 'random_inits': 10,
  163. 'time_limit': 600,
  164. 'verbose': 2,
  165. 'refine': False}
  166. save_results = True
  167. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  168. irrelevant_labels = None #
  169. edge_required = False #
  170. # print settings.
  171. print('parameters:')
  172. print('dataset name:', ds_name)
  173. print('mpg_options:', mpg_options)
  174. print('kernel_options:', kernel_options)
  175. print('ged_options:', ged_options)
  176. print('mge_options:', mge_options)
  177. print('save_results:', save_results)
  178. print('irrelevant_labels:', irrelevant_labels)
  179. print()
  180. # generate preimages.
  181. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  182. print('\n-------------------------------------')
  183. print('fit method:', fit_method, '\n')
  184. mpg_options['fit_method'] = fit_method
  185. 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)
  186. def xp_median_preimage_9_4():
  187. """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT.
  188. """
  189. # set parameters.
  190. ds_name = 'MAO' #
  191. mpg_options = {'fit_method': 'k-graphs',
  192. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  193. 'ds_name': ds_name,
  194. 'parallel': True, # False
  195. 'time_limit_in_sec': 0,
  196. 'max_itrs': 100, #
  197. 'max_itrs_without_update': 3,
  198. 'epsilon_residual': 0.01,
  199. 'epsilon_ec': 0.1,
  200. 'verbose': 2}
  201. kernel_options = {'name': 'WeisfeilerLehman',
  202. 'height': 6,
  203. 'base_kernel': 'subtree',
  204. 'parallel': 'imap_unordered',
  205. # 'parallel': None,
  206. 'n_jobs': multiprocessing.cpu_count(),
  207. 'normalize': True,
  208. 'verbose': 2}
  209. ged_options = {'method': 'IPFP',
  210. 'initialization_method': 'RANDOM', # 'NODE'
  211. 'initial_solutions': 10, # 1
  212. 'edit_cost': 'CONSTANT', #
  213. 'attr_distance': 'euclidean',
  214. 'ratio_runs_from_initial_solutions': 1,
  215. 'threads': multiprocessing.cpu_count(),
  216. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  217. mge_options = {'init_type': 'MEDOID',
  218. 'random_inits': 10,
  219. 'time_limit': 600,
  220. 'verbose': 2,
  221. 'refine': False}
  222. save_results = True
  223. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  224. irrelevant_labels = None #
  225. edge_required = False #
  226. # print settings.
  227. print('parameters:')
  228. print('dataset name:', ds_name)
  229. print('mpg_options:', mpg_options)
  230. print('kernel_options:', kernel_options)
  231. print('ged_options:', ged_options)
  232. print('mge_options:', mge_options)
  233. print('save_results:', save_results)
  234. print('irrelevant_labels:', irrelevant_labels)
  235. print()
  236. # generate preimages.
  237. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  238. print('\n-------------------------------------')
  239. print('fit method:', fit_method, '\n')
  240. mpg_options['fit_method'] = fit_method
  241. 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)
  242. def xp_median_preimage_8_1():
  243. """xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  244. """
  245. # set parameters.
  246. ds_name = 'Monoterpenoides' #
  247. mpg_options = {'fit_method': 'k-graphs',
  248. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  249. 'ds_name': ds_name,
  250. 'parallel': True, # False
  251. 'time_limit_in_sec': 0,
  252. 'max_itrs': 100, #
  253. 'max_itrs_without_update': 3,
  254. 'epsilon_residual': 0.01,
  255. 'epsilon_ec': 0.1,
  256. 'verbose': 2}
  257. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  258. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  259. kernel_options = {'name': 'StructuralSP',
  260. 'edge_weight': None,
  261. 'node_kernels': sub_kernels,
  262. 'edge_kernels': sub_kernels,
  263. 'compute_method': 'naive',
  264. 'parallel': 'imap_unordered',
  265. # 'parallel': None,
  266. 'n_jobs': multiprocessing.cpu_count(),
  267. 'normalize': True,
  268. 'verbose': 2}
  269. ged_options = {'method': 'IPFP',
  270. 'initialization_method': 'RANDOM', # 'NODE'
  271. 'initial_solutions': 10, # 1
  272. 'edit_cost': 'CONSTANT', #
  273. 'attr_distance': 'euclidean',
  274. 'ratio_runs_from_initial_solutions': 1,
  275. 'threads': multiprocessing.cpu_count(),
  276. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  277. mge_options = {'init_type': 'MEDOID',
  278. 'random_inits': 10,
  279. 'time_limit': 600,
  280. 'verbose': 2,
  281. 'refine': False}
  282. save_results = True
  283. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  284. irrelevant_labels = None #
  285. edge_required = False #
  286. # print settings.
  287. print('parameters:')
  288. print('dataset name:', ds_name)
  289. print('mpg_options:', mpg_options)
  290. print('kernel_options:', kernel_options)
  291. print('ged_options:', ged_options)
  292. print('mge_options:', mge_options)
  293. print('save_results:', save_results)
  294. print('irrelevant_labels:', irrelevant_labels)
  295. print()
  296. # generate preimages.
  297. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  298. print('\n-------------------------------------')
  299. print('fit method:', fit_method, '\n')
  300. mpg_options['fit_method'] = fit_method
  301. 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)
  302. def xp_median_preimage_8_2():
  303. """xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  304. """
  305. # set parameters.
  306. ds_name = 'Monoterpenoides' #
  307. mpg_options = {'fit_method': 'k-graphs',
  308. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  309. 'ds_name': ds_name,
  310. 'parallel': True, # False
  311. 'time_limit_in_sec': 0,
  312. 'max_itrs': 100, #
  313. 'max_itrs_without_update': 3,
  314. 'epsilon_residual': 0.01,
  315. 'epsilon_ec': 0.1,
  316. 'verbose': 2}
  317. kernel_options = {'name': 'PathUpToH',
  318. 'depth': 7, #
  319. 'k_func': 'MinMax', #
  320. 'compute_method': 'trie',
  321. 'parallel': 'imap_unordered',
  322. # 'parallel': None,
  323. 'n_jobs': multiprocessing.cpu_count(),
  324. 'normalize': True,
  325. 'verbose': 2}
  326. ged_options = {'method': 'IPFP',
  327. 'initialization_method': 'RANDOM', # 'NODE'
  328. 'initial_solutions': 10, # 1
  329. 'edit_cost': 'CONSTANT', #
  330. 'attr_distance': 'euclidean',
  331. 'ratio_runs_from_initial_solutions': 1,
  332. 'threads': multiprocessing.cpu_count(),
  333. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  334. mge_options = {'init_type': 'MEDOID',
  335. 'random_inits': 10,
  336. 'time_limit': 600,
  337. 'verbose': 2,
  338. 'refine': False}
  339. save_results = True
  340. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  341. irrelevant_labels = None #
  342. edge_required = False #
  343. # print settings.
  344. print('parameters:')
  345. print('dataset name:', ds_name)
  346. print('mpg_options:', mpg_options)
  347. print('kernel_options:', kernel_options)
  348. print('ged_options:', ged_options)
  349. print('mge_options:', mge_options)
  350. print('save_results:', save_results)
  351. print('irrelevant_labels:', irrelevant_labels)
  352. print()
  353. # generate preimages.
  354. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  355. print('\n-------------------------------------')
  356. print('fit method:', fit_method, '\n')
  357. mpg_options['fit_method'] = fit_method
  358. 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)
  359. def xp_median_preimage_8_3():
  360. """xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  361. """
  362. from gklearn.utils.kernels import polynomialkernel
  363. # set parameters.
  364. ds_name = 'Monoterpenoides' #
  365. mpg_options = {'fit_method': 'k-graphs',
  366. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  367. 'ds_name': ds_name,
  368. 'parallel': True, # False
  369. 'time_limit_in_sec': 0,
  370. 'max_itrs': 100, #
  371. 'max_itrs_without_update': 3,
  372. 'epsilon_residual': 0.01,
  373. 'epsilon_ec': 0.1,
  374. 'verbose': 2}
  375. pkernel = functools.partial(polynomialkernel, d=2, c=1e+5)
  376. kernel_options = {'name': 'Treelet',
  377. 'sub_kernel': pkernel,
  378. 'parallel': 'imap_unordered',
  379. # 'parallel': None,
  380. 'n_jobs': multiprocessing.cpu_count(),
  381. 'normalize': True,
  382. 'verbose': 2}
  383. ged_options = {'method': 'IPFP',
  384. 'initialization_method': 'RANDOM', # 'NODE'
  385. 'initial_solutions': 10, # 1
  386. 'edit_cost': 'CONSTANT', #
  387. 'attr_distance': 'euclidean',
  388. 'ratio_runs_from_initial_solutions': 1,
  389. 'threads': multiprocessing.cpu_count(),
  390. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  391. mge_options = {'init_type': 'MEDOID',
  392. 'random_inits': 10,
  393. 'time_limit': 600,
  394. 'verbose': 2,
  395. 'refine': False}
  396. save_results = True
  397. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  398. irrelevant_labels = None #
  399. edge_required = False #
  400. # print settings.
  401. print('parameters:')
  402. print('dataset name:', ds_name)
  403. print('mpg_options:', mpg_options)
  404. print('kernel_options:', kernel_options)
  405. print('ged_options:', ged_options)
  406. print('mge_options:', mge_options)
  407. print('save_results:', save_results)
  408. print('irrelevant_labels:', irrelevant_labels)
  409. print()
  410. # generate preimages.
  411. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  412. print('\n-------------------------------------')
  413. print('fit method:', fit_method, '\n')
  414. mpg_options['fit_method'] = fit_method
  415. 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)
  416. def xp_median_preimage_8_4():
  417. """xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  418. """
  419. # set parameters.
  420. ds_name = 'Monoterpenoides' #
  421. mpg_options = {'fit_method': 'k-graphs',
  422. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  423. 'ds_name': ds_name,
  424. 'parallel': True, # False
  425. 'time_limit_in_sec': 0,
  426. 'max_itrs': 100, #
  427. 'max_itrs_without_update': 3,
  428. 'epsilon_residual': 0.01,
  429. 'epsilon_ec': 0.1,
  430. 'verbose': 2}
  431. kernel_options = {'name': 'WeisfeilerLehman',
  432. 'height': 4,
  433. 'base_kernel': 'subtree',
  434. 'parallel': 'imap_unordered',
  435. # 'parallel': None,
  436. 'n_jobs': multiprocessing.cpu_count(),
  437. 'normalize': True,
  438. 'verbose': 2}
  439. ged_options = {'method': 'IPFP',
  440. 'initialization_method': 'RANDOM', # 'NODE'
  441. 'initial_solutions': 10, # 1
  442. 'edit_cost': 'CONSTANT', #
  443. 'attr_distance': 'euclidean',
  444. 'ratio_runs_from_initial_solutions': 1,
  445. 'threads': multiprocessing.cpu_count(),
  446. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  447. mge_options = {'init_type': 'MEDOID',
  448. 'random_inits': 10,
  449. 'time_limit': 600,
  450. 'verbose': 2,
  451. 'refine': False}
  452. save_results = True
  453. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  454. irrelevant_labels = None #
  455. edge_required = False #
  456. # print settings.
  457. print('parameters:')
  458. print('dataset name:', ds_name)
  459. print('mpg_options:', mpg_options)
  460. print('kernel_options:', kernel_options)
  461. print('ged_options:', ged_options)
  462. print('mge_options:', mge_options)
  463. print('save_results:', save_results)
  464. print('irrelevant_labels:', irrelevant_labels)
  465. print()
  466. # generate preimages.
  467. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  468. print('\n-------------------------------------')
  469. print('fit method:', fit_method, '\n')
  470. mpg_options['fit_method'] = fit_method
  471. 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)
  472. def xp_median_preimage_7_1():
  473. """xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  474. """
  475. # set parameters.
  476. ds_name = 'MUTAG' #
  477. mpg_options = {'fit_method': 'k-graphs',
  478. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  479. 'ds_name': ds_name,
  480. 'parallel': True, # False
  481. 'time_limit_in_sec': 0,
  482. 'max_itrs': 100, #
  483. 'max_itrs_without_update': 3,
  484. 'epsilon_residual': 0.01,
  485. 'epsilon_ec': 0.1,
  486. 'verbose': 2}
  487. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  488. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  489. kernel_options = {'name': 'StructuralSP',
  490. 'edge_weight': None,
  491. 'node_kernels': sub_kernels,
  492. 'edge_kernels': sub_kernels,
  493. 'compute_method': 'naive',
  494. 'parallel': 'imap_unordered',
  495. # 'parallel': None,
  496. 'n_jobs': multiprocessing.cpu_count(),
  497. 'normalize': True,
  498. 'verbose': 2}
  499. ged_options = {'method': 'IPFP',
  500. 'initialization_method': 'RANDOM', # 'NODE'
  501. 'initial_solutions': 10, # 1
  502. 'edit_cost': 'CONSTANT', #
  503. 'attr_distance': 'euclidean',
  504. 'ratio_runs_from_initial_solutions': 1,
  505. 'threads': multiprocessing.cpu_count(),
  506. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  507. mge_options = {'init_type': 'MEDOID',
  508. 'random_inits': 10,
  509. 'time_limit': 600,
  510. 'verbose': 2,
  511. 'refine': False}
  512. save_results = True
  513. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  514. irrelevant_labels = None #
  515. edge_required = False #
  516. # print settings.
  517. print('parameters:')
  518. print('dataset name:', ds_name)
  519. print('mpg_options:', mpg_options)
  520. print('kernel_options:', kernel_options)
  521. print('ged_options:', ged_options)
  522. print('mge_options:', mge_options)
  523. print('save_results:', save_results)
  524. print('irrelevant_labels:', irrelevant_labels)
  525. print()
  526. # generate preimages.
  527. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  528. print('\n-------------------------------------')
  529. print('fit method:', fit_method, '\n')
  530. mpg_options['fit_method'] = fit_method
  531. 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)
  532. def xp_median_preimage_7_2():
  533. """xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  534. """
  535. # set parameters.
  536. ds_name = 'MUTAG' #
  537. mpg_options = {'fit_method': 'k-graphs',
  538. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  539. 'ds_name': ds_name,
  540. 'parallel': True, # False
  541. 'time_limit_in_sec': 0,
  542. 'max_itrs': 100, #
  543. 'max_itrs_without_update': 3,
  544. 'epsilon_residual': 0.01,
  545. 'epsilon_ec': 0.1,
  546. 'verbose': 2}
  547. kernel_options = {'name': 'PathUpToH',
  548. 'depth': 2, #
  549. 'k_func': 'MinMax', #
  550. 'compute_method': 'trie',
  551. 'parallel': 'imap_unordered',
  552. # 'parallel': None,
  553. 'n_jobs': multiprocessing.cpu_count(),
  554. 'normalize': True,
  555. 'verbose': 2}
  556. ged_options = {'method': 'IPFP',
  557. 'initialization_method': 'RANDOM', # 'NODE'
  558. 'initial_solutions': 10, # 1
  559. 'edit_cost': 'CONSTANT', #
  560. 'attr_distance': 'euclidean',
  561. 'ratio_runs_from_initial_solutions': 1,
  562. 'threads': multiprocessing.cpu_count(),
  563. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  564. mge_options = {'init_type': 'MEDOID',
  565. 'random_inits': 10,
  566. 'time_limit': 600,
  567. 'verbose': 2,
  568. 'refine': False}
  569. save_results = True
  570. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  571. irrelevant_labels = None #
  572. edge_required = False #
  573. # print settings.
  574. print('parameters:')
  575. print('dataset name:', ds_name)
  576. print('mpg_options:', mpg_options)
  577. print('kernel_options:', kernel_options)
  578. print('ged_options:', ged_options)
  579. print('mge_options:', mge_options)
  580. print('save_results:', save_results)
  581. print('irrelevant_labels:', irrelevant_labels)
  582. print()
  583. # generate preimages.
  584. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  585. print('\n-------------------------------------')
  586. print('fit method:', fit_method, '\n')
  587. mpg_options['fit_method'] = fit_method
  588. 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)
  589. def xp_median_preimage_7_3():
  590. """xp 7_3: MUTAG, Treelet, using CONSTANT.
  591. """
  592. from gklearn.utils.kernels import polynomialkernel
  593. # set parameters.
  594. ds_name = 'MUTAG' #
  595. mpg_options = {'fit_method': 'k-graphs',
  596. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  597. 'ds_name': ds_name,
  598. 'parallel': True, # False
  599. 'time_limit_in_sec': 0,
  600. 'max_itrs': 100, #
  601. 'max_itrs_without_update': 3,
  602. 'epsilon_residual': 0.01,
  603. 'epsilon_ec': 0.1,
  604. 'verbose': 2}
  605. pkernel = functools.partial(polynomialkernel, d=3, c=1e+8)
  606. kernel_options = {'name': 'Treelet',
  607. 'sub_kernel': pkernel,
  608. 'parallel': 'imap_unordered',
  609. # 'parallel': None,
  610. 'n_jobs': multiprocessing.cpu_count(),
  611. 'normalize': True,
  612. 'verbose': 2}
  613. ged_options = {'method': 'IPFP',
  614. 'initialization_method': 'RANDOM', # 'NODE'
  615. 'initial_solutions': 10, # 1
  616. 'edit_cost': 'CONSTANT', #
  617. 'attr_distance': 'euclidean',
  618. 'ratio_runs_from_initial_solutions': 1,
  619. 'threads': multiprocessing.cpu_count(),
  620. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  621. mge_options = {'init_type': 'MEDOID',
  622. 'random_inits': 10,
  623. 'time_limit': 600,
  624. 'verbose': 2,
  625. 'refine': False}
  626. save_results = True
  627. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  628. irrelevant_labels = None #
  629. edge_required = False #
  630. # print settings.
  631. print('parameters:')
  632. print('dataset name:', ds_name)
  633. print('mpg_options:', mpg_options)
  634. print('kernel_options:', kernel_options)
  635. print('ged_options:', ged_options)
  636. print('mge_options:', mge_options)
  637. print('save_results:', save_results)
  638. print('irrelevant_labels:', irrelevant_labels)
  639. print()
  640. # generate preimages.
  641. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  642. print('\n-------------------------------------')
  643. print('fit method:', fit_method, '\n')
  644. mpg_options['fit_method'] = fit_method
  645. 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)
  646. def xp_median_preimage_7_4():
  647. """xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  648. """
  649. # set parameters.
  650. ds_name = 'MUTAG' #
  651. mpg_options = {'fit_method': 'k-graphs',
  652. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  653. 'ds_name': ds_name,
  654. 'parallel': True, # False
  655. 'time_limit_in_sec': 0,
  656. 'max_itrs': 100, #
  657. 'max_itrs_without_update': 3,
  658. 'epsilon_residual': 0.01,
  659. 'epsilon_ec': 0.1,
  660. 'verbose': 2}
  661. kernel_options = {'name': 'WeisfeilerLehman',
  662. 'height': 1,
  663. 'base_kernel': 'subtree',
  664. 'parallel': 'imap_unordered',
  665. # 'parallel': None,
  666. 'n_jobs': multiprocessing.cpu_count(),
  667. 'normalize': True,
  668. 'verbose': 2}
  669. ged_options = {'method': 'IPFP',
  670. 'initialization_method': 'RANDOM', # 'NODE'
  671. 'initial_solutions': 10, # 1
  672. 'edit_cost': 'CONSTANT', #
  673. 'attr_distance': 'euclidean',
  674. 'ratio_runs_from_initial_solutions': 1,
  675. 'threads': multiprocessing.cpu_count(),
  676. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  677. mge_options = {'init_type': 'MEDOID',
  678. 'random_inits': 10,
  679. 'time_limit': 600,
  680. 'verbose': 2,
  681. 'refine': False}
  682. save_results = True
  683. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  684. irrelevant_labels = None #
  685. edge_required = False #
  686. # print settings.
  687. print('parameters:')
  688. print('dataset name:', ds_name)
  689. print('mpg_options:', mpg_options)
  690. print('kernel_options:', kernel_options)
  691. print('ged_options:', ged_options)
  692. print('mge_options:', mge_options)
  693. print('save_results:', save_results)
  694. print('irrelevant_labels:', irrelevant_labels)
  695. print()
  696. # generate preimages.
  697. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  698. print('\n-------------------------------------')
  699. print('fit method:', fit_method, '\n')
  700. mpg_options['fit_method'] = fit_method
  701. 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)
  702. def xp_median_preimage_6_1():
  703. """xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  704. """
  705. # set parameters.
  706. ds_name = 'COIL-RAG' #
  707. mpg_options = {'fit_method': 'k-graphs',
  708. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  709. 'ds_name': ds_name,
  710. 'parallel': True, # False
  711. 'time_limit_in_sec': 0,
  712. 'max_itrs': 100,
  713. 'max_itrs_without_update': 3,
  714. 'epsilon_residual': 0.01,
  715. 'epsilon_ec': 0.1,
  716. 'verbose': 2}
  717. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  718. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  719. kernel_options = {'name': 'StructuralSP',
  720. 'edge_weight': None,
  721. 'node_kernels': sub_kernels,
  722. 'edge_kernels': sub_kernels,
  723. 'compute_method': 'naive',
  724. 'parallel': 'imap_unordered',
  725. # 'parallel': None,
  726. 'n_jobs': multiprocessing.cpu_count(),
  727. 'normalize': True,
  728. 'verbose': 2}
  729. ged_options = {'method': 'IPFP',
  730. 'initialization_method': 'RANDOM', # 'NODE'
  731. 'initial_solutions': 10, # 1
  732. 'edit_cost': 'NON_SYMBOLIC', #
  733. 'attr_distance': 'euclidean',
  734. 'ratio_runs_from_initial_solutions': 1,
  735. 'threads': multiprocessing.cpu_count(),
  736. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  737. mge_options = {'init_type': 'MEDOID',
  738. 'random_inits': 10,
  739. 'time_limit': 600,
  740. 'verbose': 2,
  741. 'refine': False}
  742. save_results = True
  743. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  744. irrelevant_labels = None #
  745. edge_required = False #
  746. # print settings.
  747. print('parameters:')
  748. print('dataset name:', ds_name)
  749. print('mpg_options:', mpg_options)
  750. print('kernel_options:', kernel_options)
  751. print('ged_options:', ged_options)
  752. print('mge_options:', mge_options)
  753. print('save_results:', save_results)
  754. print('irrelevant_labels:', irrelevant_labels)
  755. print()
  756. # generate preimages.
  757. for fit_method in ['k-graphs'] + ['random'] * 5:
  758. print('\n-------------------------------------')
  759. print('fit method:', fit_method, '\n')
  760. mpg_options['fit_method'] = fit_method
  761. 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)
  762. def xp_median_preimage_6_2():
  763. """xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  764. """
  765. # set parameters.
  766. ds_name = 'COIL-RAG' #
  767. mpg_options = {'fit_method': 'k-graphs',
  768. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  769. 'ds_name': ds_name,
  770. 'parallel': True, # False
  771. 'time_limit_in_sec': 0,
  772. 'max_itrs': 100,
  773. 'max_itrs_without_update': 3,
  774. 'epsilon_residual': 0.01,
  775. 'epsilon_ec': 0.1,
  776. 'verbose': 2}
  777. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  778. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  779. kernel_options = {'name': 'ShortestPath',
  780. 'edge_weight': None,
  781. 'node_kernels': sub_kernels,
  782. 'parallel': 'imap_unordered',
  783. # 'parallel': None,
  784. 'n_jobs': multiprocessing.cpu_count(),
  785. 'normalize': True,
  786. 'verbose': 2}
  787. ged_options = {'method': 'IPFP',
  788. 'initialization_method': 'RANDOM', # 'NODE'
  789. 'initial_solutions': 10, # 1
  790. 'edit_cost': 'NON_SYMBOLIC', #
  791. 'attr_distance': 'euclidean',
  792. 'ratio_runs_from_initial_solutions': 1,
  793. 'threads': multiprocessing.cpu_count(),
  794. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  795. mge_options = {'init_type': 'MEDOID',
  796. 'random_inits': 10,
  797. 'time_limit': 600,
  798. 'verbose': 2,
  799. 'refine': False}
  800. save_results = True
  801. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  802. irrelevant_labels = None #
  803. edge_required = True #
  804. # print settings.
  805. print('parameters:')
  806. print('dataset name:', ds_name)
  807. print('mpg_options:', mpg_options)
  808. print('kernel_options:', kernel_options)
  809. print('ged_options:', ged_options)
  810. print('mge_options:', mge_options)
  811. print('save_results:', save_results)
  812. print('irrelevant_labels:', irrelevant_labels)
  813. print()
  814. # generate preimages.
  815. for fit_method in ['k-graphs'] + ['random'] * 5:
  816. print('\n-------------------------------------')
  817. print('fit method:', fit_method, '\n')
  818. mpg_options['fit_method'] = fit_method
  819. 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)
  820. def xp_median_preimage_5_1():
  821. """xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  822. """
  823. # set parameters.
  824. ds_name = 'FRANKENSTEIN' #
  825. mpg_options = {'fit_method': 'k-graphs',
  826. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  827. 'ds_name': ds_name,
  828. 'parallel': True, # False
  829. 'time_limit_in_sec': 0,
  830. 'max_itrs': 100,
  831. 'max_itrs_without_update': 3,
  832. 'epsilon_residual': 0.01,
  833. 'epsilon_ec': 0.1,
  834. 'verbose': 2}
  835. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  836. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  837. kernel_options = {'name': 'StructuralSP',
  838. 'edge_weight': None,
  839. 'node_kernels': sub_kernels,
  840. 'edge_kernels': sub_kernels,
  841. 'compute_method': 'naive',
  842. 'parallel': 'imap_unordered',
  843. # 'parallel': None,
  844. 'n_jobs': multiprocessing.cpu_count(),
  845. 'normalize': True,
  846. 'verbose': 2}
  847. ged_options = {'method': 'IPFP',
  848. 'initialization_method': 'RANDOM', # 'NODE'
  849. 'initial_solutions': 10, # 1
  850. 'edit_cost': 'NON_SYMBOLIC',
  851. 'attr_distance': 'euclidean',
  852. 'ratio_runs_from_initial_solutions': 1,
  853. 'threads': multiprocessing.cpu_count(),
  854. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  855. mge_options = {'init_type': 'MEDOID',
  856. 'random_inits': 10,
  857. 'time_limit': 600,
  858. 'verbose': 2,
  859. 'refine': False}
  860. save_results = True
  861. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  862. irrelevant_labels = None #
  863. edge_required = False #
  864. # print settings.
  865. print('parameters:')
  866. print('dataset name:', ds_name)
  867. print('mpg_options:', mpg_options)
  868. print('kernel_options:', kernel_options)
  869. print('ged_options:', ged_options)
  870. print('mge_options:', mge_options)
  871. print('save_results:', save_results)
  872. print('irrelevant_labels:', irrelevant_labels)
  873. print()
  874. # generate preimages.
  875. for fit_method in ['k-graphs'] + ['random'] * 5:
  876. print('\n-------------------------------------')
  877. print('fit method:', fit_method, '\n')
  878. mpg_options['fit_method'] = fit_method
  879. 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)
  880. def xp_median_preimage_4_1():
  881. """xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  882. """
  883. # set parameters.
  884. ds_name = 'COLORS-3' #
  885. mpg_options = {'fit_method': 'k-graphs',
  886. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  887. 'ds_name': ds_name,
  888. 'parallel': True, # False
  889. 'time_limit_in_sec': 0,
  890. 'max_itrs': 100,
  891. 'max_itrs_without_update': 3,
  892. 'epsilon_residual': 0.01,
  893. 'epsilon_ec': 0.1,
  894. 'verbose': 2}
  895. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  896. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  897. kernel_options = {'name': 'StructuralSP',
  898. 'edge_weight': None,
  899. 'node_kernels': sub_kernels,
  900. 'edge_kernels': sub_kernels,
  901. 'compute_method': 'naive',
  902. 'parallel': 'imap_unordered',
  903. # 'parallel': None,
  904. 'n_jobs': multiprocessing.cpu_count(),
  905. 'normalize': True,
  906. 'verbose': 2}
  907. ged_options = {'method': 'IPFP',
  908. 'initialization_method': 'RANDOM', # 'NODE'
  909. 'initial_solutions': 10, # 1
  910. 'edit_cost': 'NON_SYMBOLIC',
  911. 'attr_distance': 'euclidean',
  912. 'ratio_runs_from_initial_solutions': 1,
  913. 'threads': multiprocessing.cpu_count(),
  914. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  915. mge_options = {'init_type': 'MEDOID',
  916. 'random_inits': 10,
  917. 'time_limit': 600,
  918. 'verbose': 2,
  919. 'refine': False}
  920. save_results = True
  921. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  922. irrelevant_labels = None #
  923. edge_required = False #
  924. # print settings.
  925. print('parameters:')
  926. print('dataset name:', ds_name)
  927. print('mpg_options:', mpg_options)
  928. print('kernel_options:', kernel_options)
  929. print('ged_options:', ged_options)
  930. print('mge_options:', mge_options)
  931. print('save_results:', save_results)
  932. print('irrelevant_labels:', irrelevant_labels)
  933. print()
  934. # generate preimages.
  935. for fit_method in ['k-graphs'] + ['random'] * 5:
  936. print('\n-------------------------------------')
  937. print('fit method:', fit_method, '\n')
  938. mpg_options['fit_method'] = fit_method
  939. 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)
  940. def xp_median_preimage_3_2():
  941. """xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  942. """
  943. # set parameters.
  944. ds_name = 'Fingerprint' #
  945. mpg_options = {'fit_method': 'k-graphs',
  946. 'init_ecc': [0.525, 0.525, 0.001, 0.125, 0.125], #
  947. 'ds_name': ds_name,
  948. 'parallel': True, # False
  949. 'time_limit_in_sec': 0,
  950. 'max_itrs': 100,
  951. 'max_itrs_without_update': 3,
  952. 'epsilon_residual': 0.01,
  953. 'epsilon_ec': 0.1,
  954. 'verbose': 2}
  955. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  956. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  957. kernel_options = {'name': 'ShortestPath',
  958. 'edge_weight': None,
  959. 'node_kernels': sub_kernels,
  960. 'parallel': 'imap_unordered',
  961. # 'parallel': None,
  962. 'n_jobs': multiprocessing.cpu_count(),
  963. 'normalize': True,
  964. 'verbose': 2}
  965. ged_options = {'method': 'IPFP',
  966. 'initialization_method': 'RANDOM', # 'NODE'
  967. 'initial_solutions': 10, # 1
  968. 'edit_cost': 'LETTER2',
  969. 'attr_distance': 'euclidean',
  970. 'ratio_runs_from_initial_solutions': 1,
  971. 'threads': multiprocessing.cpu_count(),
  972. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  973. mge_options = {'init_type': 'MEDOID',
  974. 'random_inits': 10,
  975. 'time_limit': 600,
  976. 'verbose': 2,
  977. 'refine': False}
  978. save_results = True
  979. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  980. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  981. edge_required = True #
  982. # print settings.
  983. print('parameters:')
  984. print('dataset name:', ds_name)
  985. print('mpg_options:', mpg_options)
  986. print('kernel_options:', kernel_options)
  987. print('ged_options:', ged_options)
  988. print('mge_options:', mge_options)
  989. print('save_results:', save_results)
  990. print('irrelevant_labels:', irrelevant_labels)
  991. print()
  992. # generate preimages.
  993. for fit_method in ['k-graphs'] + ['random'] * 5:
  994. print('\n-------------------------------------')
  995. print('fit method:', fit_method, '\n')
  996. mpg_options['fit_method'] = fit_method
  997. 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)
  998. def xp_median_preimage_3_1():
  999. """xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  1000. """
  1001. # set parameters.
  1002. ds_name = 'Fingerprint' #
  1003. mpg_options = {'fit_method': 'k-graphs',
  1004. 'init_ecc': [0.525, 0.525, 0.001, 0.125, 0.125], #
  1005. 'ds_name': ds_name,
  1006. 'parallel': True, # False
  1007. 'time_limit_in_sec': 0,
  1008. 'max_itrs': 100,
  1009. 'max_itrs_without_update': 3,
  1010. 'epsilon_residual': 0.01,
  1011. 'epsilon_ec': 0.1,
  1012. 'verbose': 2}
  1013. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1014. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1015. kernel_options = {'name': 'StructuralSP',
  1016. 'edge_weight': None,
  1017. 'node_kernels': sub_kernels,
  1018. 'edge_kernels': sub_kernels,
  1019. 'compute_method': 'naive',
  1020. 'parallel': 'imap_unordered',
  1021. # 'parallel': None,
  1022. 'n_jobs': multiprocessing.cpu_count(),
  1023. 'normalize': True,
  1024. 'verbose': 2}
  1025. ged_options = {'method': 'IPFP',
  1026. 'initialization_method': 'RANDOM', # 'NODE'
  1027. 'initial_solutions': 10, # 1
  1028. 'edit_cost': 'LETTER2',
  1029. 'attr_distance': 'euclidean',
  1030. 'ratio_runs_from_initial_solutions': 1,
  1031. 'threads': multiprocessing.cpu_count(),
  1032. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1033. mge_options = {'init_type': 'MEDOID',
  1034. 'random_inits': 10,
  1035. 'time_limit': 600,
  1036. 'verbose': 2,
  1037. 'refine': False}
  1038. save_results = True
  1039. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1040. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  1041. edge_required = False #
  1042. # print settings.
  1043. print('parameters:')
  1044. print('dataset name:', ds_name)
  1045. print('mpg_options:', mpg_options)
  1046. print('kernel_options:', kernel_options)
  1047. print('ged_options:', ged_options)
  1048. print('mge_options:', mge_options)
  1049. print('save_results:', save_results)
  1050. print('irrelevant_labels:', irrelevant_labels)
  1051. print()
  1052. # generate preimages.
  1053. for fit_method in ['k-graphs'] + ['random'] * 5:
  1054. print('\n-------------------------------------')
  1055. print('fit method:', fit_method, '\n')
  1056. mpg_options['fit_method'] = fit_method
  1057. 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)
  1058. def xp_median_preimage_2_1():
  1059. """xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  1060. """
  1061. # set parameters.
  1062. ds_name = 'COIL-DEL' #
  1063. mpg_options = {'fit_method': 'k-graphs',
  1064. 'init_ecc': [3, 3, 1, 3, 3],
  1065. 'ds_name': ds_name,
  1066. 'parallel': True, # False
  1067. 'time_limit_in_sec': 0,
  1068. 'max_itrs': 100,
  1069. 'max_itrs_without_update': 3,
  1070. 'epsilon_residual': 0.01,
  1071. 'epsilon_ec': 0.1,
  1072. 'verbose': 2}
  1073. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1074. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1075. kernel_options = {'name': 'StructuralSP',
  1076. 'edge_weight': None,
  1077. 'node_kernels': sub_kernels,
  1078. 'edge_kernels': sub_kernels,
  1079. 'compute_method': 'naive',
  1080. 'parallel': 'imap_unordered',
  1081. # 'parallel': None,
  1082. 'n_jobs': multiprocessing.cpu_count(),
  1083. 'normalize': True,
  1084. 'verbose': 2}
  1085. ged_options = {'method': 'IPFP',
  1086. 'initialization_method': 'RANDOM', # 'NODE'
  1087. 'initial_solutions': 10, # 1
  1088. 'edit_cost': 'LETTER2',
  1089. 'attr_distance': 'euclidean',
  1090. 'ratio_runs_from_initial_solutions': 1,
  1091. 'threads': multiprocessing.cpu_count(),
  1092. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1093. mge_options = {'init_type': 'MEDOID',
  1094. 'random_inits': 10,
  1095. 'time_limit': 600,
  1096. 'verbose': 2,
  1097. 'refine': False}
  1098. save_results = True
  1099. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1100. irrelevant_labels = {'edge_labels': ['valence']}
  1101. # print settings.
  1102. print('parameters:')
  1103. print('dataset name:', ds_name)
  1104. print('mpg_options:', mpg_options)
  1105. print('kernel_options:', kernel_options)
  1106. print('ged_options:', ged_options)
  1107. print('mge_options:', mge_options)
  1108. print('save_results:', save_results)
  1109. print('irrelevant_labels:', irrelevant_labels)
  1110. print()
  1111. # # compute gram matrices for each class a priori.
  1112. # print('Compute gram matrices for each class a priori.')
  1113. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  1114. # generate preimages.
  1115. for fit_method in ['k-graphs'] + ['random'] * 5:
  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)
  1120. def xp_median_preimage_1_1():
  1121. """xp 1_1: Letter-high, StructuralSP.
  1122. """
  1123. # set parameters.
  1124. ds_name = 'Letter-high'
  1125. mpg_options = {'fit_method': 'k-graphs',
  1126. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  1127. 'ds_name': ds_name,
  1128. 'parallel': True, # False
  1129. 'time_limit_in_sec': 0,
  1130. 'max_itrs': 100,
  1131. 'max_itrs_without_update': 3,
  1132. 'epsilon_residual': 0.01,
  1133. 'epsilon_ec': 0.1,
  1134. 'verbose': 2}
  1135. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1136. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1137. kernel_options = {'name': 'StructuralSP',
  1138. 'edge_weight': None,
  1139. 'node_kernels': sub_kernels,
  1140. 'edge_kernels': sub_kernels,
  1141. 'compute_method': 'naive',
  1142. 'parallel': 'imap_unordered',
  1143. # 'parallel': None,
  1144. 'n_jobs': multiprocessing.cpu_count(),
  1145. 'normalize': True,
  1146. 'verbose': 2}
  1147. ged_options = {'method': 'IPFP',
  1148. 'initialization_method': 'RANDOM', # 'NODE'
  1149. 'initial_solutions': 10, # 1
  1150. 'edit_cost': 'LETTER2',
  1151. 'attr_distance': 'euclidean',
  1152. 'ratio_runs_from_initial_solutions': 1,
  1153. 'threads': multiprocessing.cpu_count(),
  1154. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1155. mge_options = {'init_type': 'MEDOID',
  1156. 'random_inits': 10,
  1157. 'time_limit': 600,
  1158. 'verbose': 2,
  1159. 'refine': False}
  1160. save_results = True
  1161. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1162. # print settings.
  1163. print('parameters:')
  1164. print('dataset name:', ds_name)
  1165. print('mpg_options:', mpg_options)
  1166. print('kernel_options:', kernel_options)
  1167. print('ged_options:', ged_options)
  1168. print('mge_options:', mge_options)
  1169. print('save_results:', save_results)
  1170. # generate preimages.
  1171. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1172. print('\n-------------------------------------')
  1173. print('fit method:', fit_method, '\n')
  1174. mpg_options['fit_method'] = fit_method
  1175. 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)
  1176. def xp_median_preimage_1_2():
  1177. """xp 1_2: Letter-high, ShortestPath.
  1178. """
  1179. # set parameters.
  1180. ds_name = 'Letter-high'
  1181. mpg_options = {'fit_method': 'k-graphs',
  1182. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  1183. 'ds_name': ds_name,
  1184. 'parallel': True, # False
  1185. 'time_limit_in_sec': 0,
  1186. 'max_itrs': 100,
  1187. 'max_itrs_without_update': 3,
  1188. 'epsilon_residual': 0.01,
  1189. 'epsilon_ec': 0.1,
  1190. 'verbose': 2}
  1191. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1192. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1193. kernel_options = {'name': 'ShortestPath',
  1194. 'edge_weight': None,
  1195. 'node_kernels': sub_kernels,
  1196. 'parallel': 'imap_unordered',
  1197. # 'parallel': None,
  1198. 'n_jobs': multiprocessing.cpu_count(),
  1199. 'normalize': True,
  1200. 'verbose': 2}
  1201. ged_options = {'method': 'IPFP',
  1202. 'initialization_method': 'RANDOM', # 'NODE'
  1203. 'initial_solutions': 10, # 1
  1204. 'edit_cost': 'LETTER2',
  1205. 'attr_distance': 'euclidean',
  1206. 'ratio_runs_from_initial_solutions': 1,
  1207. 'threads': multiprocessing.cpu_count(),
  1208. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1209. mge_options = {'init_type': 'MEDOID',
  1210. 'random_inits': 10,
  1211. 'time_limit': 600,
  1212. 'verbose': 2,
  1213. 'refine': False}
  1214. save_results = True
  1215. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1216. irrelevant_labels = None #
  1217. edge_required = True #
  1218. # print settings.
  1219. print('parameters:')
  1220. print('dataset name:', ds_name)
  1221. print('mpg_options:', mpg_options)
  1222. print('kernel_options:', kernel_options)
  1223. print('ged_options:', ged_options)
  1224. print('mge_options:', mge_options)
  1225. print('save_results:', save_results)
  1226. print('irrelevant_labels:', irrelevant_labels)
  1227. print()
  1228. # generate preimages.
  1229. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1230. print('\n-------------------------------------')
  1231. print('fit method:', fit_method, '\n')
  1232. mpg_options['fit_method'] = fit_method
  1233. 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)
  1234. def xp_median_preimage_10_1():
  1235. """xp 10_1: Letter-med, StructuralSP.
  1236. """
  1237. # set parameters.
  1238. ds_name = 'Letter-med'
  1239. mpg_options = {'fit_method': 'k-graphs',
  1240. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  1241. 'ds_name': ds_name,
  1242. 'parallel': True, # False
  1243. 'time_limit_in_sec': 0,
  1244. 'max_itrs': 100,
  1245. 'max_itrs_without_update': 3,
  1246. 'epsilon_residual': 0.01,
  1247. 'epsilon_ec': 0.1,
  1248. 'verbose': 2}
  1249. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1250. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1251. kernel_options = {'name': 'StructuralSP',
  1252. 'edge_weight': None,
  1253. 'node_kernels': sub_kernels,
  1254. 'edge_kernels': sub_kernels,
  1255. 'compute_method': 'naive',
  1256. 'parallel': 'imap_unordered',
  1257. # 'parallel': None,
  1258. 'n_jobs': multiprocessing.cpu_count(),
  1259. 'normalize': True,
  1260. 'verbose': 2}
  1261. ged_options = {'method': 'IPFP',
  1262. 'initialization_method': 'RANDOM', # 'NODE'
  1263. 'initial_solutions': 10, # 1
  1264. 'edit_cost': 'LETTER2',
  1265. 'attr_distance': 'euclidean',
  1266. 'ratio_runs_from_initial_solutions': 1,
  1267. 'threads': multiprocessing.cpu_count(),
  1268. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1269. mge_options = {'init_type': 'MEDOID',
  1270. 'random_inits': 10,
  1271. 'time_limit': 600,
  1272. 'verbose': 2,
  1273. 'refine': False}
  1274. save_results = True
  1275. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1276. # print settings.
  1277. print('parameters:')
  1278. print('dataset name:', ds_name)
  1279. print('mpg_options:', mpg_options)
  1280. print('kernel_options:', kernel_options)
  1281. print('ged_options:', ged_options)
  1282. print('mge_options:', mge_options)
  1283. print('save_results:', save_results)
  1284. # generate preimages.
  1285. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1286. print('\n-------------------------------------')
  1287. print('fit method:', fit_method, '\n')
  1288. mpg_options['fit_method'] = fit_method
  1289. 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)
  1290. def xp_median_preimage_10_2():
  1291. """xp 10_2: Letter-med, ShortestPath.
  1292. """
  1293. # set parameters.
  1294. ds_name = 'Letter-med'
  1295. mpg_options = {'fit_method': 'k-graphs',
  1296. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  1297. 'ds_name': ds_name,
  1298. 'parallel': True, # False
  1299. 'time_limit_in_sec': 0,
  1300. 'max_itrs': 100,
  1301. 'max_itrs_without_update': 3,
  1302. 'epsilon_residual': 0.01,
  1303. 'epsilon_ec': 0.1,
  1304. 'verbose': 2}
  1305. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1306. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1307. kernel_options = {'name': 'ShortestPath',
  1308. 'edge_weight': None,
  1309. 'node_kernels': sub_kernels,
  1310. 'parallel': 'imap_unordered',
  1311. # 'parallel': None,
  1312. 'n_jobs': multiprocessing.cpu_count(),
  1313. 'normalize': True,
  1314. 'verbose': 2}
  1315. ged_options = {'method': 'IPFP',
  1316. 'initialization_method': 'RANDOM', # 'NODE'
  1317. 'initial_solutions': 10, # 1
  1318. 'edit_cost': 'LETTER2',
  1319. 'attr_distance': 'euclidean',
  1320. 'ratio_runs_from_initial_solutions': 1,
  1321. 'threads': multiprocessing.cpu_count(),
  1322. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1323. mge_options = {'init_type': 'MEDOID',
  1324. 'random_inits': 10,
  1325. 'time_limit': 600,
  1326. 'verbose': 2,
  1327. 'refine': False}
  1328. save_results = True
  1329. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1330. irrelevant_labels = None #
  1331. edge_required = True #
  1332. # print settings.
  1333. print('parameters:')
  1334. print('dataset name:', ds_name)
  1335. print('mpg_options:', mpg_options)
  1336. print('kernel_options:', kernel_options)
  1337. print('ged_options:', ged_options)
  1338. print('mge_options:', mge_options)
  1339. print('save_results:', save_results)
  1340. print('irrelevant_labels:', irrelevant_labels)
  1341. print()
  1342. # generate preimages.
  1343. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1344. print('\n-------------------------------------')
  1345. print('fit method:', fit_method, '\n')
  1346. mpg_options['fit_method'] = fit_method
  1347. 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)
  1348. def xp_median_preimage_11_1():
  1349. """xp 11_1: Letter-low, StructuralSP.
  1350. """
  1351. # set parameters.
  1352. ds_name = 'Letter-low'
  1353. mpg_options = {'fit_method': 'k-graphs',
  1354. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  1355. 'ds_name': ds_name,
  1356. 'parallel': True, # False
  1357. 'time_limit_in_sec': 0,
  1358. 'max_itrs': 100,
  1359. 'max_itrs_without_update': 3,
  1360. 'epsilon_residual': 0.01,
  1361. 'epsilon_ec': 0.1,
  1362. 'verbose': 2}
  1363. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1364. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1365. kernel_options = {'name': 'StructuralSP',
  1366. 'edge_weight': None,
  1367. 'node_kernels': sub_kernels,
  1368. 'edge_kernels': sub_kernels,
  1369. 'compute_method': 'naive',
  1370. 'parallel': 'imap_unordered',
  1371. # 'parallel': None,
  1372. 'n_jobs': multiprocessing.cpu_count(),
  1373. 'normalize': True,
  1374. 'verbose': 2}
  1375. ged_options = {'method': 'IPFP',
  1376. 'initialization_method': 'RANDOM', # 'NODE'
  1377. 'initial_solutions': 10, # 1
  1378. 'edit_cost': 'LETTER2',
  1379. 'attr_distance': 'euclidean',
  1380. 'ratio_runs_from_initial_solutions': 1,
  1381. 'threads': multiprocessing.cpu_count(),
  1382. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1383. mge_options = {'init_type': 'MEDOID',
  1384. 'random_inits': 10,
  1385. 'time_limit': 600,
  1386. 'verbose': 2,
  1387. 'refine': False}
  1388. save_results = True
  1389. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1390. # print settings.
  1391. print('parameters:')
  1392. print('dataset name:', ds_name)
  1393. print('mpg_options:', mpg_options)
  1394. print('kernel_options:', kernel_options)
  1395. print('ged_options:', ged_options)
  1396. print('mge_options:', mge_options)
  1397. print('save_results:', save_results)
  1398. # generate preimages.
  1399. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1400. print('\n-------------------------------------')
  1401. print('fit method:', fit_method, '\n')
  1402. mpg_options['fit_method'] = fit_method
  1403. 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)
  1404. def xp_median_preimage_11_2():
  1405. """xp 11_2: Letter-low, ShortestPath.
  1406. """
  1407. # set parameters.
  1408. ds_name = 'Letter-low'
  1409. mpg_options = {'fit_method': 'k-graphs',
  1410. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  1411. 'ds_name': ds_name,
  1412. 'parallel': True, # False
  1413. 'time_limit_in_sec': 0,
  1414. 'max_itrs': 100,
  1415. 'max_itrs_without_update': 3,
  1416. 'epsilon_residual': 0.01,
  1417. 'epsilon_ec': 0.1,
  1418. 'verbose': 2}
  1419. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1420. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1421. kernel_options = {'name': 'ShortestPath',
  1422. 'edge_weight': None,
  1423. 'node_kernels': sub_kernels,
  1424. 'parallel': 'imap_unordered',
  1425. # 'parallel': None,
  1426. 'n_jobs': multiprocessing.cpu_count(),
  1427. 'normalize': True,
  1428. 'verbose': 2}
  1429. ged_options = {'method': 'IPFP',
  1430. 'initialization_method': 'RANDOM', # 'NODE'
  1431. 'initial_solutions': 10, # 1
  1432. 'edit_cost': 'LETTER2',
  1433. 'attr_distance': 'euclidean',
  1434. 'ratio_runs_from_initial_solutions': 1,
  1435. 'threads': multiprocessing.cpu_count(),
  1436. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1437. mge_options = {'init_type': 'MEDOID',
  1438. 'random_inits': 10,
  1439. 'time_limit': 600,
  1440. 'verbose': 2,
  1441. 'refine': False}
  1442. save_results = True
  1443. dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/'
  1444. irrelevant_labels = None #
  1445. edge_required = True #
  1446. # print settings.
  1447. print('parameters:')
  1448. print('dataset name:', ds_name)
  1449. print('mpg_options:', mpg_options)
  1450. print('kernel_options:', kernel_options)
  1451. print('ged_options:', ged_options)
  1452. print('mge_options:', mge_options)
  1453. print('save_results:', save_results)
  1454. print('irrelevant_labels:', irrelevant_labels)
  1455. print()
  1456. # generate preimages.
  1457. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5:
  1458. print('\n-------------------------------------')
  1459. print('fit method:', fit_method, '\n')
  1460. mpg_options['fit_method'] = fit_method
  1461. 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)
  1462. if __name__ == "__main__":
  1463. #### xp 1_1: Letter-high, StructuralSP.
  1464. # xp_median_preimage_1_1()
  1465. #### xp 1_2: Letter-high, ShortestPath.
  1466. # xp_median_preimage_1_2()
  1467. #### xp 10_1: Letter-med, StructuralSP.
  1468. # xp_median_preimage_10_1()
  1469. #### xp 10_2: Letter-med, ShortestPath.
  1470. # xp_median_preimage_10_2()
  1471. #### xp 11_1: Letter-low, StructuralSP.
  1472. # xp_median_preimage_11_1()
  1473. #### xp 11_2: Letter-low, ShortestPath.
  1474. # xp_median_preimage_11_2()
  1475. #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  1476. # xp_median_preimage_2_1()
  1477. #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  1478. # xp_median_preimage_3_1()
  1479. #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  1480. # xp_median_preimage_3_2()
  1481. #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  1482. # xp_median_preimage_4_1()
  1483. #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  1484. # xp_median_preimage_5_1()
  1485. #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  1486. # xp_median_preimage_6_1()
  1487. #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  1488. # xp_median_preimage_6_2()
  1489. #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  1490. # xp_median_preimage_7_1()
  1491. #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  1492. # xp_median_preimage_7_2()
  1493. #### xp 7_3: MUTAG, Treelet, using CONSTANT.
  1494. # xp_median_preimage_7_3()
  1495. #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  1496. # xp_median_preimage_7_4()
  1497. #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  1498. # xp_median_preimage_8_1()
  1499. #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  1500. # xp_median_preimage_8_2()
  1501. #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  1502. # xp_median_preimage_8_3()
  1503. #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  1504. # xp_median_preimage_8_4()
  1505. #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  1506. # xp_median_preimage_9_1()
  1507. #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  1508. # xp_median_preimage_9_2()
  1509. #### xp 9_3: MAO, Treelet, using CONSTANT.
  1510. # xp_median_preimage_9_3()
  1511. #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT.
  1512. xp_median_preimage_9_4()

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