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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382
  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_15_1():
  22. """xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  23. """
  24. for test_size in test_sizes:
  25. # set parameters.
  26. ds_name = 'AIDS' #
  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. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  44. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  45. kernel_options = {'name': 'StructuralSP',
  46. 'edge_weight': None,
  47. 'node_kernels': sub_kernels,
  48. 'edge_kernels': sub_kernels,
  49. 'compute_method': 'naive',
  50. 'parallel': 'imap_unordered',
  51. # 'parallel': None,
  52. 'n_jobs': multiprocessing.cpu_count(),
  53. 'normalize': True,
  54. 'verbose': 0}
  55. ged_options = {'method': 'IPFP',
  56. 'initialization_method': 'RANDOM', # 'NODE'
  57. 'initial_solutions': initial_solutions, # 1
  58. 'edit_cost': 'CONSTANT', #
  59. 'attr_distance': 'euclidean',
  60. 'ratio_runs_from_initial_solutions': 1,
  61. 'threads': multiprocessing.cpu_count(),
  62. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  63. mge_options = {'init_type': 'MEDOID',
  64. 'random_inits': 10,
  65. 'time_limit': 0,
  66. 'verbose': 1,
  67. 'update_order': update_order,
  68. 'randomness': 'REAL',
  69. 'refine': False}
  70. save_results = True
  71. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/'
  72. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  73. edge_required = False #
  74. if not os.path.exists(dir_save):
  75. os.makedirs(dir_save)
  76. file_output = open(dir_save + 'output.txt', 'a')
  77. sys.stdout = file_output
  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', 'expert', '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_15_2():
  103. """xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  104. """
  105. for test_size in test_sizes:
  106. # set parameters.
  107. ds_name = 'AIDS' #
  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': [4, 4, 2, 1, 1, 1], #
  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. kernel_options = {'name': 'PathUpToH',
  125. 'depth': 1, #
  126. 'k_func': 'MinMax', #
  127. 'compute_method': 'trie',
  128. 'parallel': 'imap_unordered',
  129. # 'parallel': None,
  130. 'n_jobs': multiprocessing.cpu_count(),
  131. 'normalize': True,
  132. 'verbose': 0}
  133. ged_options = {'method': 'IPFP',
  134. 'initialization_method': 'RANDOM', # 'NODE'
  135. 'initial_solutions': initial_solutions, # 1
  136. 'edit_cost': 'CONSTANT', #
  137. 'attr_distance': 'euclidean',
  138. 'ratio_runs_from_initial_solutions': 1,
  139. 'threads': multiprocessing.cpu_count(),
  140. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  141. mge_options = {'init_type': 'MEDOID',
  142. 'random_inits': 10,
  143. 'time_limit': 0,
  144. 'verbose': 1,
  145. 'update_order': update_order,
  146. 'randomness': 'REAL',
  147. 'refine': False}
  148. save_results = True
  149. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/'
  150. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  151. edge_required = False #
  152. if not os.path.exists(dir_save):
  153. os.makedirs(dir_save)
  154. file_output = open(dir_save + 'output.txt', 'a')
  155. sys.stdout = file_output
  156. # print settings.
  157. print('parameters:')
  158. print('dataset name:', ds_name)
  159. print('knn_options:', knn_options)
  160. print('mpg_options:', mpg_options)
  161. print('kernel_options:', kernel_options)
  162. print('ged_options:', ged_options)
  163. print('mge_options:', mge_options)
  164. print('save_results:', save_results)
  165. print('irrelevant_labels:', irrelevant_labels)
  166. print()
  167. # generate preimages.
  168. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  169. print('\n-------------------------------------')
  170. print('train examples used:', train_examples, '\n')
  171. mpg_options['fit_method'] = train_examples
  172. try:
  173. 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)
  174. except Exception as exp:
  175. print('An exception occured when running this experiment:')
  176. LOG_FILENAME = dir_save + 'error.txt'
  177. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  178. logging.exception('')
  179. print(repr(exp))
  180. def xp_median_preimage_15_3():
  181. """xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  182. """
  183. for test_size in test_sizes:
  184. from gklearn.utils.kernels import polynomialkernel
  185. # set parameters.
  186. ds_name = 'AIDS' #
  187. knn_options = {'n_neighbors': 1,
  188. 'n_splits': 30,
  189. 'test_size': test_size,
  190. 'verbose': True}
  191. mpg_options = {'fit_method': 'k-graphs',
  192. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  193. 'ds_name': ds_name,
  194. 'parallel': True, # False
  195. 'time_limit_in_sec': 0,
  196. 'max_itrs': 100, #
  197. 'max_itrs_without_update': 3,
  198. 'epsilon_residual': 0.01,
  199. 'epsilon_ec': 0.1,
  200. 'allow_zeros': allow_zeros,
  201. 'triangle_rule': triangle_rule,
  202. 'verbose': 1}
  203. pkernel = functools.partial(polynomialkernel, d=1, c=1e+2)
  204. kernel_options = {'name': 'Treelet', #
  205. 'sub_kernel': pkernel,
  206. 'parallel': 'imap_unordered',
  207. # 'parallel': None,
  208. 'n_jobs': multiprocessing.cpu_count(),
  209. 'normalize': True,
  210. 'verbose': 0}
  211. ged_options = {'method': 'IPFP',
  212. 'initialization_method': 'RANDOM', # 'NODE'
  213. 'initial_solutions': initial_solutions, # 1
  214. 'edit_cost': 'CONSTANT', #
  215. 'attr_distance': 'euclidean',
  216. 'ratio_runs_from_initial_solutions': 1,
  217. 'threads': multiprocessing.cpu_count(),
  218. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  219. mge_options = {'init_type': 'MEDOID',
  220. 'random_inits': 10,
  221. 'time_limit': 0,
  222. 'verbose': 1,
  223. 'update_order': update_order,
  224. 'randomness': 'REAL',
  225. 'refine': False}
  226. save_results = True
  227. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/'
  228. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  229. edge_required = False #
  230. if not os.path.exists(dir_save):
  231. os.makedirs(dir_save)
  232. file_output = open(dir_save + 'output.txt', 'a')
  233. sys.stdout = file_output
  234. # print settings.
  235. print('parameters:')
  236. print('dataset name:', ds_name)
  237. print('knn_options:', knn_options)
  238. print('mpg_options:', mpg_options)
  239. print('kernel_options:', kernel_options)
  240. print('ged_options:', ged_options)
  241. print('mge_options:', mge_options)
  242. print('save_results:', save_results)
  243. print('irrelevant_labels:', irrelevant_labels)
  244. print()
  245. # generate preimages.
  246. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  247. print('\n-------------------------------------')
  248. print('train examples used:', train_examples, '\n')
  249. mpg_options['fit_method'] = train_examples
  250. try:
  251. 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)
  252. except Exception as exp:
  253. print('An exception occured when running this experiment:')
  254. LOG_FILENAME = dir_save + 'error.txt'
  255. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  256. logging.exception('')
  257. print(repr(exp))
  258. def xp_median_preimage_15_4():
  259. """xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  260. """
  261. for test_size in test_sizes:
  262. # set parameters.
  263. ds_name = 'AIDS' #
  264. knn_options = {'n_neighbors': 1,
  265. 'n_splits': 30,
  266. 'test_size': test_size,
  267. 'verbose': True}
  268. mpg_options = {'fit_method': 'k-graphs',
  269. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  270. 'ds_name': ds_name,
  271. 'parallel': True, # False
  272. 'time_limit_in_sec': 0,
  273. 'max_itrs': 100, #
  274. 'max_itrs_without_update': 3,
  275. 'epsilon_residual': 0.01,
  276. 'epsilon_ec': 0.1,
  277. 'allow_zeros': allow_zeros,
  278. 'triangle_rule': triangle_rule,
  279. 'verbose': 1}
  280. kernel_options = {'name': 'WeisfeilerLehman',
  281. 'height': 10,
  282. 'base_kernel': 'subtree',
  283. 'parallel': 'imap_unordered',
  284. # 'parallel': None,
  285. 'n_jobs': multiprocessing.cpu_count(),
  286. 'normalize': True,
  287. 'verbose': 0}
  288. ged_options = {'method': 'IPFP',
  289. 'initialization_method': 'RANDOM', # 'NODE'
  290. 'initial_solutions': initial_solutions, # 1
  291. 'edit_cost': 'CONSTANT', #
  292. 'attr_distance': 'euclidean',
  293. 'ratio_runs_from_initial_solutions': 1,
  294. 'threads': multiprocessing.cpu_count(),
  295. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  296. mge_options = {'init_type': 'MEDOID',
  297. 'random_inits': 10,
  298. 'time_limit': 0,
  299. 'verbose': 1,
  300. 'update_order': update_order,
  301. 'randomness': 'REAL',
  302. 'refine': False}
  303. save_results = True
  304. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.symb/'
  305. irrelevant_labels = {'node_attrs': ['chem', 'charge', 'x', 'y']} #
  306. edge_required = False #
  307. if not os.path.exists(dir_save):
  308. os.makedirs(dir_save)
  309. file_output = open(dir_save + 'output.txt', 'a')
  310. sys.stdout = file_output
  311. # print settings.
  312. print('parameters:')
  313. print('dataset name:', ds_name)
  314. print('knn_options:', knn_options)
  315. print('mpg_options:', mpg_options)
  316. print('kernel_options:', kernel_options)
  317. print('ged_options:', ged_options)
  318. print('mge_options:', mge_options)
  319. print('save_results:', save_results)
  320. print('irrelevant_labels:', irrelevant_labels)
  321. print()
  322. # # compute gram matrices for each class a priori.
  323. # print('Compute gram matrices for each class a priori.')
  324. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  325. # generate preimages.
  326. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  327. print('\n-------------------------------------')
  328. print('train examples used:', train_examples, '\n')
  329. mpg_options['fit_method'] = train_examples
  330. try:
  331. 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)
  332. except Exception as exp:
  333. print('An exception occured when running this experiment:')
  334. LOG_FILENAME = dir_save + 'error.txt'
  335. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  336. logging.exception('')
  337. print(repr(exp))
  338. def xp_median_preimage_14_1():
  339. """xp 14_1: DD, PathUpToH, using CONSTANT.
  340. """
  341. for test_size in test_sizes:
  342. # set parameters.
  343. ds_name = 'DD' #
  344. knn_options = {'n_neighbors': 1,
  345. 'n_splits': 30,
  346. 'test_size': test_size,
  347. 'verbose': True}
  348. mpg_options = {'fit_method': 'k-graphs',
  349. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  350. 'ds_name': ds_name,
  351. 'parallel': True, # False
  352. 'time_limit_in_sec': 0,
  353. 'max_itrs': 100, #
  354. 'max_itrs_without_update': 3,
  355. 'epsilon_residual': 0.01,
  356. 'epsilon_ec': 0.1,
  357. 'allow_zeros': allow_zeros,
  358. 'triangle_rule': triangle_rule,
  359. 'verbose': 1}
  360. kernel_options = {'name': 'PathUpToH',
  361. 'depth': 2, #
  362. 'k_func': 'MinMax', #
  363. 'compute_method': 'trie',
  364. 'parallel': 'imap_unordered',
  365. # 'parallel': None,
  366. 'n_jobs': multiprocessing.cpu_count(),
  367. 'normalize': True,
  368. 'verbose': 0}
  369. ged_options = {'method': 'IPFP',
  370. 'initialization_method': 'RANDOM', # 'NODE'
  371. 'initial_solutions': initial_solutions, # 1
  372. 'edit_cost': 'CONSTANT', #
  373. 'attr_distance': 'euclidean',
  374. 'ratio_runs_from_initial_solutions': 1,
  375. 'threads': multiprocessing.cpu_count(),
  376. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  377. mge_options = {'init_type': 'MEDOID',
  378. 'random_inits': 10,
  379. 'time_limit': 0,
  380. 'verbose': 1,
  381. 'update_order': update_order,
  382. 'randomness': 'REAL',
  383. 'refine': False}
  384. save_results = True
  385. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  386. irrelevant_labels = None #
  387. edge_required = False #
  388. if not os.path.exists(dir_save):
  389. os.makedirs(dir_save)
  390. file_output = open(dir_save + 'output.txt', 'a')
  391. sys.stdout = file_output
  392. # # compute gram matrices for each class a priori.
  393. # print('Compute gram matrices for each class a priori.')
  394. # 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)
  395. # print settings.
  396. print('parameters:')
  397. print('dataset name:', ds_name)
  398. print('knn_options:', knn_options)
  399. print('mpg_options:', mpg_options)
  400. print('kernel_options:', kernel_options)
  401. print('ged_options:', ged_options)
  402. print('mge_options:', mge_options)
  403. print('save_results:', save_results)
  404. print('irrelevant_labels:', irrelevant_labels)
  405. print()
  406. # generate preimages.
  407. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  408. print('\n-------------------------------------')
  409. print('train examples used:', train_examples, '\n')
  410. mpg_options['fit_method'] = train_examples
  411. try:
  412. 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)
  413. except Exception as exp:
  414. print('An exception occured when running this experiment:')
  415. LOG_FILENAME = dir_save + 'error.txt'
  416. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  417. logging.exception('')
  418. print(repr(exp))
  419. def xp_median_preimage_13_1():
  420. """xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  421. """
  422. for test_size in test_sizes:
  423. # set parameters.
  424. ds_name = 'PAH' #
  425. knn_options = {'n_neighbors': 1,
  426. 'n_splits': 30,
  427. 'test_size': test_size,
  428. 'verbose': True}
  429. mpg_options = {'fit_method': 'k-graphs',
  430. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  431. 'ds_name': ds_name,
  432. 'parallel': True, # False
  433. 'time_limit_in_sec': 0,
  434. 'max_itrs': 100, #
  435. 'max_itrs_without_update': 3,
  436. 'epsilon_residual': 0.01,
  437. 'epsilon_ec': 0.1,
  438. 'allow_zeros': allow_zeros,
  439. 'triangle_rule': triangle_rule,
  440. 'verbose': 1}
  441. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  442. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  443. kernel_options = {'name': 'StructuralSP',
  444. 'edge_weight': None,
  445. 'node_kernels': sub_kernels,
  446. 'edge_kernels': sub_kernels,
  447. 'compute_method': 'naive',
  448. 'parallel': 'imap_unordered',
  449. # 'parallel': None,
  450. 'n_jobs': multiprocessing.cpu_count(),
  451. 'normalize': True,
  452. 'verbose': 0}
  453. ged_options = {'method': 'IPFP',
  454. 'initialization_method': 'RANDOM', # 'NODE'
  455. 'initial_solutions': initial_solutions, # 1
  456. 'edit_cost': 'NON_SYMBOLIC', #
  457. 'attr_distance': 'euclidean',
  458. 'ratio_runs_from_initial_solutions': 1,
  459. 'threads': multiprocessing.cpu_count(),
  460. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  461. mge_options = {'init_type': 'MEDOID',
  462. 'random_inits': 10,
  463. 'time_limit': 0,
  464. 'verbose': 1,
  465. 'update_order': update_order,
  466. 'randomness': 'REAL',
  467. 'refine': False}
  468. save_results = True
  469. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  470. irrelevant_labels = None #
  471. edge_required = False #
  472. if not os.path.exists(dir_save):
  473. os.makedirs(dir_save)
  474. file_output = open(dir_save + 'output.txt', 'a')
  475. sys.stdout = file_output
  476. # print settings.
  477. print('parameters:')
  478. print('dataset name:', ds_name)
  479. print('knn_options:', knn_options)
  480. print('mpg_options:', mpg_options)
  481. print('kernel_options:', kernel_options)
  482. print('ged_options:', ged_options)
  483. print('mge_options:', mge_options)
  484. print('save_results:', save_results)
  485. print('irrelevant_labels:', irrelevant_labels)
  486. print()
  487. # generate preimages.
  488. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  489. print('\n-------------------------------------')
  490. print('train examples used:', train_examples, '\n')
  491. mpg_options['fit_method'] = train_examples
  492. try:
  493. 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)
  494. except Exception as exp:
  495. print('An exception occured when running this experiment:')
  496. LOG_FILENAME = dir_save + 'error.txt'
  497. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  498. logging.exception('')
  499. print(repr(exp))
  500. def xp_median_preimage_13_2():
  501. """xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  502. """
  503. for test_size in test_sizes:
  504. # set parameters.
  505. ds_name = 'PAH' #
  506. knn_options = {'n_neighbors': 1,
  507. 'n_splits': 30,
  508. 'test_size': test_size,
  509. 'verbose': True}
  510. mpg_options = {'fit_method': 'k-graphs',
  511. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  512. 'ds_name': ds_name,
  513. 'parallel': True, # False
  514. 'time_limit_in_sec': 0,
  515. 'max_itrs': 100,
  516. 'max_itrs_without_update': 3,
  517. 'epsilon_residual': 0.01,
  518. 'epsilon_ec': 0.1,
  519. 'allow_zeros': allow_zeros,
  520. 'triangle_rule': triangle_rule,
  521. 'verbose': 1}
  522. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  523. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  524. kernel_options = {'name': 'ShortestPath',
  525. 'edge_weight': None,
  526. 'node_kernels': sub_kernels,
  527. 'parallel': 'imap_unordered',
  528. # 'parallel': None,
  529. 'n_jobs': multiprocessing.cpu_count(),
  530. 'normalize': True,
  531. 'verbose': 0}
  532. ged_options = {'method': 'IPFP',
  533. 'initialization_method': 'RANDOM', # 'NODE'
  534. 'initial_solutions': initial_solutions, # 1
  535. 'edit_cost': 'NON_SYMBOLIC', #
  536. 'attr_distance': 'euclidean',
  537. 'ratio_runs_from_initial_solutions': 1,
  538. 'threads': multiprocessing.cpu_count(),
  539. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  540. mge_options = {'init_type': 'MEDOID',
  541. 'random_inits': 10,
  542. 'time_limit': 0,
  543. 'verbose': 1,
  544. 'update_order': update_order,
  545. 'randomness': 'REAL',
  546. 'refine': False}
  547. save_results = True
  548. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '') #
  549. irrelevant_labels = None #
  550. edge_required = True #
  551. if not os.path.exists(dir_save):
  552. os.makedirs(dir_save)
  553. file_output = open(dir_save + 'output.txt', 'a')
  554. sys.stdout = file_output
  555. # print settings.
  556. print('parameters:')
  557. print('dataset name:', ds_name)
  558. print('knn_options:', knn_options)
  559. print('mpg_options:', mpg_options)
  560. print('kernel_options:', kernel_options)
  561. print('ged_options:', ged_options)
  562. print('mge_options:', mge_options)
  563. print('save_results:', save_results)
  564. print('irrelevant_labels:', irrelevant_labels)
  565. print()
  566. # generate preimages.
  567. for train_examples in ['k-graphs', '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_1():
  580. """xp 12_1: PAH, StructuralSP, 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': 'StructuralSP',
  604. 'edge_weight': None,
  605. 'node_kernels': sub_kernels,
  606. 'edge_kernels': sub_kernels,
  607. 'compute_method': 'naive',
  608. 'parallel': 'imap_unordered',
  609. # 'parallel': None,
  610. 'n_jobs': multiprocessing.cpu_count(),
  611. 'normalize': True,
  612. 'verbose': 0}
  613. ged_options = {'method': 'IPFP',
  614. 'initialization_method': 'RANDOM', # 'NODE'
  615. 'initial_solutions': initial_solutions, # 1
  616. 'edit_cost': 'NON_SYMBOLIC', #
  617. 'attr_distance': 'euclidean',
  618. 'ratio_runs_from_initial_solutions': 1,
  619. 'threads': multiprocessing.cpu_count(),
  620. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  621. mge_options = {'init_type': 'MEDOID',
  622. 'random_inits': 10,
  623. 'time_limit': 0,
  624. 'verbose': 1,
  625. 'update_order': update_order,
  626. 'randomness': 'REAL',
  627. 'refine': False}
  628. save_results = True
  629. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/'
  630. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  631. edge_required = False #
  632. if not os.path.exists(dir_save):
  633. os.makedirs(dir_save)
  634. file_output = open(dir_save + 'output.txt', 'a')
  635. sys.stdout = file_output
  636. # print settings.
  637. print('parameters:')
  638. print('dataset name:', ds_name)
  639. print('knn_options:', knn_options)
  640. print('mpg_options:', mpg_options)
  641. print('kernel_options:', kernel_options)
  642. print('ged_options:', ged_options)
  643. print('mge_options:', mge_options)
  644. print('save_results:', save_results)
  645. print('irrelevant_labels:', irrelevant_labels)
  646. print()
  647. # generate preimages.
  648. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  649. print('\n-------------------------------------')
  650. print('train examples used:', train_examples, '\n')
  651. mpg_options['fit_method'] = train_examples
  652. try:
  653. 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)
  654. except Exception as exp:
  655. print('An exception occured when running this experiment:')
  656. LOG_FILENAME = dir_save + 'error.txt'
  657. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  658. logging.exception('')
  659. print(repr(exp))
  660. def xp_median_preimage_12_2():
  661. """xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  662. """
  663. for test_size in test_sizes:
  664. # set parameters.
  665. ds_name = 'PAH' #
  666. knn_options = {'n_neighbors': 1,
  667. 'n_splits': 30,
  668. 'test_size': test_size,
  669. 'verbose': True}
  670. mpg_options = {'fit_method': 'k-graphs',
  671. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  672. 'ds_name': ds_name,
  673. 'parallel': True, # False
  674. 'time_limit_in_sec': 0,
  675. 'max_itrs': 100, #
  676. 'max_itrs_without_update': 3,
  677. 'epsilon_residual': 0.01,
  678. 'epsilon_ec': 0.1,
  679. 'allow_zeros': allow_zeros,
  680. 'triangle_rule': triangle_rule,
  681. 'verbose': 1}
  682. kernel_options = {'name': 'PathUpToH',
  683. 'depth': 1, #
  684. 'k_func': 'MinMax', #
  685. 'compute_method': 'trie',
  686. 'parallel': 'imap_unordered',
  687. # 'parallel': None,
  688. 'n_jobs': multiprocessing.cpu_count(),
  689. 'normalize': True,
  690. 'verbose': 0}
  691. ged_options = {'method': 'IPFP',
  692. 'initialization_method': 'RANDOM', # 'NODE'
  693. 'initial_solutions': initial_solutions, # 1
  694. 'edit_cost': 'CONSTANT', #
  695. 'attr_distance': 'euclidean',
  696. 'ratio_runs_from_initial_solutions': 1,
  697. 'threads': multiprocessing.cpu_count(),
  698. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  699. mge_options = {'init_type': 'MEDOID',
  700. 'random_inits': 10,
  701. 'time_limit': 0,
  702. 'verbose': 1,
  703. 'update_order': update_order,
  704. 'randomness': 'REAL',
  705. 'refine': False}
  706. save_results = True
  707. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/'
  708. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  709. edge_required = False #
  710. if not os.path.exists(dir_save):
  711. os.makedirs(dir_save)
  712. file_output = open(dir_save + 'output.txt', 'a')
  713. sys.stdout = file_output
  714. # print settings.
  715. print('parameters:')
  716. print('dataset name:', ds_name)
  717. print('knn_options:', knn_options)
  718. print('mpg_options:', mpg_options)
  719. print('kernel_options:', kernel_options)
  720. print('ged_options:', ged_options)
  721. print('mge_options:', mge_options)
  722. print('save_results:', save_results)
  723. print('irrelevant_labels:', irrelevant_labels)
  724. print()
  725. # generate preimages.
  726. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  727. print('\n-------------------------------------')
  728. print('train examples used:', train_examples, '\n')
  729. mpg_options['fit_method'] = train_examples
  730. try:
  731. 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)
  732. except Exception as exp:
  733. print('An exception occured when running this experiment:')
  734. LOG_FILENAME = dir_save + 'error.txt'
  735. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  736. logging.exception('')
  737. print(repr(exp))
  738. def xp_median_preimage_12_3():
  739. """xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  740. """
  741. from gklearn.utils.kernels import gaussiankernel
  742. for test_size in test_sizes:
  743. # set parameters.
  744. ds_name = 'PAH' #
  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. pkernel = functools.partial(gaussiankernel, gamma=None) # @todo
  762. kernel_options = {'name': 'Treelet', #
  763. 'sub_kernel': pkernel,
  764. 'parallel': 'imap_unordered',
  765. # 'parallel': None,
  766. 'n_jobs': multiprocessing.cpu_count(),
  767. 'normalize': True,
  768. 'verbose': 0}
  769. ged_options = {'method': 'IPFP',
  770. 'initialization_method': 'RANDOM', # 'NODE'
  771. 'initial_solutions': initial_solutions, # 1
  772. 'edit_cost': 'CONSTANT', #
  773. 'attr_distance': 'euclidean',
  774. 'ratio_runs_from_initial_solutions': 1,
  775. 'threads': multiprocessing.cpu_count(),
  776. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  777. mge_options = {'init_type': 'MEDOID',
  778. 'random_inits': 10,
  779. 'time_limit': 0,
  780. 'verbose': 1,
  781. 'update_order': update_order,
  782. 'randomness': 'REAL',
  783. 'refine': False}
  784. save_results = True
  785. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/'
  786. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  787. edge_required = False #
  788. if not os.path.exists(dir_save):
  789. os.makedirs(dir_save)
  790. file_output = open(dir_save + 'output.txt', 'a')
  791. sys.stdout = file_output
  792. # print settings.
  793. print('parameters:')
  794. print('dataset name:', ds_name)
  795. print('knn_options:', knn_options)
  796. print('mpg_options:', mpg_options)
  797. print('kernel_options:', kernel_options)
  798. print('ged_options:', ged_options)
  799. print('mge_options:', mge_options)
  800. print('save_results:', save_results)
  801. print('irrelevant_labels:', irrelevant_labels)
  802. print()
  803. # generate preimages.
  804. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  805. print('\n-------------------------------------')
  806. print('train examples used:', train_examples, '\n')
  807. mpg_options['fit_method'] = train_examples
  808. try:
  809. 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)
  810. except Exception as exp:
  811. print('An exception occured when running this experiment:')
  812. LOG_FILENAME = dir_save + 'error.txt'
  813. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  814. logging.exception('')
  815. print(repr(exp))
  816. def xp_median_preimage_12_4():
  817. """xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  818. """
  819. for test_size in test_sizes:
  820. # set parameters.
  821. ds_name = 'PAH' #
  822. knn_options = {'n_neighbors': 1,
  823. 'n_splits': 30,
  824. 'test_size': test_size,
  825. 'verbose': True}
  826. mpg_options = {'fit_method': 'k-graphs',
  827. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  828. 'ds_name': ds_name,
  829. 'parallel': True, # False
  830. 'time_limit_in_sec': 0,
  831. 'max_itrs': 100, #
  832. 'max_itrs_without_update': 3,
  833. 'epsilon_residual': 0.01,
  834. 'epsilon_ec': 0.1,
  835. 'allow_zeros': allow_zeros,
  836. 'triangle_rule': triangle_rule,
  837. 'verbose': 1}
  838. kernel_options = {'name': 'WeisfeilerLehman',
  839. 'height': 14,
  840. 'base_kernel': 'subtree',
  841. 'parallel': 'imap_unordered',
  842. # 'parallel': None,
  843. 'n_jobs': multiprocessing.cpu_count(),
  844. 'normalize': True,
  845. 'verbose': 0}
  846. ged_options = {'method': 'IPFP',
  847. 'initialization_method': 'RANDOM', # 'NODE'
  848. 'initial_solutions': initial_solutions, # 1
  849. 'edit_cost': 'CONSTANT', #
  850. 'attr_distance': 'euclidean',
  851. 'ratio_runs_from_initial_solutions': 1,
  852. 'threads': multiprocessing.cpu_count(),
  853. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  854. mge_options = {'init_type': 'MEDOID',
  855. 'random_inits': 10,
  856. 'time_limit': 0,
  857. 'verbose': 1,
  858. 'update_order': update_order,
  859. 'randomness': 'REAL',
  860. 'refine': False}
  861. save_results = True
  862. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/'
  863. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  864. edge_required = False #
  865. if not os.path.exists(dir_save):
  866. os.makedirs(dir_save)
  867. file_output = open(dir_save + 'output.txt', 'a')
  868. sys.stdout = file_output
  869. # print settings.
  870. print('parameters:')
  871. print('dataset name:', ds_name)
  872. print('knn_options:', knn_options)
  873. print('mpg_options:', mpg_options)
  874. print('kernel_options:', kernel_options)
  875. print('ged_options:', ged_options)
  876. print('mge_options:', mge_options)
  877. print('save_results:', save_results)
  878. print('irrelevant_labels:', irrelevant_labels)
  879. print()
  880. # # compute gram matrices for each class a priori.
  881. # print('Compute gram matrices for each class a priori.')
  882. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  883. # generate preimages.
  884. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  885. print('\n-------------------------------------')
  886. print('train examples used:', train_examples, '\n')
  887. mpg_options['fit_method'] = train_examples
  888. try:
  889. 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)
  890. except Exception as exp:
  891. print('An exception occured when running this experiment:')
  892. LOG_FILENAME = dir_save + 'error.txt'
  893. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  894. logging.exception('')
  895. print(repr(exp))
  896. def xp_median_preimage_12_5():
  897. """xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  898. """
  899. for test_size in test_sizes:
  900. # set parameters.
  901. ds_name = 'PAH' #
  902. knn_options = {'n_neighbors': 1,
  903. 'n_splits': 30,
  904. 'test_size': test_size,
  905. 'verbose': True}
  906. mpg_options = {'fit_method': 'k-graphs',
  907. 'init_ecc': [4, 4, 0, 1, 1, 0], #
  908. 'ds_name': ds_name,
  909. 'parallel': True, # False
  910. 'time_limit_in_sec': 0,
  911. 'max_itrs': 100,
  912. 'max_itrs_without_update': 3,
  913. 'epsilon_residual': 0.01,
  914. 'epsilon_ec': 0.1,
  915. 'allow_zeros': allow_zeros,
  916. 'triangle_rule': triangle_rule,
  917. 'verbose': 1}
  918. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  919. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  920. kernel_options = {'name': 'ShortestPath',
  921. 'edge_weight': None,
  922. 'node_kernels': sub_kernels,
  923. 'parallel': 'imap_unordered',
  924. # 'parallel': None,
  925. 'n_jobs': multiprocessing.cpu_count(),
  926. 'normalize': True,
  927. 'verbose': 0}
  928. ged_options = {'method': 'IPFP',
  929. 'initialization_method': 'RANDOM', # 'NODE'
  930. 'initial_solutions': initial_solutions, # 1
  931. 'edit_cost': 'NON_SYMBOLIC', #
  932. 'attr_distance': 'euclidean',
  933. 'ratio_runs_from_initial_solutions': 1,
  934. 'threads': multiprocessing.cpu_count(),
  935. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  936. mge_options = {'init_type': 'MEDOID',
  937. 'random_inits': 10,
  938. 'time_limit': 0,
  939. 'verbose': 1,
  940. 'update_order': update_order,
  941. 'randomness': 'REAL',
  942. 'refine': False}
  943. save_results = True
  944. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.unlabeled/' #
  945. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  946. edge_required = True #
  947. if not os.path.exists(dir_save):
  948. os.makedirs(dir_save)
  949. file_output = open(dir_save + 'output.txt', 'a')
  950. sys.stdout = file_output
  951. # print settings.
  952. print('parameters:')
  953. print('dataset name:', ds_name)
  954. print('knn_options:', knn_options)
  955. print('mpg_options:', mpg_options)
  956. print('kernel_options:', kernel_options)
  957. print('ged_options:', ged_options)
  958. print('mge_options:', mge_options)
  959. print('save_results:', save_results)
  960. print('irrelevant_labels:', irrelevant_labels)
  961. print()
  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_9_1():
  976. """xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  977. """
  978. for test_size in test_sizes:
  979. # set parameters.
  980. ds_name = 'MAO' #
  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': [4, 4, 2, 1, 1, 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'] + '.symb/'
  1026. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  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_9_2():
  1057. """xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  1058. """
  1059. for test_size in test_sizes:
  1060. # set parameters.
  1061. ds_name = 'MAO' #
  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': 9, #
  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'] + '.symb/'
  1104. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  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_9_3():
  1135. """xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  1136. """
  1137. for test_size in test_sizes:
  1138. from gklearn.utils.kernels import polynomialkernel
  1139. # set parameters.
  1140. ds_name = 'MAO' #
  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=4, c=1e+7)
  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'] + '.symb/'
  1182. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  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_9_4():
  1213. """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  1214. """
  1215. for test_size in test_sizes:
  1216. # set parameters.
  1217. ds_name = 'MAO' #
  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': 6,
  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'] + '.symb/'
  1259. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  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. # # compute gram matrices for each class a priori.
  1277. # print('Compute gram matrices for each class a priori.')
  1278. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  1279. # generate preimages.
  1280. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1281. print('\n-------------------------------------')
  1282. print('train examples used:', train_examples, '\n')
  1283. mpg_options['fit_method'] = train_examples
  1284. try:
  1285. 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)
  1286. except Exception as exp:
  1287. print('An exception occured when running this experiment:')
  1288. LOG_FILENAME = dir_save + 'error.txt'
  1289. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1290. logging.exception('')
  1291. print(repr(exp))
  1292. def xp_median_preimage_8_1():
  1293. """xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  1294. """
  1295. for test_size in test_sizes:
  1296. # set parameters.
  1297. ds_name = 'Monoterpenoides' #
  1298. knn_options = {'n_neighbors': 1,
  1299. 'n_splits': 30,
  1300. 'test_size': test_size,
  1301. 'verbose': True}
  1302. mpg_options = {'fit_method': 'k-graphs',
  1303. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  1304. 'ds_name': ds_name,
  1305. 'parallel': True, # False
  1306. 'time_limit_in_sec': 0,
  1307. 'max_itrs': 100, #
  1308. 'max_itrs_without_update': 3,
  1309. 'epsilon_residual': 0.01,
  1310. 'epsilon_ec': 0.1,
  1311. 'allow_zeros': allow_zeros,
  1312. 'triangle_rule': triangle_rule,
  1313. 'verbose': 1}
  1314. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1315. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1316. kernel_options = {'name': 'StructuralSP',
  1317. 'edge_weight': None,
  1318. 'node_kernels': sub_kernels,
  1319. 'edge_kernels': sub_kernels,
  1320. 'compute_method': 'naive',
  1321. 'parallel': 'imap_unordered',
  1322. # 'parallel': None,
  1323. 'n_jobs': multiprocessing.cpu_count(),
  1324. 'normalize': True,
  1325. 'verbose': 0}
  1326. ged_options = {'method': 'IPFP',
  1327. 'initialization_method': 'RANDOM', # 'NODE'
  1328. 'initial_solutions': initial_solutions, # 1
  1329. 'edit_cost': 'CONSTANT', #
  1330. 'attr_distance': 'euclidean',
  1331. 'ratio_runs_from_initial_solutions': 1,
  1332. 'threads': multiprocessing.cpu_count(),
  1333. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1334. mge_options = {'init_type': 'MEDOID',
  1335. 'random_inits': 10,
  1336. 'time_limit': 0,
  1337. 'verbose': 1,
  1338. 'update_order': update_order,
  1339. 'randomness': 'REAL',
  1340. 'refine': False}
  1341. save_results = True
  1342. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1343. irrelevant_labels = None #
  1344. edge_required = False #
  1345. if not os.path.exists(dir_save):
  1346. os.makedirs(dir_save)
  1347. file_output = open(dir_save + 'output.txt', 'a')
  1348. sys.stdout = file_output
  1349. # print settings.
  1350. print('parameters:')
  1351. print('dataset name:', ds_name)
  1352. print('knn_options:', knn_options)
  1353. print('mpg_options:', mpg_options)
  1354. print('kernel_options:', kernel_options)
  1355. print('ged_options:', ged_options)
  1356. print('mge_options:', mge_options)
  1357. print('save_results:', save_results)
  1358. print('irrelevant_labels:', irrelevant_labels)
  1359. print()
  1360. # generate preimages.
  1361. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1362. print('\n-------------------------------------')
  1363. print('train examples used:', train_examples, '\n')
  1364. mpg_options['fit_method'] = train_examples
  1365. try:
  1366. 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)
  1367. except Exception as exp:
  1368. print('An exception occured when running this experiment:')
  1369. LOG_FILENAME = dir_save + 'error.txt'
  1370. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1371. logging.exception('')
  1372. print(repr(exp))
  1373. def xp_median_preimage_8_2():
  1374. """xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  1375. """
  1376. for test_size in test_sizes:
  1377. # set parameters.
  1378. ds_name = 'Monoterpenoides' #
  1379. knn_options = {'n_neighbors': 1,
  1380. 'n_splits': 30,
  1381. 'test_size': test_size,
  1382. 'verbose': True}
  1383. mpg_options = {'fit_method': 'k-graphs',
  1384. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1385. 'ds_name': ds_name,
  1386. 'parallel': True, # False
  1387. 'time_limit_in_sec': 0,
  1388. 'max_itrs': 100, #
  1389. 'max_itrs_without_update': 3,
  1390. 'epsilon_residual': 0.01,
  1391. 'epsilon_ec': 0.1,
  1392. 'allow_zeros': allow_zeros,
  1393. 'triangle_rule': triangle_rule,
  1394. 'verbose': 1}
  1395. kernel_options = {'name': 'PathUpToH',
  1396. 'depth': 7, #
  1397. 'k_func': 'MinMax', #
  1398. 'compute_method': 'trie',
  1399. 'parallel': 'imap_unordered',
  1400. # 'parallel': None,
  1401. 'n_jobs': multiprocessing.cpu_count(),
  1402. 'normalize': True,
  1403. 'verbose': 0}
  1404. ged_options = {'method': 'IPFP',
  1405. 'initialization_method': 'RANDOM', # 'NODE'
  1406. 'initial_solutions': initial_solutions, # 1
  1407. 'edit_cost': 'CONSTANT', #
  1408. 'attr_distance': 'euclidean',
  1409. 'ratio_runs_from_initial_solutions': 1,
  1410. 'threads': multiprocessing.cpu_count(),
  1411. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1412. mge_options = {'init_type': 'MEDOID',
  1413. 'random_inits': 10,
  1414. 'time_limit': 0,
  1415. 'verbose': 1,
  1416. 'update_order': update_order,
  1417. 'randomness': 'REAL',
  1418. 'refine': False}
  1419. save_results = True
  1420. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1421. irrelevant_labels = None #
  1422. edge_required = False #
  1423. if not os.path.exists(dir_save):
  1424. os.makedirs(dir_save)
  1425. file_output = open(dir_save + 'output.txt', 'a')
  1426. sys.stdout = file_output
  1427. # print settings.
  1428. print('parameters:')
  1429. print('dataset name:', ds_name)
  1430. print('knn_options:', knn_options)
  1431. print('mpg_options:', mpg_options)
  1432. print('kernel_options:', kernel_options)
  1433. print('ged_options:', ged_options)
  1434. print('mge_options:', mge_options)
  1435. print('save_results:', save_results)
  1436. print('irrelevant_labels:', irrelevant_labels)
  1437. print()
  1438. # generate preimages.
  1439. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1440. print('\n-------------------------------------')
  1441. print('train examples used:', train_examples, '\n')
  1442. mpg_options['fit_method'] = train_examples
  1443. try:
  1444. 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)
  1445. except Exception as exp:
  1446. print('An exception occured when running this experiment:')
  1447. LOG_FILENAME = dir_save + 'error.txt'
  1448. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1449. logging.exception('')
  1450. print(repr(exp))
  1451. def xp_median_preimage_8_3():
  1452. """xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  1453. """
  1454. for test_size in test_sizes:
  1455. from gklearn.utils.kernels import polynomialkernel
  1456. # set parameters.
  1457. ds_name = 'Monoterpenoides' #
  1458. knn_options = {'n_neighbors': 1,
  1459. 'n_splits': 30,
  1460. 'test_size': test_size,
  1461. 'verbose': True}
  1462. mpg_options = {'fit_method': 'k-graphs',
  1463. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1464. 'ds_name': ds_name,
  1465. 'parallel': True, # False
  1466. 'time_limit_in_sec': 0,
  1467. 'max_itrs': 100, #
  1468. 'max_itrs_without_update': 3,
  1469. 'epsilon_residual': 0.01,
  1470. 'epsilon_ec': 0.1,
  1471. 'allow_zeros': allow_zeros,
  1472. 'triangle_rule': triangle_rule,
  1473. 'verbose': 1}
  1474. pkernel = functools.partial(polynomialkernel, d=2, c=1e+5)
  1475. kernel_options = {'name': 'Treelet',
  1476. 'sub_kernel': pkernel,
  1477. 'parallel': 'imap_unordered',
  1478. # 'parallel': None,
  1479. 'n_jobs': multiprocessing.cpu_count(),
  1480. 'normalize': True,
  1481. 'verbose': 0}
  1482. ged_options = {'method': 'IPFP',
  1483. 'initialization_method': 'RANDOM', # 'NODE'
  1484. 'initial_solutions': initial_solutions, # 1
  1485. 'edit_cost': 'CONSTANT', #
  1486. 'attr_distance': 'euclidean',
  1487. 'ratio_runs_from_initial_solutions': 1,
  1488. 'threads': multiprocessing.cpu_count(),
  1489. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1490. mge_options = {'init_type': 'MEDOID',
  1491. 'random_inits': 10,
  1492. 'time_limit': 0,
  1493. 'verbose': 1,
  1494. 'update_order': update_order,
  1495. 'randomness': 'REAL',
  1496. 'refine': False}
  1497. save_results = True
  1498. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1499. irrelevant_labels = None #
  1500. edge_required = False #
  1501. if not os.path.exists(dir_save):
  1502. os.makedirs(dir_save)
  1503. file_output = open(dir_save + 'output.txt', 'a')
  1504. sys.stdout = file_output
  1505. # print settings.
  1506. print('parameters:')
  1507. print('dataset name:', ds_name)
  1508. print('knn_options:', knn_options)
  1509. print('mpg_options:', mpg_options)
  1510. print('kernel_options:', kernel_options)
  1511. print('ged_options:', ged_options)
  1512. print('mge_options:', mge_options)
  1513. print('save_results:', save_results)
  1514. print('irrelevant_labels:', irrelevant_labels)
  1515. print()
  1516. # generate preimages.
  1517. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1518. print('\n-------------------------------------')
  1519. print('train examples used:', train_examples, '\n')
  1520. mpg_options['fit_method'] = train_examples
  1521. try:
  1522. 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)
  1523. except Exception as exp:
  1524. print('An exception occured when running this experiment:')
  1525. LOG_FILENAME = dir_save + 'error.txt'
  1526. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1527. logging.exception('')
  1528. print(repr(exp))
  1529. def xp_median_preimage_8_4():
  1530. """xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  1531. """
  1532. for test_size in test_sizes:
  1533. # set parameters.
  1534. ds_name = 'Monoterpenoides' #
  1535. knn_options = {'n_neighbors': 1,
  1536. 'n_splits': 30,
  1537. 'test_size': test_size,
  1538. 'verbose': True}
  1539. mpg_options = {'fit_method': 'k-graphs',
  1540. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1541. 'ds_name': ds_name,
  1542. 'parallel': True, # False
  1543. 'time_limit_in_sec': 0,
  1544. 'max_itrs': 100, #
  1545. 'max_itrs_without_update': 3,
  1546. 'epsilon_residual': 0.01,
  1547. 'epsilon_ec': 0.1,
  1548. 'allow_zeros': allow_zeros,
  1549. 'triangle_rule': triangle_rule,
  1550. 'verbose': 1}
  1551. kernel_options = {'name': 'WeisfeilerLehman',
  1552. 'height': 4,
  1553. 'base_kernel': 'subtree',
  1554. 'parallel': 'imap_unordered',
  1555. # 'parallel': None,
  1556. 'n_jobs': multiprocessing.cpu_count(),
  1557. 'normalize': True,
  1558. 'verbose': 0}
  1559. ged_options = {'method': 'IPFP',
  1560. 'initialization_method': 'RANDOM', # 'NODE'
  1561. 'initial_solutions': initial_solutions, # 1
  1562. 'edit_cost': 'CONSTANT', #
  1563. 'attr_distance': 'euclidean',
  1564. 'ratio_runs_from_initial_solutions': 1,
  1565. 'threads': multiprocessing.cpu_count(),
  1566. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1567. mge_options = {'init_type': 'MEDOID',
  1568. 'random_inits': 10,
  1569. 'time_limit': 0,
  1570. 'verbose': 1,
  1571. 'update_order': update_order,
  1572. 'randomness': 'REAL',
  1573. 'refine': False}
  1574. save_results = True
  1575. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1576. irrelevant_labels = None #
  1577. edge_required = False #
  1578. if not os.path.exists(dir_save):
  1579. os.makedirs(dir_save)
  1580. file_output = open(dir_save + 'output.txt', 'a')
  1581. sys.stdout = file_output
  1582. # print settings.
  1583. print('parameters:')
  1584. print('dataset name:', ds_name)
  1585. print('knn_options:', knn_options)
  1586. print('mpg_options:', mpg_options)
  1587. print('kernel_options:', kernel_options)
  1588. print('ged_options:', ged_options)
  1589. print('mge_options:', mge_options)
  1590. print('save_results:', save_results)
  1591. print('irrelevant_labels:', irrelevant_labels)
  1592. print()
  1593. # generate preimages.
  1594. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1595. print('\n-------------------------------------')
  1596. print('train examples used:', train_examples, '\n')
  1597. mpg_options['fit_method'] = train_examples
  1598. try:
  1599. 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)
  1600. except Exception as exp:
  1601. print('An exception occured when running this experiment:')
  1602. LOG_FILENAME = dir_save + 'error.txt'
  1603. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1604. logging.exception('')
  1605. print(repr(exp))
  1606. def xp_median_preimage_7_1():
  1607. """xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  1608. """
  1609. for test_size in test_sizes:
  1610. # set parameters.
  1611. ds_name = 'MUTAG' #
  1612. knn_options = {'n_neighbors': 1,
  1613. 'n_splits': 30,
  1614. 'test_size': test_size,
  1615. 'verbose': True}
  1616. mpg_options = {'fit_method': 'k-graphs',
  1617. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1618. 'ds_name': ds_name,
  1619. 'parallel': True, # False
  1620. 'time_limit_in_sec': 0,
  1621. 'max_itrs': 100, #
  1622. 'max_itrs_without_update': 3,
  1623. 'epsilon_residual': 0.01,
  1624. 'epsilon_ec': 0.1,
  1625. 'allow_zeros': allow_zeros,
  1626. 'triangle_rule': triangle_rule,
  1627. 'verbose': 1}
  1628. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1629. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1630. kernel_options = {'name': 'StructuralSP',
  1631. 'edge_weight': None,
  1632. 'node_kernels': sub_kernels,
  1633. 'edge_kernels': sub_kernels,
  1634. 'compute_method': 'naive',
  1635. 'parallel': 'imap_unordered',
  1636. # 'parallel': None,
  1637. 'n_jobs': multiprocessing.cpu_count(),
  1638. 'normalize': True,
  1639. 'verbose': 0}
  1640. ged_options = {'method': 'IPFP',
  1641. 'initialization_method': 'RANDOM', # 'NODE'
  1642. 'initial_solutions': initial_solutions, # 1
  1643. 'edit_cost': 'CONSTANT', #
  1644. 'attr_distance': 'euclidean',
  1645. 'ratio_runs_from_initial_solutions': 1,
  1646. 'threads': multiprocessing.cpu_count(),
  1647. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1648. mge_options = {'init_type': 'MEDOID',
  1649. 'random_inits': 10,
  1650. 'time_limit': 0,
  1651. 'verbose': 1,
  1652. 'update_order': update_order,
  1653. 'randomness': 'REAL',
  1654. 'refine': False}
  1655. save_results = True
  1656. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1657. irrelevant_labels = None #
  1658. edge_required = False #
  1659. if not os.path.exists(dir_save):
  1660. os.makedirs(dir_save)
  1661. file_output = open(dir_save + 'output.txt', 'a')
  1662. sys.stdout = file_output
  1663. # print settings.
  1664. print('parameters:')
  1665. print('dataset name:', ds_name)
  1666. print('knn_options:', knn_options)
  1667. print('mpg_options:', mpg_options)
  1668. print('kernel_options:', kernel_options)
  1669. print('ged_options:', ged_options)
  1670. print('mge_options:', mge_options)
  1671. print('save_results:', save_results)
  1672. print('irrelevant_labels:', irrelevant_labels)
  1673. print()
  1674. # generate preimages.
  1675. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1676. print('\n-------------------------------------')
  1677. print('train examples used:', train_examples, '\n')
  1678. mpg_options['fit_method'] = train_examples
  1679. try:
  1680. 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)
  1681. except Exception as exp:
  1682. print('An exception occured when running this experiment:')
  1683. LOG_FILENAME = dir_save + 'error.txt'
  1684. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1685. logging.exception('')
  1686. print(repr(exp))
  1687. def xp_median_preimage_7_2():
  1688. """xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  1689. """
  1690. for test_size in test_sizes:
  1691. # set parameters.
  1692. ds_name = 'MUTAG' #
  1693. knn_options = {'n_neighbors': 1,
  1694. 'n_splits': 30,
  1695. 'test_size': test_size,
  1696. 'verbose': True}
  1697. mpg_options = {'fit_method': 'k-graphs',
  1698. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1699. 'ds_name': ds_name,
  1700. 'parallel': True, # False
  1701. 'time_limit_in_sec': 0,
  1702. 'max_itrs': 100, #
  1703. 'max_itrs_without_update': 3,
  1704. 'epsilon_residual': 0.01,
  1705. 'epsilon_ec': 0.1,
  1706. 'allow_zeros': allow_zeros,
  1707. 'triangle_rule': triangle_rule,
  1708. 'verbose': 1}
  1709. kernel_options = {'name': 'PathUpToH',
  1710. 'depth': 2, #
  1711. 'k_func': 'MinMax', #
  1712. 'compute_method': 'trie',
  1713. 'parallel': 'imap_unordered',
  1714. # 'parallel': None,
  1715. 'n_jobs': multiprocessing.cpu_count(),
  1716. 'normalize': True,
  1717. 'verbose': 0}
  1718. ged_options = {'method': 'IPFP',
  1719. 'initialization_method': 'RANDOM', # 'NODE'
  1720. 'initial_solutions': initial_solutions, # 1
  1721. 'edit_cost': 'CONSTANT', #
  1722. 'attr_distance': 'euclidean',
  1723. 'ratio_runs_from_initial_solutions': 1,
  1724. 'threads': multiprocessing.cpu_count(),
  1725. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1726. mge_options = {'init_type': 'MEDOID',
  1727. 'random_inits': 10,
  1728. 'time_limit': 0,
  1729. 'verbose': 1,
  1730. 'update_order': update_order,
  1731. 'randomness': 'REAL',
  1732. 'refine': False}
  1733. save_results = True
  1734. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1735. irrelevant_labels = None #
  1736. edge_required = False #
  1737. if not os.path.exists(dir_save):
  1738. os.makedirs(dir_save)
  1739. file_output = open(dir_save + 'output.txt', 'a')
  1740. sys.stdout = file_output
  1741. # print settings.
  1742. print('parameters:')
  1743. print('dataset name:', ds_name)
  1744. print('knn_options:', knn_options)
  1745. print('mpg_options:', mpg_options)
  1746. print('kernel_options:', kernel_options)
  1747. print('ged_options:', ged_options)
  1748. print('mge_options:', mge_options)
  1749. print('save_results:', save_results)
  1750. print('irrelevant_labels:', irrelevant_labels)
  1751. print()
  1752. # generate preimages.
  1753. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1754. print('\n-------------------------------------')
  1755. print('train examples used:', train_examples, '\n')
  1756. mpg_options['fit_method'] = train_examples
  1757. try:
  1758. 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)
  1759. except Exception as exp:
  1760. print('An exception occured when running experiment on xp_median_preimage_7_2:')
  1761. LOG_FILENAME = dir_save + 'error.txt'
  1762. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1763. logging.exception('')
  1764. print(repr(exp))
  1765. def xp_median_preimage_7_3():
  1766. """xp 7_3: MUTAG, Treelet, using CONSTANT.
  1767. """
  1768. for test_size in test_sizes:
  1769. from gklearn.utils.kernels import polynomialkernel
  1770. # set parameters.
  1771. ds_name = 'MUTAG' #
  1772. knn_options = {'n_neighbors': 1,
  1773. 'n_splits': 30,
  1774. 'test_size': test_size,
  1775. 'verbose': True}
  1776. mpg_options = {'fit_method': 'k-graphs',
  1777. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1778. 'ds_name': ds_name,
  1779. 'parallel': True, # False
  1780. 'time_limit_in_sec': 0,
  1781. 'max_itrs': 100, #
  1782. 'max_itrs_without_update': 3,
  1783. 'epsilon_residual': 0.01,
  1784. 'epsilon_ec': 0.1,
  1785. 'allow_zeros': allow_zeros,
  1786. 'triangle_rule': triangle_rule,
  1787. 'verbose': 1}
  1788. pkernel = functools.partial(polynomialkernel, d=3, c=1e+8)
  1789. kernel_options = {'name': 'Treelet',
  1790. 'sub_kernel': pkernel,
  1791. 'parallel': 'imap_unordered',
  1792. # 'parallel': None,
  1793. 'n_jobs': multiprocessing.cpu_count(),
  1794. 'normalize': True,
  1795. 'verbose': 0}
  1796. ged_options = {'method': 'IPFP',
  1797. 'initialization_method': 'RANDOM', # 'NODE'
  1798. 'initial_solutions': initial_solutions, # 1
  1799. 'edit_cost': 'CONSTANT', #
  1800. 'attr_distance': 'euclidean',
  1801. 'ratio_runs_from_initial_solutions': 1,
  1802. 'threads': multiprocessing.cpu_count(),
  1803. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1804. mge_options = {'init_type': 'MEDOID',
  1805. 'random_inits': 10,
  1806. 'time_limit': 0,
  1807. 'verbose': 1,
  1808. 'update_order': update_order,
  1809. 'randomness': 'REAL',
  1810. 'refine': False}
  1811. save_results = True
  1812. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1813. irrelevant_labels = None #
  1814. edge_required = False #
  1815. if not os.path.exists(dir_save):
  1816. os.makedirs(dir_save)
  1817. file_output = open(dir_save + 'output.txt', 'a')
  1818. sys.stdout = file_output
  1819. # print settings.
  1820. print('parameters:')
  1821. print('dataset name:', ds_name)
  1822. print('knn_options:', knn_options)
  1823. print('mpg_options:', mpg_options)
  1824. print('kernel_options:', kernel_options)
  1825. print('ged_options:', ged_options)
  1826. print('mge_options:', mge_options)
  1827. print('save_results:', save_results)
  1828. print('irrelevant_labels:', irrelevant_labels)
  1829. print()
  1830. # generate preimages.
  1831. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1832. print('\n-------------------------------------')
  1833. print('train examples used:', train_examples, '\n')
  1834. mpg_options['fit_method'] = train_examples
  1835. try:
  1836. 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)
  1837. except Exception as exp:
  1838. print('An exception occured when running this experiment:')
  1839. LOG_FILENAME = dir_save + 'error.txt'
  1840. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1841. logging.exception('')
  1842. print(repr(exp))
  1843. def xp_median_preimage_7_4():
  1844. """xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  1845. """
  1846. for test_size in test_sizes:
  1847. # set parameters.
  1848. ds_name = 'MUTAG' #
  1849. knn_options = {'n_neighbors': 1,
  1850. 'n_splits': 30,
  1851. 'test_size': test_size,
  1852. 'verbose': True}
  1853. mpg_options = {'fit_method': 'k-graphs',
  1854. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  1855. 'ds_name': ds_name,
  1856. 'parallel': True, # False
  1857. 'time_limit_in_sec': 0,
  1858. 'max_itrs': 100, #
  1859. 'max_itrs_without_update': 3,
  1860. 'epsilon_residual': 0.01,
  1861. 'epsilon_ec': 0.1,
  1862. 'allow_zeros': allow_zeros,
  1863. 'triangle_rule': triangle_rule,
  1864. 'verbose': 1}
  1865. kernel_options = {'name': 'WeisfeilerLehman',
  1866. 'height': 1,
  1867. 'base_kernel': 'subtree',
  1868. 'parallel': 'imap_unordered',
  1869. # 'parallel': None,
  1870. 'n_jobs': multiprocessing.cpu_count(),
  1871. 'normalize': True,
  1872. 'verbose': 0}
  1873. ged_options = {'method': 'IPFP',
  1874. 'initialization_method': 'RANDOM', # 'NODE'
  1875. 'initial_solutions': initial_solutions, # 1
  1876. 'edit_cost': 'CONSTANT', #
  1877. 'attr_distance': 'euclidean',
  1878. 'ratio_runs_from_initial_solutions': 1,
  1879. 'threads': multiprocessing.cpu_count(),
  1880. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1881. mge_options = {'init_type': 'MEDOID',
  1882. 'random_inits': 10,
  1883. 'time_limit': 0,
  1884. 'verbose': 1,
  1885. 'update_order': update_order,
  1886. 'randomness': 'REAL',
  1887. 'refine': False}
  1888. save_results = True
  1889. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1890. irrelevant_labels = None #
  1891. edge_required = False #
  1892. if not os.path.exists(dir_save):
  1893. os.makedirs(dir_save)
  1894. file_output = open(dir_save + 'output.txt', 'a')
  1895. sys.stdout = file_output
  1896. # print settings.
  1897. print('parameters:')
  1898. print('dataset name:', ds_name)
  1899. print('knn_options:', knn_options)
  1900. print('mpg_options:', mpg_options)
  1901. print('kernel_options:', kernel_options)
  1902. print('ged_options:', ged_options)
  1903. print('mge_options:', mge_options)
  1904. print('save_results:', save_results)
  1905. print('irrelevant_labels:', irrelevant_labels)
  1906. print()
  1907. # generate preimages.
  1908. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  1909. print('\n-------------------------------------')
  1910. print('train examples used:', train_examples, '\n')
  1911. mpg_options['fit_method'] = train_examples
  1912. try:
  1913. 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)
  1914. except Exception as exp:
  1915. print('An exception occured when running this experiment:')
  1916. LOG_FILENAME = dir_save + 'error.txt'
  1917. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1918. logging.exception('')
  1919. print(repr(exp))
  1920. def xp_median_preimage_6_1():
  1921. """xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  1922. """
  1923. for test_size in test_sizes:
  1924. # set parameters.
  1925. ds_name = 'COIL-RAG' #
  1926. knn_options = {'n_neighbors': 1,
  1927. 'n_splits': 30,
  1928. 'test_size': test_size,
  1929. 'verbose': True}
  1930. mpg_options = {'fit_method': 'k-graphs',
  1931. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  1932. 'ds_name': ds_name,
  1933. 'parallel': True, # False
  1934. 'time_limit_in_sec': 0,
  1935. 'max_itrs': 100,
  1936. 'max_itrs_without_update': 3,
  1937. 'epsilon_residual': 0.01,
  1938. 'epsilon_ec': 0.1,
  1939. 'allow_zeros': allow_zeros,
  1940. 'triangle_rule': triangle_rule,
  1941. 'verbose': 1}
  1942. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  1943. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  1944. kernel_options = {'name': 'StructuralSP',
  1945. 'edge_weight': None,
  1946. 'node_kernels': sub_kernels,
  1947. 'edge_kernels': sub_kernels,
  1948. 'compute_method': 'naive',
  1949. 'parallel': 'imap_unordered',
  1950. # 'parallel': None,
  1951. 'n_jobs': multiprocessing.cpu_count(),
  1952. 'normalize': True,
  1953. 'verbose': 0}
  1954. ged_options = {'method': 'IPFP',
  1955. 'initialization_method': 'RANDOM', # 'NODE'
  1956. 'initial_solutions': initial_solutions, # 1
  1957. 'edit_cost': 'NON_SYMBOLIC', #
  1958. 'attr_distance': 'euclidean',
  1959. 'ratio_runs_from_initial_solutions': 1,
  1960. 'threads': multiprocessing.cpu_count(),
  1961. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  1962. mge_options = {'init_type': 'MEDOID',
  1963. 'random_inits': 10,
  1964. 'time_limit': 0,
  1965. 'verbose': 1,
  1966. 'update_order': update_order,
  1967. 'randomness': 'REAL',
  1968. 'refine': False}
  1969. save_results = True
  1970. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  1971. irrelevant_labels = None #
  1972. edge_required = False #
  1973. if not os.path.exists(dir_save):
  1974. os.makedirs(dir_save)
  1975. file_output = open(dir_save + 'output.txt', 'a')
  1976. sys.stdout = file_output
  1977. # print settings.
  1978. print('parameters:')
  1979. print('dataset name:', ds_name)
  1980. print('knn_options:', knn_options)
  1981. print('mpg_options:', mpg_options)
  1982. print('kernel_options:', kernel_options)
  1983. print('ged_options:', ged_options)
  1984. print('mge_options:', mge_options)
  1985. print('save_results:', save_results)
  1986. print('irrelevant_labels:', irrelevant_labels)
  1987. print()
  1988. # generate preimages.
  1989. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  1990. print('\n-------------------------------------')
  1991. print('train examples used:', train_examples, '\n')
  1992. mpg_options['fit_method'] = train_examples
  1993. try:
  1994. 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)
  1995. except Exception as exp:
  1996. print('An exception occured when running experiment on xp_median_preimage_6_1:')
  1997. LOG_FILENAME = dir_save + 'error.txt'
  1998. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  1999. logging.exception('')
  2000. print(repr(exp))
  2001. def xp_median_preimage_6_2():
  2002. """xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  2003. """
  2004. for test_size in test_sizes:
  2005. # set parameters.
  2006. ds_name = 'COIL-RAG' #
  2007. knn_options = {'n_neighbors': 1,
  2008. 'n_splits': 30,
  2009. 'test_size': test_size,
  2010. 'verbose': True}
  2011. mpg_options = {'fit_method': 'k-graphs',
  2012. 'init_ecc': [3, 3, 1, 3, 3, 1], #
  2013. 'ds_name': ds_name,
  2014. 'parallel': True, # False
  2015. 'time_limit_in_sec': 0,
  2016. 'max_itrs': 100,
  2017. 'max_itrs_without_update': 3,
  2018. 'epsilon_residual': 0.01,
  2019. 'epsilon_ec': 0.1,
  2020. 'allow_zeros': allow_zeros,
  2021. 'triangle_rule': triangle_rule,
  2022. 'verbose': 1}
  2023. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2024. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2025. kernel_options = {'name': 'ShortestPath',
  2026. 'edge_weight': None,
  2027. 'node_kernels': sub_kernels,
  2028. 'parallel': 'imap_unordered',
  2029. # 'parallel': None,
  2030. 'n_jobs': multiprocessing.cpu_count(),
  2031. 'normalize': True,
  2032. 'verbose': 0}
  2033. ged_options = {'method': 'IPFP',
  2034. 'initialization_method': 'RANDOM', # 'NODE'
  2035. 'initial_solutions': initial_solutions, # 1
  2036. 'edit_cost': 'NON_SYMBOLIC', #
  2037. 'attr_distance': 'euclidean',
  2038. 'ratio_runs_from_initial_solutions': 1,
  2039. 'threads': multiprocessing.cpu_count(),
  2040. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2041. mge_options = {'init_type': 'MEDOID',
  2042. 'random_inits': 10,
  2043. 'time_limit': 0,
  2044. 'verbose': 1,
  2045. 'update_order': update_order,
  2046. 'randomness': 'REAL',
  2047. 'refine': False}
  2048. save_results = True
  2049. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2050. irrelevant_labels = None #
  2051. edge_required = True #
  2052. if not os.path.exists(dir_save):
  2053. os.makedirs(dir_save)
  2054. file_output = open(dir_save + 'output.txt', 'a')
  2055. sys.stdout = file_output
  2056. # print settings.
  2057. print('parameters:')
  2058. print('dataset name:', ds_name)
  2059. print('knn_options:', knn_options)
  2060. print('mpg_options:', mpg_options)
  2061. print('kernel_options:', kernel_options)
  2062. print('ged_options:', ged_options)
  2063. print('mge_options:', mge_options)
  2064. print('save_results:', save_results)
  2065. print('irrelevant_labels:', irrelevant_labels)
  2066. print()
  2067. # generate preimages.
  2068. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2069. print('\n-------------------------------------')
  2070. print('train examples used:', train_examples, '\n')
  2071. mpg_options['fit_method'] = train_examples
  2072. try:
  2073. 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)
  2074. except Exception as exp:
  2075. print('An exception occured when running experiment on xp_median_preimage_6_2:')
  2076. LOG_FILENAME = dir_save + 'error.txt'
  2077. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2078. logging.exception('')
  2079. print(repr(exp))
  2080. def xp_median_preimage_5_1():
  2081. """xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  2082. """
  2083. for test_size in test_sizes:
  2084. # set parameters.
  2085. ds_name = 'FRANKENSTEIN' #
  2086. knn_options = {'n_neighbors': 1,
  2087. 'n_splits': 30,
  2088. 'test_size': test_size,
  2089. 'verbose': True}
  2090. mpg_options = {'fit_method': 'k-graphs',
  2091. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  2092. 'ds_name': ds_name,
  2093. 'parallel': True, # False
  2094. 'time_limit_in_sec': 0,
  2095. 'max_itrs': 100,
  2096. 'max_itrs_without_update': 3,
  2097. 'epsilon_residual': 0.01,
  2098. 'epsilon_ec': 0.1,
  2099. 'allow_zeros': allow_zeros,
  2100. 'triangle_rule': triangle_rule,
  2101. 'verbose': 1}
  2102. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2103. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2104. kernel_options = {'name': 'StructuralSP',
  2105. 'edge_weight': None,
  2106. 'node_kernels': sub_kernels,
  2107. 'edge_kernels': sub_kernels,
  2108. 'compute_method': 'naive',
  2109. 'parallel': 'imap_unordered',
  2110. # 'parallel': None,
  2111. 'n_jobs': multiprocessing.cpu_count(),
  2112. 'normalize': True,
  2113. 'verbose': 0}
  2114. ged_options = {'method': 'IPFP',
  2115. 'initialization_method': 'RANDOM', # 'NODE'
  2116. 'initial_solutions': initial_solutions, # 1
  2117. 'edit_cost': 'NON_SYMBOLIC',
  2118. 'attr_distance': 'euclidean',
  2119. 'ratio_runs_from_initial_solutions': 1,
  2120. 'threads': multiprocessing.cpu_count(),
  2121. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2122. mge_options = {'init_type': 'MEDOID',
  2123. 'random_inits': 10,
  2124. 'time_limit': 0,
  2125. 'verbose': 1,
  2126. 'update_order': update_order,
  2127. 'randomness': 'REAL',
  2128. 'refine': False}
  2129. save_results = True
  2130. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2131. irrelevant_labels = None #
  2132. edge_required = False #
  2133. if not os.path.exists(dir_save):
  2134. os.makedirs(dir_save)
  2135. file_output = open(dir_save + 'output.txt', 'a')
  2136. sys.stdout = file_output
  2137. # print settings.
  2138. print('parameters:')
  2139. print('dataset name:', ds_name)
  2140. print('knn_options:', knn_options)
  2141. print('mpg_options:', mpg_options)
  2142. print('kernel_options:', kernel_options)
  2143. print('ged_options:', ged_options)
  2144. print('mge_options:', mge_options)
  2145. print('save_results:', save_results)
  2146. print('irrelevant_labels:', irrelevant_labels)
  2147. print()
  2148. # generate preimages.
  2149. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2150. print('\n-------------------------------------')
  2151. print('train examples used:', train_examples, '\n')
  2152. mpg_options['fit_method'] = train_examples
  2153. try:
  2154. 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)
  2155. except Exception as exp:
  2156. print('An exception occured when running this experiment:')
  2157. LOG_FILENAME = dir_save + 'error.txt'
  2158. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2159. logging.exception('')
  2160. print(repr(exp))
  2161. def xp_median_preimage_4_1():
  2162. """xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  2163. """
  2164. for test_size in test_sizes:
  2165. # set parameters.
  2166. ds_name = 'COLORS-3' #
  2167. knn_options = {'n_neighbors': 1,
  2168. 'n_splits': 30,
  2169. 'test_size': test_size,
  2170. 'verbose': True}
  2171. mpg_options = {'fit_method': 'k-graphs',
  2172. 'init_ecc': [3, 3, 1, 3, 3, 0], #
  2173. 'ds_name': ds_name,
  2174. 'parallel': True, # False
  2175. 'time_limit_in_sec': 0,
  2176. 'max_itrs': 100,
  2177. 'max_itrs_without_update': 3,
  2178. 'epsilon_residual': 0.01,
  2179. 'epsilon_ec': 0.1,
  2180. 'allow_zeros': allow_zeros,
  2181. 'triangle_rule': triangle_rule,
  2182. 'verbose': 1}
  2183. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2184. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2185. kernel_options = {'name': 'StructuralSP',
  2186. 'edge_weight': None,
  2187. 'node_kernels': sub_kernels,
  2188. 'edge_kernels': sub_kernels,
  2189. 'compute_method': 'naive',
  2190. 'parallel': 'imap_unordered',
  2191. # 'parallel': None,
  2192. 'n_jobs': multiprocessing.cpu_count(),
  2193. 'normalize': True,
  2194. 'verbose': 0}
  2195. ged_options = {'method': 'IPFP',
  2196. 'initialization_method': 'RANDOM', # 'NODE'
  2197. 'initial_solutions': initial_solutions, # 1
  2198. 'edit_cost': 'NON_SYMBOLIC',
  2199. 'attr_distance': 'euclidean',
  2200. 'ratio_runs_from_initial_solutions': 1,
  2201. 'threads': multiprocessing.cpu_count(),
  2202. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2203. mge_options = {'init_type': 'MEDOID',
  2204. 'random_inits': 10,
  2205. 'time_limit': 0,
  2206. 'verbose': 1,
  2207. 'update_order': update_order,
  2208. 'randomness': 'REAL',
  2209. 'refine': False}
  2210. save_results = True
  2211. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2212. irrelevant_labels = None #
  2213. edge_required = False #
  2214. if not os.path.exists(dir_save):
  2215. os.makedirs(dir_save)
  2216. file_output = open(dir_save + 'output.txt', 'a')
  2217. sys.stdout = file_output
  2218. # print settings.
  2219. print('parameters:')
  2220. print('dataset name:', ds_name)
  2221. print('knn_options:', knn_options)
  2222. print('mpg_options:', mpg_options)
  2223. print('kernel_options:', kernel_options)
  2224. print('ged_options:', ged_options)
  2225. print('mge_options:', mge_options)
  2226. print('save_results:', save_results)
  2227. print('irrelevant_labels:', irrelevant_labels)
  2228. print()
  2229. # generate preimages.
  2230. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2231. print('\n-------------------------------------')
  2232. print('train examples used:', train_examples, '\n')
  2233. mpg_options['fit_method'] = train_examples
  2234. try:
  2235. 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)
  2236. except Exception as exp:
  2237. print('An exception occured when running this experiment:')
  2238. LOG_FILENAME = dir_save + 'error.txt'
  2239. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2240. logging.exception('')
  2241. print(repr(exp))
  2242. def xp_median_preimage_3_2():
  2243. """xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  2244. """
  2245. for test_size in test_sizes:
  2246. # set parameters.
  2247. ds_name = 'Fingerprint' #
  2248. knn_options = {'n_neighbors': 1,
  2249. 'n_splits': 30,
  2250. 'test_size': test_size,
  2251. 'verbose': True}
  2252. mpg_options = {'fit_method': 'k-graphs',
  2253. 'init_ecc': [0.525, 0.525, 0.01, 0.125, 0.125], #
  2254. 'ds_name': ds_name,
  2255. 'parallel': True, # False
  2256. 'time_limit_in_sec': 0,
  2257. 'max_itrs': 100,
  2258. 'max_itrs_without_update': 3,
  2259. 'epsilon_residual': 0.01,
  2260. 'epsilon_ec': 0.1,
  2261. 'allow_zeros': allow_zeros,
  2262. 'triangle_rule': triangle_rule,
  2263. 'verbose': 1}
  2264. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2265. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2266. kernel_options = {'name': 'ShortestPath',
  2267. 'edge_weight': None,
  2268. 'node_kernels': sub_kernels,
  2269. 'parallel': 'imap_unordered',
  2270. # 'parallel': None,
  2271. 'n_jobs': multiprocessing.cpu_count(),
  2272. 'normalize': True,
  2273. 'verbose': 0}
  2274. ged_options = {'method': 'IPFP',
  2275. 'initialization_method': 'RANDOM', # 'NODE'
  2276. 'initial_solutions': initial_solutions, # 1
  2277. 'edit_cost': 'LETTER2',
  2278. 'attr_distance': 'euclidean',
  2279. 'ratio_runs_from_initial_solutions': 1,
  2280. 'threads': multiprocessing.cpu_count(),
  2281. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2282. mge_options = {'init_type': 'MEDOID',
  2283. 'random_inits': 10,
  2284. 'time_limit': 0,
  2285. 'verbose': 1,
  2286. 'update_order': update_order,
  2287. 'randomness': 'REAL',
  2288. 'refine': False}
  2289. save_results = True
  2290. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2291. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  2292. edge_required = True #
  2293. if not os.path.exists(dir_save):
  2294. os.makedirs(dir_save)
  2295. file_output = open(dir_save + 'output.txt', 'a')
  2296. sys.stdout = file_output
  2297. # print settings.
  2298. print('parameters:')
  2299. print('dataset name:', ds_name)
  2300. print('knn_options:', knn_options)
  2301. print('mpg_options:', mpg_options)
  2302. print('kernel_options:', kernel_options)
  2303. print('ged_options:', ged_options)
  2304. print('mge_options:', mge_options)
  2305. print('save_results:', save_results)
  2306. print('irrelevant_labels:', irrelevant_labels)
  2307. print()
  2308. # generate preimages.
  2309. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2310. print('\n-------------------------------------')
  2311. print('train examples used:', train_examples, '\n')
  2312. mpg_options['fit_method'] = train_examples
  2313. try:
  2314. 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)
  2315. except Exception as exp:
  2316. print('An exception occured when running this experiment:')
  2317. LOG_FILENAME = dir_save + 'error.txt'
  2318. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2319. logging.exception('')
  2320. print(repr(exp))
  2321. def xp_median_preimage_3_1():
  2322. """xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  2323. """
  2324. for test_size in test_sizes:
  2325. # set parameters.
  2326. ds_name = 'Fingerprint' #
  2327. knn_options = {'n_neighbors': 1,
  2328. 'n_splits': 30,
  2329. 'test_size': test_size,
  2330. 'verbose': True}
  2331. mpg_options = {'fit_method': 'k-graphs',
  2332. 'init_ecc': [0.525, 0.525, 0.01, 0.125, 0.125], #
  2333. 'ds_name': ds_name,
  2334. 'parallel': True, # False
  2335. 'time_limit_in_sec': 0,
  2336. 'max_itrs': 100,
  2337. 'max_itrs_without_update': 3,
  2338. 'epsilon_residual': 0.01,
  2339. 'epsilon_ec': 0.1,
  2340. 'allow_zeros': allow_zeros,
  2341. 'triangle_rule': triangle_rule,
  2342. 'verbose': 1}
  2343. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2344. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2345. kernel_options = {'name': 'StructuralSP',
  2346. 'edge_weight': None,
  2347. 'node_kernels': sub_kernels,
  2348. 'edge_kernels': sub_kernels,
  2349. 'compute_method': 'naive',
  2350. 'parallel': 'imap_unordered',
  2351. # 'parallel': None,
  2352. 'n_jobs': multiprocessing.cpu_count(),
  2353. 'normalize': True,
  2354. 'verbose': 0}
  2355. ged_options = {'method': 'IPFP',
  2356. 'initialization_method': 'RANDOM', # 'NODE'
  2357. 'initial_solutions': initial_solutions, # 1
  2358. 'edit_cost': 'LETTER2',
  2359. 'attr_distance': 'euclidean',
  2360. 'ratio_runs_from_initial_solutions': 1,
  2361. 'threads': multiprocessing.cpu_count(),
  2362. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2363. mge_options = {'init_type': 'MEDOID',
  2364. 'random_inits': 10,
  2365. 'time_limit': 0,
  2366. 'verbose': 1,
  2367. 'update_order': update_order,
  2368. 'randomness': 'REAL',
  2369. 'refine': False}
  2370. save_results = True
  2371. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2372. irrelevant_labels = {'edge_attrs': ['orient', 'angle']} #
  2373. edge_required = False #
  2374. if not os.path.exists(dir_save):
  2375. os.makedirs(dir_save)
  2376. file_output = open(dir_save + 'output.txt', 'a')
  2377. sys.stdout = file_output
  2378. # print settings.
  2379. print('parameters:')
  2380. print('dataset name:', ds_name)
  2381. print('knn_options:', knn_options)
  2382. print('mpg_options:', mpg_options)
  2383. print('kernel_options:', kernel_options)
  2384. print('ged_options:', ged_options)
  2385. print('mge_options:', mge_options)
  2386. print('save_results:', save_results)
  2387. print('irrelevant_labels:', irrelevant_labels)
  2388. print()
  2389. # generate preimages.
  2390. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2391. print('\n-------------------------------------')
  2392. print('train examples used:', train_examples, '\n')
  2393. mpg_options['fit_method'] = train_examples
  2394. try:
  2395. 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)
  2396. except Exception as exp:
  2397. print('An exception occured when running this experiment:')
  2398. LOG_FILENAME = dir_save + 'error.txt'
  2399. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2400. logging.exception('')
  2401. print(repr(exp))
  2402. def xp_median_preimage_2_1():
  2403. """xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  2404. """
  2405. for test_size in test_sizes:
  2406. # set parameters.
  2407. ds_name = 'COIL-DEL' #
  2408. knn_options = {'n_neighbors': 1,
  2409. 'n_splits': 30,
  2410. 'test_size': test_size,
  2411. 'verbose': True}
  2412. mpg_options = {'fit_method': 'k-graphs',
  2413. 'init_ecc': [3, 3, 1, 3, 3],
  2414. 'ds_name': ds_name,
  2415. 'parallel': True, # False
  2416. 'time_limit_in_sec': 0,
  2417. 'max_itrs': 100,
  2418. 'max_itrs_without_update': 3,
  2419. 'epsilon_residual': 0.01,
  2420. 'epsilon_ec': 0.1,
  2421. 'allow_zeros': allow_zeros,
  2422. 'triangle_rule': triangle_rule,
  2423. 'verbose': 1}
  2424. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2425. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2426. kernel_options = {'name': 'StructuralSP',
  2427. 'edge_weight': None,
  2428. 'node_kernels': sub_kernels,
  2429. 'edge_kernels': sub_kernels,
  2430. 'compute_method': 'naive',
  2431. 'parallel': 'imap_unordered',
  2432. # 'parallel': None,
  2433. 'n_jobs': multiprocessing.cpu_count(),
  2434. 'normalize': True,
  2435. 'verbose': 0}
  2436. ged_options = {'method': 'IPFP',
  2437. 'initialization_method': 'RANDOM', # 'NODE'
  2438. 'initial_solutions': initial_solutions, # 1
  2439. 'edit_cost': 'LETTER2',
  2440. 'attr_distance': 'euclidean',
  2441. 'ratio_runs_from_initial_solutions': 1,
  2442. 'threads': multiprocessing.cpu_count(),
  2443. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2444. mge_options = {'init_type': 'MEDOID',
  2445. 'random_inits': 10,
  2446. 'time_limit': 0,
  2447. 'verbose': 1,
  2448. 'update_order': update_order,
  2449. 'randomness': 'REAL',
  2450. 'refine': False}
  2451. save_results = True
  2452. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '.node_attrs/'
  2453. irrelevant_labels = {'edge_labels': ['valence']}
  2454. edge_required = False
  2455. if not os.path.exists(dir_save):
  2456. os.makedirs(dir_save)
  2457. file_output = open(dir_save + 'output.txt', 'a')
  2458. sys.stdout = file_output
  2459. # print settings.
  2460. print('parameters:')
  2461. print('dataset name:', ds_name)
  2462. print('knn_options:', knn_options)
  2463. print('mpg_options:', mpg_options)
  2464. print('kernel_options:', kernel_options)
  2465. print('ged_options:', ged_options)
  2466. print('mge_options:', mge_options)
  2467. print('save_results:', save_results)
  2468. print('irrelevant_labels:', irrelevant_labels)
  2469. print()
  2470. # # compute gram matrices for each class a priori.
  2471. # print('Compute gram matrices for each class a priori.')
  2472. # compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels)
  2473. # generate preimages.
  2474. for train_examples in ['k-graphs', 'random', 'best-dataset', 'trainset']:
  2475. print('\n-------------------------------------')
  2476. print('train examples used:', train_examples, '\n')
  2477. mpg_options['fit_method'] = train_examples
  2478. try:
  2479. 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)
  2480. except Exception as exp:
  2481. print('An exception occured when running this experiment:')
  2482. LOG_FILENAME = dir_save + 'error.txt'
  2483. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2484. logging.exception('')
  2485. print(repr(exp))
  2486. def xp_median_preimage_1_1():
  2487. """xp 1_1: Letter-high, StructuralSP.
  2488. """
  2489. for test_size in test_sizes:
  2490. # set parameters.
  2491. ds_name = 'Letter-high'
  2492. knn_options = {'n_neighbors': 1,
  2493. 'n_splits': 30,
  2494. 'test_size': test_size,
  2495. 'verbose': True}
  2496. mpg_options = {'fit_method': 'k-graphs',
  2497. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  2498. 'ds_name': ds_name,
  2499. 'parallel': True, # False
  2500. 'time_limit_in_sec': 0,
  2501. 'max_itrs': 100,
  2502. 'max_itrs_without_update': 3,
  2503. 'epsilon_residual': 0.01,
  2504. 'epsilon_ec': 0.1,
  2505. 'allow_zeros': allow_zeros,
  2506. 'triangle_rule': triangle_rule,
  2507. 'verbose': 1}
  2508. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2509. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2510. kernel_options = {'name': 'StructuralSP',
  2511. 'edge_weight': None,
  2512. 'node_kernels': sub_kernels,
  2513. 'edge_kernels': sub_kernels,
  2514. 'compute_method': 'naive',
  2515. 'parallel': 'imap_unordered',
  2516. # 'parallel': None,
  2517. 'n_jobs': multiprocessing.cpu_count(),
  2518. 'normalize': True,
  2519. 'verbose': 0}
  2520. ged_options = {'method': 'IPFP',
  2521. 'initialization_method': 'RANDOM', # 'NODE'
  2522. 'initial_solutions': initial_solutions, # 1
  2523. 'edit_cost': 'LETTER2',
  2524. 'attr_distance': 'euclidean',
  2525. 'ratio_runs_from_initial_solutions': 1,
  2526. 'threads': multiprocessing.cpu_count(),
  2527. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2528. mge_options = {'init_type': 'MEDOID',
  2529. 'random_inits': 10,
  2530. 'time_limit': 0,
  2531. 'verbose': 1,
  2532. 'update_order': update_order,
  2533. 'randomness': 'REAL',
  2534. 'refine': False}
  2535. save_results = True
  2536. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2537. irrelevant_labels = None
  2538. edge_required = False
  2539. if not os.path.exists(dir_save):
  2540. os.makedirs(dir_save)
  2541. file_output = open(dir_save + 'output.txt', 'a')
  2542. sys.stdout = file_output
  2543. # print settings.
  2544. print('parameters:')
  2545. print('dataset name:', ds_name)
  2546. print('knn_options:', knn_options)
  2547. print('mpg_options:', mpg_options)
  2548. print('kernel_options:', kernel_options)
  2549. print('ged_options:', ged_options)
  2550. print('mge_options:', mge_options)
  2551. print('save_results:', save_results)
  2552. # generate preimages.
  2553. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2554. print('\n-------------------------------------')
  2555. print('train examples used:', train_examples, '\n')
  2556. mpg_options['fit_method'] = train_examples
  2557. try:
  2558. 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)
  2559. except Exception as exp:
  2560. print('An exception occured when running experiment on xp_median_preimage_1_1:')
  2561. LOG_FILENAME = dir_save + 'error.txt'
  2562. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2563. logging.exception('')
  2564. print(repr(exp))
  2565. def xp_median_preimage_1_2():
  2566. """xp 1_2: Letter-high, ShortestPath.
  2567. """
  2568. for test_size in test_sizes:
  2569. # set parameters.
  2570. ds_name = 'Letter-high'
  2571. knn_options = {'n_neighbors': 1,
  2572. 'n_splits': 30,
  2573. 'test_size': test_size,
  2574. 'verbose': True}
  2575. mpg_options = {'fit_method': 'k-graphs',
  2576. 'init_ecc': [0.675, 0.675, 0.75, 0.425, 0.425],
  2577. 'ds_name': ds_name,
  2578. 'parallel': True, # False
  2579. 'time_limit_in_sec': 0,
  2580. 'max_itrs': 100,
  2581. 'max_itrs_without_update': 3,
  2582. 'epsilon_residual': 0.01,
  2583. 'epsilon_ec': 0.1,
  2584. 'allow_zeros': allow_zeros,
  2585. 'triangle_rule': triangle_rule,
  2586. 'verbose': 1}
  2587. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2588. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2589. kernel_options = {'name': 'ShortestPath',
  2590. 'edge_weight': None,
  2591. 'node_kernels': sub_kernels,
  2592. 'parallel': 'imap_unordered',
  2593. # 'parallel': None,
  2594. 'n_jobs': multiprocessing.cpu_count(),
  2595. 'normalize': True,
  2596. 'verbose': 0}
  2597. ged_options = {'method': 'IPFP',
  2598. 'initialization_method': 'RANDOM', # 'NODE'
  2599. 'initial_solutions': initial_solutions, # 1
  2600. 'edit_cost': 'LETTER2',
  2601. 'attr_distance': 'euclidean',
  2602. 'ratio_runs_from_initial_solutions': 1,
  2603. 'threads': multiprocessing.cpu_count(),
  2604. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2605. mge_options = {'init_type': 'MEDOID',
  2606. 'random_inits': 10,
  2607. 'time_limit': 0,
  2608. 'verbose': 1,
  2609. 'update_order': update_order,
  2610. 'randomness': 'REAL',
  2611. 'refine': False}
  2612. save_results = True
  2613. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2614. irrelevant_labels = None #
  2615. edge_required = True #
  2616. if not os.path.exists(dir_save):
  2617. os.makedirs(dir_save)
  2618. file_output = open(dir_save + 'output.txt', 'a')
  2619. sys.stdout = file_output
  2620. # print settings.
  2621. print('parameters:')
  2622. print('dataset name:', ds_name)
  2623. print('knn_options:', knn_options)
  2624. print('mpg_options:', mpg_options)
  2625. print('kernel_options:', kernel_options)
  2626. print('ged_options:', ged_options)
  2627. print('mge_options:', mge_options)
  2628. print('save_results:', save_results)
  2629. print('irrelevant_labels:', irrelevant_labels)
  2630. print()
  2631. # generate preimages.
  2632. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2633. print('\n-------------------------------------')
  2634. print('train examples used:', train_examples, '\n')
  2635. mpg_options['fit_method'] = train_examples
  2636. try:
  2637. 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)
  2638. except Exception as exp:
  2639. print('An exception occured when running experiment on xp_median_preimage_1_2:')
  2640. LOG_FILENAME = dir_save + 'error.txt'
  2641. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2642. logging.exception('')
  2643. print(repr(exp))
  2644. def xp_median_preimage_10_1():
  2645. """xp 10_1: Letter-med, StructuralSP.
  2646. """
  2647. for test_size in test_sizes:
  2648. # set parameters.
  2649. ds_name = 'Letter-med'
  2650. knn_options = {'n_neighbors': 1,
  2651. 'n_splits': 30,
  2652. 'test_size': test_size,
  2653. 'verbose': True}
  2654. mpg_options = {'fit_method': 'k-graphs',
  2655. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  2656. 'ds_name': ds_name,
  2657. 'parallel': True, # False
  2658. 'time_limit_in_sec': 0,
  2659. 'max_itrs': 100,
  2660. 'max_itrs_without_update': 3,
  2661. 'epsilon_residual': 0.01,
  2662. 'epsilon_ec': 0.1,
  2663. 'allow_zeros': allow_zeros,
  2664. 'triangle_rule': triangle_rule,
  2665. 'verbose': 1}
  2666. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2667. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2668. kernel_options = {'name': 'StructuralSP',
  2669. 'edge_weight': None,
  2670. 'node_kernels': sub_kernels,
  2671. 'edge_kernels': sub_kernels,
  2672. 'compute_method': 'naive',
  2673. 'parallel': 'imap_unordered',
  2674. # 'parallel': None,
  2675. 'n_jobs': multiprocessing.cpu_count(),
  2676. 'normalize': True,
  2677. 'verbose': 0}
  2678. ged_options = {'method': 'IPFP',
  2679. 'initialization_method': 'RANDOM', # 'NODE'
  2680. 'initial_solutions': initial_solutions, # 1
  2681. 'edit_cost': 'LETTER2',
  2682. 'attr_distance': 'euclidean',
  2683. 'ratio_runs_from_initial_solutions': 1,
  2684. 'threads': multiprocessing.cpu_count(),
  2685. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2686. mge_options = {'init_type': 'MEDOID',
  2687. 'random_inits': 10,
  2688. 'time_limit': 0,
  2689. 'verbose': 1,
  2690. 'update_order': update_order,
  2691. 'randomness': 'REAL',
  2692. 'refine': False}
  2693. save_results = True
  2694. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2695. irrelevant_labels = None
  2696. edge_required = False
  2697. if not os.path.exists(dir_save):
  2698. os.makedirs(dir_save)
  2699. file_output = open(dir_save + 'output.txt', 'a')
  2700. sys.stdout = file_output
  2701. # print settings.
  2702. print('parameters:')
  2703. print('dataset name:', ds_name)
  2704. print('knn_options:', knn_options)
  2705. print('mpg_options:', mpg_options)
  2706. print('kernel_options:', kernel_options)
  2707. print('ged_options:', ged_options)
  2708. print('mge_options:', mge_options)
  2709. print('save_results:', save_results)
  2710. # generate preimages.
  2711. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2712. print('\n-------------------------------------')
  2713. print('train examples used:', train_examples, '\n')
  2714. mpg_options['fit_method'] = train_examples
  2715. try:
  2716. 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)
  2717. except Exception as exp:
  2718. print('An exception occured when running experiment on xp_median_preimage_10_1:')
  2719. LOG_FILENAME = dir_save + 'error.txt'
  2720. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2721. logging.exception('')
  2722. print(repr(exp))
  2723. def xp_median_preimage_10_2():
  2724. """xp 10_2: Letter-med, ShortestPath.
  2725. """
  2726. for test_size in test_sizes:
  2727. # set parameters.
  2728. ds_name = 'Letter-med'
  2729. knn_options = {'n_neighbors': 1,
  2730. 'n_splits': 30,
  2731. 'test_size': test_size,
  2732. 'verbose': True}
  2733. mpg_options = {'fit_method': 'k-graphs',
  2734. 'init_ecc': [0.525, 0.525, 0.75, 0.475, 0.475],
  2735. 'ds_name': ds_name,
  2736. 'parallel': True, # False
  2737. 'time_limit_in_sec': 0,
  2738. 'max_itrs': 100,
  2739. 'max_itrs_without_update': 3,
  2740. 'epsilon_residual': 0.01,
  2741. 'epsilon_ec': 0.1,
  2742. 'allow_zeros': allow_zeros,
  2743. 'triangle_rule': triangle_rule,
  2744. 'verbose': 1}
  2745. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2746. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2747. kernel_options = {'name': 'ShortestPath',
  2748. 'edge_weight': None,
  2749. 'node_kernels': sub_kernels,
  2750. 'parallel': 'imap_unordered',
  2751. # 'parallel': None,
  2752. 'n_jobs': multiprocessing.cpu_count(),
  2753. 'normalize': True,
  2754. 'verbose': 0}
  2755. ged_options = {'method': 'IPFP',
  2756. 'initialization_method': 'RANDOM', # 'NODE'
  2757. 'initial_solutions': initial_solutions, # 1
  2758. 'edit_cost': 'LETTER2',
  2759. 'attr_distance': 'euclidean',
  2760. 'ratio_runs_from_initial_solutions': 1,
  2761. 'threads': multiprocessing.cpu_count(),
  2762. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2763. mge_options = {'init_type': 'MEDOID',
  2764. 'random_inits': 10,
  2765. 'time_limit': 0,
  2766. 'verbose': 1,
  2767. 'update_order': update_order,
  2768. 'randomness': 'REAL',
  2769. 'refine': False}
  2770. save_results = True
  2771. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2772. irrelevant_labels = None #
  2773. edge_required = True #
  2774. if not os.path.exists(dir_save):
  2775. os.makedirs(dir_save)
  2776. file_output = open(dir_save + 'output.txt', 'a')
  2777. sys.stdout = file_output
  2778. # print settings.
  2779. print('parameters:')
  2780. print('dataset name:', ds_name)
  2781. print('knn_options:', knn_options)
  2782. print('mpg_options:', mpg_options)
  2783. print('kernel_options:', kernel_options)
  2784. print('ged_options:', ged_options)
  2785. print('mge_options:', mge_options)
  2786. print('save_results:', save_results)
  2787. print('irrelevant_labels:', irrelevant_labels)
  2788. print()
  2789. # generate preimages.
  2790. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2791. print('\n-------------------------------------')
  2792. print('train examples used:', train_examples, '\n')
  2793. mpg_options['fit_method'] = train_examples
  2794. try:
  2795. 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)
  2796. except Exception as exp:
  2797. print('An exception occured when running experiment on xp_median_preimage_10_2:')
  2798. LOG_FILENAME = dir_save + 'error.txt'
  2799. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2800. logging.exception('')
  2801. print(repr(exp))
  2802. def xp_median_preimage_11_1():
  2803. """xp 11_1: Letter-low, StructuralSP.
  2804. """
  2805. for test_size in test_sizes:
  2806. # set parameters.
  2807. ds_name = 'Letter-low'
  2808. knn_options = {'n_neighbors': 1,
  2809. 'n_splits': 30,
  2810. 'test_size': test_size,
  2811. 'verbose': True}
  2812. mpg_options = {'fit_method': 'k-graphs',
  2813. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  2814. 'ds_name': ds_name,
  2815. 'parallel': True, # False
  2816. 'time_limit_in_sec': 0,
  2817. 'max_itrs': 100,
  2818. 'max_itrs_without_update': 3,
  2819. 'epsilon_residual': 0.01,
  2820. 'epsilon_ec': 0.1,
  2821. 'allow_zeros': allow_zeros,
  2822. 'triangle_rule': triangle_rule,
  2823. 'verbose': 1}
  2824. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2825. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2826. kernel_options = {'name': 'StructuralSP',
  2827. 'edge_weight': None,
  2828. 'node_kernels': sub_kernels,
  2829. 'edge_kernels': sub_kernels,
  2830. 'compute_method': 'naive',
  2831. 'parallel': 'imap_unordered',
  2832. # 'parallel': None,
  2833. 'n_jobs': multiprocessing.cpu_count(),
  2834. 'normalize': True,
  2835. 'verbose': 0}
  2836. ged_options = {'method': 'IPFP',
  2837. 'initialization_method': 'RANDOM', # 'NODE'
  2838. 'initial_solutions': initial_solutions, # 1
  2839. 'edit_cost': 'LETTER2',
  2840. 'attr_distance': 'euclidean',
  2841. 'ratio_runs_from_initial_solutions': 1,
  2842. 'threads': multiprocessing.cpu_count(),
  2843. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2844. mge_options = {'init_type': 'MEDOID',
  2845. 'random_inits': 10,
  2846. 'time_limit': 0,
  2847. 'verbose': 1,
  2848. 'update_order': update_order,
  2849. 'randomness': 'REAL',
  2850. 'refine': False}
  2851. save_results = True
  2852. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2853. irrelevant_labels = None
  2854. edge_required = False
  2855. if not os.path.exists(dir_save):
  2856. os.makedirs(dir_save)
  2857. file_output = open(dir_save + 'output.txt', 'a')
  2858. sys.stdout = file_output
  2859. # print settings.
  2860. print('parameters:')
  2861. print('dataset name:', ds_name)
  2862. print('knn_options:', knn_options)
  2863. print('mpg_options:', mpg_options)
  2864. print('kernel_options:', kernel_options)
  2865. print('ged_options:', ged_options)
  2866. print('mge_options:', mge_options)
  2867. print('save_results:', save_results)
  2868. # generate preimages.
  2869. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2870. print('\n-------------------------------------')
  2871. print('train examples used:', train_examples, '\n')
  2872. mpg_options['fit_method'] = train_examples
  2873. try:
  2874. 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)
  2875. except Exception as exp:
  2876. print('An exception occured when running experiment on xp_median_preimage_11_1:')
  2877. LOG_FILENAME = dir_save + 'error.txt'
  2878. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2879. logging.exception('')
  2880. print(repr(exp))
  2881. def xp_median_preimage_11_2():
  2882. """xp 11_2: Letter-low, ShortestPath.
  2883. """
  2884. for test_size in test_sizes:
  2885. # set parameters.
  2886. ds_name = 'Letter-low'
  2887. knn_options = {'n_neighbors': 1,
  2888. 'n_splits': 30,
  2889. 'test_size': test_size,
  2890. 'verbose': True}
  2891. mpg_options = {'fit_method': 'k-graphs',
  2892. 'init_ecc': [0.075, 0.075, 0.25, 0.075, 0.075],
  2893. 'ds_name': ds_name,
  2894. 'parallel': True, # False
  2895. 'time_limit_in_sec': 0,
  2896. 'max_itrs': 100,
  2897. 'max_itrs_without_update': 3,
  2898. 'epsilon_residual': 0.01,
  2899. 'epsilon_ec': 0.1,
  2900. 'allow_zeros': allow_zeros,
  2901. 'triangle_rule': triangle_rule,
  2902. 'verbose': 1}
  2903. mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
  2904. sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
  2905. kernel_options = {'name': 'ShortestPath',
  2906. 'edge_weight': None,
  2907. 'node_kernels': sub_kernels,
  2908. 'parallel': 'imap_unordered',
  2909. # 'parallel': None,
  2910. 'n_jobs': multiprocessing.cpu_count(),
  2911. 'normalize': True,
  2912. 'verbose': 0}
  2913. ged_options = {'method': 'IPFP',
  2914. 'initialization_method': 'RANDOM', # 'NODE'
  2915. 'initial_solutions': initial_solutions, # 1
  2916. 'edit_cost': 'LETTER2',
  2917. 'attr_distance': 'euclidean',
  2918. 'ratio_runs_from_initial_solutions': 1,
  2919. 'threads': multiprocessing.cpu_count(),
  2920. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  2921. mge_options = {'init_type': 'MEDOID',
  2922. 'random_inits': 10,
  2923. 'time_limit': 0,
  2924. 'verbose': 1,
  2925. 'update_order': update_order,
  2926. 'randomness': 'REAL',
  2927. 'refine': False}
  2928. save_results = True
  2929. dir_save = dir_root + ds_name + '.' + kernel_options['name'] + '/' + ('update_order/' if update_order else '')
  2930. irrelevant_labels = None #
  2931. edge_required = True #
  2932. if not os.path.exists(dir_save):
  2933. os.makedirs(dir_save)
  2934. file_output = open(dir_save + 'output.txt', 'a')
  2935. sys.stdout = file_output
  2936. # print settings.
  2937. print('parameters:')
  2938. print('dataset name:', ds_name)
  2939. print('knn_options:', knn_options)
  2940. print('mpg_options:', mpg_options)
  2941. print('kernel_options:', kernel_options)
  2942. print('ged_options:', ged_options)
  2943. print('mge_options:', mge_options)
  2944. print('save_results:', save_results)
  2945. print('irrelevant_labels:', irrelevant_labels)
  2946. print()
  2947. # generate preimages.
  2948. for train_examples in ['k-graphs', 'expert', 'random', 'best-dataset', 'trainset']:
  2949. print('\n-------------------------------------')
  2950. print('train examples used:', train_examples, '\n')
  2951. mpg_options['fit_method'] = train_examples
  2952. try:
  2953. 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)
  2954. except Exception as exp:
  2955. print('An exception occured when running experiment on xp_median_preimage_11_2:')
  2956. LOG_FILENAME = dir_save + 'error.txt'
  2957. logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
  2958. logging.exception('')
  2959. print(repr(exp))
  2960. if __name__ == "__main__":
  2961. # #### xp 1_1: Letter-high, StructuralSP.
  2962. # xp_median_preimage_1_1()
  2963. # #### xp 1_2: Letter-high, ShortestPath.
  2964. # xp_median_preimage_1_2()
  2965. # #### xp 10_1: Letter-med, StructuralSP.
  2966. # xp_median_preimage_10_1()
  2967. # #### xp 10_2: Letter-med, ShortestPath.
  2968. # xp_median_preimage_10_2()
  2969. # #### xp 11_1: Letter-low, StructuralSP.
  2970. # xp_median_preimage_11_1()
  2971. # #### xp 11_2: Letter-low, ShortestPath.
  2972. # xp_median_preimage_11_2()
  2973. #
  2974. # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  2975. # # xp_median_preimage_2_1()
  2976. #
  2977. # #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  2978. # # xp_median_preimage_3_1()
  2979. # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  2980. # xp_median_preimage_3_2()
  2981. # #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  2982. # # xp_median_preimage_4_1()
  2983. #
  2984. # #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  2985. # # xp_median_preimage_5_1()
  2986. #
  2987. # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  2988. # xp_median_preimage_6_1()
  2989. # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  2990. # xp_median_preimage_6_2()
  2991. # #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  2992. # xp_median_preimage_7_1()
  2993. # #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  2994. # xp_median_preimage_7_2()
  2995. # #### xp 7_3: MUTAG, Treelet, using CONSTANT.
  2996. # xp_median_preimage_7_3()
  2997. # #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  2998. # xp_median_preimage_7_4()
  2999. #
  3000. # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  3001. # xp_median_preimage_8_1()
  3002. # #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  3003. # xp_median_preimage_8_2()
  3004. # #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  3005. # xp_median_preimage_8_3()
  3006. # #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  3007. # xp_median_preimage_8_4()
  3008. # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  3009. # xp_median_preimage_9_1()
  3010. # #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  3011. # xp_median_preimage_9_2()
  3012. # #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  3013. # xp_median_preimage_9_3()
  3014. # #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  3015. # xp_median_preimage_9_4()
  3016. #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled.
  3017. # xp_median_preimage_12_1()
  3018. #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  3019. # xp_median_preimage_12_2()
  3020. #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  3021. # xp_median_preimage_12_3()
  3022. #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  3023. # xp_median_preimage_12_4()
  3024. #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  3025. # xp_median_preimage_12_5()
  3026. #### xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  3027. # xp_median_preimage_13_1()
  3028. #### xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  3029. # xp_median_preimage_13_2()
  3030. #### xp 14_1: DD, PathUpToH, using CONSTANT.
  3031. # xp_median_preimage_14_1()
  3032. # #### xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  3033. # xp_median_preimage_15_1()
  3034. # #### xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  3035. # xp_median_preimage_15_2()
  3036. # #### xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  3037. # xp_median_preimage_15_3()
  3038. # #### xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  3039. # xp_median_preimage_15_4()
  3040. # #### xp 1_1: Letter-high, StructuralSP.
  3041. xp_median_preimage_1_1()
  3042. # #### xp 1_2: Letter-high, ShortestPath.
  3043. xp_median_preimage_1_2()
  3044. # #### xp 10_1: Letter-med, StructuralSP.
  3045. xp_median_preimage_10_1()
  3046. # #### xp 10_2: Letter-med, ShortestPath.
  3047. xp_median_preimage_10_2()
  3048. # #### xp 11_1: Letter-low, StructuralSP.
  3049. xp_median_preimage_11_1()
  3050. # #### xp 11_2: Letter-low, ShortestPath.
  3051. xp_median_preimage_11_2()
  3052. #### xp 13_1: PAH, StructuralSP, using NON_SYMBOLIC.
  3053. xp_median_preimage_13_1()
  3054. #### xp 13_2: PAH, ShortestPath, using NON_SYMBOLIC.
  3055. xp_median_preimage_13_2()
  3056. # #### xp 7_2: MUTAG, PathUpToH, using CONSTANT.
  3057. xp_median_preimage_7_2()
  3058. # #### xp 7_3: MUTAG, Treelet, using CONSTANT.
  3059. xp_median_preimage_7_3()
  3060. # #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT.
  3061. xp_median_preimage_7_4()
  3062. #
  3063. # #### xp 7_1: MUTAG, StructuralSP, using CONSTANT.
  3064. xp_median_preimage_7_1()
  3065. # #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only.
  3066. xp_median_preimage_9_2()
  3067. # #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only.
  3068. xp_median_preimage_9_3()
  3069. # #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only.
  3070. xp_median_preimage_9_4()
  3071. # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only.
  3072. xp_median_preimage_9_1()
  3073. #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled.
  3074. xp_median_preimage_12_1()
  3075. #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled.
  3076. xp_median_preimage_12_2()
  3077. #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled.
  3078. xp_median_preimage_12_3()
  3079. #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled.
  3080. xp_median_preimage_12_4()
  3081. #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled.
  3082. xp_median_preimage_12_5()
  3083. # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC.
  3084. xp_median_preimage_6_1()
  3085. # #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT.
  3086. xp_median_preimage_8_2()
  3087. # #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT.
  3088. xp_median_preimage_8_3()
  3089. # #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT.
  3090. xp_median_preimage_8_4()
  3091. # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT.
  3092. xp_median_preimage_8_1()
  3093. # #### xp 15_1: AIDS, StructuralSP, using CONSTANT, symbolic only.
  3094. xp_median_preimage_15_1()
  3095. # #### xp 15_2: AIDS, PathUpToH, using CONSTANT, symbolic only.
  3096. xp_median_preimage_15_2()
  3097. # #### xp 15_3: AIDS, Treelet, using CONSTANT, symbolic only.
  3098. xp_median_preimage_15_3()
  3099. # #### xp 15_4: AIDS, WeisfeilerLehman, using CONSTANT, symbolic only.
  3100. xp_median_preimage_15_4()
  3101. #
  3102. # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs.
  3103. xp_median_preimage_2_1()
  3104. #
  3105. # #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs.
  3106. # # xp_median_preimage_3_1()
  3107. # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs.
  3108. # xp_median_preimage_3_2()
  3109. # #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
  3110. # # xp_median_preimage_4_1()
  3111. #
  3112. # #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC.
  3113. # # xp_median_preimage_5_1()
  3114. #
  3115. # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC.
  3116. # xp_median_preimage_6_2()
  3117. #### xp 14_1: DD, PathUpToH, using CONSTANT.
  3118. # xp_median_preimage_14_1()

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