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_1nn_init10_trianglerule.py 112 kB

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

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