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_remove_best_graph_init10.py 115 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085
  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. import sys
  10. import os
  11. import logging
  12. from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
  13. from gklearn.preimage.remove_best_graph import remove_best_graph
  14. from gklearn.utils import compute_gram_matrices_by_class
  15. dir_root = '../results/xp_remove_best_graph.init10/'
  16. num_random = 10
  17. initial_solutions = 10
  18. def xp_median_preimage_15_1():
  19. """xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  20. """
  21. for update_order in [True, False]:
  22. # set parameters.
  23. ds_name = 'AIDS' #
  24. mpg_options = {'fit_method': 'k-graphs',
  25. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  26. 'ds_name': ds_name,
  27. 'parallel': True, # False
  28. 'time_limit_in_sec': 0,
  29. 'max_itrs': 100, #
  30. 'max_itrs_without_update': 3,
  31. 'epsilon_residual': 0.01,
  32. 'epsilon_ec': 0.1,
  33. 'verbose': 2}
  34. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  35. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  36. kernel_options = {'name': 'StructuralSP',
  37. 'edge_weight': None,
  38. 'node_kernels': sub_kernels,
  39. 'edge_kernels': sub_kernels,
  40. 'compute_method': 'naive',
  41. 'parallel': 'imap_unordered',
  42. # 'parallel': None,
  43. 'n_jobs': multiprocessing.cpu_count(),
  44. 'normalize': True,
  45. 'verbose': 2}
  46. ged_options = {'method': 'IPFP',
  47. 'initialization_method': 'RANDOM', # 'NODE'
  48. 'initial_solutions': initial_solutions, # 1
  49. 'edit_cost': 'CONSTANT', #
  50. 'attr_distance': 'euclidean',
  51. 'ratio_runs_from_initial_solutions': 1,
  52. 'threads': multiprocessing.cpu_count(),
  53. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  54. mge_options = {'init_type': 'MEDOID',
  55. 'random_inits': 10,
  56. 'time_limit': 0,
  57. 'verbose': 2,
  58. 'update_order': update_order,
  59. 'refine': False}
  60. save_results = True
  61. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  62. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  63. edge_required = False #
  64. if not os.path.exists(dir_save):
  65. os.makedirs(dir_save)
  66. file_output = open(dir_save + 'output.txt', 'a')
  67. sys.stdout = file_output
  68. # print settings.
  69. print('parameters:')
  70. print('dataset name:', ds_name)
  71. print('mpg_options:', mpg_options)
  72. print('kernel_options:', kernel_options)
  73. print('ged_options:', ged_options)
  74. print('mge_options:', mge_options)
  75. print('save_results:', save_results)
  76. print('irrelevant_labels:', irrelevant_labels)
  77. print()
  78. # generate preimages.
  79. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  80. print('\n-------------------------------------')
  81. print('fit method:', fit_method, '\n')
  82. mpg_options['fit_method'] = fit_method
  83. try:
  84. remove_best_graph(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)
  85. except Exception as exp:
  86. print('An exception occured when running this experiment:')
  87. LOG_FILENAME = dir_save + 'error.txt'
  88. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  89. logging.exception('')
  90. print(repr(exp))
  91. def xp_median_preimage_15_2():
  92. """xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  93. """
  94. for update_order in [True, False]:
  95. # set parameters.
  96. ds_name = 'AIDS' #
  97. mpg_options = {'fit_method': 'k-graphs',
  98. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  99. 'ds_name': ds_name,
  100. 'parallel': True, # False
  101. 'time_limit_in_sec': 0,
  102. 'max_itrs': 100, #
  103. 'max_itrs_without_update': 3,
  104. 'epsilon_residual': 0.01,
  105. 'epsilon_ec': 0.1,
  106. 'verbose': 2}
  107. kernel_options = {'name': 'PathUpToH',
  108. 'depth': 1, #
  109. 'k_func': 'MinMax', #
  110. 'compute_method': 'trie',
  111. 'parallel': 'imap_unordered',
  112. # 'parallel': None,
  113. 'n_jobs': multiprocessing.cpu_count(),
  114. 'normalize': True,
  115. 'verbose': 2}
  116. ged_options = {'method': 'IPFP',
  117. 'initialization_method': 'RANDOM', # 'NODE'
  118. 'initial_solutions': initial_solutions, # 1
  119. 'edit_cost': 'CONSTANT', #
  120. 'attr_distance': 'euclidean',
  121. 'ratio_runs_from_initial_solutions': 1,
  122. 'threads': multiprocessing.cpu_count(),
  123. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  124. mge_options = {'init_type': 'MEDOID',
  125. 'random_inits': 10,
  126. 'time_limit': 0,
  127. 'verbose': 2,
  128. 'update_order': update_order,
  129. 'refine': False}
  130. save_results = True
  131. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  132. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  133. edge_required = False #
  134. if not os.path.exists(dir_save):
  135. os.makedirs(dir_save)
  136. file_output = open(dir_save + 'output.txt', 'a')
  137. sys.stdout = file_output
  138. # print settings.
  139. print('parameters:')
  140. print('dataset name:', ds_name)
  141. print('mpg_options:', mpg_options)
  142. print('kernel_options:', kernel_options)
  143. print('ged_options:', ged_options)
  144. print('mge_options:', mge_options)
  145. print('save_results:', save_results)
  146. print('irrelevant_labels:', irrelevant_labels)
  147. print()
  148. # generate preimages.
  149. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  150. print('\n-------------------------------------')
  151. print('fit method:', fit_method, '\n')
  152. mpg_options['fit_method'] = fit_method
  153. try:
  154. remove_best_graph(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)
  155. except Exception as exp:
  156. print('An exception occured when running this experiment:')
  157. LOG_FILENAME = dir_save + 'error.txt'
  158. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  159. logging.exception('')
  160. print(repr(exp))
  161. def xp_median_preimage_15_3():
  162. """xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  163. """
  164. for update_order in [True, False]:
  165. from gklearn.utils.kernels import polynomialkernel
  166. # set parameters.
  167. ds_name = 'AIDS' #
  168. mpg_options = {'fit_method': 'k-graphs',
  169. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  170. 'ds_name': ds_name,
  171. 'parallel': True, # False
  172. 'time_limit_in_sec': 0,
  173. 'max_itrs': 100, #
  174. 'max_itrs_without_update': 3,
  175. 'epsilon_residual': 0.01,
  176. 'epsilon_ec': 0.1,
  177. 'verbose': 2}
  178. pkernel = functools.partial(polynomialkernel, d=1, c=1e+2)
  179. kernel_options = {'name': 'Treelet', #
  180. 'sub_kernel': pkernel,
  181. 'parallel': 'imap_unordered',
  182. # 'parallel': None,
  183. 'n_jobs': multiprocessing.cpu_count(),
  184. 'normalize': True,
  185. 'verbose': 2}
  186. ged_options = {'method': 'IPFP',
  187. 'initialization_method': 'RANDOM', # 'NODE'
  188. 'initial_solutions': initial_solutions, # 1
  189. 'edit_cost': 'CONSTANT', #
  190. 'attr_distance': 'euclidean',
  191. 'ratio_runs_from_initial_solutions': 1,
  192. 'threads': multiprocessing.cpu_count(),
  193. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  194. mge_options = {'init_type': 'MEDOID',
  195. 'random_inits': 10,
  196. 'time_limit': 0,
  197. 'verbose': 2,
  198. 'update_order': update_order,
  199. 'refine': False}
  200. save_results = True
  201. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  202. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  203. edge_required = False #
  204. if not os.path.exists(dir_save):
  205. os.makedirs(dir_save)
  206. file_output = open(dir_save + 'output.txt', 'a')
  207. sys.stdout = file_output
  208. # print settings.
  209. print('parameters:')
  210. print('dataset name:', ds_name)
  211. print('mpg_options:', mpg_options)
  212. print('kernel_options:', kernel_options)
  213. print('ged_options:', ged_options)
  214. print('mge_options:', mge_options)
  215. print('save_results:', save_results)
  216. print('irrelevant_labels:', irrelevant_labels)
  217. print()
  218. # generate preimages.
  219. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  220. print('\n-------------------------------------')
  221. print('fit method:', fit_method, '\n')
  222. mpg_options['fit_method'] = fit_method
  223. try:
  224. remove_best_graph(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)
  225. except Exception as exp:
  226. print('An exception occured when running this experiment:')
  227. LOG_FILENAME = dir_save + 'error.txt'
  228. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  229. logging.exception('')
  230. print(repr(exp))
  231. def xp_median_preimage_15_4():
  232. """xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  233. """
  234. for update_order in [True, False]:
  235. # set parameters.
  236. ds_name = 'AIDS' #
  237. mpg_options = {'fit_method': 'k-graphs',
  238. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  239. 'ds_name': ds_name,
  240. 'parallel': True, # False
  241. 'time_limit_in_sec': 0,
  242. 'max_itrs': 100, #
  243. 'max_itrs_without_update': 3,
  244. 'epsilon_residual': 0.01,
  245. 'epsilon_ec': 0.1,
  246. 'verbose': 2}
  247. kernel_options = {'name': 'WeisfeilerLehman',
  248. 'height': 10,
  249. 'base_kernel': 'subtree',
  250. 'parallel': 'imap_unordered',
  251. # 'parallel': None,
  252. 'n_jobs': multiprocessing.cpu_count(),
  253. 'normalize': True,
  254. 'verbose': 2}
  255. ged_options = {'method': 'IPFP',
  256. 'initialization_method': 'RANDOM', # 'NODE'
  257. 'initial_solutions': initial_solutions, # 1
  258. 'edit_cost': 'CONSTANT', #
  259. 'attr_distance': 'euclidean',
  260. 'ratio_runs_from_initial_solutions': 1,
  261. 'threads': multiprocessing.cpu_count(),
  262. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  263. mge_options = {'init_type': 'MEDOID',
  264. 'random_inits': 10,
  265. 'time_limit': 0,
  266. 'verbose': 2,
  267. 'update_order': update_order,
  268. 'refine': False}
  269. save_results = True
  270. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  271. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  272. edge_required = False #
  273. if not os.path.exists(dir_save):
  274. os.makedirs(dir_save)
  275. file_output = open(dir_save + 'output.txt', 'a')
  276. sys.stdout = file_output
  277. # print settings.
  278. print('parameters:')
  279. print('dataset name:', ds_name)
  280. print('mpg_options:', mpg_options)
  281. print('kernel_options:', kernel_options)
  282. print('ged_options:', ged_options)
  283. print('mge_options:', mge_options)
  284. print('save_results:', save_results)
  285. print('irrelevant_labels:', irrelevant_labels)
  286. print()
  287. # # compute gram matrices for each class a priori.
  288. # print('Compute gram matrices for each class a priori.')
  289. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  290. # generate preimages.
  291. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  292. print('\n-------------------------------------')
  293. print('fit method:', fit_method, '\n')
  294. mpg_options['fit_method'] = fit_method
  295. try:
  296. remove_best_graph(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)
  297. except Exception as exp:
  298. print('An exception occured when running this experiment:')
  299. LOG_FILENAME = dir_save + 'error.txt'
  300. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  301. logging.exception('')
  302. print(repr(exp))
  303. def xp_median_preimage_14_1():
  304. """xp 14_1: DD, PathUpToH, using CONSTANT.
  305. """
  306. for update_order in [True, False]:
  307. # set parameters.
  308. ds_name = 'DD' #
  309. mpg_options = {'fit_method': 'k-graphs',
  310. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  311. 'ds_name': ds_name,
  312. 'parallel': True, # False
  313. 'time_limit_in_sec': 0,
  314. 'max_itrs': 100, #
  315. 'max_itrs_without_update': 3,
  316. 'epsilon_residual': 0.01,
  317. 'epsilon_ec': 0.1,
  318. 'verbose': 2}
  319. kernel_options = {'name': 'PathUpToH',
  320. 'depth': 2, #
  321. 'k_func': 'MinMax', #
  322. 'compute_method': 'trie',
  323. 'parallel': 'imap_unordered',
  324. # 'parallel': None,
  325. 'n_jobs': multiprocessing.cpu_count(),
  326. 'normalize': True,
  327. 'verbose': 2}
  328. ged_options = {'method': 'IPFP',
  329. 'initialization_method': 'RANDOM', # 'NODE'
  330. 'initial_solutions': initial_solutions, # 1
  331. 'edit_cost': 'CONSTANT', #
  332. 'attr_distance': 'euclidean',
  333. 'ratio_runs_from_initial_solutions': 1,
  334. 'threads': multiprocessing.cpu_count(),
  335. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  336. mge_options = {'init_type': 'MEDOID',
  337. 'random_inits': 10,
  338. 'time_limit': 0,
  339. 'verbose': 2,
  340. 'update_order': update_order,
  341. 'refine': False}
  342. save_results = True
  343. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  344. irrelevant_labels = None #
  345. edge_required = False #
  346. if not os.path.exists(dir_save):
  347. os.makedirs(dir_save)
  348. file_output = open(dir_save + 'output.txt', 'a')
  349. sys.stdout = file_output
  350. # # compute gram matrices for each class a priori.
  351. # print('Compute gram matrices for each class a priori.')
  352. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=save_results, dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required)
  353. # print settings.
  354. print('parameters:')
  355. print('dataset name:', ds_name)
  356. print('mpg_options:', mpg_options)
  357. print('kernel_options:', kernel_options)
  358. print('ged_options:', ged_options)
  359. print('mge_options:', mge_options)
  360. print('save_results:', save_results)
  361. print('irrelevant_labels:', irrelevant_labels)
  362. print()
  363. # generate preimages.
  364. for fit_method in ['k-graphs'] + ['random'] * num_random:
  365. print('\n-------------------------------------')
  366. print('fit method:', fit_method, '\n')
  367. mpg_options['fit_method'] = fit_method
  368. try:
  369. remove_best_graph(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)
  370. except Exception as exp:
  371. print('An exception occured when running this experiment:')
  372. LOG_FILENAME = dir_save + 'error.txt'
  373. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  374. logging.exception('')
  375. print(repr(exp))
  376. def xp_median_preimage_13_1():
  377. """xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  378. """
  379. for update_order in [True, False]:
  380. # set parameters.
  381. ds_name = 'PAH' #
  382. mpg_options = {'fit_method': 'k-graphs',
  383. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  384. 'ds_name': ds_name,
  385. 'parallel': True, # False
  386. 'time_limit_in_sec': 0,
  387. 'max_itrs': 100, #
  388. 'max_itrs_without_update': 3,
  389. 'epsilon_residual': 0.01,
  390. 'epsilon_ec': 0.1,
  391. 'verbose': 2}
  392. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  393. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  394. kernel_options = {'name': 'StructuralSP',
  395. 'edge_weight': None,
  396. 'node_kernels': sub_kernels,
  397. 'edge_kernels': sub_kernels,
  398. 'compute_method': 'naive',
  399. 'parallel': 'imap_unordered',
  400. # 'parallel': None,
  401. 'n_jobs': multiprocessing.cpu_count(),
  402. 'normalize': True,
  403. 'verbose': 2}
  404. ged_options = {'method': 'IPFP',
  405. 'initialization_method': 'RANDOM', # 'NODE'
  406. 'initial_solutions': initial_solutions, # 1
  407. 'edit_cost': 'NON_SYMBOLIC', #
  408. 'attr_distance': 'euclidean',
  409. 'ratio_runs_from_initial_solutions': 1,
  410. 'threads': multiprocessing.cpu_count(),
  411. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  412. mge_options = {'init_type': 'MEDOID',
  413. 'random_inits': 10,
  414. 'time_limit': 0,
  415. 'verbose': 2,
  416. 'update_order': update_order,
  417. 'refine': False}
  418. save_results = True
  419. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  420. irrelevant_labels = None #
  421. edge_required = False #
  422. if not os.path.exists(dir_save):
  423. os.makedirs(dir_save)
  424. file_output = open(dir_save + 'output.txt', 'a')
  425. sys.stdout = file_output
  426. # print settings.
  427. print('parameters:')
  428. print('dataset name:', ds_name)
  429. print('mpg_options:', mpg_options)
  430. print('kernel_options:', kernel_options)
  431. print('ged_options:', ged_options)
  432. print('mge_options:', mge_options)
  433. print('save_results:', save_results)
  434. print('irrelevant_labels:', irrelevant_labels)
  435. print()
  436. # generate preimages.
  437. for fit_method in ['k-graphs'] + ['random'] * num_random:
  438. print('\n-------------------------------------')
  439. print('fit method:', fit_method, '\n')
  440. mpg_options['fit_method'] = fit_method
  441. try:
  442. remove_best_graph(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)
  443. except Exception as exp:
  444. print('An exception occured when running this experiment:')
  445. LOG_FILENAME = dir_save + 'error.txt'
  446. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  447. logging.exception('')
  448. print(repr(exp))
  449. def xp_median_preimage_13_2():
  450. """xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  451. """
  452. for update_order in [True, False]:
  453. # set parameters.
  454. ds_name = 'PAH' #
  455. mpg_options = {'fit_method': 'k-graphs',
  456. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  457. 'ds_name': ds_name,
  458. 'parallel': True, # False
  459. 'time_limit_in_sec': 0,
  460. 'max_itrs': 100,
  461. 'max_itrs_without_update': 3,
  462. 'epsilon_residual': 0.01,
  463. 'epsilon_ec': 0.1,
  464. 'verbose': 2}
  465. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  466. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  467. kernel_options = {'name': 'ShortestPath',
  468. 'edge_weight': None,
  469. 'node_kernels': sub_kernels,
  470. 'parallel': 'imap_unordered',
  471. # 'parallel': None,
  472. 'n_jobs': multiprocessing.cpu_count(),
  473. 'normalize': True,
  474. 'verbose': 2}
  475. ged_options = {'method': 'IPFP',
  476. 'initialization_method': 'RANDOM', # 'NODE'
  477. 'initial_solutions': initial_solutions, # 1
  478. 'edit_cost': 'NON_SYMBOLIC', #
  479. 'attr_distance': 'euclidean',
  480. 'ratio_runs_from_initial_solutions': 1,
  481. 'threads': multiprocessing.cpu_count(),
  482. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  483. mge_options = {'init_type': 'MEDOID',
  484. 'random_inits': 10,
  485. 'time_limit': 0,
  486. 'verbose': 2,
  487. 'update_order': update_order,
  488. 'refine': False}
  489. save_results = True
  490. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '') #
  491. irrelevant_labels = None #
  492. edge_required = True #
  493. if not os.path.exists(dir_save):
  494. os.makedirs(dir_save)
  495. file_output = open(dir_save + 'output.txt', 'a')
  496. sys.stdout = file_output
  497. # print settings.
  498. print('parameters:')
  499. print('dataset name:', ds_name)
  500. print('mpg_options:', mpg_options)
  501. print('kernel_options:', kernel_options)
  502. print('ged_options:', ged_options)
  503. print('mge_options:', mge_options)
  504. print('save_results:', save_results)
  505. print('irrelevant_labels:', irrelevant_labels)
  506. print()
  507. # generate preimages.
  508. for fit_method in ['k-graphs'] + ['random'] * num_random: #
  509. print('\n-------------------------------------')
  510. print('fit method:', fit_method, '\n')
  511. mpg_options['fit_method'] = fit_method
  512. try:
  513. remove_best_graph(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)
  514. except Exception as exp:
  515. print('An exception occured when running this experiment:')
  516. LOG_FILENAME = dir_save + 'error.txt'
  517. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  518. logging.exception('')
  519. print(repr(exp))
  520. def xp_median_preimage_12_1():
  521. """xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled.
  522. """
  523. for update_order in [True, False]:
  524. # set parameters.
  525. ds_name = 'PAH' #
  526. mpg_options = {'fit_method': 'k-graphs',
  527. 'init_ecc': [4, 4, 0, 1, 1, 0], #
  528. 'ds_name': ds_name,
  529. 'parallel': True, # False
  530. 'time_limit_in_sec': 0,
  531. 'max_itrs': 100, #
  532. 'max_itrs_without_update': 3,
  533. 'epsilon_residual': 0.01,
  534. 'epsilon_ec': 0.1,
  535. 'verbose': 2}
  536. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  537. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  538. kernel_options = {'name': 'StructuralSP',
  539. 'edge_weight': None,
  540. 'node_kernels': sub_kernels,
  541. 'edge_kernels': sub_kernels,
  542. 'compute_method': 'naive',
  543. 'parallel': 'imap_unordered',
  544. # 'parallel': None,
  545. 'n_jobs': multiprocessing.cpu_count(),
  546. 'normalize': True,
  547. 'verbose': 2}
  548. ged_options = {'method': 'IPFP',
  549. 'initialization_method': 'RANDOM', # 'NODE'
  550. 'initial_solutions': initial_solutions, # 1
  551. 'edit_cost': 'NON_SYMBOLIC', #
  552. 'attr_distance': 'euclidean',
  553. 'ratio_runs_from_initial_solutions': 1,
  554. 'threads': multiprocessing.cpu_count(),
  555. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  556. mge_options = {'init_type': 'MEDOID',
  557. 'random_inits': 10,
  558. 'time_limit': 0,
  559. 'verbose': 2,
  560. 'update_order': update_order,
  561. 'refine': False}
  562. save_results = True
  563. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + ('update_order/' if update_order else '')
  564. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  565. edge_required = False #
  566. if not os.path.exists(dir_save):
  567. os.makedirs(dir_save)
  568. file_output = open(dir_save + 'output.txt', 'a')
  569. sys.stdout = file_output
  570. # print settings.
  571. print('parameters:')
  572. print('dataset name:', ds_name)
  573. print('mpg_options:', mpg_options)
  574. print('kernel_options:', kernel_options)
  575. print('ged_options:', ged_options)
  576. print('mge_options:', mge_options)
  577. print('save_results:', save_results)
  578. print('irrelevant_labels:', irrelevant_labels)
  579. print()
  580. # generate preimages.
  581. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  582. print('\n-------------------------------------')
  583. print('fit method:', fit_method, '\n')
  584. mpg_options['fit_method'] = fit_method
  585. try:
  586. remove_best_graph(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)
  587. except Exception as exp:
  588. print('An exception occured when running this experiment:')
  589. LOG_FILENAME = dir_save + 'error.txt'
  590. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  591. logging.exception('')
  592. print(repr(exp))
  593. def xp_median_preimage_12_2():
  594. """xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  595. """
  596. for update_order in [True, False]:
  597. # set parameters.
  598. ds_name = 'PAH' #
  599. mpg_options = {'fit_method': 'k-graphs',
  600. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  601. 'ds_name': ds_name,
  602. 'parallel': True, # False
  603. 'time_limit_in_sec': 0,
  604. 'max_itrs': 100, #
  605. 'max_itrs_without_update': 3,
  606. 'epsilon_residual': 0.01,
  607. 'epsilon_ec': 0.1,
  608. 'verbose': 2}
  609. kernel_options = {'name': 'PathUpToH',
  610. 'depth': 1, #
  611. 'k_func': 'MinMax', #
  612. 'compute_method': 'trie',
  613. 'parallel': 'imap_unordered',
  614. # 'parallel': None,
  615. 'n_jobs': multiprocessing.cpu_count(),
  616. 'normalize': True,
  617. 'verbose': 2}
  618. ged_options = {'method': 'IPFP',
  619. 'initialization_method': 'RANDOM', # 'NODE'
  620. 'initial_solutions': initial_solutions, # 1
  621. 'edit_cost': 'CONSTANT', #
  622. 'attr_distance': 'euclidean',
  623. 'ratio_runs_from_initial_solutions': 1,
  624. 'threads': multiprocessing.cpu_count(),
  625. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  626. mge_options = {'init_type': 'MEDOID',
  627. 'random_inits': 10,
  628. 'time_limit': 0,
  629. 'verbose': 2,
  630. 'update_order': update_order,
  631. 'refine': False}
  632. save_results = True
  633. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + ('update_order/' if update_order else '')
  634. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  635. edge_required = False #
  636. if not os.path.exists(dir_save):
  637. os.makedirs(dir_save)
  638. file_output = open(dir_save + 'output.txt', 'a')
  639. sys.stdout = file_output
  640. # print settings.
  641. print('parameters:')
  642. print('dataset name:', ds_name)
  643. print('mpg_options:', mpg_options)
  644. print('kernel_options:', kernel_options)
  645. print('ged_options:', ged_options)
  646. print('mge_options:', mge_options)
  647. print('save_results:', save_results)
  648. print('irrelevant_labels:', irrelevant_labels)
  649. print()
  650. # generate preimages.
  651. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  652. print('\n-------------------------------------')
  653. print('fit method:', fit_method, '\n')
  654. mpg_options['fit_method'] = fit_method
  655. try:
  656. remove_best_graph(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)
  657. except Exception as exp:
  658. print('An exception occured when running this experiment:')
  659. LOG_FILENAME = dir_save + 'error.txt'
  660. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  661. logging.exception('')
  662. print(repr(exp))
  663. def xp_median_preimage_12_3():
  664. """xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  665. """
  666. from gklearn.utils.kernels import gaussiankernel
  667. for update_order in [True, False]:
  668. # set parameters.
  669. ds_name = 'PAH' #
  670. mpg_options = {'fit_method': 'k-graphs',
  671. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  672. 'ds_name': ds_name,
  673. 'parallel': True, # False
  674. 'time_limit_in_sec': 0,
  675. 'max_itrs': 100, #
  676. 'max_itrs_without_update': 3,
  677. 'epsilon_residual': 0.01,
  678. 'epsilon_ec': 0.1,
  679. 'verbose': 2}
  680. pkernel = functools.partial(gaussiankernel, gamma=None) # @todo
  681. kernel_options = {'name': 'Treelet', #
  682. 'sub_kernel': pkernel,
  683. 'parallel': 'imap_unordered',
  684. # 'parallel': None,
  685. 'n_jobs': multiprocessing.cpu_count(),
  686. 'normalize': True,
  687. 'verbose': 2}
  688. ged_options = {'method': 'IPFP',
  689. 'initialization_method': 'RANDOM', # 'NODE'
  690. 'initial_solutions': initial_solutions, # 1
  691. 'edit_cost': 'CONSTANT', #
  692. 'attr_distance': 'euclidean',
  693. 'ratio_runs_from_initial_solutions': 1,
  694. 'threads': multiprocessing.cpu_count(),
  695. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  696. mge_options = {'init_type': 'MEDOID',
  697. 'random_inits': 10,
  698. 'time_limit': 0,
  699. 'verbose': 2,
  700. 'update_order': update_order,
  701. 'refine': False}
  702. save_results = True
  703. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + ('update_order/' if update_order else '')
  704. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  705. edge_required = False #
  706. if not os.path.exists(dir_save):
  707. os.makedirs(dir_save)
  708. file_output = open(dir_save + 'output.txt', 'a')
  709. sys.stdout = file_output
  710. # print settings.
  711. print('parameters:')
  712. print('dataset name:', ds_name)
  713. print('mpg_options:', mpg_options)
  714. print('kernel_options:', kernel_options)
  715. print('ged_options:', ged_options)
  716. print('mge_options:', mge_options)
  717. print('save_results:', save_results)
  718. print('irrelevant_labels:', irrelevant_labels)
  719. print()
  720. # generate preimages.
  721. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  722. print('\n-------------------------------------')
  723. print('fit method:', fit_method, '\n')
  724. mpg_options['fit_method'] = fit_method
  725. try:
  726. remove_best_graph(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)
  727. except Exception as exp:
  728. print('An exception occured when running this experiment:')
  729. LOG_FILENAME = dir_save + 'error.txt'
  730. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  731. logging.exception('')
  732. print(repr(exp))
  733. def xp_median_preimage_12_4():
  734. """xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  735. """
  736. for update_order in [True, False]:
  737. # set parameters.
  738. ds_name = 'PAH' #
  739. mpg_options = {'fit_method': 'k-graphs',
  740. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  741. 'ds_name': ds_name,
  742. 'parallel': True, # False
  743. 'time_limit_in_sec': 0,
  744. 'max_itrs': 100, #
  745. 'max_itrs_without_update': 3,
  746. 'epsilon_residual': 0.01,
  747. 'epsilon_ec': 0.1,
  748. 'verbose': 2}
  749. kernel_options = {'name': 'WeisfeilerLehman',
  750. 'height': 14,
  751. 'base_kernel': 'subtree',
  752. 'parallel': 'imap_unordered',
  753. # 'parallel': None,
  754. 'n_jobs': multiprocessing.cpu_count(),
  755. 'normalize': True,
  756. 'verbose': 2}
  757. ged_options = {'method': 'IPFP',
  758. 'initialization_method': 'RANDOM', # 'NODE'
  759. 'initial_solutions': initial_solutions, # 1
  760. 'edit_cost': 'CONSTANT', #
  761. 'attr_distance': 'euclidean',
  762. 'ratio_runs_from_initial_solutions': 1,
  763. 'threads': multiprocessing.cpu_count(),
  764. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  765. mge_options = {'init_type': 'MEDOID',
  766. 'random_inits': 10,
  767. 'time_limit': 0,
  768. 'verbose': 2,
  769. 'update_order': update_order,
  770. 'refine': False}
  771. save_results = True
  772. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + ('update_order/' if update_order else '')
  773. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  774. edge_required = False #
  775. if not os.path.exists(dir_save):
  776. os.makedirs(dir_save)
  777. file_output = open(dir_save + 'output.txt', 'a')
  778. sys.stdout = file_output
  779. # print settings.
  780. print('parameters:')
  781. print('dataset name:', ds_name)
  782. print('mpg_options:', mpg_options)
  783. print('kernel_options:', kernel_options)
  784. print('ged_options:', ged_options)
  785. print('mge_options:', mge_options)
  786. print('save_results:', save_results)
  787. print('irrelevant_labels:', irrelevant_labels)
  788. print()
  789. # # compute gram matrices for each class a priori.
  790. # print('Compute gram matrices for each class a priori.')
  791. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  792. # generate preimages.
  793. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  794. print('\n-------------------------------------')
  795. print('fit method:', fit_method, '\n')
  796. mpg_options['fit_method'] = fit_method
  797. try:
  798. remove_best_graph(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)
  799. except Exception as exp:
  800. print('An exception occured when running this experiment:')
  801. LOG_FILENAME = dir_save + 'error.txt'
  802. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  803. logging.exception('')
  804. print(repr(exp))
  805. def xp_median_preimage_12_5():
  806. """xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  807. """
  808. for update_order in [True, False]:
  809. # set parameters.
  810. ds_name = 'PAH' #
  811. mpg_options = {'fit_method': 'k-graphs',
  812. 'init_ecc': [4, 4, 0, 1, 1, 0], #
  813. 'ds_name': ds_name,
  814. 'parallel': True, # False
  815. 'time_limit_in_sec': 0,
  816. 'max_itrs': 100,
  817. 'max_itrs_without_update': 3,
  818. 'epsilon_residual': 0.01,
  819. 'epsilon_ec': 0.1,
  820. 'verbose': 2}
  821. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  822. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  823. kernel_options = {'name': 'ShortestPath',
  824. 'edge_weight': None,
  825. 'node_kernels': sub_kernels,
  826. 'parallel': 'imap_unordered',
  827. # 'parallel': None,
  828. 'n_jobs': multiprocessing.cpu_count(),
  829. 'normalize': True,
  830. 'verbose': 2}
  831. ged_options = {'method': 'IPFP',
  832. 'initialization_method': 'RANDOM', # 'NODE'
  833. 'initial_solutions': initial_solutions, # 1
  834. 'edit_cost': 'NON_SYMBOLIC', #
  835. 'attr_distance': 'euclidean',
  836. 'ratio_runs_from_initial_solutions': 1,
  837. 'threads': multiprocessing.cpu_count(),
  838. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  839. mge_options = {'init_type': 'MEDOID',
  840. 'random_inits': 10,
  841. 'time_limit': 0,
  842. 'verbose': 2,
  843. 'update_order': update_order,
  844. 'refine': False}
  845. save_results = True
  846. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + ('update_order/' if update_order else '') #
  847. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  848. edge_required = True #
  849. if not os.path.exists(dir_save):
  850. os.makedirs(dir_save)
  851. file_output = open(dir_save + 'output.txt', 'a')
  852. sys.stdout = file_output
  853. # print settings.
  854. print('parameters:')
  855. print('dataset name:', ds_name)
  856. print('mpg_options:', mpg_options)
  857. print('kernel_options:', kernel_options)
  858. print('ged_options:', ged_options)
  859. print('mge_options:', mge_options)
  860. print('save_results:', save_results)
  861. print('irrelevant_labels:', irrelevant_labels)
  862. print()
  863. # generate preimages.
  864. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random: #
  865. print('\n-------------------------------------')
  866. print('fit method:', fit_method, '\n')
  867. mpg_options['fit_method'] = fit_method
  868. try:
  869. remove_best_graph(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)
  870. except Exception as exp:
  871. print('An exception occured when running this experiment:')
  872. LOG_FILENAME = dir_save + 'error.txt'
  873. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  874. logging.exception('')
  875. print(repr(exp))
  876. def xp_median_preimage_9_1():
  877. """xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  878. """
  879. for update_order in [True, False]:
  880. # set parameters.
  881. ds_name = 'MAO' #
  882. mpg_options = {'fit_method': 'k-graphs',
  883. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  884. 'ds_name': ds_name,
  885. 'parallel': True, # False
  886. 'time_limit_in_sec': 0,
  887. 'max_itrs': 100, #
  888. 'max_itrs_without_update': 3,
  889. 'epsilon_residual': 0.01,
  890. 'epsilon_ec': 0.1,
  891. 'verbose': 2}
  892. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  893. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  894. kernel_options = {'name': 'StructuralSP',
  895. 'edge_weight': None,
  896. 'node_kernels': sub_kernels,
  897. 'edge_kernels': sub_kernels,
  898. 'compute_method': 'naive',
  899. 'parallel': 'imap_unordered',
  900. # 'parallel': None,
  901. 'n_jobs': multiprocessing.cpu_count(),
  902. 'normalize': True,
  903. 'verbose': 2}
  904. ged_options = {'method': 'IPFP',
  905. 'initialization_method': 'RANDOM', # 'NODE'
  906. 'initial_solutions': initial_solutions, # 1
  907. 'edit_cost': 'CONSTANT', #
  908. 'attr_distance': 'euclidean',
  909. 'ratio_runs_from_initial_solutions': 1,
  910. 'threads': multiprocessing.cpu_count(),
  911. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  912. mge_options = {'init_type': 'MEDOID',
  913. 'random_inits': 10,
  914. 'time_limit': 0,
  915. 'verbose': 2,
  916. 'update_order': update_order,
  917. 'refine': False}
  918. save_results = True
  919. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  920. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  921. edge_required = False #
  922. if not os.path.exists(dir_save):
  923. os.makedirs(dir_save)
  924. file_output = open(dir_save + 'output.txt', 'a')
  925. sys.stdout = file_output
  926. # print settings.
  927. print('parameters:')
  928. print('dataset name:', ds_name)
  929. print('mpg_options:', mpg_options)
  930. print('kernel_options:', kernel_options)
  931. print('ged_options:', ged_options)
  932. print('mge_options:', mge_options)
  933. print('save_results:', save_results)
  934. print('irrelevant_labels:', irrelevant_labels)
  935. print()
  936. # generate preimages.
  937. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  938. print('\n-------------------------------------')
  939. print('fit method:', fit_method, '\n')
  940. mpg_options['fit_method'] = fit_method
  941. try:
  942. remove_best_graph(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)
  943. except Exception as exp:
  944. print('An exception occured when running this experiment:')
  945. LOG_FILENAME = dir_save + 'error.txt'
  946. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  947. logging.exception('')
  948. print(repr(exp))
  949. def xp_median_preimage_9_2():
  950. """xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  951. """
  952. for update_order in [True, False]:
  953. # set parameters.
  954. ds_name = 'MAO' #
  955. mpg_options = {'fit_method': 'k-graphs',
  956. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  957. 'ds_name': ds_name,
  958. 'parallel': True, # False
  959. 'time_limit_in_sec': 0,
  960. 'max_itrs': 100, #
  961. 'max_itrs_without_update': 3,
  962. 'epsilon_residual': 0.01,
  963. 'epsilon_ec': 0.1,
  964. 'verbose': 2}
  965. kernel_options = {'name': 'PathUpToH',
  966. 'depth': 9, #
  967. 'k_func': 'MinMax', #
  968. 'compute_method': 'trie',
  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': initial_solutions, # 1
  977. 'edit_cost': 'CONSTANT', #
  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': 0,
  985. 'verbose': 2,
  986. 'update_order': update_order,
  987. 'refine': False}
  988. save_results = True
  989. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  990. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  991. edge_required = False #
  992. if not os.path.exists(dir_save):
  993. os.makedirs(dir_save)
  994. file_output = open(dir_save + 'output.txt', 'a')
  995. sys.stdout = file_output
  996. # print settings.
  997. print('parameters:')
  998. print('dataset name:', ds_name)
  999. print('mpg_options:', mpg_options)
  1000. print('kernel_options:', kernel_options)
  1001. print('ged_options:', ged_options)
  1002. print('mge_options:', mge_options)
  1003. print('save_results:', save_results)
  1004. print('irrelevant_labels:', irrelevant_labels)
  1005. print()
  1006. # generate preimages.
  1007. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1008. print('\n-------------------------------------')
  1009. print('fit method:', fit_method, '\n')
  1010. mpg_options['fit_method'] = fit_method
  1011. try:
  1012. remove_best_graph(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)
  1013. except Exception as exp:
  1014. print('An exception occured when running this experiment:')
  1015. LOG_FILENAME = dir_save + 'error.txt'
  1016. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1017. logging.exception('')
  1018. print(repr(exp))
  1019. def xp_median_preimage_9_3():
  1020. """xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  1021. """
  1022. for update_order in [True, False]:
  1023. from gklearn.utils.kernels import polynomialkernel
  1024. # set parameters.
  1025. ds_name = 'MAO' #
  1026. mpg_options = {'fit_method': 'k-graphs',
  1027. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1028. 'ds_name': ds_name,
  1029. 'parallel': True, # False
  1030. 'time_limit_in_sec': 0,
  1031. 'max_itrs': 100, #
  1032. 'max_itrs_without_update': 3,
  1033. 'epsilon_residual': 0.01,
  1034. 'epsilon_ec': 0.1,
  1035. 'verbose': 2}
  1036. pkernel = functools.partial(polynomialkernel, d=4, c=1e+7)
  1037. kernel_options = {'name': 'Treelet', #
  1038. 'sub_kernel': pkernel,
  1039. 'parallel': 'imap_unordered',
  1040. # 'parallel': None,
  1041. 'n_jobs': multiprocessing.cpu_count(),
  1042. 'normalize': True,
  1043. 'verbose': 2}
  1044. ged_options = {'method': 'IPFP',
  1045. 'initialization_method': 'RANDOM', # 'NODE'
  1046. 'initial_solutions': initial_solutions, # 1
  1047. 'edit_cost': 'CONSTANT', #
  1048. 'attr_distance': 'euclidean',
  1049. 'ratio_runs_from_initial_solutions': 1,
  1050. 'threads': multiprocessing.cpu_count(),
  1051. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1052. mge_options = {'init_type': 'MEDOID',
  1053. 'random_inits': 10,
  1054. 'time_limit': 0,
  1055. 'verbose': 2,
  1056. 'update_order': update_order,
  1057. 'refine': False}
  1058. save_results = True
  1059. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  1060. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  1061. edge_required = False #
  1062. if not os.path.exists(dir_save):
  1063. os.makedirs(dir_save)
  1064. file_output = open(dir_save + 'output.txt', 'a')
  1065. sys.stdout = file_output
  1066. # print settings.
  1067. print('parameters:')
  1068. print('dataset name:', ds_name)
  1069. print('mpg_options:', mpg_options)
  1070. print('kernel_options:', kernel_options)
  1071. print('ged_options:', ged_options)
  1072. print('mge_options:', mge_options)
  1073. print('save_results:', save_results)
  1074. print('irrelevant_labels:', irrelevant_labels)
  1075. print()
  1076. # generate preimages.
  1077. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1078. print('\n-------------------------------------')
  1079. print('fit method:', fit_method, '\n')
  1080. mpg_options['fit_method'] = fit_method
  1081. try:
  1082. remove_best_graph(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)
  1083. except Exception as exp:
  1084. print('An exception occured when running this experiment:')
  1085. LOG_FILENAME = dir_save + 'error.txt'
  1086. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1087. logging.exception('')
  1088. print(repr(exp))
  1089. def xp_median_preimage_9_4():
  1090. """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  1091. """
  1092. for update_order in [True, False]:
  1093. # set parameters.
  1094. ds_name = 'MAO' #
  1095. mpg_options = {'fit_method': 'k-graphs',
  1096. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1097. 'ds_name': ds_name,
  1098. 'parallel': True, # False
  1099. 'time_limit_in_sec': 0,
  1100. 'max_itrs': 100, #
  1101. 'max_itrs_without_update': 3,
  1102. 'epsilon_residual': 0.01,
  1103. 'epsilon_ec': 0.1,
  1104. 'verbose': 2}
  1105. kernel_options = {'name': 'WeisfeilerLehman',
  1106. 'height': 6,
  1107. 'base_kernel': 'subtree',
  1108. 'parallel': 'imap_unordered',
  1109. # 'parallel': None,
  1110. 'n_jobs': multiprocessing.cpu_count(),
  1111. 'normalize': True,
  1112. 'verbose': 2}
  1113. ged_options = {'method': 'IPFP',
  1114. 'initialization_method': 'RANDOM', # 'NODE'
  1115. 'initial_solutions': initial_solutions, # 1
  1116. 'edit_cost': 'CONSTANT', #
  1117. 'attr_distance': 'euclidean',
  1118. 'ratio_runs_from_initial_solutions': 1,
  1119. 'threads': multiprocessing.cpu_count(),
  1120. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1121. mge_options = {'init_type': 'MEDOID',
  1122. 'random_inits': 10,
  1123. 'time_limit': 0,
  1124. 'verbose': 2,
  1125. 'update_order': update_order,
  1126. 'refine': False}
  1127. save_results = True
  1128. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/' + ('update_order/' if update_order else '')
  1129. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  1130. edge_required = False #
  1131. if not os.path.exists(dir_save):
  1132. os.makedirs(dir_save)
  1133. file_output = open(dir_save + 'output.txt', 'a')
  1134. sys.stdout = file_output
  1135. # print settings.
  1136. print('parameters:')
  1137. print('dataset name:', ds_name)
  1138. print('mpg_options:', mpg_options)
  1139. print('kernel_options:', kernel_options)
  1140. print('ged_options:', ged_options)
  1141. print('mge_options:', mge_options)
  1142. print('save_results:', save_results)
  1143. print('irrelevant_labels:', irrelevant_labels)
  1144. print()
  1145. # # compute gram matrices for each class a priori.
  1146. # print('Compute gram matrices for each class a priori.')
  1147. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  1148. # generate preimages.
  1149. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1150. print('\n-------------------------------------')
  1151. print('fit method:', fit_method, '\n')
  1152. mpg_options['fit_method'] = fit_method
  1153. try:
  1154. remove_best_graph(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)
  1155. except Exception as exp:
  1156. print('An exception occured when running this experiment:')
  1157. LOG_FILENAME = dir_save + 'error.txt'
  1158. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1159. logging.exception('')
  1160. print(repr(exp))
  1161. def xp_median_preimage_8_1():
  1162. """xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  1163. """
  1164. for update_order in [True, False]:
  1165. # set parameters.
  1166. ds_name = 'Monoterpenoides' #
  1167. mpg_options = {'fit_method': 'k-graphs',
  1168. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  1169. 'ds_name': ds_name,
  1170. 'parallel': True, # False
  1171. 'time_limit_in_sec': 0,
  1172. 'max_itrs': 100, #
  1173. 'max_itrs_without_update': 3,
  1174. 'epsilon_residual': 0.01,
  1175. 'epsilon_ec': 0.1,
  1176. 'verbose': 2}
  1177. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1178. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1179. kernel_options = {'name': 'StructuralSP',
  1180. 'edge_weight': None,
  1181. 'node_kernels': sub_kernels,
  1182. 'edge_kernels': sub_kernels,
  1183. 'compute_method': 'naive',
  1184. 'parallel': 'imap_unordered',
  1185. # 'parallel': None,
  1186. 'n_jobs': multiprocessing.cpu_count(),
  1187. 'normalize': True,
  1188. 'verbose': 2}
  1189. ged_options = {'method': 'IPFP',
  1190. 'initialization_method': 'RANDOM', # 'NODE'
  1191. 'initial_solutions': initial_solutions, # 1
  1192. 'edit_cost': 'CONSTANT', #
  1193. 'attr_distance': 'euclidean',
  1194. 'ratio_runs_from_initial_solutions': 1,
  1195. 'threads': multiprocessing.cpu_count(),
  1196. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1197. mge_options = {'init_type': 'MEDOID',
  1198. 'random_inits': 10,
  1199. 'time_limit': 0,
  1200. 'verbose': 2,
  1201. 'update_order': update_order,
  1202. 'refine': False}
  1203. save_results = True
  1204. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1205. irrelevant_labels = None #
  1206. edge_required = False #
  1207. if not os.path.exists(dir_save):
  1208. os.makedirs(dir_save)
  1209. file_output = open(dir_save + 'output.txt', 'a')
  1210. sys.stdout = file_output
  1211. # print settings.
  1212. print('parameters:')
  1213. print('dataset name:', ds_name)
  1214. print('mpg_options:', mpg_options)
  1215. print('kernel_options:', kernel_options)
  1216. print('ged_options:', ged_options)
  1217. print('mge_options:', mge_options)
  1218. print('save_results:', save_results)
  1219. print('irrelevant_labels:', irrelevant_labels)
  1220. print()
  1221. # generate preimages.
  1222. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1223. print('\n-------------------------------------')
  1224. print('fit method:', fit_method, '\n')
  1225. mpg_options['fit_method'] = fit_method
  1226. try:
  1227. remove_best_graph(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)
  1228. except Exception as exp:
  1229. print('An exception occured when running this experiment:')
  1230. LOG_FILENAME = dir_save + 'error.txt'
  1231. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1232. logging.exception('')
  1233. print(repr(exp))
  1234. def xp_median_preimage_8_2():
  1235. """xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  1236. """
  1237. for update_order in [True, False]:
  1238. # set parameters.
  1239. ds_name = 'Monoterpenoides' #
  1240. mpg_options = {'fit_method': 'k-graphs',
  1241. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1242. 'ds_name': ds_name,
  1243. 'parallel': True, # False
  1244. 'time_limit_in_sec': 0,
  1245. 'max_itrs': 100, #
  1246. 'max_itrs_without_update': 3,
  1247. 'epsilon_residual': 0.01,
  1248. 'epsilon_ec': 0.1,
  1249. 'verbose': 2}
  1250. kernel_options = {'name': 'PathUpToH',
  1251. 'depth': 7, #
  1252. 'k_func': 'MinMax', #
  1253. 'compute_method': 'trie',
  1254. 'parallel': 'imap_unordered',
  1255. # 'parallel': None,
  1256. 'n_jobs': multiprocessing.cpu_count(),
  1257. 'normalize': True,
  1258. 'verbose': 2}
  1259. ged_options = {'method': 'IPFP',
  1260. 'initialization_method': 'RANDOM', # 'NODE'
  1261. 'initial_solutions': initial_solutions, # 1
  1262. 'edit_cost': 'CONSTANT', #
  1263. 'attr_distance': 'euclidean',
  1264. 'ratio_runs_from_initial_solutions': 1,
  1265. 'threads': multiprocessing.cpu_count(),
  1266. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1267. mge_options = {'init_type': 'MEDOID',
  1268. 'random_inits': 10,
  1269. 'time_limit': 0,
  1270. 'verbose': 2,
  1271. 'update_order': update_order,
  1272. 'refine': False}
  1273. save_results = True
  1274. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1275. irrelevant_labels = None #
  1276. edge_required = False #
  1277. if not os.path.exists(dir_save):
  1278. os.makedirs(dir_save)
  1279. file_output = open(dir_save + 'output.txt', 'a')
  1280. sys.stdout = file_output
  1281. # print settings.
  1282. print('parameters:')
  1283. print('dataset name:', ds_name)
  1284. print('mpg_options:', mpg_options)
  1285. print('kernel_options:', kernel_options)
  1286. print('ged_options:', ged_options)
  1287. print('mge_options:', mge_options)
  1288. print('save_results:', save_results)
  1289. print('irrelevant_labels:', irrelevant_labels)
  1290. print()
  1291. # generate preimages.
  1292. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1293. print('\n-------------------------------------')
  1294. print('fit method:', fit_method, '\n')
  1295. mpg_options['fit_method'] = fit_method
  1296. try:
  1297. remove_best_graph(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)
  1298. except Exception as exp:
  1299. print('An exception occured when running this experiment:')
  1300. LOG_FILENAME = dir_save + 'error.txt'
  1301. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1302. logging.exception('')
  1303. print(repr(exp))
  1304. def xp_median_preimage_8_3():
  1305. """xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  1306. """
  1307. for update_order in [True, False]:
  1308. from gklearn.utils.kernels import polynomialkernel
  1309. # set parameters.
  1310. ds_name = 'Monoterpenoides' #
  1311. mpg_options = {'fit_method': 'k-graphs',
  1312. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1313. 'ds_name': ds_name,
  1314. 'parallel': True, # False
  1315. 'time_limit_in_sec': 0,
  1316. 'max_itrs': 100, #
  1317. 'max_itrs_without_update': 3,
  1318. 'epsilon_residual': 0.01,
  1319. 'epsilon_ec': 0.1,
  1320. 'verbose': 2}
  1321. pkernel = functools.partial(polynomialkernel, d=2, c=1e+5)
  1322. kernel_options = {'name': 'Treelet',
  1323. 'sub_kernel': pkernel,
  1324. 'parallel': 'imap_unordered',
  1325. # 'parallel': None,
  1326. 'n_jobs': multiprocessing.cpu_count(),
  1327. 'normalize': True,
  1328. 'verbose': 2}
  1329. ged_options = {'method': 'IPFP',
  1330. 'initialization_method': 'RANDOM', # 'NODE'
  1331. 'initial_solutions': initial_solutions, # 1
  1332. 'edit_cost': 'CONSTANT', #
  1333. 'attr_distance': 'euclidean',
  1334. 'ratio_runs_from_initial_solutions': 1,
  1335. 'threads': multiprocessing.cpu_count(),
  1336. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1337. mge_options = {'init_type': 'MEDOID',
  1338. 'random_inits': 10,
  1339. 'time_limit': 0,
  1340. 'verbose': 2,
  1341. 'update_order': update_order,
  1342. 'refine': False}
  1343. save_results = True
  1344. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1345. irrelevant_labels = None #
  1346. edge_required = False #
  1347. if not os.path.exists(dir_save):
  1348. os.makedirs(dir_save)
  1349. file_output = open(dir_save + 'output.txt', 'a')
  1350. sys.stdout = file_output
  1351. # print settings.
  1352. print('parameters:')
  1353. print('dataset name:', ds_name)
  1354. print('mpg_options:', mpg_options)
  1355. print('kernel_options:', kernel_options)
  1356. print('ged_options:', ged_options)
  1357. print('mge_options:', mge_options)
  1358. print('save_results:', save_results)
  1359. print('irrelevant_labels:', irrelevant_labels)
  1360. print()
  1361. # generate preimages.
  1362. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1363. print('\n-------------------------------------')
  1364. print('fit method:', fit_method, '\n')
  1365. mpg_options['fit_method'] = fit_method
  1366. try:
  1367. remove_best_graph(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)
  1368. except Exception as exp:
  1369. print('An exception occured when running this experiment:')
  1370. LOG_FILENAME = dir_save + 'error.txt'
  1371. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1372. logging.exception('')
  1373. print(repr(exp))
  1374. def xp_median_preimage_8_4():
  1375. """xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  1376. """
  1377. for update_order in [True, False]:
  1378. # set parameters.
  1379. ds_name = 'Monoterpenoides' #
  1380. mpg_options = {'fit_method': 'k-graphs',
  1381. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1382. 'ds_name': ds_name,
  1383. 'parallel': True, # False
  1384. 'time_limit_in_sec': 0,
  1385. 'max_itrs': 100, #
  1386. 'max_itrs_without_update': 3,
  1387. 'epsilon_residual': 0.01,
  1388. 'epsilon_ec': 0.1,
  1389. 'verbose': 2}
  1390. kernel_options = {'name': 'WeisfeilerLehman',
  1391. 'height': 4,
  1392. 'base_kernel': 'subtree',
  1393. 'parallel': 'imap_unordered',
  1394. # 'parallel': None,
  1395. 'n_jobs': multiprocessing.cpu_count(),
  1396. 'normalize': True,
  1397. 'verbose': 2}
  1398. ged_options = {'method': 'IPFP',
  1399. 'initialization_method': 'RANDOM', # 'NODE'
  1400. 'initial_solutions': initial_solutions, # 1
  1401. 'edit_cost': 'CONSTANT', #
  1402. 'attr_distance': 'euclidean',
  1403. 'ratio_runs_from_initial_solutions': 1,
  1404. 'threads': multiprocessing.cpu_count(),
  1405. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1406. mge_options = {'init_type': 'MEDOID',
  1407. 'random_inits': 10,
  1408. 'time_limit': 0,
  1409. 'verbose': 2,
  1410. 'update_order': update_order,
  1411. 'refine': False}
  1412. save_results = True
  1413. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1414. irrelevant_labels = None #
  1415. edge_required = False #
  1416. if not os.path.exists(dir_save):
  1417. os.makedirs(dir_save)
  1418. file_output = open(dir_save + 'output.txt', 'a')
  1419. sys.stdout = file_output
  1420. # print settings.
  1421. print('parameters:')
  1422. print('dataset name:', ds_name)
  1423. print('mpg_options:', mpg_options)
  1424. print('kernel_options:', kernel_options)
  1425. print('ged_options:', ged_options)
  1426. print('mge_options:', mge_options)
  1427. print('save_results:', save_results)
  1428. print('irrelevant_labels:', irrelevant_labels)
  1429. print()
  1430. # generate preimages.
  1431. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1432. print('\n-------------------------------------')
  1433. print('fit method:', fit_method, '\n')
  1434. mpg_options['fit_method'] = fit_method
  1435. try:
  1436. remove_best_graph(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)
  1437. except Exception as exp:
  1438. print('An exception occured when running this experiment:')
  1439. LOG_FILENAME = dir_save + 'error.txt'
  1440. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1441. logging.exception('')
  1442. print(repr(exp))
  1443. def xp_median_preimage_7_1():
  1444. """xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  1445. """
  1446. for update_order in [True, False]:
  1447. # set parameters.
  1448. ds_name = 'MUTAG' #
  1449. mpg_options = {'fit_method': 'k-graphs',
  1450. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1451. 'ds_name': ds_name,
  1452. 'parallel': True, # False
  1453. 'time_limit_in_sec': 0,
  1454. 'max_itrs': 100, #
  1455. 'max_itrs_without_update': 3,
  1456. 'epsilon_residual': 0.01,
  1457. 'epsilon_ec': 0.1,
  1458. 'verbose': 2}
  1459. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1460. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1461. kernel_options = {'name': 'StructuralSP',
  1462. 'edge_weight': None,
  1463. 'node_kernels': sub_kernels,
  1464. 'edge_kernels': sub_kernels,
  1465. 'compute_method': 'naive',
  1466. 'parallel': 'imap_unordered',
  1467. # 'parallel': None,
  1468. 'n_jobs': multiprocessing.cpu_count(),
  1469. 'normalize': True,
  1470. 'verbose': 2}
  1471. ged_options = {'method': 'IPFP',
  1472. 'initialization_method': 'RANDOM', # 'NODE'
  1473. 'initial_solutions': initial_solutions, # 1
  1474. 'edit_cost': 'CONSTANT', #
  1475. 'attr_distance': 'euclidean',
  1476. 'ratio_runs_from_initial_solutions': 1,
  1477. 'threads': multiprocessing.cpu_count(),
  1478. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1479. mge_options = {'init_type': 'MEDOID',
  1480. 'random_inits': 10,
  1481. 'time_limit': 0,
  1482. 'verbose': 2,
  1483. 'update_order': update_order,
  1484. 'refine': False}
  1485. save_results = True
  1486. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1487. irrelevant_labels = None #
  1488. edge_required = False #
  1489. if not os.path.exists(dir_save):
  1490. os.makedirs(dir_save)
  1491. file_output = open(dir_save + 'output.txt', 'a')
  1492. sys.stdout = file_output
  1493. # print settings.
  1494. print('parameters:')
  1495. print('dataset name:', ds_name)
  1496. print('mpg_options:', mpg_options)
  1497. print('kernel_options:', kernel_options)
  1498. print('ged_options:', ged_options)
  1499. print('mge_options:', mge_options)
  1500. print('save_results:', save_results)
  1501. print('irrelevant_labels:', irrelevant_labels)
  1502. print()
  1503. # generate preimages.
  1504. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1505. print('\n-------------------------------------')
  1506. print('fit method:', fit_method, '\n')
  1507. mpg_options['fit_method'] = fit_method
  1508. try:
  1509. remove_best_graph(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)
  1510. except Exception as exp:
  1511. print('An exception occured when running this experiment:')
  1512. LOG_FILENAME = dir_save + 'error.txt'
  1513. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1514. logging.exception('')
  1515. print(repr(exp))
  1516. def xp_median_preimage_7_2():
  1517. """xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  1518. """
  1519. for update_order in [True, False]:
  1520. # set parameters.
  1521. ds_name = 'MUTAG' #
  1522. mpg_options = {'fit_method': 'k-graphs',
  1523. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1524. 'ds_name': ds_name,
  1525. 'parallel': True, # False
  1526. 'time_limit_in_sec': 0,
  1527. 'max_itrs': 100, #
  1528. 'max_itrs_without_update': 3,
  1529. 'epsilon_residual': 0.01,
  1530. 'epsilon_ec': 0.1,
  1531. 'verbose': 2}
  1532. kernel_options = {'name': 'PathUpToH',
  1533. 'depth': 2, #
  1534. 'k_func': 'MinMax', #
  1535. 'compute_method': 'trie',
  1536. 'parallel': 'imap_unordered',
  1537. # 'parallel': None,
  1538. 'n_jobs': multiprocessing.cpu_count(),
  1539. 'normalize': True,
  1540. 'verbose': 2}
  1541. ged_options = {'method': 'IPFP',
  1542. 'initialization_method': 'RANDOM', # 'NODE'
  1543. 'initial_solutions': initial_solutions, # 1
  1544. 'edit_cost': 'CONSTANT', #
  1545. 'attr_distance': 'euclidean',
  1546. 'ratio_runs_from_initial_solutions': 1,
  1547. 'threads': multiprocessing.cpu_count(),
  1548. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1549. mge_options = {'init_type': 'MEDOID',
  1550. 'random_inits': 10,
  1551. 'time_limit': 0,
  1552. 'verbose': 2,
  1553. 'update_order': update_order,
  1554. 'refine': False}
  1555. save_results = True
  1556. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1557. irrelevant_labels = None #
  1558. edge_required = False #
  1559. if not os.path.exists(dir_save):
  1560. os.makedirs(dir_save)
  1561. file_output = open(dir_save + 'output.txt', 'a')
  1562. sys.stdout = file_output
  1563. # print settings.
  1564. print('parameters:')
  1565. print('dataset name:', ds_name)
  1566. print('mpg_options:', mpg_options)
  1567. print('kernel_options:', kernel_options)
  1568. print('ged_options:', ged_options)
  1569. print('mge_options:', mge_options)
  1570. print('save_results:', save_results)
  1571. print('irrelevant_labels:', irrelevant_labels)
  1572. print()
  1573. # generate preimages.
  1574. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1575. print('\n-------------------------------------')
  1576. print('fit method:', fit_method, '\n')
  1577. mpg_options['fit_method'] = fit_method
  1578. try:
  1579. remove_best_graph(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, cut_range=None)
  1580. except Exception as exp:
  1581. print('An exception occured when running experiment on xp_median_preimage_7_2:')
  1582. LOG_FILENAME = dir_save + 'error.txt'
  1583. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1584. logging.exception('')
  1585. print(repr(exp))
  1586. def xp_median_preimage_7_3():
  1587. """xp 7_3: MUTAG, Treelet, using CONSTANT.
  1588. """
  1589. for update_order in [True, False]:
  1590. from gklearn.utils.kernels import polynomialkernel
  1591. # set parameters.
  1592. ds_name = 'MUTAG' #
  1593. mpg_options = {'fit_method': 'k-graphs',
  1594. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1595. 'ds_name': ds_name,
  1596. 'parallel': True, # False
  1597. 'time_limit_in_sec': 0,
  1598. 'max_itrs': 100, #
  1599. 'max_itrs_without_update': 3,
  1600. 'epsilon_residual': 0.01,
  1601. 'epsilon_ec': 0.1,
  1602. 'verbose': 2}
  1603. pkernel = functools.partial(polynomialkernel, d=3, c=1e+8)
  1604. kernel_options = {'name': 'Treelet',
  1605. 'sub_kernel': pkernel,
  1606. 'parallel': 'imap_unordered',
  1607. # 'parallel': None,
  1608. 'n_jobs': multiprocessing.cpu_count(),
  1609. 'normalize': True,
  1610. 'verbose': 2}
  1611. ged_options = {'method': 'IPFP',
  1612. 'initialization_method': 'RANDOM', # 'NODE'
  1613. 'initial_solutions': initial_solutions, # 1
  1614. 'edit_cost': 'CONSTANT', #
  1615. 'attr_distance': 'euclidean',
  1616. 'ratio_runs_from_initial_solutions': 1,
  1617. 'threads': multiprocessing.cpu_count(),
  1618. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1619. mge_options = {'init_type': 'MEDOID',
  1620. 'random_inits': 10,
  1621. 'time_limit': 0,
  1622. 'verbose': 2,
  1623. 'update_order': update_order,
  1624. 'refine': False}
  1625. save_results = True
  1626. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1627. irrelevant_labels = None #
  1628. edge_required = False #
  1629. if not os.path.exists(dir_save):
  1630. os.makedirs(dir_save)
  1631. file_output = open(dir_save + 'output.txt', 'a')
  1632. sys.stdout = file_output
  1633. # print settings.
  1634. print('parameters:')
  1635. print('dataset name:', ds_name)
  1636. print('mpg_options:', mpg_options)
  1637. print('kernel_options:', kernel_options)
  1638. print('ged_options:', ged_options)
  1639. print('mge_options:', mge_options)
  1640. print('save_results:', save_results)
  1641. print('irrelevant_labels:', irrelevant_labels)
  1642. print()
  1643. # generate preimages.
  1644. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1645. print('\n-------------------------------------')
  1646. print('fit method:', fit_method, '\n')
  1647. mpg_options['fit_method'] = fit_method
  1648. try:
  1649. remove_best_graph(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)
  1650. except Exception as exp:
  1651. print('An exception occured when running this experiment:')
  1652. LOG_FILENAME = dir_save + 'error.txt'
  1653. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1654. logging.exception('')
  1655. print(repr(exp))
  1656. def xp_median_preimage_7_4():
  1657. """xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  1658. """
  1659. for update_order in [True, False]:
  1660. # set parameters.
  1661. ds_name = 'MUTAG' #
  1662. mpg_options = {'fit_method': 'k-graphs',
  1663. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1664. 'ds_name': ds_name,
  1665. 'parallel': True, # False
  1666. 'time_limit_in_sec': 0,
  1667. 'max_itrs': 100, #
  1668. 'max_itrs_without_update': 3,
  1669. 'epsilon_residual': 0.01,
  1670. 'epsilon_ec': 0.1,
  1671. 'verbose': 2}
  1672. kernel_options = {'name': 'WeisfeilerLehman',
  1673. 'height': 1,
  1674. 'base_kernel': 'subtree',
  1675. 'parallel': 'imap_unordered',
  1676. # 'parallel': None,
  1677. 'n_jobs': multiprocessing.cpu_count(),
  1678. 'normalize': True,
  1679. 'verbose': 2}
  1680. ged_options = {'method': 'IPFP',
  1681. 'initialization_method': 'RANDOM', # 'NODE'
  1682. 'initial_solutions': initial_solutions, # 1
  1683. 'edit_cost': 'CONSTANT', #
  1684. 'attr_distance': 'euclidean',
  1685. 'ratio_runs_from_initial_solutions': 1,
  1686. 'threads': multiprocessing.cpu_count(),
  1687. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1688. mge_options = {'init_type': 'MEDOID',
  1689. 'random_inits': 10,
  1690. 'time_limit': 0,
  1691. 'verbose': 2,
  1692. 'update_order': update_order,
  1693. 'refine': False}
  1694. save_results = True
  1695. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1696. irrelevant_labels = None #
  1697. edge_required = False #
  1698. if not os.path.exists(dir_save):
  1699. os.makedirs(dir_save)
  1700. file_output = open(dir_save + 'output.txt', 'a')
  1701. sys.stdout = file_output
  1702. # print settings.
  1703. print('parameters:')
  1704. print('dataset name:', ds_name)
  1705. print('mpg_options:', mpg_options)
  1706. print('kernel_options:', kernel_options)
  1707. print('ged_options:', ged_options)
  1708. print('mge_options:', mge_options)
  1709. print('save_results:', save_results)
  1710. print('irrelevant_labels:', irrelevant_labels)
  1711. print()
  1712. # generate preimages.
  1713. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  1714. print('\n-------------------------------------')
  1715. print('fit method:', fit_method, '\n')
  1716. mpg_options['fit_method'] = fit_method
  1717. try:
  1718. remove_best_graph(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)
  1719. except Exception as exp:
  1720. print('An exception occured when running this experiment:')
  1721. LOG_FILENAME = dir_save + 'error.txt'
  1722. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1723. logging.exception('')
  1724. print(repr(exp))
  1725. def xp_median_preimage_6_1():
  1726. """xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  1727. """
  1728. for update_order in [True, False]:
  1729. # set parameters.
  1730. ds_name = 'COIL-RAG' #
  1731. mpg_options = {'fit_method': 'k-graphs',
  1732. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  1733. 'ds_name': ds_name,
  1734. 'parallel': True, # False
  1735. 'time_limit_in_sec': 0,
  1736. 'max_itrs': 100,
  1737. 'max_itrs_without_update': 3,
  1738. 'epsilon_residual': 0.01,
  1739. 'epsilon_ec': 0.1,
  1740. 'verbose': 2}
  1741. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1742. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1743. kernel_options = {'name': 'StructuralSP',
  1744. 'edge_weight': None,
  1745. 'node_kernels': sub_kernels,
  1746. 'edge_kernels': sub_kernels,
  1747. 'compute_method': 'naive',
  1748. 'parallel': 'imap_unordered',
  1749. # 'parallel': None,
  1750. 'n_jobs': multiprocessing.cpu_count(),
  1751. 'normalize': True,
  1752. 'verbose': 2}
  1753. ged_options = {'method': 'IPFP',
  1754. 'initialization_method': 'RANDOM', # 'NODE'
  1755. 'initial_solutions': initial_solutions, # 1
  1756. 'edit_cost': 'NON_SYMBOLIC', #
  1757. 'attr_distance': 'euclidean',
  1758. 'ratio_runs_from_initial_solutions': 1,
  1759. 'threads': multiprocessing.cpu_count(),
  1760. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1761. mge_options = {'init_type': 'MEDOID',
  1762. 'random_inits': 10,
  1763. 'time_limit': 0,
  1764. 'verbose': 2,
  1765. 'update_order': update_order,
  1766. 'randomness': 'REAL',
  1767. 'refine': False}
  1768. save_results = True
  1769. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1770. irrelevant_labels = None #
  1771. edge_required = False #
  1772. if not os.path.exists(dir_save):
  1773. os.makedirs(dir_save)
  1774. file_output = open(dir_save + 'output.txt', 'a')
  1775. sys.stdout = file_output
  1776. # print settings.
  1777. print('parameters:')
  1778. print('dataset name:', ds_name)
  1779. print('mpg_options:', mpg_options)
  1780. print('kernel_options:', kernel_options)
  1781. print('ged_options:', ged_options)
  1782. print('mge_options:', mge_options)
  1783. print('save_results:', save_results)
  1784. print('irrelevant_labels:', irrelevant_labels)
  1785. print()
  1786. # generate preimages.
  1787. for fit_method in ['k-graphs'] + ['random'] * num_random:
  1788. print('\n-------------------------------------')
  1789. print('fit method:', fit_method, '\n')
  1790. mpg_options['fit_method'] = fit_method
  1791. try:
  1792. remove_best_graph(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)
  1793. except Exception as exp:
  1794. print('An exception occured when running experiment on xp_median_preimage_6_1:')
  1795. LOG_FILENAME = dir_save + 'error.txt'
  1796. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1797. logging.exception('')
  1798. print(repr(exp))
  1799. def xp_median_preimage_6_2():
  1800. """xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  1801. """
  1802. for update_order in [True, False]:
  1803. # set parameters.
  1804. ds_name = 'COIL-RAG' #
  1805. mpg_options = {'fit_method': 'k-graphs',
  1806. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  1807. 'ds_name': ds_name,
  1808. 'parallel': True, # False
  1809. 'time_limit_in_sec': 0,
  1810. 'max_itrs': 100,
  1811. 'max_itrs_without_update': 3,
  1812. 'epsilon_residual': 0.01,
  1813. 'epsilon_ec': 0.1,
  1814. 'verbose': 2}
  1815. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1816. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1817. kernel_options = {'name': 'ShortestPath',
  1818. 'edge_weight': None,
  1819. 'node_kernels': sub_kernels,
  1820. 'parallel': 'imap_unordered',
  1821. # 'parallel': None,
  1822. 'n_jobs': multiprocessing.cpu_count(),
  1823. 'normalize': True,
  1824. 'verbose': 2}
  1825. ged_options = {'method': 'IPFP',
  1826. 'initialization_method': 'RANDOM', # 'NODE'
  1827. 'initial_solutions': initial_solutions, # 1
  1828. 'edit_cost': 'NON_SYMBOLIC', #
  1829. 'attr_distance': 'euclidean',
  1830. 'ratio_runs_from_initial_solutions': 1,
  1831. 'threads': multiprocessing.cpu_count(),
  1832. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1833. mge_options = {'init_type': 'MEDOID',
  1834. 'random_inits': 10,
  1835. 'time_limit': 0,
  1836. 'verbose': 2,
  1837. 'update_order': update_order,
  1838. 'randomness': 'REAL',
  1839. 'refine': False}
  1840. save_results = True
  1841. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1842. irrelevant_labels = None #
  1843. edge_required = True #
  1844. if not os.path.exists(dir_save):
  1845. os.makedirs(dir_save)
  1846. file_output = open(dir_save + 'output.txt', 'a')
  1847. sys.stdout = file_output
  1848. # print settings.
  1849. print('parameters:')
  1850. print('dataset name:', ds_name)
  1851. print('mpg_options:', mpg_options)
  1852. print('kernel_options:', kernel_options)
  1853. print('ged_options:', ged_options)
  1854. print('mge_options:', mge_options)
  1855. print('save_results:', save_results)
  1856. print('irrelevant_labels:', irrelevant_labels)
  1857. print()
  1858. # generate preimages.
  1859. for fit_method in ['k-graphs'] + ['random'] * num_random:
  1860. print('\n-------------------------------------')
  1861. print('fit method:', fit_method, '\n')
  1862. mpg_options['fit_method'] = fit_method
  1863. try:
  1864. remove_best_graph(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)
  1865. except Exception as exp:
  1866. print('An exception occured when running experiment on xp_median_preimage_6_2:')
  1867. LOG_FILENAME = dir_save + 'error.txt'
  1868. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1869. logging.exception('')
  1870. print(repr(exp))
  1871. def xp_median_preimage_5_1():
  1872. """xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  1873. """
  1874. for update_order in [True, False]:
  1875. # set parameters.
  1876. ds_name = 'FRANKENSTEIN' #
  1877. mpg_options = {'fit_method': 'k-graphs',
  1878. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  1879. 'ds_name': ds_name,
  1880. 'parallel': True, # False
  1881. 'time_limit_in_sec': 0,
  1882. 'max_itrs': 100,
  1883. 'max_itrs_without_update': 3,
  1884. 'epsilon_residual': 0.01,
  1885. 'epsilon_ec': 0.1,
  1886. 'verbose': 2}
  1887. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1888. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1889. kernel_options = {'name': 'StructuralSP',
  1890. 'edge_weight': None,
  1891. 'node_kernels': sub_kernels,
  1892. 'edge_kernels': sub_kernels,
  1893. 'compute_method': 'naive',
  1894. 'parallel': 'imap_unordered',
  1895. # 'parallel': None,
  1896. 'n_jobs': multiprocessing.cpu_count(),
  1897. 'normalize': True,
  1898. 'verbose': 2}
  1899. ged_options = {'method': 'IPFP',
  1900. 'initialization_method': 'RANDOM', # 'NODE'
  1901. 'initial_solutions': initial_solutions, # 1
  1902. 'edit_cost': 'NON_SYMBOLIC',
  1903. 'attr_distance': 'euclidean',
  1904. 'ratio_runs_from_initial_solutions': 1,
  1905. 'threads': multiprocessing.cpu_count(),
  1906. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1907. mge_options = {'init_type': 'MEDOID',
  1908. 'random_inits': 10,
  1909. 'time_limit': 0,
  1910. 'verbose': 2,
  1911. 'update_order': update_order,
  1912. 'refine': False}
  1913. save_results = True
  1914. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1915. irrelevant_labels = None #
  1916. edge_required = False #
  1917. if not os.path.exists(dir_save):
  1918. os.makedirs(dir_save)
  1919. file_output = open(dir_save + 'output.txt', 'a')
  1920. sys.stdout = file_output
  1921. # print settings.
  1922. print('parameters:')
  1923. print('dataset name:', ds_name)
  1924. print('mpg_options:', mpg_options)
  1925. print('kernel_options:', kernel_options)
  1926. print('ged_options:', ged_options)
  1927. print('mge_options:', mge_options)
  1928. print('save_results:', save_results)
  1929. print('irrelevant_labels:', irrelevant_labels)
  1930. print()
  1931. # generate preimages.
  1932. for fit_method in ['k-graphs'] + ['random'] * num_random:
  1933. print('\n-------------------------------------')
  1934. print('fit method:', fit_method, '\n')
  1935. mpg_options['fit_method'] = fit_method
  1936. try:
  1937. remove_best_graph(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)
  1938. except Exception as exp:
  1939. print('An exception occured when running this experiment:')
  1940. LOG_FILENAME = dir_save + 'error.txt'
  1941. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1942. logging.exception('')
  1943. print(repr(exp))
  1944. def xp_median_preimage_4_1():
  1945. """xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  1946. """
  1947. for update_order in [True, False]:
  1948. # set parameters.
  1949. ds_name = 'COLORS-3' #
  1950. mpg_options = {'fit_method': 'k-graphs',
  1951. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  1952. 'ds_name': ds_name,
  1953. 'parallel': True, # False
  1954. 'time_limit_in_sec': 0,
  1955. 'max_itrs': 100,
  1956. 'max_itrs_without_update': 3,
  1957. 'epsilon_residual': 0.01,
  1958. 'epsilon_ec': 0.1,
  1959. 'verbose': 2}
  1960. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1961. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1962. kernel_options = {'name': 'StructuralSP',
  1963. 'edge_weight': None,
  1964. 'node_kernels': sub_kernels,
  1965. 'edge_kernels': sub_kernels,
  1966. 'compute_method': 'naive',
  1967. 'parallel': 'imap_unordered',
  1968. # 'parallel': None,
  1969. 'n_jobs': multiprocessing.cpu_count(),
  1970. 'normalize': True,
  1971. 'verbose': 2}
  1972. ged_options = {'method': 'IPFP',
  1973. 'initialization_method': 'RANDOM', # 'NODE'
  1974. 'initial_solutions': initial_solutions, # 1
  1975. 'edit_cost': 'NON_SYMBOLIC',
  1976. 'attr_distance': 'euclidean',
  1977. 'ratio_runs_from_initial_solutions': 1,
  1978. 'threads': multiprocessing.cpu_count(),
  1979. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1980. mge_options = {'init_type': 'MEDOID',
  1981. 'random_inits': 10,
  1982. 'time_limit': 0,
  1983. 'verbose': 2,
  1984. 'update_order': update_order,
  1985. 'refine': False}
  1986. save_results = True
  1987. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1988. irrelevant_labels = None #
  1989. edge_required = False #
  1990. if not os.path.exists(dir_save):
  1991. os.makedirs(dir_save)
  1992. file_output = open(dir_save + 'output.txt', 'a')
  1993. sys.stdout = file_output
  1994. # print settings.
  1995. print('parameters:')
  1996. print('dataset name:', ds_name)
  1997. print('mpg_options:', mpg_options)
  1998. print('kernel_options:', kernel_options)
  1999. print('ged_options:', ged_options)
  2000. print('mge_options:', mge_options)
  2001. print('save_results:', save_results)
  2002. print('irrelevant_labels:', irrelevant_labels)
  2003. print()
  2004. # generate preimages.
  2005. for fit_method in ['k-graphs'] + ['random'] * num_random:
  2006. print('\n-------------------------------------')
  2007. print('fit method:', fit_method, '\n')
  2008. mpg_options['fit_method'] = fit_method
  2009. try:
  2010. remove_best_graph(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)
  2011. except Exception as exp:
  2012. print('An exception occured when running this experiment:')
  2013. LOG_FILENAME = dir_save + 'error.txt'
  2014. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2015. logging.exception('')
  2016. print(repr(exp))
  2017. def xp_median_preimage_3_2():
  2018. """xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  2019. """
  2020. for update_order in [True, False]:
  2021. # set parameters.
  2022. ds_name = 'Fingerprint' #
  2023. mpg_options = {'fit_method': 'k-graphs',
  2024. 'init_ecc': [0.525, 0.525, 0.01, 0.125, 0.125], #
  2025. 'ds_name': ds_name,
  2026. 'parallel': True, # False
  2027. 'time_limit_in_sec': 0,
  2028. 'max_itrs': 100,
  2029. 'max_itrs_without_update': 3,
  2030. 'epsilon_residual': 0.01,
  2031. 'epsilon_ec': 0.1,
  2032. 'verbose': 2}
  2033. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2034. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2035. kernel_options = {'name': 'ShortestPath',
  2036. 'edge_weight': None,
  2037. 'node_kernels': sub_kernels,
  2038. 'parallel': 'imap_unordered',
  2039. # 'parallel': None,
  2040. 'n_jobs': multiprocessing.cpu_count(),
  2041. 'normalize': True,
  2042. 'verbose': 2}
  2043. ged_options = {'method': 'IPFP',
  2044. 'initialization_method': 'RANDOM', # 'NODE'
  2045. 'initial_solutions': initial_solutions, # 1
  2046. 'edit_cost': 'LETTER2',
  2047. 'attr_distance': 'euclidean',
  2048. 'ratio_runs_from_initial_solutions': 1,
  2049. 'threads': multiprocessing.cpu_count(),
  2050. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2051. mge_options = {'init_type': 'MEDOID',
  2052. 'random_inits': 10,
  2053. 'time_limit': 0,
  2054. 'verbose': 2,
  2055. 'update_order': update_order,
  2056. 'refine': False}
  2057. save_results = True
  2058. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2059. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  2060. edge_required = True #
  2061. if not os.path.exists(dir_save):
  2062. os.makedirs(dir_save)
  2063. file_output = open(dir_save + 'output.txt', 'a')
  2064. sys.stdout = file_output
  2065. # print settings.
  2066. print('parameters:')
  2067. print('dataset name:', ds_name)
  2068. print('mpg_options:', mpg_options)
  2069. print('kernel_options:', kernel_options)
  2070. print('ged_options:', ged_options)
  2071. print('mge_options:', mge_options)
  2072. print('save_results:', save_results)
  2073. print('irrelevant_labels:', irrelevant_labels)
  2074. print()
  2075. # generate preimages.
  2076. for fit_method in ['k-graphs'] + ['random'] * num_random:
  2077. print('\n-------------------------------------')
  2078. print('fit method:', fit_method, '\n')
  2079. mpg_options['fit_method'] = fit_method
  2080. try:
  2081. remove_best_graph(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)
  2082. except Exception as exp:
  2083. print('An exception occured when running this experiment:')
  2084. LOG_FILENAME = dir_save + 'error.txt'
  2085. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2086. logging.exception('')
  2087. print(repr(exp))
  2088. def xp_median_preimage_3_1():
  2089. """xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  2090. """
  2091. for update_order in [True, False]:
  2092. # set parameters.
  2093. ds_name = 'Fingerprint' #
  2094. mpg_options = {'fit_method': 'k-graphs',
  2095. 'init_ecc': [0.525, 0.525, 0.01, 0.125, 0.125], #
  2096. 'ds_name': ds_name,
  2097. 'parallel': True, # False
  2098. 'time_limit_in_sec': 0,
  2099. 'max_itrs': 100,
  2100. 'max_itrs_without_update': 3,
  2101. 'epsilon_residual': 0.01,
  2102. 'epsilon_ec': 0.1,
  2103. 'verbose': 2}
  2104. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2105. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2106. kernel_options = {'name': 'StructuralSP',
  2107. 'edge_weight': None,
  2108. 'node_kernels': sub_kernels,
  2109. 'edge_kernels': sub_kernels,
  2110. 'compute_method': 'naive',
  2111. 'parallel': 'imap_unordered',
  2112. # 'parallel': None,
  2113. 'n_jobs': multiprocessing.cpu_count(),
  2114. 'normalize': True,
  2115. 'verbose': 2}
  2116. ged_options = {'method': 'IPFP',
  2117. 'initialization_method': 'RANDOM', # 'NODE'
  2118. 'initial_solutions': initial_solutions, # 1
  2119. 'edit_cost': 'LETTER2',
  2120. 'attr_distance': 'euclidean',
  2121. 'ratio_runs_from_initial_solutions': 1,
  2122. 'threads': multiprocessing.cpu_count(),
  2123. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2124. mge_options = {'init_type': 'MEDOID',
  2125. 'random_inits': 10,
  2126. 'time_limit': 0,
  2127. 'verbose': 2,
  2128. 'update_order': update_order,
  2129. 'refine': False}
  2130. save_results = True
  2131. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2132. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  2133. edge_required = False #
  2134. if not os.path.exists(dir_save):
  2135. os.makedirs(dir_save)
  2136. file_output = open(dir_save + 'output.txt', 'a')
  2137. sys.stdout = file_output
  2138. # print settings.
  2139. print('parameters:')
  2140. print('dataset name:', ds_name)
  2141. print('mpg_options:', mpg_options)
  2142. print('kernel_options:', kernel_options)
  2143. print('ged_options:', ged_options)
  2144. print('mge_options:', mge_options)
  2145. print('save_results:', save_results)
  2146. print('irrelevant_labels:', irrelevant_labels)
  2147. print()
  2148. # generate preimages.
  2149. for fit_method in ['k-graphs'] + ['random'] * num_random:
  2150. print('\n-------------------------------------')
  2151. print('fit method:', fit_method, '\n')
  2152. mpg_options['fit_method'] = fit_method
  2153. try:
  2154. remove_best_graph(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)
  2155. except Exception as exp:
  2156. print('An exception occured when running this experiment:')
  2157. LOG_FILENAME = dir_save + 'error.txt'
  2158. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2159. logging.exception('')
  2160. print(repr(exp))
  2161. def xp_median_preimage_2_1():
  2162. """xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  2163. """
  2164. for update_order in [True, False]:
  2165. # set parameters.
  2166. ds_name = 'COIL-DEL' #
  2167. mpg_options = {'fit_method': 'k-graphs',
  2168. 'init_ecc': [3, 3, 1, 3, 3],
  2169. 'ds_name': ds_name,
  2170. 'parallel': True, # False
  2171. 'time_limit_in_sec': 0,
  2172. 'max_itrs': 100,
  2173. 'max_itrs_without_update': 3,
  2174. 'epsilon_residual': 0.01,
  2175. 'epsilon_ec': 0.1,
  2176. 'verbose': 2}
  2177. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2178. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2179. kernel_options = {'name': 'StructuralSP',
  2180. 'edge_weight': None,
  2181. 'node_kernels': sub_kernels,
  2182. 'edge_kernels': sub_kernels,
  2183. 'compute_method': 'naive',
  2184. 'parallel': 'imap_unordered',
  2185. # 'parallel': None,
  2186. 'n_jobs': multiprocessing.cpu_count(),
  2187. 'normalize': True,
  2188. 'verbose': 2}
  2189. ged_options = {'method': 'IPFP',
  2190. 'initialization_method': 'RANDOM', # 'NODE'
  2191. 'initial_solutions': initial_solutions, # 1
  2192. 'edit_cost': 'LETTER2',
  2193. 'attr_distance': 'euclidean',
  2194. 'ratio_runs_from_initial_solutions': 1,
  2195. 'threads': multiprocessing.cpu_count(),
  2196. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2197. mge_options = {'init_type': 'MEDOID',
  2198. 'random_inits': 10,
  2199. 'time_limit': 0,
  2200. 'verbose': 2,
  2201. 'update_order': update_order,
  2202. 'refine': False}
  2203. save_results = True
  2204. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.node_attrs/' + ('update_order/' if update_order else '')
  2205. irrelevant_labels = {'edge_labels': ['valence']}
  2206. if not os.path.exists(dir_save):
  2207. os.makedirs(dir_save)
  2208. file_output = open(dir_save + 'output.txt', 'a')
  2209. sys.stdout = file_output
  2210. # print settings.
  2211. print('parameters:')
  2212. print('dataset name:', ds_name)
  2213. print('mpg_options:', mpg_options)
  2214. print('kernel_options:', kernel_options)
  2215. print('ged_options:', ged_options)
  2216. print('mge_options:', mge_options)
  2217. print('save_results:', save_results)
  2218. print('irrelevant_labels:', irrelevant_labels)
  2219. print()
  2220. # # compute gram matrices for each class a priori.
  2221. # print('Compute gram matrices for each class a priori.')
  2222. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  2223. # generate preimages.
  2224. for fit_method in ['k-graphs'] + ['random'] * num_random:
  2225. print('\n-------------------------------------')
  2226. print('fit method:', fit_method, '\n')
  2227. mpg_options['fit_method'] = fit_method
  2228. try:
  2229. remove_best_graph(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)
  2230. except Exception as exp:
  2231. print('An exception occured when running this experiment:')
  2232. LOG_FILENAME = dir_save + 'error.txt'
  2233. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2234. logging.exception('')
  2235. print(repr(exp))
  2236. def xp_median_preimage_1_1():
  2237. """xp 1_1: Letter-high, StructuralSP.
  2238. """
  2239. for update_order in [True, False]:
  2240. # set parameters.
  2241. ds_name = 'Letter-high'
  2242. mpg_options = {'fit_method': 'k-graphs',
  2243. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  2244. 'ds_name': ds_name,
  2245. 'parallel': True, # False
  2246. 'time_limit_in_sec': 0,
  2247. 'max_itrs': 100,
  2248. 'max_itrs_without_update': 3,
  2249. 'epsilon_residual': 0.01,
  2250. 'epsilon_ec': 0.1,
  2251. 'verbose': 2}
  2252. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2253. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2254. kernel_options = {'name': 'StructuralSP',
  2255. 'edge_weight': None,
  2256. 'node_kernels': sub_kernels,
  2257. 'edge_kernels': sub_kernels,
  2258. 'compute_method': 'naive',
  2259. 'parallel': 'imap_unordered',
  2260. # 'parallel': None,
  2261. 'n_jobs': multiprocessing.cpu_count(),
  2262. 'normalize': True,
  2263. 'verbose': 2}
  2264. ged_options = {'method': 'IPFP',
  2265. 'initialization_method': 'RANDOM', # 'NODE'
  2266. 'initial_solutions': initial_solutions, # 1
  2267. 'edit_cost': 'LETTER2',
  2268. 'attr_distance': 'euclidean',
  2269. 'ratio_runs_from_initial_solutions': 1,
  2270. 'threads': multiprocessing.cpu_count(),
  2271. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2272. mge_options = {'init_type': 'MEDOID',
  2273. 'random_inits': 10,
  2274. 'time_limit': 0,
  2275. 'verbose': 2,
  2276. 'update_order': update_order,
  2277. 'randomness': 'REAL',
  2278. 'refine': False}
  2279. save_results = True
  2280. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2281. if not os.path.exists(dir_save):
  2282. os.makedirs(dir_save)
  2283. file_output = open(dir_save + 'output.txt', 'a')
  2284. sys.stdout = file_output
  2285. # print settings.
  2286. print('parameters:')
  2287. print('dataset name:', ds_name)
  2288. print('mpg_options:', mpg_options)
  2289. print('kernel_options:', kernel_options)
  2290. print('ged_options:', ged_options)
  2291. print('mge_options:', mge_options)
  2292. print('save_results:', save_results)
  2293. # generate preimages.
  2294. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2295. print('\n-------------------------------------')
  2296. print('fit method:', fit_method, '\n')
  2297. mpg_options['fit_method'] = fit_method
  2298. try:
  2299. remove_best_graph(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)
  2300. except Exception as exp:
  2301. print('An exception occured when running experiment on xp_median_preimage_1_1:')
  2302. LOG_FILENAME = dir_save + 'error.txt'
  2303. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2304. logging.exception('')
  2305. print(repr(exp))
  2306. def xp_median_preimage_1_2():
  2307. """xp 1_2: Letter-high, ShortestPath.
  2308. """
  2309. for update_order in [True, False]:
  2310. # set parameters.
  2311. ds_name = 'Letter-high'
  2312. mpg_options = {'fit_method': 'k-graphs',
  2313. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  2314. 'ds_name': ds_name,
  2315. 'parallel': True, # False
  2316. 'time_limit_in_sec': 0,
  2317. 'max_itrs': 100,
  2318. 'max_itrs_without_update': 3,
  2319. 'epsilon_residual': 0.01,
  2320. 'epsilon_ec': 0.1,
  2321. 'verbose': 2}
  2322. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2323. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2324. kernel_options = {'name': 'ShortestPath',
  2325. 'edge_weight': None,
  2326. 'node_kernels': sub_kernels,
  2327. 'parallel': 'imap_unordered',
  2328. # 'parallel': None,
  2329. 'n_jobs': multiprocessing.cpu_count(),
  2330. 'normalize': True,
  2331. 'verbose': 2}
  2332. ged_options = {'method': 'IPFP',
  2333. 'initialization_method': 'RANDOM', # 'NODE'
  2334. 'initial_solutions': initial_solutions, # 1
  2335. 'edit_cost': 'LETTER2',
  2336. 'attr_distance': 'euclidean',
  2337. 'ratio_runs_from_initial_solutions': 1,
  2338. 'threads': multiprocessing.cpu_count(),
  2339. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2340. mge_options = {'init_type': 'MEDOID',
  2341. 'random_inits': 10,
  2342. 'time_limit': 0,
  2343. 'verbose': 2,
  2344. 'update_order': update_order,
  2345. 'randomness': 'REAL',
  2346. 'refine': False}
  2347. save_results = True
  2348. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2349. irrelevant_labels = None #
  2350. edge_required = True #
  2351. if not os.path.exists(dir_save):
  2352. os.makedirs(dir_save)
  2353. file_output = open(dir_save + 'output.txt', 'a')
  2354. sys.stdout = file_output
  2355. # print settings.
  2356. print('parameters:')
  2357. print('dataset name:', ds_name)
  2358. print('mpg_options:', mpg_options)
  2359. print('kernel_options:', kernel_options)
  2360. print('ged_options:', ged_options)
  2361. print('mge_options:', mge_options)
  2362. print('save_results:', save_results)
  2363. print('irrelevant_labels:', irrelevant_labels)
  2364. print()
  2365. # generate preimages.
  2366. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2367. print('\n-------------------------------------')
  2368. print('fit method:', fit_method, '\n')
  2369. mpg_options['fit_method'] = fit_method
  2370. try:
  2371. remove_best_graph(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)
  2372. except Exception as exp:
  2373. print('An exception occured when running experiment on xp_median_preimage_1_2:')
  2374. LOG_FILENAME = dir_save + 'error.txt'
  2375. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2376. logging.exception('')
  2377. print(repr(exp))
  2378. def xp_median_preimage_10_1():
  2379. """xp 10_1: Letter-med, StructuralSP.
  2380. """
  2381. for update_order in [True, False]:
  2382. # set parameters.
  2383. ds_name = 'Letter-med'
  2384. mpg_options = {'fit_method': 'k-graphs',
  2385. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  2386. 'ds_name': ds_name,
  2387. 'parallel': True, # False
  2388. 'time_limit_in_sec': 0,
  2389. 'max_itrs': 100,
  2390. 'max_itrs_without_update': 3,
  2391. 'epsilon_residual': 0.01,
  2392. 'epsilon_ec': 0.1,
  2393. 'verbose': 2}
  2394. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2395. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2396. kernel_options = {'name': 'StructuralSP',
  2397. 'edge_weight': None,
  2398. 'node_kernels': sub_kernels,
  2399. 'edge_kernels': sub_kernels,
  2400. 'compute_method': 'naive',
  2401. 'parallel': 'imap_unordered',
  2402. # 'parallel': None,
  2403. 'n_jobs': multiprocessing.cpu_count(),
  2404. 'normalize': True,
  2405. 'verbose': 2}
  2406. ged_options = {'method': 'IPFP',
  2407. 'initialization_method': 'RANDOM', # 'NODE'
  2408. 'initial_solutions': initial_solutions, # 1
  2409. 'edit_cost': 'LETTER2',
  2410. 'attr_distance': 'euclidean',
  2411. 'ratio_runs_from_initial_solutions': 1,
  2412. 'threads': multiprocessing.cpu_count(),
  2413. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2414. mge_options = {'init_type': 'MEDOID',
  2415. 'random_inits': 10,
  2416. 'time_limit': 0,
  2417. 'verbose': 2,
  2418. 'update_order': update_order,
  2419. 'randomness': 'REAL',
  2420. 'refine': False}
  2421. save_results = True
  2422. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2423. if not os.path.exists(dir_save):
  2424. os.makedirs(dir_save)
  2425. file_output = open(dir_save + 'output.txt', 'a')
  2426. sys.stdout = file_output
  2427. # print settings.
  2428. print('parameters:')
  2429. print('dataset name:', ds_name)
  2430. print('mpg_options:', mpg_options)
  2431. print('kernel_options:', kernel_options)
  2432. print('ged_options:', ged_options)
  2433. print('mge_options:', mge_options)
  2434. print('save_results:', save_results)
  2435. # generate preimages.
  2436. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2437. print('\n-------------------------------------')
  2438. print('fit method:', fit_method, '\n')
  2439. mpg_options['fit_method'] = fit_method
  2440. try:
  2441. remove_best_graph(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)
  2442. except Exception as exp:
  2443. print('An exception occured when running experiment on xp_median_preimage_10_1:')
  2444. LOG_FILENAME = dir_save + 'error.txt'
  2445. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2446. logging.exception('')
  2447. print(repr(exp))
  2448. def xp_median_preimage_10_2():
  2449. """xp 10_2: Letter-med, ShortestPath.
  2450. """
  2451. for update_order in [True, False]:
  2452. # set parameters.
  2453. ds_name = 'Letter-med'
  2454. mpg_options = {'fit_method': 'k-graphs',
  2455. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  2456. 'ds_name': ds_name,
  2457. 'parallel': True, # False
  2458. 'time_limit_in_sec': 0,
  2459. 'max_itrs': 100,
  2460. 'max_itrs_without_update': 3,
  2461. 'epsilon_residual': 0.01,
  2462. 'epsilon_ec': 0.1,
  2463. 'verbose': 2}
  2464. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2465. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2466. kernel_options = {'name': 'ShortestPath',
  2467. 'edge_weight': None,
  2468. 'node_kernels': sub_kernels,
  2469. 'parallel': 'imap_unordered',
  2470. # 'parallel': None,
  2471. 'n_jobs': multiprocessing.cpu_count(),
  2472. 'normalize': True,
  2473. 'verbose': 2}
  2474. ged_options = {'method': 'IPFP',
  2475. 'initialization_method': 'RANDOM', # 'NODE'
  2476. 'initial_solutions': initial_solutions, # 1
  2477. 'edit_cost': 'LETTER2',
  2478. 'attr_distance': 'euclidean',
  2479. 'ratio_runs_from_initial_solutions': 1,
  2480. 'threads': multiprocessing.cpu_count(),
  2481. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2482. mge_options = {'init_type': 'MEDOID',
  2483. 'random_inits': 10,
  2484. 'time_limit': 0,
  2485. 'verbose': 2,
  2486. 'update_order': update_order,
  2487. 'randomness': 'REAL',
  2488. 'refine': False}
  2489. save_results = True
  2490. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2491. irrelevant_labels = None #
  2492. edge_required = True #
  2493. if not os.path.exists(dir_save):
  2494. os.makedirs(dir_save)
  2495. file_output = open(dir_save + 'output.txt', 'a')
  2496. sys.stdout = file_output
  2497. # print settings.
  2498. print('parameters:')
  2499. print('dataset name:', ds_name)
  2500. print('mpg_options:', mpg_options)
  2501. print('kernel_options:', kernel_options)
  2502. print('ged_options:', ged_options)
  2503. print('mge_options:', mge_options)
  2504. print('save_results:', save_results)
  2505. print('irrelevant_labels:', irrelevant_labels)
  2506. print()
  2507. # generate preimages.
  2508. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2509. print('\n-------------------------------------')
  2510. print('fit method:', fit_method, '\n')
  2511. mpg_options['fit_method'] = fit_method
  2512. try:
  2513. remove_best_graph(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)
  2514. except Exception as exp:
  2515. print('An exception occured when running experiment on xp_median_preimage_10_2:')
  2516. LOG_FILENAME = dir_save + 'error.txt'
  2517. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2518. logging.exception('')
  2519. print(repr(exp))
  2520. def xp_median_preimage_11_1():
  2521. """xp 11_1: Letter-low, StructuralSP.
  2522. """
  2523. for update_order in [True, False]:
  2524. # set parameters.
  2525. ds_name = 'Letter-low'
  2526. mpg_options = {'fit_method': 'k-graphs',
  2527. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  2528. 'ds_name': ds_name,
  2529. 'parallel': True, # False
  2530. 'time_limit_in_sec': 0,
  2531. 'max_itrs': 100,
  2532. 'max_itrs_without_update': 3,
  2533. 'epsilon_residual': 0.01,
  2534. 'epsilon_ec': 0.1,
  2535. 'verbose': 2}
  2536. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2537. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2538. kernel_options = {'name': 'StructuralSP',
  2539. 'edge_weight': None,
  2540. 'node_kernels': sub_kernels,
  2541. 'edge_kernels': sub_kernels,
  2542. 'compute_method': 'naive',
  2543. 'parallel': 'imap_unordered',
  2544. # 'parallel': None,
  2545. 'n_jobs': multiprocessing.cpu_count(),
  2546. 'normalize': True,
  2547. 'verbose': 2}
  2548. ged_options = {'method': 'IPFP',
  2549. 'initialization_method': 'RANDOM', # 'NODE'
  2550. 'initial_solutions': initial_solutions, # 1
  2551. 'edit_cost': 'LETTER2',
  2552. 'attr_distance': 'euclidean',
  2553. 'ratio_runs_from_initial_solutions': 1,
  2554. 'threads': multiprocessing.cpu_count(),
  2555. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2556. mge_options = {'init_type': 'MEDOID',
  2557. 'random_inits': 10,
  2558. 'time_limit': 0,
  2559. 'verbose': 2,
  2560. 'update_order': update_order,
  2561. 'randomness': 'REAL',
  2562. 'refine': False}
  2563. save_results = True
  2564. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2565. if not os.path.exists(dir_save):
  2566. os.makedirs(dir_save)
  2567. file_output = open(dir_save + 'output.txt', 'a')
  2568. sys.stdout = file_output
  2569. # print settings.
  2570. print('parameters:')
  2571. print('dataset name:', ds_name)
  2572. print('mpg_options:', mpg_options)
  2573. print('kernel_options:', kernel_options)
  2574. print('ged_options:', ged_options)
  2575. print('mge_options:', mge_options)
  2576. print('save_results:', save_results)
  2577. # generate preimages.
  2578. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2579. print('\n-------------------------------------')
  2580. print('fit method:', fit_method, '\n')
  2581. mpg_options['fit_method'] = fit_method
  2582. try:
  2583. remove_best_graph(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)
  2584. except Exception as exp:
  2585. print('An exception occured when running experiment on xp_median_preimage_11_1:')
  2586. LOG_FILENAME = dir_save + 'error.txt'
  2587. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2588. logging.exception('')
  2589. print(repr(exp))
  2590. def xp_median_preimage_11_2():
  2591. """xp 11_2: Letter-low, ShortestPath.
  2592. """
  2593. for update_order in [True, False]:
  2594. # set parameters.
  2595. ds_name = 'Letter-low'
  2596. mpg_options = {'fit_method': 'k-graphs',
  2597. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  2598. 'ds_name': ds_name,
  2599. 'parallel': True, # False
  2600. 'time_limit_in_sec': 0,
  2601. 'max_itrs': 100,
  2602. 'max_itrs_without_update': 3,
  2603. 'epsilon_residual': 0.01,
  2604. 'epsilon_ec': 0.1,
  2605. 'verbose': 2}
  2606. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2607. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2608. kernel_options = {'name': 'ShortestPath',
  2609. 'edge_weight': None,
  2610. 'node_kernels': sub_kernels,
  2611. 'parallel': 'imap_unordered',
  2612. # 'parallel': None,
  2613. 'n_jobs': multiprocessing.cpu_count(),
  2614. 'normalize': True,
  2615. 'verbose': 2}
  2616. ged_options = {'method': 'IPFP',
  2617. 'initialization_method': 'RANDOM', # 'NODE'
  2618. 'initial_solutions': initial_solutions, # 1
  2619. 'edit_cost': 'LETTER2',
  2620. 'attr_distance': 'euclidean',
  2621. 'ratio_runs_from_initial_solutions': 1,
  2622. 'threads': multiprocessing.cpu_count(),
  2623. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2624. mge_options = {'init_type': 'MEDOID',
  2625. 'random_inits': 10,
  2626. 'time_limit': 0,
  2627. 'verbose': 2,
  2628. 'update_order': update_order,
  2629. 'randomness': 'REAL',
  2630. 'refine': False}
  2631. save_results = True
  2632. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2633. irrelevant_labels = None #
  2634. edge_required = True #
  2635. if not os.path.exists(dir_save):
  2636. os.makedirs(dir_save)
  2637. file_output = open(dir_save + 'output.txt', 'a')
  2638. sys.stdout = file_output
  2639. # print settings.
  2640. print('parameters:')
  2641. print('dataset name:', ds_name)
  2642. print('mpg_options:', mpg_options)
  2643. print('kernel_options:', kernel_options)
  2644. print('ged_options:', ged_options)
  2645. print('mge_options:', mge_options)
  2646. print('save_results:', save_results)
  2647. print('irrelevant_labels:', irrelevant_labels)
  2648. print()
  2649. # generate preimages.
  2650. for fit_method in ['k-graphs', 'expert'] + ['random'] * num_random:
  2651. print('\n-------------------------------------')
  2652. print('fit method:', fit_method, '\n')
  2653. mpg_options['fit_method'] = fit_method
  2654. try:
  2655. remove_best_graph(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)
  2656. except Exception as exp:
  2657. print('An exception occured when running experiment on xp_median_preimage_11_2:')
  2658. LOG_FILENAME = dir_save + 'error.txt'
  2659. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2660. logging.exception('')
  2661. print(repr(exp))
  2662. if __name__ == "__main__":
  2663. # #### xp 1_1: Letter-high, StructuralSP.
  2664. # xp_median_preimage_1_1()
  2665. # #### xp 1_2: Letter-high, ShortestPath.
  2666. # xp_median_preimage_1_2()
  2667. # #### xp 10_1: Letter-med, StructuralSP.
  2668. # xp_median_preimage_10_1()
  2669. # #### xp 10_2: Letter-med, ShortestPath.
  2670. # xp_median_preimage_10_2()
  2671. # #### xp 11_1: Letter-low, StructuralSP.
  2672. # xp_median_preimage_11_1()
  2673. # #### xp 11_2: Letter-low, ShortestPath.
  2674. # xp_median_preimage_11_2()
  2675. #
  2676. # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  2677. # # xp_median_preimage_2_1()
  2678. #
  2679. # #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  2680. # # xp_median_preimage_3_1()
  2681. # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  2682. # xp_median_preimage_3_2()
  2683. # #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  2684. # # xp_median_preimage_4_1()
  2685. #
  2686. # #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  2687. # # xp_median_preimage_5_1()
  2688. #
  2689. # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  2690. # xp_median_preimage_6_1()
  2691. # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  2692. # xp_median_preimage_6_2()
  2693. # #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  2694. # xp_median_preimage_7_1()
  2695. # #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  2696. # xp_median_preimage_7_2()
  2697. # #### xp 7_3: MUTAG, Treelet, using CONSTANT.
  2698. # xp_median_preimage_7_3()
  2699. # #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  2700. # xp_median_preimage_7_4()
  2701. #
  2702. # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  2703. # xp_median_preimage_8_1()
  2704. # #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  2705. # xp_median_preimage_8_2()
  2706. # #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  2707. # xp_median_preimage_8_3()
  2708. # #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  2709. # xp_median_preimage_8_4()
  2710. # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  2711. # xp_median_preimage_9_1()
  2712. # #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  2713. # xp_median_preimage_9_2()
  2714. # #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  2715. # xp_median_preimage_9_3()
  2716. # #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  2717. # xp_median_preimage_9_4()
  2718. #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled.
  2719. # xp_median_preimage_12_1()
  2720. #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  2721. # xp_median_preimage_12_2()
  2722. #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  2723. # xp_median_preimage_12_3()
  2724. #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  2725. # xp_median_preimage_12_4()
  2726. #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  2727. # xp_median_preimage_12_5()
  2728. #### xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  2729. # xp_median_preimage_13_1()
  2730. #### xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  2731. # xp_median_preimage_13_2()
  2732. #### xp 14_1: DD, PathUpToH, using CONSTANT.
  2733. # xp_median_preimage_14_1()
  2734. # #### xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  2735. # xp_median_preimage_15_1()
  2736. # #### xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  2737. # xp_median_preimage_15_2()
  2738. # #### xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  2739. # xp_median_preimage_15_3()
  2740. # #### xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  2741. # xp_median_preimage_15_4()
  2742. # #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  2743. xp_median_preimage_7_2()
  2744. # #### xp 7_3: MUTAG, Treelet, using CONSTANT.
  2745. xp_median_preimage_7_3()
  2746. # #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  2747. xp_median_preimage_7_4()
  2748. #
  2749. # #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  2750. xp_median_preimage_7_1()
  2751. # #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  2752. xp_median_preimage_8_2()
  2753. # #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  2754. xp_median_preimage_8_3()
  2755. # #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  2756. xp_median_preimage_8_4()
  2757. # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  2758. xp_median_preimage_8_1()
  2759. # #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  2760. xp_median_preimage_9_2()
  2761. # #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  2762. xp_median_preimage_9_3()
  2763. # #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  2764. xp_median_preimage_9_4()
  2765. # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  2766. xp_median_preimage_9_1()
  2767. #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled.
  2768. xp_median_preimage_12_1()
  2769. #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  2770. xp_median_preimage_12_2()
  2771. #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  2772. xp_median_preimage_12_3()
  2773. #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  2774. xp_median_preimage_12_4()
  2775. #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  2776. xp_median_preimage_12_5()
  2777. # #### xp 1_1: Letter-high, StructuralSP.
  2778. xp_median_preimage_1_1()
  2779. # #### xp 1_2: Letter-high, ShortestPath.
  2780. xp_median_preimage_1_2()
  2781. # #### xp 10_1: Letter-med, StructuralSP.
  2782. xp_median_preimage_10_1()
  2783. # #### xp 10_2: Letter-med, ShortestPath.
  2784. xp_median_preimage_10_2()
  2785. # #### xp 11_1: Letter-low, StructuralSP.
  2786. xp_median_preimage_11_1()
  2787. # #### xp 11_2: Letter-low, ShortestPath.
  2788. xp_median_preimage_11_2()
  2789. #### xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  2790. xp_median_preimage_13_1()
  2791. #### xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  2792. xp_median_preimage_13_2()
  2793. # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  2794. xp_median_preimage_6_1()
  2795. # #### xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  2796. xp_median_preimage_15_1()
  2797. # #### xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  2798. xp_median_preimage_15_2()
  2799. # #### xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  2800. xp_median_preimage_15_3()
  2801. # #### xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  2802. xp_median_preimage_15_4()
  2803. #
  2804. # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  2805. xp_median_preimage_2_1()
  2806. #
  2807. # #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  2808. # # xp_median_preimage_3_1()
  2809. # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  2810. # xp_median_preimage_3_2()
  2811. # #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  2812. # # xp_median_preimage_4_1()
  2813. #
  2814. # #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  2815. # # xp_median_preimage_5_1()
  2816. #
  2817. # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  2818. # xp_median_preimage_6_2()
  2819. #### xp 14_1: DD, PathUpToH, using CONSTANT.
  2820. # xp_median_preimage_14_1()

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