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.

test_median_preimage_generator.py 2.7 kB

5 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Tue Jan 14 15:39:29 2020
  5. @author: ljia
  6. """
  7. import multiprocessing
  8. import functools
  9. from gklearn.preimage.utils import generate_median_preimages_by_class
  10. def test_median_preimage_generator():
  11. """MAO, Treelet, using CONSTANT, symbolic only.
  12. """
  13. from gklearn.utils.kernels import polynomialkernel
  14. # set parameters.
  15. ds_name = 'MAO' #
  16. mpg_options = {'fit_method': 'k-graphs',
  17. 'init_ecc': [4, 4, 2, 1, 1, 1], #
  18. 'ds_name': ds_name,
  19. 'parallel': True, # False
  20. 'time_limit_in_sec': 0,
  21. 'max_itrs': 3, #
  22. 'max_itrs_without_update': 3,
  23. 'epsilon_residual': 0.01,
  24. 'epsilon_ec': 0.1,
  25. 'verbose': 2}
  26. pkernel = functools.partial(polynomialkernel, d=4, c=1e+7)
  27. kernel_options = {'name': 'Treelet', #
  28. 'sub_kernel': pkernel,
  29. 'parallel': 'imap_unordered',
  30. # 'parallel': None,
  31. 'n_jobs': multiprocessing.cpu_count(),
  32. 'normalize': True,
  33. 'verbose': 2}
  34. ged_options = {'method': 'IPFP',
  35. 'initialization_method': 'RANDOM', # 'NODE'
  36. 'initial_solutions': 1, # 1
  37. 'edit_cost': 'CONSTANT', #
  38. 'attr_distance': 'euclidean',
  39. 'ratio_runs_from_initial_solutions': 1,
  40. 'threads': multiprocessing.cpu_count(),
  41. 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'}
  42. mge_options = {'init_type': 'MEDOID',
  43. 'random_inits': 10,
  44. 'time_limit': 600,
  45. 'verbose': 2,
  46. 'refine': False}
  47. save_results = True
  48. dir_save = ds_name + '.' + kernel_options['name'] + '.symb.pytest/'
  49. irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} #
  50. edge_required = False #
  51. # print settings.
  52. print('parameters:')
  53. print('dataset name:', ds_name)
  54. print('mpg_options:', mpg_options)
  55. print('kernel_options:', kernel_options)
  56. print('ged_options:', ged_options)
  57. print('mge_options:', mge_options)
  58. print('save_results:', save_results)
  59. print('irrelevant_labels:', irrelevant_labels)
  60. print()
  61. # generate preimages.
  62. for fit_method in ['k-graphs', 'expert', 'random']:
  63. print('\n-------------------------------------')
  64. print('fit method:', fit_method, '\n')
  65. mpg_options['fit_method'] = fit_method
  66. try:
  67. generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required, cut_range=range(0, 4))
  68. except Exception as exception:
  69. assert False, exception
  70. if __name__ == '__main__':
  71. test_median_preimage_generator()

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