From 78999e859c9b662bcd0a1eeab11ee8d1587f574c Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Fri, 17 Apr 2020 16:51:34 +0200 Subject: [PATCH 01/10] Fix bugs. --- gklearn/kernels/weisfeiler_lehman.py | 16 +- .../experiments/xp_median_preimage.py | 517 +++++++++++++++--- gklearn/utils/dataset.py | 3 + gklearn/utils/utils.py | 38 +- 4 files changed, 504 insertions(+), 70 deletions(-) diff --git a/gklearn/kernels/weisfeiler_lehman.py b/gklearn/kernels/weisfeiler_lehman.py index 4ecb13f..0c1bb34 100644 --- a/gklearn/kernels/weisfeiler_lehman.py +++ b/gklearn/kernels/weisfeiler_lehman.py @@ -32,6 +32,10 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_gm_series(self): + if self._verbose >= 2: + import warnings + warnings.warn('A part of the computation is parallelized.') + self.__add_dummy_node_labels(self._graphs) # for WL subtree kernel @@ -55,11 +59,16 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_gm_imap_unordered(self): if self._verbose >= 2: - raise Warning('Only a part of the computation is parallelized due to the structure of this kernel.') + import warnings + warnings.warn('Only a part of the computation is parallelized due to the structure of this kernel.') return self._compute_gm_series() def _compute_kernel_list_series(self, g1, g_list): # @todo: this should be better. + if self._verbose >= 2: + import warnings + warnings.warn('A part of the computation is parallelized.') + self.__add_dummy_node_labels(g_list + [g1]) # for WL subtree kernel @@ -83,8 +92,9 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_kernel_list_imap_unordered(self, g1, g_list): if self._verbose >= 2: - raise Warning('Only a part of the computation is parallelized due to the structure of this kernel.') - return self._compute_gm_imap_unordered() + import warnings + warnings.warn('Only a part of the computation is parallelized due to the structure of this kernel.') + return self._compute_kernel_list_series(g1, g_list) def _wrapper_kernel_list_do(self, itr): diff --git a/gklearn/preimage/experiments/xp_median_preimage.py b/gklearn/preimage/experiments/xp_median_preimage.py index 903faaa..2c73ca9 100644 --- a/gklearn/preimage/experiments/xp_median_preimage.py +++ b/gklearn/preimage/experiments/xp_median_preimage.py @@ -12,6 +12,318 @@ from gklearn.preimage.utils import generate_median_preimages_by_class from gklearn.utils import compute_gram_matrices_by_class +def xp_median_preimage_12_1(): + """xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 0, 1, 1, 0], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel) + sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel} + kernel_options = {'name': 'StructuralSP', + 'edge_weight': None, + 'node_kernels': sub_kernels, + 'edge_kernels': sub_kernels, + 'compute_method': 'naive', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'NON_SYMBOLIC', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + 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) + + +def xp_median_preimage_12_2(): + """xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + kernel_options = {'name': 'PathUpToH', + 'depth': 1, # + 'k_func': 'MinMax', # + 'compute_method': 'trie', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + 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) + + +def xp_median_preimage_12_3(): + """xp 12_3: PAH, Treelet, using CONSTANT, unlabeled. + """ + from gklearn.utils.kernels import gaussiankernel + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + pkernel = functools.partial(gaussiankernel, gamma=None) # @todo + kernel_options = {'name': 'Treelet', # + 'sub_kernel': pkernel, + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + 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) + + +def xp_median_preimage_12_4(): + """xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + kernel_options = {'name': 'WeisfeilerLehman', + 'height': 14, + 'base_kernel': 'subtree', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + +# # compute gram matrices for each class a priori. +# print('Compute gram matrices for each class a priori.') +# compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels) + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + 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) + + +def xp_median_preimage_12_5(): + """xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 0, 1, 1, 0], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel) + sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel} + kernel_options = {'name': 'ShortestPath', + 'edge_weight': None, + 'node_kernels': sub_kernels, + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'NON_SYMBOLIC', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' # + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = True # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: # + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + 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) + + def xp_median_preimage_9_1(): """xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. """ @@ -53,7 +365,7 @@ def xp_median_preimage_9_1(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # @@ -114,7 +426,7 @@ def xp_median_preimage_9_2(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # @@ -138,7 +450,7 @@ def xp_median_preimage_9_2(): def xp_median_preimage_9_3(): - """xp 9_3: MAO, Treelet, using CONSTANT. + """xp 9_3: MAO, Treelet, using CONSTANT, symbolic only. """ from gklearn.utils.kernels import polynomialkernel # set parameters. @@ -175,8 +487,8 @@ def xp_median_preimage_9_3(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' - irrelevant_labels = None # + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # # print settings. @@ -199,7 +511,7 @@ def xp_median_preimage_9_3(): def xp_median_preimage_9_4(): - """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT. + """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. """ # set parameters. ds_name = 'MAO' # @@ -235,8 +547,8 @@ def xp_median_preimage_9_4(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' - irrelevant_labels = None # + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # # print settings. @@ -250,6 +562,10 @@ def xp_median_preimage_9_4(): print('irrelevant_labels:', irrelevant_labels) print() +# # compute gram matrices for each class a priori. +# print('Compute gram matrices for each class a priori.') +# compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels) + # generate preimages. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: print('\n-------------------------------------') @@ -1171,7 +1487,7 @@ def xp_median_preimage_2_1(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.node_attrs/' irrelevant_labels = {'edge_labels': ['valence']} # print settings. @@ -1565,77 +1881,152 @@ def xp_median_preimage_11_2(): if __name__ == "__main__": - #### xp 1_1: Letter-high, StructuralSP. - # xp_median_preimage_1_1() +# #### xp 1_1: Letter-high, StructuralSP. +# # xp_median_preimage_1_1() - #### xp 1_2: Letter-high, ShortestPath. -# xp_median_preimage_1_2() +# #### xp 1_2: Letter-high, ShortestPath. +# # xp_median_preimage_1_2() - #### xp 10_1: Letter-med, StructuralSP. - # xp_median_preimage_10_1() +# #### xp 10_1: Letter-med, StructuralSP. +# # xp_median_preimage_10_1() - #### xp 10_2: Letter-med, ShortestPath. - # xp_median_preimage_10_2() +# #### xp 10_2: Letter-med, ShortestPath. +# # xp_median_preimage_10_2() - #### xp 11_1: Letter-low, StructuralSP. - # xp_median_preimage_11_1() +# #### xp 11_1: Letter-low, StructuralSP. +# # xp_median_preimage_11_1() - #### xp 11_2: Letter-low, ShortestPath. -# xp_median_preimage_11_2() - - #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. -# xp_median_preimage_2_1() - - #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. - # xp_median_preimage_3_1() +# #### xp 11_2: Letter-low, ShortestPath. +# # xp_median_preimage_11_2() +# +# #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. +# # xp_median_preimage_2_1() +# +# #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. +# # xp_median_preimage_3_1() - #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. -# xp_median_preimage_3_2() +# #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. + # xp_median_preimage_3_2() - #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. -# xp_median_preimage_4_1() - - #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. -# xp_median_preimage_5_1() - - #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. - # xp_median_preimage_6_1() +# #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_4_1() +# +# #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_5_1() +# +# #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_6_1() - #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. -# xp_median_preimage_6_2() +# #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. + # xp_median_preimage_6_2() - #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. - # xp_median_preimage_7_1() +# #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. +# # xp_median_preimage_7_1() - #### xp 7_2: MUTAG, PathUpToH, using CONSTANT. - # xp_median_preimage_7_2() +# #### xp 7_2: MUTAG, PathUpToH, using CONSTANT. +# # xp_median_preimage_7_2() - #### xp 7_3: MUTAG, Treelet, using CONSTANT. - # xp_median_preimage_7_3() +# #### xp 7_3: MUTAG, Treelet, using CONSTANT. +# # xp_median_preimage_7_3() - #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. -# xp_median_preimage_7_4() - - #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. -# xp_median_preimage_8_1() +# #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. +# xp_median_preimage_7_4() +# +# #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. +# # xp_median_preimage_8_1() - #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT. - # xp_median_preimage_8_2() +# #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT. +# # xp_median_preimage_8_2() - #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT. -# xp_median_preimage_8_3() +# #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT. +# # xp_median_preimage_8_3() - #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. -# xp_median_preimage_8_4() +# #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. +# xp_median_preimage_8_4() - #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. -# xp_median_preimage_9_1() +# #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. + # xp_median_preimage_9_1() - #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only. +# #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only. # xp_median_preimage_9_2() - #### xp 9_3: MAO, Treelet, using CONSTANT. -# xp_median_preimage_9_3() +# #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only. + # xp_median_preimage_9_3() + +# #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. + # xp_median_preimage_9_4() + + #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled. + # xp_median_preimage_12_1() + + #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled. + # xp_median_preimage_12_2() + + #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled. +# xp_median_preimage_12_3() + + #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled. + # xp_median_preimage_12_4() + + #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled. + xp_median_preimage_12_5() + + + + +# #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. + # xp_median_preimage_7_4() + +# #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. + # xp_median_preimage_8_4() + +# #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. + # xp_median_preimage_9_4() + +# #### xp 10_1: Letter-med, StructuralSP. +# xp_median_preimage_10_1() + +# #### xp 10_2: Letter-med, ShortestPath. +# xp_median_preimage_10_2() + +# #### xp 11_1: Letter-low, StructuralSP. +# xp_median_preimage_11_1() + +# #### xp 11_2: Letter-low, ShortestPath. +# xp_median_preimage_11_2() +# +# #### xp 1_1: Letter-high, StructuralSP. +# xp_median_preimage_1_1() + +# #### xp 1_2: Letter-high, ShortestPath. +# xp_median_preimage_1_2() + +# #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. +# xp_median_preimage_3_1() +# + # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_6_1() + + # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. + # xp_median_preimage_6_2() + # + # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. + # xp_median_preimage_3_2() + + #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. + # xp_median_preimage_7_1() + + # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. + # xp_median_preimage_8_1() + + # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. + # xp_median_preimage_9_1() + + # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. + # xp_median_preimage_2_1() + + #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_5_1() - #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT. - xp_median_preimage_9_4() \ No newline at end of file + #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_4_1() diff --git a/gklearn/utils/dataset.py b/gklearn/utils/dataset.py index abd7edd..85f0d0b 100644 --- a/gklearn/utils/dataset.py +++ b/gklearn/utils/dataset.py @@ -113,6 +113,9 @@ class Dataset(object): elif ds_name == 'MUTAG': ds_file = current_path + '../../datasets/MUTAG/MUTAG_A.txt' self.__graphs, self.__targets, label_names = load_dataset(ds_file) + elif ds_name == 'PAH': + ds_file = current_path + '../../datasets/PAH/dataset.ds' + self.__graphs, self.__targets, label_names = load_dataset(ds_file) elif ds_name == 'SYNTHETIC': pass elif ds_name == 'SYNTHETICnew': diff --git a/gklearn/utils/utils.py b/gklearn/utils/utils.py index 17954f5..1a6f8d4 100644 --- a/gklearn/utils/utils.py +++ b/gklearn/utils/utils.py @@ -299,11 +299,41 @@ def get_edge_labels(Gn, edge_label): def get_graph_kernel_by_name(name, node_labels=None, edge_labels=None, node_attrs=None, edge_attrs=None, ds_infos=None, kernel_options={}): - if name == 'structuralspkernel': + if name == 'ShortestPath': + from gklearn.kernels import ShortestPath + graph_kernel = ShortestPath(node_labels=node_labels, + node_attrs=node_attrs, + ds_infos=ds_infos, + **kernel_options) + elif name == 'StructuralSP': from gklearn.kernels import StructuralSP - graph_kernel = StructuralSP(node_labels=node_labels, edge_labels=edge_labels, - node_attrs=node_attrs, edge_attrs=edge_attrs, - ds_infos=ds_infos, **kernel_options) + graph_kernel = StructuralSP(node_labels=node_labels, + edge_labels=edge_labels, + node_attrs=node_attrs, + edge_attrs=edge_attrs, + ds_infos=ds_infos, + **kernel_options) + elif name == 'PathUpToH': + from gklearn.kernels import PathUpToH + graph_kernel = PathUpToH(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + elif name == 'Treelet': + from gklearn.kernels import Treelet + graph_kernel = Treelet(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + elif name == 'WeisfeilerLehman': + from gklearn.kernels import WeisfeilerLehman + graph_kernel = WeisfeilerLehman(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + else: + raise Exception('The graph kernel given is not defined. Possible choices include: "StructuralSP", "ShortestPath", "PathUpToH", "Treelet", "WeisfeilerLehman".') + return graph_kernel From 898bec8063e573d15679eea14aff3a674a1fd944 Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Sat, 18 Apr 2020 15:13:44 +0200 Subject: [PATCH 02/10] Add class WLSubtree. --- gklearn/ged/median/median_graph_estimator.py | 77 +++++++++++++++++++- gklearn/kernels/__init__.py | 2 +- gklearn/kernels/weisfeiler_lehman.py | 9 ++- gklearn/tests/test_graph_kernels.py | 12 +-- gklearn/utils/utils.py | 8 +- 5 files changed, 98 insertions(+), 10 deletions(-) diff --git a/gklearn/ged/median/median_graph_estimator.py b/gklearn/ged/median/median_graph_estimator.py index 7cbb6d6..f2d077d 100644 --- a/gklearn/ged/median/median_graph_estimator.py +++ b/gklearn/ged/median/median_graph_estimator.py @@ -392,7 +392,7 @@ class MedianGraphEstimator(object): # Update the median. # @todo!!!!!!!!!!!!!!!!!!!!!! median_modified = self.__update_median(graphs, median) if not median_modified or self.__itrs[median_pos] == 0: - decreased_order = False + decreased_order = self.__decrease_order(graphs, median) if not decreased_order or self.__itrs[median_pos] == 0: increased_order = False @@ -742,6 +742,81 @@ class MedianGraphEstimator(object): return node_maps_were_modified + def __decrease_order(self, graphs, median): + # Print information about current iteration + if self.__print_to_stdout == 2: + print('Trying to decrease order: ... ', end='') + + # Initialize ID of the node that is to be deleted. + id_deleted_node = None # @todo: or np.inf + decreased_order = False + + # Decrease the order as long as the best deletion delta is negative. + while self.__compute_best_deletion_delta(graphs, median, [id_deleted_node]) < -self.__epsilon: + decreased_order = True + self.__delete_node_from_median(id_deleted_node, median) + + # Print information about current iteration. + if self.__print_to_stdout == 2: + print('done.') + + # Return true iff the order was decreased. + return decreased_order + + + def __compute_best_deletion_delta(self, graphs, median, id_deleted_node): + best_delta = 0.0 + + # Determine node that should be deleted (if any). + for i in range(0, nx.number_of_nodes(median)): + # Compute cost delta. + delta = 0.0 + for graph_id, graph in graphs.items(): + k = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], i) + if k == np.inf: + delta -= self.__node_del_cost + else: + delta += self.__node_ins_cost - self.__ged_env.get_node_rel_cost(median.nodes[i], graph.nodes[k]) + for j, j_label in median[i]: + l = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], j) + if k == np.inf or l == np.inf: + delta -= self.__edge_del_cost + elif not graph.has_edge(k, l): + delta -= self.__edge_del_cost + else: + delta += self.__edge_ins_cost - self.__ged_env.get_edge_rel_cost(j_label, graph.edges[(k, l)]) + + # Update best deletion delta. + if delta < best_delta - self.__epsilon: + best_delta = delta + id_deleted_node[0] = i + + return best_delta + + + def __delete_node_from_median(self, id_deleted_node, median): + # Update the nodes of the median. + median.remove_node(id_deleted_node) # @todo: test if it is right. + + # Update the node maps. + for _, node_map in self.__node_maps_from_median.items(): + new_node_map = {nx.number_of_nodes(median): ''} # @todo + is_unassigned_target_node = ['', True] + for i in range(0, nx.number_of_nodes(median)): + if i != id_deleted_node: + new_i = (i if i < id_deleted_node else i - 1) + k = self.__get_node_image_from_map(node_map, i) + new_node_map["ds"] # @todo + if k != np.inf: + is_unassigned_target_node[k] = False + for k in range(0, ''): + if is_unassigned_target_node[k]: + new_node_map.sdf[] + node_map = new_node_map + + # Increase overall number of decreases. + self.__num_decrease_order += 1 + def __improve_sum_of_distances(self, timer): pass diff --git a/gklearn/kernels/__init__.py b/gklearn/kernels/__init__.py index 52df2b6..bcb7b06 100644 --- a/gklearn/kernels/__init__.py +++ b/gklearn/kernels/__init__.py @@ -12,4 +12,4 @@ from gklearn.kernels.structural_sp import StructuralSP from gklearn.kernels.shortest_path import ShortestPath from gklearn.kernels.path_up_to_h import PathUpToH from gklearn.kernels.treelet import Treelet -from gklearn.kernels.weisfeiler_lehman import WeisfeilerLehman +from gklearn.kernels.weisfeiler_lehman import WeisfeilerLehman, WLSubtree diff --git a/gklearn/kernels/weisfeiler_lehman.py b/gklearn/kernels/weisfeiler_lehman.py index 0c1bb34..8402056 100644 --- a/gklearn/kernels/weisfeiler_lehman.py +++ b/gklearn/kernels/weisfeiler_lehman.py @@ -472,4 +472,11 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge if len(self.__node_labels) == 0: for G in Gn: nx.set_node_attributes(G, '0', 'dummy') - self.__node_labels.append('dummy') \ No newline at end of file + self.__node_labels.append('dummy') + + +class WLSubtree(WeisfeilerLehman): + + def __init__(self, **kwargs): + kwargs['base_kernel'] = 'subtree' + super().__init__(**kwargs) \ No newline at end of file diff --git a/gklearn/tests/test_graph_kernels.py b/gklearn/tests/test_graph_kernels.py index bb442f3..59efc88 100644 --- a/gklearn/tests/test_graph_kernels.py +++ b/gklearn/tests/test_graph_kernels.py @@ -260,20 +260,20 @@ def test_Treelet(ds_name, parallel): @pytest.mark.parametrize('ds_name', ['Acyclic']) #@pytest.mark.parametrize('base_kernel', ['subtree', 'sp', 'edge']) -@pytest.mark.parametrize('base_kernel', ['subtree']) +# @pytest.mark.parametrize('base_kernel', ['subtree']) @pytest.mark.parametrize('parallel', ['imap_unordered', None]) -def test_WeisfeilerLehman(ds_name, parallel, base_kernel): - """Test Weisfeiler-Lehman kernel. +def test_WLSubtree(ds_name, parallel): + """Test Weisfeiler-Lehman subtree kernel. """ - from gklearn.kernels import WeisfeilerLehman + from gklearn.kernels import WLSubtree dataset = chooseDataset(ds_name) try: - graph_kernel = WeisfeilerLehman(node_labels=dataset.node_labels, + graph_kernel = WLSubtree(node_labels=dataset.node_labels, edge_labels=dataset.edge_labels, ds_infos=dataset.get_dataset_infos(keys=['directed']), - height=2, base_kernel=base_kernel) + height=2) gram_matrix, run_time = graph_kernel.compute(dataset.graphs, parallel=parallel, n_jobs=multiprocessing.cpu_count(), verbose=True) kernel_list, run_time = graph_kernel.compute(dataset.graphs[0], dataset.graphs[1:], diff --git a/gklearn/utils/utils.py b/gklearn/utils/utils.py index 1a6f8d4..f1946bb 100644 --- a/gklearn/utils/utils.py +++ b/gklearn/utils/utils.py @@ -325,6 +325,12 @@ def get_graph_kernel_by_name(name, node_labels=None, edge_labels=None, node_attr edge_labels=edge_labels, ds_infos=ds_infos, **kernel_options) + elif name == 'WLSubtree': + from gklearn.kernels import WLSubtree + graph_kernel = WLSubtree(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) elif name == 'WeisfeilerLehman': from gklearn.kernels import WeisfeilerLehman graph_kernel = WeisfeilerLehman(node_labels=node_labels, @@ -332,7 +338,7 @@ def get_graph_kernel_by_name(name, node_labels=None, edge_labels=None, node_attr ds_infos=ds_infos, **kernel_options) else: - raise Exception('The graph kernel given is not defined. Possible choices include: "StructuralSP", "ShortestPath", "PathUpToH", "Treelet", "WeisfeilerLehman".') + raise Exception('The graph kernel given is not defined. Possible choices include: "StructuralSP", "ShortestPath", "PathUpToH", "Treelet", "WLSubtree", "WeisfeilerLehman".') return graph_kernel From b463852b2d1f9fb3bcfce9d2002d53a457f1c869 Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Sat, 18 Apr 2020 16:52:42 +0200 Subject: [PATCH 03/10] Move method get_graph_kernel_by_name(). --- gklearn/preimage/median_preimage_generator.py | 46 ++++--------------- 1 file changed, 8 insertions(+), 38 deletions(-) diff --git a/gklearn/preimage/median_preimage_generator.py b/gklearn/preimage/median_preimage_generator.py index f342465..ead6a9a 100644 --- a/gklearn/preimage/median_preimage_generator.py +++ b/gklearn/preimage/median_preimage_generator.py @@ -18,6 +18,7 @@ from gklearn.ged.median import MedianGraphEstimator from gklearn.ged.median import constant_node_costs,mge_options_to_string from gklearn.gedlib import librariesImport, gedlibpy from gklearn.utils import Timer +from gklearn.utils.utils import get_graph_kernel_by_name # from gklearn.utils.dataset import Dataset class MedianPreimageGenerator(PreimageGenerator): @@ -81,7 +82,13 @@ class MedianPreimageGenerator(PreimageGenerator): def run(self): - self.__set_graph_kernel_by_name() + self._graph_kernel = get_graph_kernel_by_name(self._kernel_options['name'], + node_labels=self._dataset.node_labels, + edge_labels=self._dataset.edge_labels, + node_attrs=self._dataset.node_attrs, + edge_attrs=self._dataset.edge_attrs, + ds_infos=self._dataset.get_dataset_infos(keys=['directed']), + **self._kernel_options) # record start time. start = time.time() @@ -722,43 +729,6 @@ class MedianPreimageGenerator(PreimageGenerator): print('distance in kernel space for generalized median:', self.__k_dis_gen_median) print('minimum distance in kernel space for each graph in median set:', self.__k_dis_dataset) print('distance in kernel space for each graph in median set:', k_dis_median_set) - - - def __set_graph_kernel_by_name(self): - if self._kernel_options['name'] == 'ShortestPath': - from gklearn.kernels import ShortestPath - self._graph_kernel = ShortestPath(node_labels=self._dataset.node_labels, - node_attrs=self._dataset.node_attrs, - ds_infos=self._dataset.get_dataset_infos(keys=['directed']), - **self._kernel_options) - elif self._kernel_options['name'] == 'StructuralSP': - from gklearn.kernels import StructuralSP - self._graph_kernel = StructuralSP(node_labels=self._dataset.node_labels, - edge_labels=self._dataset.edge_labels, - node_attrs=self._dataset.node_attrs, - edge_attrs=self._dataset.edge_attrs, - ds_infos=self._dataset.get_dataset_infos(keys=['directed']), - **self._kernel_options) - elif self._kernel_options['name'] == 'PathUpToH': - from gklearn.kernels import PathUpToH - self._graph_kernel = PathUpToH(node_labels=self._dataset.node_labels, - edge_labels=self._dataset.edge_labels, - ds_infos=self._dataset.get_dataset_infos(keys=['directed']), - **self._kernel_options) - elif self._kernel_options['name'] == 'Treelet': - from gklearn.kernels import Treelet - self._graph_kernel = Treelet(node_labels=self._dataset.node_labels, - edge_labels=self._dataset.edge_labels, - ds_infos=self._dataset.get_dataset_infos(keys=['directed']), - **self._kernel_options) - elif self._kernel_options['name'] == 'WeisfeilerLehman': - from gklearn.kernels import WeisfeilerLehman - self._graph_kernel = WeisfeilerLehman(node_labels=self._dataset.node_labels, - edge_labels=self._dataset.edge_labels, - ds_infos=self._dataset.get_dataset_infos(keys=['directed']), - **self._kernel_options) - else: - raise Exception('The graph kernel given is not defined. Possible choices include: "StructuralSP", "ShortestPath", "PathUpToH", "Treelet", "WeisfeilerLehman".') # def __clean_graph(self, G, node_labels=[], edge_labels=[], node_attrs=[], edge_attrs=[]): From e4adfbc7db676d9d5954b4a9e8204f1d384cb916 Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Sat, 18 Apr 2020 17:27:58 +0200 Subject: [PATCH 04/10] Add AppVeyor CI for Windows platforms. --- .appveyor.yml | 32 ++++++++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 33 insertions(+) create mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000..a93c7f2 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,32 @@ +environment: + matrix: + - PYTHON: "C:\\Python33" + - PYTHON: "C:\\Python33-x64" + - PYTHON: "C:\\Python34" + - PYTHON: "C:\\Python34-x64" + - PYTHON: "C:\\Python35" + - PYTHON: "C:\\Python35-x64" + - PYTHON: "C:\\Python36" + - PYTHON: "C:\\Python36-x64" + - PYTHON: "C:\\Python37" + - PYTHON: "C:\\Python37-x64" + - PYTHON: "C:\\Python38" + - PYTHON: "C:\\Python38-x64" + +# skip_commits: +# files: +# - "*.yml" +# - "*.rst" +# - "LICENSE" + +install: + - "%PYTHON%\\python.exe -m pip install -U pip" + - "%PYTHON%\\python.exe -m pip install -U pytest" + - "%PYTHON%\\python.exe -m pip install -r requirements.txt" + - "%PYTHON%\\python.exe -m pip install wheel" + +build: off + +test_script: + - "%PYTHON%\\python.exe setup.py bdist_wheel" + - "%PYTHON%\\python.exe -m pytest -v gklearn/tests/" diff --git a/README.md b/README.md index 1f5aec6..3958704 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # graphkit-learn [![Build Status](https://travis-ci.org/jajupmochi/graphkit-learn.svg?branch=master)](https://travis-ci.org/jajupmochi/graphkit-learn) +[![Build status](https://ci.appveyor.com/api/projects/status/bdxsolk0t1uji9rd?svg=true)](https://ci.appveyor.com/project/jajupmochi/graphkit-learn) [![codecov](https://codecov.io/gh/jajupmochi/graphkit-learn/branch/master/graph/badge.svg)](https://codecov.io/gh/jajupmochi/graphkit-learn) [![Documentation Status](https://readthedocs.org/projects/graphkit-learn/badge/?version=master)](https://graphkit-learn.readthedocs.io/en/master/?badge=master) [![PyPI version](https://badge.fury.io/py/graphkit-learn.svg)](https://badge.fury.io/py/graphkit-learn) From 25aa64a7dc33d229fb2b361d70054e04ca74799d Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Wed, 22 Apr 2020 17:29:15 +0200 Subject: [PATCH 05/10] Fix bugs in MedianGraphEstimator, about __node_maps_from_median and updating nodes/edges. --- .appveyor.yml | 4 - gklearn/ged/env/__init__.py | 3 +- gklearn/ged/env/node_map.py | 68 + gklearn/ged/median/median_graph_estimator.py | 320 +- .../ged/median/test_median_graph_estimator.py | 18 +- gklearn/ged/median/utils.py | 2 + gklearn/gedlib/gedlibpy.cpp | 3934 ++++++++++------- .../gedlibpy.cpython-36m-x86_64-linux-gnu.so | Bin 33486048 -> 33325048 bytes gklearn/gedlib/gedlibpy.pyx | 51 +- gklearn/gedlib/src/GedLibBind.hpp | 5 +- gklearn/gedlib/src/GedLibBind.ipp | 118 +- .../experiments/xp_median_preimage.py | 134 +- gklearn/preimage/median_preimage_generator.py | 2 +- gklearn/preimage/utils.py | 5 +- gklearn/utils/dataset.py | 119 +- 15 files changed, 2811 insertions(+), 1972 deletions(-) create mode 100644 gklearn/ged/env/node_map.py diff --git a/.appveyor.yml b/.appveyor.yml index a93c7f2..bf26b40 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,9 +1,5 @@ environment: matrix: - - PYTHON: "C:\\Python33" - - PYTHON: "C:\\Python33-x64" - - PYTHON: "C:\\Python34" - - PYTHON: "C:\\Python34-x64" - PYTHON: "C:\\Python35" - PYTHON: "C:\\Python35-x64" - PYTHON: "C:\\Python36" diff --git a/gklearn/ged/env/__init__.py b/gklearn/ged/env/__init__.py index 17aefc7..7db022c 100644 --- a/gklearn/ged/env/__init__.py +++ b/gklearn/ged/env/__init__.py @@ -1 +1,2 @@ -from gklearn.ged.env.common_types import AlgorithmState \ No newline at end of file +from gklearn.ged.env.common_types import AlgorithmState +from gklearn.ged.env.node_map import NodeMap \ No newline at end of file diff --git a/gklearn/ged/env/node_map.py b/gklearn/ged/env/node_map.py new file mode 100644 index 0000000..2ff43c9 --- /dev/null +++ b/gklearn/ged/env/node_map.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Wed Apr 22 11:31:26 2020 + +@author: ljia +""" +import numpy as np + +class NodeMap(object): + + def __init__(self, num_nodes_g, num_nodes_h): + self.__forward_map = [np.inf] * num_nodes_g + self.__backward_map = [np.inf] * num_nodes_h + self.__induced_cost = np.inf + + + def num_source_nodes(self): + return len(self.__forward_map) + + + def num_target_nodes(self): + return len(self.__backward_map) + + + def image(self, node): + if node < len(self.__forward_map): + return self.__forward_map[node] + else: + raise Exception('The node with ID ', str(node), ' is not contained in the source nodes of the node map.') + return np.inf + + + def pre_image(self, node): + if node < len(self.__backward_map): + return self.__backward_map[node] + else: + raise Exception('The node with ID ', str(node), ' is not contained in the target nodes of the node map.') + return np.inf + + + def get_forward_map(self): + return self.__forward_map + + + def get_backward_map(self): + return self.__backward_map + + + def add_assignment(self, i, k): + if i != np.inf: + if i < len(self.__forward_map): + self.__forward_map[i] = k + else: + raise Exception('The node with ID ', str(i), ' is not contained in the source nodes of the node map.') + if k != np.inf: + if k < len(self.__backward_map): + self.__backward_map[k] = i + else: + raise Exception('The node with ID ', str(k), ' is not contained in the target nodes of the node map.') + + + def set_induced_cost(self, induced_cost): + self.__induced_cost = induced_cost + + + def induced_cost(self): + return self.__induced_cost \ No newline at end of file diff --git a/gklearn/ged/median/median_graph_estimator.py b/gklearn/ged/median/median_graph_estimator.py index f2d077d..3a09d06 100644 --- a/gklearn/ged/median/median_graph_estimator.py +++ b/gklearn/ged/median/median_graph_estimator.py @@ -47,6 +47,7 @@ class MedianGraphEstimator(object): self.__desired_num_random_inits = 10 self.__use_real_randomness = True self.__seed = 0 + self.__update_order = True self.__refine = True self.__time_limit_in_sec = 0 self.__epsilon = 0.0001 @@ -126,6 +127,16 @@ class MedianGraphEstimator(object): else: raise Exception('Invalid argument "' + opt_val + '" for option stdout. Usage: options = "[--stdout 0|1|2] [...]"') + elif opt_name == 'update-order': + if opt_val == 'TRUE': + self.__update_order = True + + elif opt_val == 'FALSE': + self.__update_order = False + + else: + raise Exception('Invalid argument "' + opt_val + '" for option update-order. Usage: options = "[--update-order TRUE|FALSE] [...]"') + elif opt_name == 'refine': if opt_val == 'TRUE': self.__refine = True @@ -298,11 +309,11 @@ class MedianGraphEstimator(object): for graph_id in graph_ids: # @todo: get_nx_graph() function may need to be modified according to the coming code. graphs[graph_id] = self.__ged_env.get_nx_graph(graph_id, True, True, False) -# print(self.__ged_env.get_graph_internal_id(0)) -# print(graphs[0].graph) -# print(graphs[0].nodes(data=True)) -# print(graphs[0].edges(data=True)) -# print(nx.adjacency_matrix(graphs[0])) +# print(self.__ged_env.get_graph_internal_id(0)) +# print(graphs[0].graph) +# print(graphs[0].nodes(data=True)) +# print(graphs[0].edges(data=True)) +# print(nx.adjacency_matrix(graphs[0])) # Construct initial medians. @@ -310,10 +321,10 @@ class MedianGraphEstimator(object): self.__construct_initial_medians(graph_ids, timer, medians) end_init = time.time() self.__runtime_initialized = end_init - start -# print(medians[0].graph) -# print(medians[0].nodes(data=True)) -# print(medians[0].edges(data=True)) -# print(nx.adjacency_matrix(medians[0])) +# print(medians[0].graph) +# print(medians[0].nodes(data=True)) +# print(medians[0].edges(data=True)) +# print(nx.adjacency_matrix(medians[0])) # Reset information about iterations and number of times the median decreases and increases. self.__itrs = [0] * len(medians) @@ -353,12 +364,12 @@ class MedianGraphEstimator(object): # Compute node maps and sum of distances for initial median. self.__sum_of_distances = 0 - self.__node_maps_from_median.clear() # @todo + self.__node_maps_from_median.clear() for graph_id in graph_ids: self.__ged_env.run_method(gen_median_id, graph_id) self.__node_maps_from_median[graph_id] = self.__ged_env.get_node_map(gen_median_id, graph_id) # print(self.__node_maps_from_median[graph_id]) - self.__sum_of_distances += self.__ged_env.get_induced_cost(gen_median_id, graph_id) # @todo: the C++ implementation for this function in GedLibBind.ipp re-call get_node_map() once more, this is not neccessary. + self.__sum_of_distances += self.__node_maps_from_median[graph_id].induced_cost() # print(self.__sum_of_distances) # Print information about current iteration. if self.__print_to_stdout == 2: @@ -366,7 +377,7 @@ class MedianGraphEstimator(object): self.__best_init_sum_of_distances = min(self.__best_init_sum_of_distances, self.__sum_of_distances) self.__ged_env.load_nx_graph(median, set_median_id) -# print(self.__best_init_sum_of_distances) + print(self.__best_init_sum_of_distances) # Print information about current iteration. if self.__print_to_stdout == 2: @@ -391,10 +402,11 @@ class MedianGraphEstimator(object): # Update the median. # @todo!!!!!!!!!!!!!!!!!!!!!! median_modified = self.__update_median(graphs, median) - if not median_modified or self.__itrs[median_pos] == 0: - decreased_order = self.__decrease_order(graphs, median) - if not decreased_order or self.__itrs[median_pos] == 0: - increased_order = False + if self.__update_order: + if not median_modified or self.__itrs[median_pos] == 0: + decreased_order = self.__decrease_order(graphs, median) + if not decreased_order or self.__itrs[median_pos] == 0: + increased_order = False # Update the number of iterations without update of the median. if median_modified or decreased_order or increased_order: @@ -421,11 +433,11 @@ class MedianGraphEstimator(object): # Compute induced costs of the old node maps w.r.t. the updated median. for graph_id in graph_ids: -# print(self.__ged_env.get_induced_cost(gen_median_id, graph_id)) - # @todo: watch out if compute_induced_cost is correct, this may influence: increase/decrease order, induced_cost() in the following code.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - self.__ged_env.compute_induced_cost(gen_median_id, graph_id) -# print('---------------------------------------') -# print(self.__ged_env.get_induced_cost(gen_median_id, graph_id)) +# print(self.__node_maps_from_median[graph_id].induced_cost()) + self.__ged_env.compute_induced_cost(gen_median_id, graph_id, self.__node_maps_from_median[graph_id]) +# print('---------------------------------------') +# print(self.__node_maps_from_median[graph_id].induced_cost()) + # @todo:!!!!!!!!!!!!!!!!!!!!!!!!!!!!This value is a slight different from the c++ program, which might be a bug! Use it very carefully! # Print information about current iteration. if self.__print_to_stdout == 2: @@ -439,8 +451,9 @@ class MedianGraphEstimator(object): # Update the sum of distances. old_sum_of_distances = self.__sum_of_distances self.__sum_of_distances = 0 - for graph_id in self.__node_maps_from_median: - self.__sum_of_distances += self.__ged_env.get_induced_cost(gen_median_id, graph_id) # @todo: see above. + for graph_id, node_map in self.__node_maps_from_median.items(): + self.__sum_of_distances += node_map.induced_cost() +# print(self.__sum_of_distances) # Print information about current iteration. if self.__print_to_stdout == 2: @@ -460,7 +473,7 @@ class MedianGraphEstimator(object): # Update the best median. if self.__sum_of_distances < best_sum_of_distances: best_sum_of_distances = self.__sum_of_distances - node_maps_from_best_median = self.__node_maps_from_median + node_maps_from_best_median = self.__node_maps_from_median.copy() # @todo: this is a shallow copy, not sure if it is enough. best_median = median # Update the number of converged descents. @@ -543,6 +556,7 @@ class MedianGraphEstimator(object): self.__desired_num_random_inits = 10 self.__use_real_randomness = True self.__seed = 0 + self.__update_order = True self.__refine = True self.__time_limit_in_sec = 0 self.__epsilon = 0.0001 @@ -568,16 +582,16 @@ class MedianGraphEstimator(object): self.__compute_medoid(graph_ids, timer, initial_medians) elif self.__init_type == 'MAX': pass # @todo -# compute_max_order_graph_(graph_ids, initial_medians) +# compute_max_order_graph_(graph_ids, initial_medians) elif self.__init_type == 'MIN': pass # @todo -# compute_min_order_graph_(graph_ids, initial_medians) +# compute_min_order_graph_(graph_ids, initial_medians) elif self.__init_type == 'MEAN': pass # @todo -# compute_mean_order_graph_(graph_ids, initial_medians) +# compute_mean_order_graph_(graph_ids, initial_medians) else: pass # @todo -# sample_initial_medians_(graph_ids, initial_medians) +# sample_initial_medians_(graph_ids, initial_medians) # Print information about current iteration. if self.__print_to_stdout == 2: @@ -655,20 +669,20 @@ class MedianGraphEstimator(object): # Iterate through all nodes of the median. for i in range(0, nx.number_of_nodes(median)): -# print('i: ', i) +# print('i: ', i) # Collect the labels of the substituted nodes. node_labels = [] for graph_id, graph in graphs.items(): -# print('graph_id: ', graph_id) -# print(self.__node_maps_from_median[graph_id]) - k = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], i) -# print('k: ', k) +# print('graph_id: ', graph_id) +# print(self.__node_maps_from_median[graph_id]) + k = self.__node_maps_from_median[graph_id].image(i) +# print('k: ', k) if k != np.inf: node_labels.append(graph.nodes[k]) # Compute the median label and update the median. if len(node_labels) > 0: -# median_label = self.__ged_env.get_median_node_label(node_labels) +# median_label = self.__ged_env.get_median_node_label(node_labels) median_label = self.__get_median_node_label(node_labels) if self.__ged_env.get_node_rel_cost(median.nodes[i], median_label) > self.__epsilon: nx.set_node_attributes(median, {i: median_label}) @@ -679,10 +693,10 @@ class MedianGraphEstimator(object): if self.__print_to_stdout == 2: print('edges ... ', end='') - # Clear the adjacency lists of the median and reset number of edges to 0. - median_edges = list(median.edges) - for (head, tail) in median_edges: - median.remove_edge(head, tail) +# # Clear the adjacency lists of the median and reset number of edges to 0. +# median_edges = list(median.edges) +# for (head, tail) in median_edges: +# median.remove_edge(head, tail) # @todo: what if edge is not labeled? # Iterate through all possible edges (i,j) of the median. @@ -692,8 +706,8 @@ class MedianGraphEstimator(object): # Collect the labels of the edges to which (i,j) is mapped by the node maps. edge_labels = [] for graph_id, graph in graphs.items(): - k = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], i) - l = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], j) + k = self.__node_maps_from_median[graph_id].image(i) + l = self.__node_maps_from_median[graph_id].image(j) if k != np.inf and l != np.inf: if graph.has_edge(k, l): edge_labels.append(graph.edges[(k, l)]) @@ -711,11 +725,13 @@ class MedianGraphEstimator(object): rel_cost += self.__ged_env.get_edge_rel_cost(median_label, edge_label) # Update the median. + if median.has_edge(i, j): + median.remove_edge(i, j) if rel_cost < (self.__edge_ins_cost + self.__edge_del_cost) * len(edge_labels) - self.__edge_del_cost * len(graphs): median.add_edge(i, j, **median_label) - else: - if median.has_edge(i, j): - median.remove_edge(i, j) +# else: +# if median.has_edge(i, j): +# median.remove_edge(i, j) def __update_node_maps(self): @@ -725,10 +741,12 @@ class MedianGraphEstimator(object): # Update the node maps. node_maps_were_modified = False - for graph_id in self.__node_maps_from_median: + for graph_id, node_map in self.__node_maps_from_median.items(): self.__ged_env.run_method(self.__median_id, graph_id) - if self.__ged_env.get_upper_bound(self.__median_id, graph_id) < self.__ged_env.get_induced_cost(self.__median_id, graph_id) - self.__epsilon: # @todo: see above. - self.__node_maps_from_median[graph_id] = self.__ged_env.get_node_map(self.__median_id, graph_id) # @todo: node_map may not assigned. + if self.__ged_env.get_upper_bound(self.__median_id, graph_id) < node_map.induced_cost() - self.__epsilon: +# xxx = self.__node_maps_from_median[graph_id] + self.__node_maps_from_median[graph_id] = self.__ged_env.get_node_map(self.__median_id, graph_id) +# yyy = self.__node_maps_from_median[graph_id] node_maps_were_modified = True # Print information about current iteration. if self.__print_to_stdout == 2: @@ -748,13 +766,13 @@ class MedianGraphEstimator(object): print('Trying to decrease order: ... ', end='') # Initialize ID of the node that is to be deleted. - id_deleted_node = None # @todo: or np.inf + id_deleted_node = [None] # @todo: or np.inf decreased_order = False # Decrease the order as long as the best deletion delta is negative. - while self.__compute_best_deletion_delta(graphs, median, [id_deleted_node]) < -self.__epsilon: + while self.__compute_best_deletion_delta(graphs, median, id_deleted_node) < -self.__epsilon: # @todo decreased_order = True - self.__delete_node_from_median(id_deleted_node, median) + self.__delete_node_from_median(id_deleted_node[0], median) # Print information about current iteration. if self.__print_to_stdout == 2: @@ -777,7 +795,7 @@ class MedianGraphEstimator(object): delta -= self.__node_del_cost else: delta += self.__node_ins_cost - self.__ged_env.get_node_rel_cost(median.nodes[i], graph.nodes[k]) - for j, j_label in median[i]: + for j, j_label in median[i].items(): l = self.__get_node_image_from_map(self.__node_maps_from_median[graph_id], j) if k == np.inf or l == np.inf: delta -= self.__edge_del_cost @@ -790,32 +808,34 @@ class MedianGraphEstimator(object): if delta < best_delta - self.__epsilon: best_delta = delta id_deleted_node[0] = i + id_deleted_node[0] = i # @todo: return best_delta - def __delete_node_from_median(self, id_deleted_node, median): - # Update the nodes of the median. - median.remove_node(id_deleted_node) # @todo: test if it is right. + def __delete_node_from_median(self, id_deleted_node, median): # @todo: update env.node_map? + # Update the median. + median.remove_node(id_deleted_node) # Update the node maps. for _, node_map in self.__node_maps_from_median.items(): - new_node_map = {nx.number_of_nodes(median): ''} # @todo - is_unassigned_target_node = ['', True] + new_node_map = [] # @todo + is_unassigned_target_node = [True] * len(node_map) for i in range(0, nx.number_of_nodes(median)): if i != id_deleted_node: new_i = (i if i < id_deleted_node else i - 1) k = self.__get_node_image_from_map(node_map, i) - new_node_map["ds"] # @todo + new_node_map.append((new_i, k)) # @todo if k != np.inf: is_unassigned_target_node[k] = False - for k in range(0, ''): + for k in range(0, len(node_map)): if is_unassigned_target_node[k]: - new_node_map.sdf[] - node_map = new_node_map + new_node_map.append(np.inf, k) + node_map = new_node_map # @todo # Increase overall number of decreases. self.__num_decrease_order += 1 + def __improve_sum_of_distances(self, timer): pass @@ -825,37 +845,37 @@ class MedianGraphEstimator(object): return self.__median_id != np.inf - def __get_node_image_from_map(self, node_map, node): - """ - Return ID of the node mapping of `node` in `node_map`. +# def __get_node_image_from_map(self, node_map, node): +# """ +# Return ID of the node mapping of `node` in `node_map`. - Parameters - ---------- - node_map : list[tuple(int, int)] - List of node maps where the mapping node is found. - - node : int - The mapping node of this node is returned +# Parameters +# ---------- +# node_map : list[tuple(int, int)] +# List of node maps where the mapping node is found. +# +# node : int +# The mapping node of this node is returned - Raises - ------ - Exception - If the node with ID `node` is not contained in the source nodes of the node map. +# Raises +# ------ +# Exception +# If the node with ID `node` is not contained in the source nodes of the node map. - Returns - ------- - int - ID of the mapping of `node`. - - Notes - ----- - This function is not implemented in the `ged::MedianGraphEstimator` class of the `GEDLIB` library. Instead it is a Python implementation of the `ged::NodeMap::image` function. - """ - if node < len(node_map): - return node_map[node][1] if node_map[node][1] < len(node_map) else np.inf - else: - raise Exception('The node with ID ', str(node), ' is not contained in the source nodes of the node map.') - return np.inf +# Returns +# ------- +# int +# ID of the mapping of `node`. +# +# Notes +# ----- +# This function is not implemented in the `ged::MedianGraphEstimator` class of the `GEDLIB` library. Instead it is a Python implementation of the `ged::NodeMap::image` function. +# """ +# if node < len(node_map): +# return node_map[node][1] if node_map[node][1] < len(node_map) else np.inf +# else: +# raise Exception('The node with ID ', str(node), ' is not contained in the source nodes of the node map.') +# return np.inf def __are_graphs_equal(self, g1, g2): @@ -958,9 +978,9 @@ class MedianGraphEstimator(object): for label in labels: coords = {} for key, val in label.items(): - label = float(val) - sums[key] += label - coords[key] = label + label_f = float(val) + sums[key] += label_f + coords[key] = label_f labels_as_coords.append(coords) median = {} for key, val in sums.items(): @@ -980,7 +1000,7 @@ class MedianGraphEstimator(object): norm = 0 for key, val in label_as_coord.items(): norm += (val - median[key]) ** 2 - norm += np.sqrt(norm) + norm = np.sqrt(norm) if norm > 0: for key, val in label_as_coord.items(): numerator[key] += val / norm @@ -1005,64 +1025,64 @@ class MedianGraphEstimator(object): return median_label -# def __get_median_edge_label_symbolic(self, edge_labels): -# pass +# def __get_median_edge_label_symbolic(self, edge_labels): +# pass -# def __get_median_edge_label_nonsymbolic(self, edge_labels): -# if len(edge_labels) == 0: -# return {} -# else: -# # Transform the labels into coordinates and compute mean label as initial solution. -# edge_labels_as_coords = [] -# sums = {} -# for key, val in edge_labels[0].items(): -# sums[key] = 0 -# for edge_label in edge_labels: -# coords = {} -# for key, val in edge_label.items(): -# label = float(val) -# sums[key] += label -# coords[key] = label -# edge_labels_as_coords.append(coords) -# median = {} -# for key, val in sums.items(): -# median[key] = val / len(edge_labels) -# -# # Run main loop of Weiszfeld's Algorithm. -# epsilon = 0.0001 -# delta = 1.0 -# num_itrs = 0 -# all_equal = False -# while ((delta > epsilon) and (num_itrs < 100) and (not all_equal)): -# numerator = {} -# for key, val in sums.items(): -# numerator[key] = 0 -# denominator = 0 -# for edge_label_as_coord in edge_labels_as_coords: -# norm = 0 -# for key, val in edge_label_as_coord.items(): -# norm += (val - median[key]) ** 2 -# norm += np.sqrt(norm) -# if norm > 0: -# for key, val in edge_label_as_coord.items(): -# numerator[key] += val / norm -# denominator += 1.0 / norm -# if denominator == 0: -# all_equal = True -# else: -# new_median = {} -# delta = 0.0 -# for key, val in numerator.items(): -# this_median = val / denominator -# new_median[key] = this_median -# delta += np.abs(median[key] - this_median) -# median = new_median -# -# num_itrs += 1 -# -# # Transform the solution to ged::GXLLabel and return it. -# median_label = {} -# for key, val in median.items(): -# median_label[key] = str(val) -# return median_label \ No newline at end of file +# def __get_median_edge_label_nonsymbolic(self, edge_labels): +# if len(edge_labels) == 0: +# return {} +# else: +# # Transform the labels into coordinates and compute mean label as initial solution. +# edge_labels_as_coords = [] +# sums = {} +# for key, val in edge_labels[0].items(): +# sums[key] = 0 +# for edge_label in edge_labels: +# coords = {} +# for key, val in edge_label.items(): +# label = float(val) +# sums[key] += label +# coords[key] = label +# edge_labels_as_coords.append(coords) +# median = {} +# for key, val in sums.items(): +# median[key] = val / len(edge_labels) +# +# # Run main loop of Weiszfeld's Algorithm. +# epsilon = 0.0001 +# delta = 1.0 +# num_itrs = 0 +# all_equal = False +# while ((delta > epsilon) and (num_itrs < 100) and (not all_equal)): +# numerator = {} +# for key, val in sums.items(): +# numerator[key] = 0 +# denominator = 0 +# for edge_label_as_coord in edge_labels_as_coords: +# norm = 0 +# for key, val in edge_label_as_coord.items(): +# norm += (val - median[key]) ** 2 +# norm += np.sqrt(norm) +# if norm > 0: +# for key, val in edge_label_as_coord.items(): +# numerator[key] += val / norm +# denominator += 1.0 / norm +# if denominator == 0: +# all_equal = True +# else: +# new_median = {} +# delta = 0.0 +# for key, val in numerator.items(): +# this_median = val / denominator +# new_median[key] = this_median +# delta += np.abs(median[key] - this_median) +# median = new_median +# +# num_itrs += 1 +# +# # Transform the solution to ged::GXLLabel and return it. +# median_label = {} +# for key, val in median.items(): +# median_label[key] = str(val) +# return median_label \ No newline at end of file diff --git a/gklearn/ged/median/test_median_graph_estimator.py b/gklearn/ged/median/test_median_graph_estimator.py index bc4beae..b251f3b 100644 --- a/gklearn/ged/median/test_median_graph_estimator.py +++ b/gklearn/ged/median/test_median_graph_estimator.py @@ -7,11 +7,10 @@ Created on Mon Mar 16 17:26:40 2020 """ def test_median_graph_estimator(): - from gklearn.utils.graphfiles import loadDataset + from gklearn.utils import load_dataset from gklearn.ged.median import MedianGraphEstimator, constant_node_costs from gklearn.gedlib import librariesImport, gedlibpy from gklearn.preimage.utils import get_same_item_indices - from gklearn.preimage.ged import convertGraph import multiprocessing # estimator parameters. @@ -22,17 +21,20 @@ def test_median_graph_estimator(): # algorithm parameters. algo = 'IPFP' - initial_solutions = 40 - algo_options_suffix = ' --initial-solutions ' + str(initial_solutions) + ' --ratio-runs-from-initial-solutions 1' + initial_solutions = 1 + algo_options_suffix = ' --initial-solutions ' + str(initial_solutions) + ' --ratio-runs-from-initial-solutions 1 --initialization-method NODE ' edit_cost_name = 'LETTER2' +# edit_cost_name = 'CONSTANT' edit_cost_constants = [0.02987291, 0.0178211, 0.01431966, 0.001, 0.001] +# edit_cost_constants = [4, 4, 2, 1, 1, 1] ds_name = 'COIL-DEL' # Load dataset. # dataset = '../../datasets/COIL-DEL/COIL-DEL_A.txt' dataset = '../../../datasets/Letter-high/Letter-high_A.txt' - Gn, y_all = loadDataset(dataset) +# dataset = '../../../datasets/MUTAG/MUTAG_A.txt' + Gn, y_all, _ = load_dataset(dataset) y_idx = get_same_item_indices(y_all) for i, (y, values) in enumerate(y_idx.items()): Gn_i = [Gn[val] for val in values] @@ -43,7 +45,7 @@ def test_median_graph_estimator(): # gedlibpy.restart_env() ged_env.set_edit_cost(edit_cost_name, edit_cost_constant=edit_cost_constants) for G in Gn_i: - ged_env.add_nx_graph(convertGraph(G, edit_cost_name), '') + ged_env.add_nx_graph(G, '') graph_ids = ged_env.get_all_graph_ids() set_median_id = ged_env.add_graph('set_median') gen_median_id = ged_env.add_graph('gen_median') @@ -54,11 +56,13 @@ def test_median_graph_estimator(): mge.set_refine_method(algo, '--threads ' + str(threads) + ' --initial-solutions ' + str(initial_solutions) + ' --ratio-runs-from-initial-solutions 1') mge_options = '--time-limit ' + str(time_limit) + ' --stdout 2 --init-type ' + init_type - mge_options += ' --random-inits ' + str(num_inits) + ' --seed ' + '1' + ' --refine FALSE'# @todo: std::to_string(rng()) + mge_options += ' --random-inits ' + str(num_inits) + ' --seed ' + '1' + ' --update-order FALSE --refine FALSE'# @todo: std::to_string(rng()) # Select the GED algorithm. algo_options = '--threads ' + str(threads) + algo_options_suffix mge.set_options(mge_options) + mge.set_label_names(node_labels=[], edge_labels=[], + node_attrs=['x', 'y'], edge_attrs=[]) mge.set_init_method(algo, algo_options) mge.set_descent_method(algo, algo_options) diff --git a/gklearn/ged/median/utils.py b/gklearn/ged/median/utils.py index f6d43bb..908cb11 100644 --- a/gklearn/ged/median/utils.py +++ b/gklearn/ged/median/utils.py @@ -30,6 +30,8 @@ def mge_options_to_string(options): opt_str += '--randomness ' + str(val) + ' ' elif key == 'verbose': opt_str += '--stdout ' + str(val) + ' ' + elif key == 'update_order': + opt_str += '--update-order ' + ('TRUE' if val else 'FALSE') + ' ' elif key == 'refine': opt_str += '--refine ' + ('TRUE' if val else 'FALSE') + ' ' elif key == 'time_limit': diff --git a/gklearn/gedlib/gedlibpy.cpp b/gklearn/gedlib/gedlibpy.cpp index 3766a46..c755bf2 100644 --- a/gklearn/gedlib/gedlibpy.cpp +++ b/gklearn/gedlib/gedlibpy.cpp @@ -1,4 +1,4 @@ -/* Generated by Cython 0.29.15 */ +/* Generated by Cython 0.29.16 */ /* BEGIN: Cython Metadata { @@ -52,8 +52,8 @@ END: Cython Metadata */ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29_15" -#define CYTHON_HEX_VERSION 0x001D0FF0 +#define CYTHON_ABI "0_29_16" +#define CYTHON_HEX_VERSION 0x001D10F0 #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof @@ -543,8 +543,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif +#endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) @@ -906,7 +908,7 @@ static const char *__pyx_f[] = { "complex.pxd", }; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -915,7 +917,7 @@ static const char *__pyx_f[] = { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -924,7 +926,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":778 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -933,7 +935,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -942,7 +944,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -951,7 +953,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":784 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -960,7 +962,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -969,7 +971,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":786 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -978,7 +980,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -987,7 +989,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -996,7 +998,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":800 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -1005,7 +1007,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -1014,7 +1016,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1023,7 +1025,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":804 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -1032,7 +1034,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":805 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -1041,7 +1043,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":806 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":806 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1050,7 +1052,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":808 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":808 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1059,7 +1061,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":809 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1068,7 +1070,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":811 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":811 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1077,7 +1079,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":812 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":812 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1086,7 +1088,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1097,8 +1099,8 @@ typedef npy_longdouble __pyx_t_5numpy_longdouble_t; /* "gedlibpy.pyx":39 * #Long unsigned int equivalent - * cimport numpy as np - * ctypedef np.npy_uint32 UINT32_t # <<<<<<<<<<<<<< + * cimport numpy as cnp + * ctypedef cnp.npy_uint32 UINT32_t # <<<<<<<<<<<<<< * from cpython cimport array * */ @@ -1135,7 +1137,7 @@ typedef struct arrayobject arrayobject; #endif struct __pyx_obj_8gedlibpy_GEDEnv; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -1144,7 +1146,7 @@ struct __pyx_obj_8gedlibpy_GEDEnv; */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -1153,7 +1155,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":817 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":817 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -1162,7 +1164,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":819 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1171,7 +1173,7 @@ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; */ typedef npy_cdouble __pyx_t_5numpy_complex_t; -/* "gedlibpy.pyx":178 +/* "gedlibpy.pyx":180 * * * cdef class GEDEnv: # <<<<<<<<<<<<<< @@ -1626,6 +1628,9 @@ static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); @@ -1666,6 +1671,7 @@ typedef struct { PyObject *func_classobj; void *defaults; int defaults_pyobjects; + size_t defaults_size; // used by FusedFunction for copying defaults int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; @@ -2172,8 +2178,8 @@ extern int __pyx_module_is_main_gedlibpy; int __pyx_module_is_main_gedlibpy = 0; /* Implementation of 'gedlibpy' */ -static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_ValueError; static PyObject *__pyx_builtin_RuntimeError; @@ -2185,10 +2191,12 @@ static const char __pyx_k_h[] = "h"; static const char __pyx_k_g1[] = "g1"; static const char __pyx_k_g2[] = "g2"; static const char __pyx_k_id[] = "id"; +static const char __pyx_k_np[] = "np"; static const char __pyx_k_nx[] = "nx"; static const char __pyx_k_os[] = "os"; static const char __pyx_k__20[] = "*"; static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_inf[] = "inf"; static const char __pyx_k_key[] = "key"; static const char __pyx_k_res[] = "res"; static const char __pyx_k_cdll[] = "cdll"; @@ -2215,6 +2223,7 @@ static const char __pyx_k_items[] = "items"; static const char __pyx_k_map_b[] = "map_b"; static const char __pyx_k_map_u[] = "map_u"; static const char __pyx_k_nodes[] = "nodes"; +static const char __pyx_k_numpy[] = "numpy"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_utf_8[] = "utf-8"; @@ -2231,6 +2240,7 @@ static const char __pyx_k_module[] = "__module__"; static const char __pyx_k_name_2[] = "__name__"; static const char __pyx_k_option[] = "option"; static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_NodeMap[] = "NodeMap"; static const char __pyx_k_classes[] = "classes"; static const char __pyx_k_dataset[] = "dataset"; static const char __pyx_k_dirname[] = "dirname"; @@ -2244,6 +2254,7 @@ static const char __pyx_k_gedlibpy[] = "gedlibpy"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_graph_id[] = "graph_id"; static const char __pyx_k_networkx[] = "networkx"; +static const char __pyx_k_node_map[] = "node_map"; static const char __pyx_k_nx_graph[] = "nx_graph"; static const char __pyx_k_path_XML[] = "path_XML"; static const char __pyx_k_qualname[] = "__qualname__"; @@ -2296,18 +2307,21 @@ static const char __pyx_k_list_of_edges[] = "list_of_edges"; static const char __pyx_k_list_of_nodes[] = "list_of_nodes"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_set_edit_cost[] = "set_edit_cost"; +static const char __pyx_k_add_assignment[] = "add_assignment"; static const char __pyx_k_get_dummy_node[] = "get_dummy_node"; static const char __pyx_k_is_initialized[] = "is_initialized"; static const char __pyx_k_decode_your_map[] = "decode_your_map"; static const char __pyx_k_encode_your_map[] = "encode_your_map"; static const char __pyx_k_get_graph_edges[] = "get_graph_edges"; static const char __pyx_k_get_upper_bound[] = "get_upper_bound"; +static const char __pyx_k_gklearn_ged_env[] = "gklearn.ged.env"; static const char __pyx_k_load_GXL_graphs[] = "load_GXL_graphs"; static const char __pyx_k_print_to_stdout[] = "print_to_stdout"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_InitError___init[] = "InitError.__init__"; static const char __pyx_k_Number_of_graphs[] = "Number of graphs = "; static const char __pyx_k_get_init_options[] = "get_init_options"; +static const char __pyx_k_set_induced_cost[] = "set_induced_cost"; static const char __pyx_k_ignore_duplicates[] = "ignore_duplicates"; static const char __pyx_k_original_node_ids[] = "original_node_ids"; static const char __pyx_k_MethodError___init[] = "MethodError.__init__"; @@ -2380,6 +2394,7 @@ static PyObject *__pyx_kp_u_Loading_graphs_in_progress; static PyObject *__pyx_n_s_MemoryError; static PyObject *__pyx_n_s_MethodError; static PyObject *__pyx_n_s_MethodError___init; +static PyObject *__pyx_n_s_NodeMap; static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor; static PyObject *__pyx_kp_u_Number_of_graphs; static PyObject *__pyx_kp_u_Please_don_t_restart_the_environ; @@ -2390,6 +2405,7 @@ static PyObject *__pyx_kp_u_This_method_doesn_t_exist_please; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_n_s__20; +static PyObject *__pyx_n_s_add_assignment; static PyObject *__pyx_n_s_add_edge; static PyObject *__pyx_n_s_add_graph; static PyObject *__pyx_n_s_add_node; @@ -2438,6 +2454,7 @@ static PyObject *__pyx_n_s_get_node_map; static PyObject *__pyx_n_s_get_original_node_ids; static PyObject *__pyx_n_s_get_upper_bound; static PyObject *__pyx_n_s_getstate; +static PyObject *__pyx_n_s_gklearn_ged_env; static PyObject *__pyx_n_s_graph; static PyObject *__pyx_n_s_graph_class; static PyObject *__pyx_n_s_graph_id; @@ -2449,6 +2466,7 @@ static PyObject *__pyx_n_s_head; static PyObject *__pyx_n_u_id; static PyObject *__pyx_n_s_ignore_duplicates; static PyObject *__pyx_n_s_import; +static PyObject *__pyx_n_s_inf; static PyObject *__pyx_n_s_init; static PyObject *__pyx_n_s_init_2; static PyObject *__pyx_n_s_init_method; @@ -2490,8 +2508,11 @@ static PyObject *__pyx_n_s_node_id; static PyObject *__pyx_n_s_node_label; static PyObject *__pyx_n_s_node_label_1; static PyObject *__pyx_n_s_node_label_2; +static PyObject *__pyx_n_s_node_map; static PyObject *__pyx_n_s_node_type; static PyObject *__pyx_n_s_nodes; +static PyObject *__pyx_n_s_np; +static PyObject *__pyx_n_s_numpy; static PyObject *__pyx_kp_u_numpy_core_multiarray_failed_to; static PyObject *__pyx_kp_u_numpy_core_umath_failed_to_impor; static PyObject *__pyx_n_s_nx; @@ -2517,6 +2538,7 @@ static PyObject *__pyx_n_s_restart_env; static PyObject *__pyx_n_s_run_method; static PyObject *__pyx_n_s_self; static PyObject *__pyx_n_s_set_edit_cost; +static PyObject *__pyx_n_s_set_induced_cost; static PyObject *__pyx_n_s_set_method; static PyObject *__pyx_n_s_setstate; static PyObject *__pyx_n_s_setstate_cython; @@ -2593,7 +2615,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_graph_id, CYTHON_UNUSED PyObject *__pyx_v_adj_matrix, CYTHON_UNUSED PyObject *__pyx_v_adj_lists, CYTHON_UNUSED PyObject *__pyx_v_edge_list); /* proto */ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_nx_graph, PyObject *__pyx_v_graph_id, PyObject *__pyx_v_graph_name, PyObject *__pyx_v_graph_class); /* proto */ -static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id); /* proto */ +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id, PyObject *__pyx_v_node_map); /* proto */ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_128__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_130__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_8gedlibpy_13EditCostError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message); /* proto */ @@ -2647,7 +2669,7 @@ static PyObject *__pyx_codeobj__37; static PyObject *__pyx_codeobj__39; /* Late includes */ -/* "gedlibpy.pyx":126 +/* "gedlibpy.pyx":128 * * * def get_edit_cost_options() : # <<<<<<<<<<<<<< @@ -2682,7 +2704,7 @@ static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_edit_cost_options", 0); - /* "gedlibpy.pyx":137 + /* "gedlibpy.pyx":139 * """ * * return [option.decode('utf-8') for option in getEditCostStringOptions()] # <<<<<<<<<<<<<< @@ -2691,13 +2713,13 @@ static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); try { __pyx_t_2 = pyged::getEditCostStringOptions(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 137, __pyx_L1_error) + __PYX_ERR(0, 139, __pyx_L1_error) } __pyx_t_4 = &__pyx_t_2; __pyx_t_3 = __pyx_t_4->begin(); @@ -2706,9 +2728,9 @@ static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject __pyx_t_5 = *__pyx_t_3; ++__pyx_t_3; __pyx_7genexpr__pyx_v_option = __pyx_t_5; - __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_7genexpr__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 137, __pyx_L1_error) + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_7genexpr__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 137, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ @@ -2716,7 +2738,7 @@ static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":126 + /* "gedlibpy.pyx":128 * * * def get_edit_cost_options() : # <<<<<<<<<<<<<< @@ -2736,7 +2758,7 @@ static PyObject *__pyx_pf_8gedlibpy_get_edit_cost_options(CYTHON_UNUSED PyObject return __pyx_r; } -/* "gedlibpy.pyx":140 +/* "gedlibpy.pyx":142 * * * def get_method_options() : # <<<<<<<<<<<<<< @@ -2771,7 +2793,7 @@ static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject * PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_method_options", 0); - /* "gedlibpy.pyx":150 + /* "gedlibpy.pyx":152 * .. note:: Prefer the list_of_method_options attribute of this module. * """ * return [option.decode('utf-8') for option in getMethodStringOptions()] # <<<<<<<<<<<<<< @@ -2780,13 +2802,13 @@ static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject * */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); try { __pyx_t_2 = pyged::getMethodStringOptions(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 150, __pyx_L1_error) + __PYX_ERR(0, 152, __pyx_L1_error) } __pyx_t_4 = &__pyx_t_2; __pyx_t_3 = __pyx_t_4->begin(); @@ -2795,9 +2817,9 @@ static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject * __pyx_t_5 = *__pyx_t_3; ++__pyx_t_3; __pyx_8genexpr1__pyx_v_option = __pyx_t_5; - __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr1__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 150, __pyx_L1_error) + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr1__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 150, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ @@ -2805,7 +2827,7 @@ static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject * __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":140 + /* "gedlibpy.pyx":142 * * * def get_method_options() : # <<<<<<<<<<<<<< @@ -2825,7 +2847,7 @@ static PyObject *__pyx_pf_8gedlibpy_2get_method_options(CYTHON_UNUSED PyObject * return __pyx_r; } -/* "gedlibpy.pyx":153 +/* "gedlibpy.pyx":155 * * * def get_init_options() : # <<<<<<<<<<<<<< @@ -2860,7 +2882,7 @@ static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__ PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_init_options", 0); - /* "gedlibpy.pyx":163 + /* "gedlibpy.pyx":165 * .. note:: Prefer the list_of_init_options attribute of this module. * """ * return [option.decode('utf-8') for option in getInitStringOptions()] # <<<<<<<<<<<<<< @@ -2869,13 +2891,13 @@ static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); try { __pyx_t_2 = pyged::getInitStringOptions(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 163, __pyx_L1_error) + __PYX_ERR(0, 165, __pyx_L1_error) } __pyx_t_4 = &__pyx_t_2; __pyx_t_3 = __pyx_t_4->begin(); @@ -2884,9 +2906,9 @@ static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__ __pyx_t_5 = *__pyx_t_3; ++__pyx_t_3; __pyx_8genexpr2__pyx_v_option = __pyx_t_5; - __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr2__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 163, __pyx_L1_error) + __pyx_t_6 = __Pyx_decode_cpp_string(__pyx_8genexpr2__pyx_v_option, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 163, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ @@ -2894,7 +2916,7 @@ static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":153 + /* "gedlibpy.pyx":155 * * * def get_init_options() : # <<<<<<<<<<<<<< @@ -2914,7 +2936,7 @@ static PyObject *__pyx_pf_8gedlibpy_4get_init_options(CYTHON_UNUSED PyObject *__ return __pyx_r; } -/* "gedlibpy.pyx":166 +/* "gedlibpy.pyx":168 * * * def get_dummy_node() : # <<<<<<<<<<<<<< @@ -2944,7 +2966,7 @@ static PyObject *__pyx_pf_8gedlibpy_6get_dummy_node(CYTHON_UNUSED PyObject *__py PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_dummy_node", 0); - /* "gedlibpy.pyx":175 + /* "gedlibpy.pyx":177 * .. note:: A dummy node is used when a node isn't associated to an other node. * """ * return getDummyNode() # <<<<<<<<<<<<<< @@ -2956,15 +2978,15 @@ static PyObject *__pyx_pf_8gedlibpy_6get_dummy_node(CYTHON_UNUSED PyObject *__py __pyx_t_1 = pyged::getDummyNode(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 175, __pyx_L1_error) + __PYX_ERR(0, 177, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":166 + /* "gedlibpy.pyx":168 * * * def get_dummy_node() : # <<<<<<<<<<<<<< @@ -2983,7 +3005,7 @@ static PyObject *__pyx_pf_8gedlibpy_6get_dummy_node(CYTHON_UNUSED PyObject *__py return __pyx_r; } -/* "gedlibpy.pyx":185 +/* "gedlibpy.pyx":187 * * * def __cinit__(self): # <<<<<<<<<<<<<< @@ -3013,7 +3035,7 @@ static int __pyx_pf_8gedlibpy_6GEDEnv___cinit__(struct __pyx_obj_8gedlibpy_GEDEn pyged::PyGEDEnv *__pyx_t_1; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "gedlibpy.pyx":186 + /* "gedlibpy.pyx":188 * * def __cinit__(self): * self.c_env = new PyGEDEnv() # <<<<<<<<<<<<<< @@ -3024,11 +3046,11 @@ static int __pyx_pf_8gedlibpy_6GEDEnv___cinit__(struct __pyx_obj_8gedlibpy_GEDEn __pyx_t_1 = new pyged::PyGEDEnv(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 186, __pyx_L1_error) + __PYX_ERR(0, 188, __pyx_L1_error) } __pyx_v_self->c_env = __pyx_t_1; - /* "gedlibpy.pyx":185 + /* "gedlibpy.pyx":187 * * * def __cinit__(self): # <<<<<<<<<<<<<< @@ -3047,7 +3069,7 @@ static int __pyx_pf_8gedlibpy_6GEDEnv___cinit__(struct __pyx_obj_8gedlibpy_GEDEn return __pyx_r; } -/* "gedlibpy.pyx":189 +/* "gedlibpy.pyx":191 * * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -3070,7 +3092,7 @@ static void __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(struct __pyx_obj_8gedlibpy_G __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__dealloc__", 0); - /* "gedlibpy.pyx":190 + /* "gedlibpy.pyx":192 * * def __dealloc__(self): * del self.c_env # <<<<<<<<<<<<<< @@ -3079,7 +3101,7 @@ static void __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(struct __pyx_obj_8gedlibpy_G */ delete __pyx_v_self->c_env; - /* "gedlibpy.pyx":189 + /* "gedlibpy.pyx":191 * * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -3091,7 +3113,7 @@ static void __pyx_pf_8gedlibpy_6GEDEnv_2__dealloc__(struct __pyx_obj_8gedlibpy_G __Pyx_RefNannyFinishContext(); } -/* "gedlibpy.pyx":193 +/* "gedlibpy.pyx":195 * * * def is_initialized(self) : # <<<<<<<<<<<<<< @@ -3120,7 +3142,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(struct __pyx_obj_8ge PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("is_initialized", 0); - /* "gedlibpy.pyx":202 + /* "gedlibpy.pyx":204 * .. note:: This function exists for internals verifications but you can use it for your code. * """ * return self.c_env.isInitialized() # <<<<<<<<<<<<<< @@ -3132,15 +3154,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(struct __pyx_obj_8ge __pyx_t_1 = __pyx_v_self->c_env->isInitialized(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 202, __pyx_L1_error) + __PYX_ERR(0, 204, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 202, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":193 + /* "gedlibpy.pyx":195 * * * def is_initialized(self) : # <<<<<<<<<<<<<< @@ -3159,7 +3181,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_4is_initialized(struct __pyx_obj_8ge return __pyx_r; } -/* "gedlibpy.pyx":205 +/* "gedlibpy.pyx":207 * * * def restart_env(self) : # <<<<<<<<<<<<<< @@ -3186,7 +3208,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_6restart_env(struct __pyx_obj_8gedli __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("restart_env", 0); - /* "gedlibpy.pyx":212 + /* "gedlibpy.pyx":214 * .. note:: You can now delete and add somes graphs after initialization so you can avoid this function. * """ * self.c_env.restartEnv() # <<<<<<<<<<<<<< @@ -3197,10 +3219,10 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_6restart_env(struct __pyx_obj_8gedli __pyx_v_self->c_env->restartEnv(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 212, __pyx_L1_error) + __PYX_ERR(0, 214, __pyx_L1_error) } - /* "gedlibpy.pyx":205 + /* "gedlibpy.pyx":207 * * * def restart_env(self) : # <<<<<<<<<<<<<< @@ -3220,7 +3242,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_6restart_env(struct __pyx_obj_8gedli return __pyx_r; } -/* "gedlibpy.pyx":215 +/* "gedlibpy.pyx":217 * * * def load_GXL_graphs(self, path_folder, path_XML, node_type, edge_type) : # <<<<<<<<<<<<<< @@ -3266,23 +3288,23 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_9load_GXL_graphs(PyObject *__pyx_v_s case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path_XML)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 1); __PYX_ERR(0, 215, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 1); __PYX_ERR(0, 217, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_type)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 2); __PYX_ERR(0, 215, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 2); __PYX_ERR(0, 217, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_type)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 3); __PYX_ERR(0, 215, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, 3); __PYX_ERR(0, 217, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_GXL_graphs") < 0)) __PYX_ERR(0, 215, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_GXL_graphs") < 0)) __PYX_ERR(0, 217, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -3299,7 +3321,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_9load_GXL_graphs(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 215, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_GXL_graphs", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 217, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.load_GXL_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3324,14 +3346,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8g bool __pyx_t_7; __Pyx_RefNannySetupContext("load_GXL_graphs", 0); - /* "gedlibpy.pyx":231 + /* "gedlibpy.pyx":233 * .. note:: You can call this function multiple times if you want, but not after an init call. * """ * self.c_env.loadGXLGraph(path_folder.encode('utf-8'), path_XML.encode('utf-8'), node_type, edge_type) # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_folder, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_folder, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3345,12 +3367,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8g } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_XML, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path_XML, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3364,21 +3386,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8g } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_node_type); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_edge_type); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 231, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_node_type); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_edge_type); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error) try { __pyx_v_self->c_env->loadGXLGraph(__pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 231, __pyx_L1_error) + __PYX_ERR(0, 233, __pyx_L1_error) } - /* "gedlibpy.pyx":215 + /* "gedlibpy.pyx":217 * * * def load_GXL_graphs(self, path_folder, path_XML, node_type, edge_type) : # <<<<<<<<<<<<<< @@ -3401,7 +3423,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_8load_GXL_graphs(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":234 +/* "gedlibpy.pyx":236 * * * def graph_ids(self) : # <<<<<<<<<<<<<< @@ -3430,7 +3452,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(struct __pyx_obj_8gedlib PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("graph_ids", 0); - /* "gedlibpy.pyx":243 + /* "gedlibpy.pyx":245 * .. note:: Prefer this function if you have huges structures with lots of graphs. * """ * return self.c_env.getGraphIds() # <<<<<<<<<<<<<< @@ -3442,15 +3464,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(struct __pyx_obj_8gedlib __pyx_t_1 = __pyx_v_self->c_env->getGraphIds(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 243, __pyx_L1_error) + __PYX_ERR(0, 245, __pyx_L1_error) } - __pyx_t_2 = __pyx_convert_pair_to_py_size_t____size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error) + __pyx_t_2 = __pyx_convert_pair_to_py_size_t____size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":234 + /* "gedlibpy.pyx":236 * * * def graph_ids(self) : # <<<<<<<<<<<<<< @@ -3469,7 +3491,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_10graph_ids(struct __pyx_obj_8gedlib return __pyx_r; } -/* "gedlibpy.pyx":246 +/* "gedlibpy.pyx":248 * * * def get_all_graph_ids(self) : # <<<<<<<<<<<<<< @@ -3498,7 +3520,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(struct __pyx_obj PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_all_graph_ids", 0); - /* "gedlibpy.pyx":255 + /* "gedlibpy.pyx":257 * .. note:: The last ID is equal to (number of graphs - 1). The order correspond to the loading order. * """ * return self.c_env.getAllGraphIds() # <<<<<<<<<<<<<< @@ -3510,15 +3532,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(struct __pyx_obj __pyx_t_1 = __pyx_v_self->c_env->getAllGraphIds(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 255, __pyx_L1_error) + __PYX_ERR(0, 257, __pyx_L1_error) } - __pyx_t_2 = __pyx_convert_vector_to_py_size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 255, __pyx_L1_error) + __pyx_t_2 = __pyx_convert_vector_to_py_size_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":246 + /* "gedlibpy.pyx":248 * * * def get_all_graph_ids(self) : # <<<<<<<<<<<<<< @@ -3537,7 +3559,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_12get_all_graph_ids(struct __pyx_obj return __pyx_r; } -/* "gedlibpy.pyx":258 +/* "gedlibpy.pyx":260 * * * def get_graph_class(self, id) : # <<<<<<<<<<<<<< @@ -3567,7 +3589,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(struct __pyx_obj_8 PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_class", 0); - /* "gedlibpy.pyx":270 + /* "gedlibpy.pyx":272 * .. note:: An empty string can be a class. * """ * return self.c_env.getGraphClass(id) # <<<<<<<<<<<<<< @@ -3575,20 +3597,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 270, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 272, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphClass(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 270, __pyx_L1_error) + __PYX_ERR(0, 272, __pyx_L1_error) } - __pyx_t_3 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 270, __pyx_L1_error) + __pyx_t_3 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":258 + /* "gedlibpy.pyx":260 * * * def get_graph_class(self, id) : # <<<<<<<<<<<<<< @@ -3607,7 +3629,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_14get_graph_class(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":273 +/* "gedlibpy.pyx":275 * * * def get_graph_name(self, id) : # <<<<<<<<<<<<<< @@ -3637,7 +3659,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(struct __pyx_obj_8g PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_name", 0); - /* "gedlibpy.pyx":285 + /* "gedlibpy.pyx":287 * .. note:: An empty string can be a name. * """ * return self.c_env.getGraphName(id).decode('utf-8') # <<<<<<<<<<<<<< @@ -3645,20 +3667,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(struct __pyx_obj_8g * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 287, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphName(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 285, __pyx_L1_error) + __PYX_ERR(0, 287, __pyx_L1_error) } - __pyx_t_3 = __Pyx_decode_cpp_string(__pyx_t_2, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error) + __pyx_t_3 = __Pyx_decode_cpp_string(__pyx_t_2, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":273 + /* "gedlibpy.pyx":275 * * * def get_graph_name(self, id) : # <<<<<<<<<<<<<< @@ -3677,7 +3699,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_16get_graph_name(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":288 +/* "gedlibpy.pyx":290 * * * def add_graph(self, name="", classe="") : # <<<<<<<<<<<<<< @@ -3725,7 +3747,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_19add_graph(PyObject *__pyx_v_self, } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_graph") < 0)) __PYX_ERR(0, 288, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_graph") < 0)) __PYX_ERR(0, 290, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -3742,7 +3764,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_19add_graph(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_graph", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 288, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_graph", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 290, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3766,7 +3788,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlib size_t __pyx_t_6; __Pyx_RefNannySetupContext("add_graph", 0); - /* "gedlibpy.pyx":302 + /* "gedlibpy.pyx":304 * .. note:: You can call this function without parameters. You can also use this function after initialization, call init() after you're finished your modifications. * """ * return self.c_env.addGraph(name.encode('utf-8'), classe.encode('utf-8')) # <<<<<<<<<<<<<< @@ -3774,7 +3796,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlib * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3788,12 +3810,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlib } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_classe, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_classe, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3807,24 +3829,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlib } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_6 = __pyx_v_self->c_env->addGraph(__pyx_t_4, __pyx_t_5); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 302, __pyx_L1_error) + __PYX_ERR(0, 304, __pyx_L1_error) } - __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 302, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":288 + /* "gedlibpy.pyx":290 * * * def add_graph(self, name="", classe="") : # <<<<<<<<<<<<<< @@ -3845,7 +3867,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_18add_graph(struct __pyx_obj_8gedlib return __pyx_r; } -/* "gedlibpy.pyx":305 +/* "gedlibpy.pyx":307 * * * def add_node(self, graph_id, node_id, node_label): # <<<<<<<<<<<<<< @@ -3888,17 +3910,17 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_21add_node(PyObject *__pyx_v_self, P case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_id)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 1); __PYX_ERR(0, 305, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 1); __PYX_ERR(0, 307, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_label)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 2); __PYX_ERR(0, 305, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, 2); __PYX_ERR(0, 307, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_node") < 0)) __PYX_ERR(0, 305, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_node") < 0)) __PYX_ERR(0, 307, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -3913,7 +3935,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_21add_node(PyObject *__pyx_v_self, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 305, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_node", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 307, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_node", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -3937,15 +3959,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibp std::map __pyx_t_6; __Pyx_RefNannySetupContext("add_node", 0); - /* "gedlibpy.pyx":319 + /* "gedlibpy.pyx":321 * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. * """ * self.c_env.addNode(graph_id, node_id.encode('utf-8'), encode_your_map(node_label)) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_id, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_id, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -3959,12 +3981,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibp } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { @@ -3978,19 +4000,19 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibp } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_node_label); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; try { __pyx_v_self->c_env->addNode(__pyx_t_1, __pyx_t_5, __pyx_t_6); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 319, __pyx_L1_error) + __PYX_ERR(0, 321, __pyx_L1_error) } - /* "gedlibpy.pyx":305 + /* "gedlibpy.pyx":307 * * * def add_node(self, graph_id, node_id, node_label): # <<<<<<<<<<<<<< @@ -4013,7 +4035,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_20add_node(struct __pyx_obj_8gedlibp return __pyx_r; } -/* "gedlibpy.pyx":322 +/* "gedlibpy.pyx":324 * * * def add_edge(self, graph_id, tail, head, edge_label, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -4063,19 +4085,19 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_23add_edge(PyObject *__pyx_v_self, P case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tail)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 1); __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 1); __PYX_ERR(0, 324, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_head)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 2); __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 2); __PYX_ERR(0, 324, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_label)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 3); __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, 3); __PYX_ERR(0, 324, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: @@ -4085,7 +4107,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_23add_edge(PyObject *__pyx_v_self, P } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_edge") < 0)) __PYX_ERR(0, 322, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_edge") < 0)) __PYX_ERR(0, 324, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -4107,7 +4129,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_23add_edge(PyObject *__pyx_v_self, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 322, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_edge", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 324, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4133,15 +4155,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibp bool __pyx_t_8; __Pyx_RefNannySetupContext("add_edge", 0); - /* "gedlibpy.pyx":340 + /* "gedlibpy.pyx":342 * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. * """ * self.c_env.addEdge(graph_id, tail.encode('utf-8'), head.encode('utf-8'), encode_your_map(edge_label), ignore_duplicates) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -4155,12 +4177,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibp } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -4174,12 +4196,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibp } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { @@ -4193,20 +4215,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibp } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_edge_label); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_duplicates); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_duplicates); if (unlikely((__pyx_t_8 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error) try { __pyx_v_self->c_env->addEdge(__pyx_t_1, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 340, __pyx_L1_error) + __PYX_ERR(0, 342, __pyx_L1_error) } - /* "gedlibpy.pyx":322 + /* "gedlibpy.pyx":324 * * * def add_edge(self, graph_id, tail, head, edge_label, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -4229,7 +4251,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_22add_edge(struct __pyx_obj_8gedlibp return __pyx_r; } -/* "gedlibpy.pyx":343 +/* "gedlibpy.pyx":345 * * * def add_symmetrical_edge(self, graph_id, tail, head, edge_label) : # <<<<<<<<<<<<<< @@ -4275,23 +4297,23 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_25add_symmetrical_edge(PyObject *__p case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tail)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 1); __PYX_ERR(0, 343, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 1); __PYX_ERR(0, 345, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_head)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 2); __PYX_ERR(0, 343, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 2); __PYX_ERR(0, 345, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_label)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 3); __PYX_ERR(0, 343, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, 3); __PYX_ERR(0, 345, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_symmetrical_edge") < 0)) __PYX_ERR(0, 343, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_symmetrical_edge") < 0)) __PYX_ERR(0, 345, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -4308,7 +4330,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_25add_symmetrical_edge(PyObject *__p } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 343, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_symmetrical_edge", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 345, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_symmetrical_edge", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -4336,14 +4358,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_ std::map __pyx_t_7; __Pyx_RefNannySetupContext("add_symmetrical_edge", 0); - /* "gedlibpy.pyx":359 + /* "gedlibpy.pyx":361 * .. note:: You can also use this function after initialization, but only on a newly added graph. Call init() after you're finished your modifications. * """ * tailB = tail.encode('utf-8') # <<<<<<<<<<<<<< * headB = head.encode('utf-8') * edgeLabelB = encode_your_map(edge_label) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 359, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_tail, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4357,20 +4379,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_tailB = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":360 + /* "gedlibpy.pyx":362 * """ * tailB = tail.encode('utf-8') * headB = head.encode('utf-8') # <<<<<<<<<<<<<< * edgeLabelB = encode_your_map(edge_label) * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_head, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4384,20 +4406,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_headB = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":361 + /* "gedlibpy.pyx":363 * tailB = tail.encode('utf-8') * headB = head.encode('utf-8') * edgeLabelB = encode_your_map(edge_label) # <<<<<<<<<<<<<< * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 361, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -4411,49 +4433,49 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 361, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_edgeLabelB = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":362 + /* "gedlibpy.pyx":364 * headB = head.encode('utf-8') * edgeLabelB = encode_your_map(edge_label) * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) # <<<<<<<<<<<<<< * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) * */ - __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) - __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 364, __pyx_L1_error) try { __pyx_v_self->c_env->addEdge(__pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7, 1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 362, __pyx_L1_error) + __PYX_ERR(0, 364, __pyx_L1_error) } - /* "gedlibpy.pyx":363 + /* "gedlibpy.pyx":365 * edgeLabelB = encode_your_map(edge_label) * self.c_env.addEdge(graph_id, tailB, headB, edgeLabelB, True) * self.c_env.addEdge(graph_id, headB, tailB, edgeLabelB, True) # <<<<<<<<<<<<<< * * */ - __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) - __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 365, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_headB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 365, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_tailB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 365, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_v_edgeLabelB); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 365, __pyx_L1_error) try { __pyx_v_self->c_env->addEdge(__pyx_t_4, __pyx_t_6, __pyx_t_5, __pyx_t_7, 1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 363, __pyx_L1_error) + __PYX_ERR(0, 365, __pyx_L1_error) } - /* "gedlibpy.pyx":343 + /* "gedlibpy.pyx":345 * * * def add_symmetrical_edge(self, graph_id, tail, head, edge_label) : # <<<<<<<<<<<<<< @@ -4479,7 +4501,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_24add_symmetrical_edge(struct __pyx_ return __pyx_r; } -/* "gedlibpy.pyx":366 +/* "gedlibpy.pyx":368 * * * def clear_graph(self, graph_id) : # <<<<<<<<<<<<<< @@ -4507,22 +4529,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_26clear_graph(struct __pyx_obj_8gedl size_t __pyx_t_1; __Pyx_RefNannySetupContext("clear_graph", 0); - /* "gedlibpy.pyx":375 + /* "gedlibpy.pyx":377 * .. note:: Call init() after you're finished your modifications. * """ * self.c_env.clearGraph(graph_id) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 375, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 377, __pyx_L1_error) try { __pyx_v_self->c_env->clearGraph(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 375, __pyx_L1_error) + __PYX_ERR(0, 377, __pyx_L1_error) } - /* "gedlibpy.pyx":366 + /* "gedlibpy.pyx":368 * * * def clear_graph(self, graph_id) : # <<<<<<<<<<<<<< @@ -4542,7 +4564,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_26clear_graph(struct __pyx_obj_8gedl return __pyx_r; } -/* "gedlibpy.pyx":378 +/* "gedlibpy.pyx":380 * * * def get_graph_internal_id(self, graph_id) : # <<<<<<<<<<<<<< @@ -4572,7 +4594,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(struct __pyx PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_internal_id", 0); - /* "gedlibpy.pyx":390 + /* "gedlibpy.pyx":392 * .. note:: These functions allow to collect all the graph's informations. * """ * return self.c_env.getGraphInternalId(graph_id) # <<<<<<<<<<<<<< @@ -4580,20 +4602,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(struct __pyx * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 390, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 392, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphInternalId(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 390, __pyx_L1_error) + __PYX_ERR(0, 392, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 390, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":378 + /* "gedlibpy.pyx":380 * * * def get_graph_internal_id(self, graph_id) : # <<<<<<<<<<<<<< @@ -4612,7 +4634,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_28get_graph_internal_id(struct __pyx return __pyx_r; } -/* "gedlibpy.pyx":393 +/* "gedlibpy.pyx":395 * * * def get_graph_num_nodes(self, graph_id) : # <<<<<<<<<<<<<< @@ -4642,7 +4664,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(struct __pyx_o PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_num_nodes", 0); - /* "gedlibpy.pyx":405 + /* "gedlibpy.pyx":407 * .. note:: These functions allow to collect all the graph's informations. * """ * return self.c_env.getGraphNumNodes(graph_id) # <<<<<<<<<<<<<< @@ -4650,20 +4672,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(struct __pyx_o * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 405, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 407, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphNumNodes(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 405, __pyx_L1_error) + __PYX_ERR(0, 407, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 405, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":393 + /* "gedlibpy.pyx":395 * * * def get_graph_num_nodes(self, graph_id) : # <<<<<<<<<<<<<< @@ -4682,7 +4704,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_30get_graph_num_nodes(struct __pyx_o return __pyx_r; } -/* "gedlibpy.pyx":408 +/* "gedlibpy.pyx":410 * * * def get_graph_num_edges(self, graph_id) : # <<<<<<<<<<<<<< @@ -4712,7 +4734,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(struct __pyx_o PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_num_edges", 0); - /* "gedlibpy.pyx":420 + /* "gedlibpy.pyx":422 * .. note:: These functions allow to collect all the graph's informations. * """ * return self.c_env.getGraphNumEdges(graph_id) # <<<<<<<<<<<<<< @@ -4720,20 +4742,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(struct __pyx_o * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 420, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphNumEdges(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 420, __pyx_L1_error) + __PYX_ERR(0, 422, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":408 + /* "gedlibpy.pyx":410 * * * def get_graph_num_edges(self, graph_id) : # <<<<<<<<<<<<<< @@ -4752,7 +4774,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_32get_graph_num_edges(struct __pyx_o return __pyx_r; } -/* "gedlibpy.pyx":423 +/* "gedlibpy.pyx":425 * * * def get_original_node_ids(self, graph_id) : # <<<<<<<<<<<<<< @@ -4787,7 +4809,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx PyObject *__pyx_t_7 = NULL; __Pyx_RefNannySetupContext("get_original_node_ids", 0); - /* "gedlibpy.pyx":435 + /* "gedlibpy.pyx":437 * .. note:: These functions allow to collect all the graph's informations. * """ * return [gid.decode('utf-8') for gid in self.c_env.getGraphOriginalNodeIds(graph_id)] # <<<<<<<<<<<<<< @@ -4796,14 +4818,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 437, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getGraphOriginalNodeIds(__pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 435, __pyx_L1_error) + __PYX_ERR(0, 437, __pyx_L1_error) } __pyx_t_5 = &__pyx_t_3; __pyx_t_4 = __pyx_t_5->begin(); @@ -4812,9 +4834,9 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx __pyx_t_6 = *__pyx_t_4; ++__pyx_t_4; __pyx_8genexpr3__pyx_v_gid = __pyx_t_6; - __pyx_t_7 = __Pyx_decode_cpp_string(__pyx_8genexpr3__pyx_v_gid, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 435, __pyx_L1_error) + __pyx_t_7 = __Pyx_decode_cpp_string(__pyx_8genexpr3__pyx_v_gid, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 435, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } /* exit inner scope */ @@ -4822,7 +4844,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":423 + /* "gedlibpy.pyx":425 * * * def get_original_node_ids(self, graph_id) : # <<<<<<<<<<<<<< @@ -4842,7 +4864,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_34get_original_node_ids(struct __pyx return __pyx_r; } -/* "gedlibpy.pyx":438 +/* "gedlibpy.pyx":440 * * * def get_graph_node_labels(self, graph_id) : # <<<<<<<<<<<<<< @@ -4880,7 +4902,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx PyObject *__pyx_t_10 = NULL; __Pyx_RefNannySetupContext("get_graph_node_labels", 0); - /* "gedlibpy.pyx":450 + /* "gedlibpy.pyx":452 * .. note:: These functions allow to collect all the graph's informations. * """ * return [decode_your_map(node_label) for node_label in self.c_env.getGraphNodeLabels(graph_id)] # <<<<<<<<<<<<<< @@ -4889,14 +4911,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 452, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getGraphNodeLabels(__pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 450, __pyx_L1_error) + __PYX_ERR(0, 452, __pyx_L1_error) } __pyx_t_5 = &__pyx_t_3; __pyx_t_4 = __pyx_t_5->begin(); @@ -4905,9 +4927,9 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx __pyx_t_6 = *__pyx_t_4; ++__pyx_t_4; __pyx_8genexpr4__pyx_v_node_label = __pyx_t_6; - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 450, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_9 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_8genexpr4__pyx_v_node_label); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 450, __pyx_L1_error) + __pyx_t_9 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_8genexpr4__pyx_v_node_label); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { @@ -4922,10 +4944,10 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 450, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 450, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } /* exit inner scope */ @@ -4933,7 +4955,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":438 + /* "gedlibpy.pyx":440 * * * def get_graph_node_labels(self, graph_id) : # <<<<<<<<<<<<<< @@ -4956,7 +4978,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_36get_graph_node_labels(struct __pyx return __pyx_r; } -/* "gedlibpy.pyx":453 +/* "gedlibpy.pyx":455 * * * def get_graph_edges(self, graph_id) : # <<<<<<<<<<<<<< @@ -4989,7 +5011,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8 PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_graph_edges", 0); - /* "gedlibpy.pyx":465 + /* "gedlibpy.pyx":467 * .. note:: These functions allow to collect all the graph's informations. * """ * return decode_graph_edges(self.c_env.getGraphEdges(graph_id)) # <<<<<<<<<<<<<< @@ -4997,16 +5019,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_graph_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_graph_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error) try { __pyx_t_4 = __pyx_v_self->c_env->getGraphEdges(__pyx_t_3); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 465, __pyx_L1_error) + __PYX_ERR(0, 467, __pyx_L1_error) } - __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e_______std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -5021,14 +5043,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8 __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":453 + /* "gedlibpy.pyx":455 * * * def get_graph_edges(self, graph_id) : # <<<<<<<<<<<<<< @@ -5050,7 +5072,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_38get_graph_edges(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":468 +/* "gedlibpy.pyx":470 * * * def get_graph_adjacence_matrix(self, graph_id) : # <<<<<<<<<<<<<< @@ -5080,7 +5102,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(struct PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("get_graph_adjacence_matrix", 0); - /* "gedlibpy.pyx":480 + /* "gedlibpy.pyx":482 * .. note:: These functions allow to collect all the graph's informations. * """ * return self.c_env.getGraphAdjacenceMatrix(graph_id) # <<<<<<<<<<<<<< @@ -5088,20 +5110,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(struct * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_graph_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 482, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->getGraphAdjacenceMatrix(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 480, __pyx_L1_error) + __PYX_ERR(0, 482, __pyx_L1_error) } - __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 480, __pyx_L1_error) + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":468 + /* "gedlibpy.pyx":470 * * * def get_graph_adjacence_matrix(self, graph_id) : # <<<<<<<<<<<<<< @@ -5120,7 +5142,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_40get_graph_adjacence_matrix(struct return __pyx_r; } -/* "gedlibpy.pyx":483 +/* "gedlibpy.pyx":485 * * * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< @@ -5165,7 +5187,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_43set_edit_cost(PyObject *__pyx_v_se } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_edit_cost") < 0)) __PYX_ERR(0, 483, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_edit_cost") < 0)) __PYX_ERR(0, 485, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5181,7 +5203,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_43set_edit_cost(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_edit_cost", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 483, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("set_edit_cost", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 485, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.set_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5207,28 +5229,28 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge std::vector __pyx_t_7; __Pyx_RefNannySetupContext("set_edit_cost", 0); - /* "gedlibpy.pyx":495 + /* "gedlibpy.pyx":497 * .. note:: Try to make sure the edit cost function exists with list_of_edit_cost_options, raise an error otherwise. * """ * if edit_cost in list_of_edit_cost_options: # <<<<<<<<<<<<<< * edit_cost_b = edit_cost.encode('utf-8') * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_edit_cost_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_edit_cost_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_edit_cost, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 495, __pyx_L1_error) + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_edit_cost, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (likely(__pyx_t_3)) { - /* "gedlibpy.pyx":496 + /* "gedlibpy.pyx":498 * """ * if edit_cost in list_of_edit_cost_options: * edit_cost_b = edit_cost.encode('utf-8') # <<<<<<<<<<<<<< * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) * else: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_edit_cost, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_edit_cost, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -5242,29 +5264,29 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_edit_cost_b = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":497 + /* "gedlibpy.pyx":499 * if edit_cost in list_of_edit_cost_options: * edit_cost_b = edit_cost.encode('utf-8') * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) # <<<<<<<<<<<<<< * else: * raise EditCostError("This edit cost function doesn't exist, please see list_of_edit_cost_options for selecting a edit cost function") */ - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_edit_cost_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 497, __pyx_L1_error) - __pyx_t_7 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 497, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_edit_cost_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 499, __pyx_L1_error) try { __pyx_v_self->c_env->setEditCost(__pyx_t_6, __pyx_t_7); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 497, __pyx_L1_error) + __PYX_ERR(0, 499, __pyx_L1_error) } - /* "gedlibpy.pyx":495 + /* "gedlibpy.pyx":497 * .. note:: Try to make sure the edit cost function exists with list_of_edit_cost_options, raise an error otherwise. * """ * if edit_cost in list_of_edit_cost_options: # <<<<<<<<<<<<<< @@ -5274,7 +5296,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge goto __pyx_L3; } - /* "gedlibpy.pyx":499 + /* "gedlibpy.pyx":501 * self.c_env.setEditCost(edit_cost_b, edit_cost_constant) * else: * raise EditCostError("This edit cost function doesn't exist, please see list_of_edit_cost_options for selecting a edit cost function") # <<<<<<<<<<<<<< @@ -5282,7 +5304,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge * */ /*else*/ { - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EditCostError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 499, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EditCostError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -5296,16 +5318,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_edit_cost_function_doesn_t) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_edit_cost_function_doesn_t); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 499, __pyx_L1_error) + __PYX_ERR(0, 501, __pyx_L1_error) } __pyx_L3:; - /* "gedlibpy.pyx":483 + /* "gedlibpy.pyx":485 * * * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< @@ -5329,7 +5351,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_42set_edit_cost(struct __pyx_obj_8ge return __pyx_r; } -/* "gedlibpy.pyx":502 +/* "gedlibpy.pyx":504 * * * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< @@ -5367,7 +5389,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_45set_personal_edit_cost(PyObject *_ } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_personal_edit_cost") < 0)) __PYX_ERR(0, 502, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_personal_edit_cost") < 0)) __PYX_ERR(0, 504, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5381,7 +5403,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_45set_personal_edit_cost(PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_personal_edit_cost", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 502, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("set_personal_edit_cost", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 504, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.set_personal_edit_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5400,22 +5422,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_44set_personal_edit_cost(struct __py std::vector __pyx_t_1; __Pyx_RefNannySetupContext("set_personal_edit_cost", 0); - /* "gedlibpy.pyx":512 + /* "gedlibpy.pyx":514 * .. note::You have to modify the C++ function to use it. Please see the documentation to add your Edit Cost function. * """ * self.c_env.setPersonalEditCost(edit_cost_constant) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L1_error) + __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_edit_cost_constant); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 514, __pyx_L1_error) try { __pyx_v_self->c_env->setPersonalEditCost(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 512, __pyx_L1_error) + __PYX_ERR(0, 514, __pyx_L1_error) } - /* "gedlibpy.pyx":502 + /* "gedlibpy.pyx":504 * * * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< @@ -5435,7 +5457,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_44set_personal_edit_cost(struct __py return __pyx_r; } -/* "gedlibpy.pyx":515 +/* "gedlibpy.pyx":517 * * * def init(self, init_option='EAGER_WITHOUT_SHUFFLED_COPIES', print_to_stdout=False) : # <<<<<<<<<<<<<< @@ -5483,7 +5505,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_47init(PyObject *__pyx_v_self, PyObj } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 515, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 517, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5500,7 +5522,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_47init(PyObject *__pyx_v_self, PyObj } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("init", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 515, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("init", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 517, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.init", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5526,28 +5548,28 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE bool __pyx_t_7; __Pyx_RefNannySetupContext("init", 0); - /* "gedlibpy.pyx":526 + /* "gedlibpy.pyx":528 * .. note:: Try to make sure the option exists with list_of_init_options or choose no options, raise an error otherwise. * """ * if init_option in list_of_init_options: # <<<<<<<<<<<<<< * init_option_b = init_option.encode('utf-8') * self.c_env.initEnv(init_option_b, print_to_stdout) */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_init_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_init_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_init_option, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 526, __pyx_L1_error) + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_init_option, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 528, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (likely(__pyx_t_3)) { - /* "gedlibpy.pyx":527 + /* "gedlibpy.pyx":529 * """ * if init_option in list_of_init_options: * init_option_b = init_option.encode('utf-8') # <<<<<<<<<<<<<< * self.c_env.initEnv(init_option_b, print_to_stdout) * else: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_init_option, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_init_option, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -5561,29 +5583,29 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_init_option_b = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":528 + /* "gedlibpy.pyx":530 * if init_option in list_of_init_options: * init_option_b = init_option.encode('utf-8') * self.c_env.initEnv(init_option_b, print_to_stdout) # <<<<<<<<<<<<<< * else: * raise InitError("This init option doesn't exist, please see list_of_init_options for selecting an option. You can choose any options.") */ - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_init_option_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error) - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_print_to_stdout); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_init_option_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 530, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_print_to_stdout); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 530, __pyx_L1_error) try { __pyx_v_self->c_env->initEnv(__pyx_t_6, __pyx_t_7); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 528, __pyx_L1_error) + __PYX_ERR(0, 530, __pyx_L1_error) } - /* "gedlibpy.pyx":526 + /* "gedlibpy.pyx":528 * .. note:: Try to make sure the option exists with list_of_init_options or choose no options, raise an error otherwise. * """ * if init_option in list_of_init_options: # <<<<<<<<<<<<<< @@ -5593,7 +5615,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE goto __pyx_L3; } - /* "gedlibpy.pyx":530 + /* "gedlibpy.pyx":532 * self.c_env.initEnv(init_option_b, print_to_stdout) * else: * raise InitError("This init option doesn't exist, please see list_of_init_options for selecting an option. You can choose any options.") # <<<<<<<<<<<<<< @@ -5601,7 +5623,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE * */ /*else*/ { - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InitError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 530, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InitError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -5615,16 +5637,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_init_option_doesn_t_exist_p) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_init_option_doesn_t_exist_p); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 530, __pyx_L1_error) + __PYX_ERR(0, 532, __pyx_L1_error) } __pyx_L3:; - /* "gedlibpy.pyx":515 + /* "gedlibpy.pyx":517 * * * def init(self, init_option='EAGER_WITHOUT_SHUFFLED_COPIES', print_to_stdout=False) : # <<<<<<<<<<<<<< @@ -5648,7 +5670,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_46init(struct __pyx_obj_8gedlibpy_GE return __pyx_r; } -/* "gedlibpy.pyx":533 +/* "gedlibpy.pyx":535 * * * def set_method(self, method, options="") : # <<<<<<<<<<<<<< @@ -5693,7 +5715,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_49set_method(PyObject *__pyx_v_self, } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_method") < 0)) __PYX_ERR(0, 533, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_method") < 0)) __PYX_ERR(0, 535, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -5709,7 +5731,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_49set_method(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("set_method", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 533, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("set_method", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 535, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.set_method", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -5735,28 +5757,28 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli std::string __pyx_t_7; __Pyx_RefNannySetupContext("set_method", 0); - /* "gedlibpy.pyx":545 + /* "gedlibpy.pyx":547 * .. note:: Try to make sure the edit cost function exists with list_of_method_options, raise an error otherwise. Call init_method() after your set. * """ * if method in list_of_method_options: # <<<<<<<<<<<<<< * method_b = method.encode('utf-8') * self.c_env.setMethod(method_b, options.encode('utf-8')) */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_method_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_list_of_method_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_method, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_method, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (likely(__pyx_t_3)) { - /* "gedlibpy.pyx":546 + /* "gedlibpy.pyx":548 * """ * if method in list_of_method_options: * method_b = method.encode('utf-8') # <<<<<<<<<<<<<< * self.c_env.setMethod(method_b, options.encode('utf-8')) * else: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_method, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 546, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_method, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -5770,21 +5792,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_method_b = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":547 + /* "gedlibpy.pyx":549 * if method in list_of_method_options: * method_b = method.encode('utf-8') * self.c_env.setMethod(method_b, options.encode('utf-8')) # <<<<<<<<<<<<<< * else: * raise MethodError("This method doesn't exist, please see list_of_method_options for selecting a method") */ - __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_method_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_options, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_method_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_options, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -5798,19 +5820,19 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) + __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_v_self->c_env->setMethod(__pyx_t_6, __pyx_t_7); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 547, __pyx_L1_error) + __PYX_ERR(0, 549, __pyx_L1_error) } - /* "gedlibpy.pyx":545 + /* "gedlibpy.pyx":547 * .. note:: Try to make sure the edit cost function exists with list_of_method_options, raise an error otherwise. Call init_method() after your set. * """ * if method in list_of_method_options: # <<<<<<<<<<<<<< @@ -5820,7 +5842,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli goto __pyx_L3; } - /* "gedlibpy.pyx":549 + /* "gedlibpy.pyx":551 * self.c_env.setMethod(method_b, options.encode('utf-8')) * else: * raise MethodError("This method doesn't exist, please see list_of_method_options for selecting a method") # <<<<<<<<<<<<<< @@ -5828,7 +5850,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli * */ /*else*/ { - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MethodError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_MethodError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { @@ -5842,16 +5864,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_This_method_doesn_t_exist_please) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_This_method_doesn_t_exist_please); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 549, __pyx_L1_error) + __PYX_ERR(0, 551, __pyx_L1_error) } __pyx_L3:; - /* "gedlibpy.pyx":533 + /* "gedlibpy.pyx":535 * * * def set_method(self, method, options="") : # <<<<<<<<<<<<<< @@ -5875,7 +5897,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_48set_method(struct __pyx_obj_8gedli return __pyx_r; } -/* "gedlibpy.pyx":552 +/* "gedlibpy.pyx":554 * * * def init_method(self) : # <<<<<<<<<<<<<< @@ -5902,7 +5924,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_50init_method(struct __pyx_obj_8gedl __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init_method", 0); - /* "gedlibpy.pyx":559 + /* "gedlibpy.pyx":561 * .. note:: Call this function after set the method. You can't launch computation or change the method after that. * """ * self.c_env.initMethod() # <<<<<<<<<<<<<< @@ -5913,10 +5935,10 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_50init_method(struct __pyx_obj_8gedl __pyx_v_self->c_env->initMethod(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 559, __pyx_L1_error) + __PYX_ERR(0, 561, __pyx_L1_error) } - /* "gedlibpy.pyx":552 + /* "gedlibpy.pyx":554 * * * def init_method(self) : # <<<<<<<<<<<<<< @@ -5936,7 +5958,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_50init_method(struct __pyx_obj_8gedl return __pyx_r; } -/* "gedlibpy.pyx":562 +/* "gedlibpy.pyx":564 * * * def get_init_time(self) : # <<<<<<<<<<<<<< @@ -5965,7 +5987,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(struct __pyx_obj_8ge PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_init_time", 0); - /* "gedlibpy.pyx":569 + /* "gedlibpy.pyx":571 * :rtype: double * """ * return self.c_env.getInitime() # <<<<<<<<<<<<<< @@ -5977,15 +5999,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(struct __pyx_obj_8ge __pyx_t_1 = __pyx_v_self->c_env->getInitime(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 569, __pyx_L1_error) + __PYX_ERR(0, 571, __pyx_L1_error) } - __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error) + __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":562 + /* "gedlibpy.pyx":564 * * * def get_init_time(self) : # <<<<<<<<<<<<<< @@ -6004,7 +6026,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_52get_init_time(struct __pyx_obj_8ge return __pyx_r; } -/* "gedlibpy.pyx":572 +/* "gedlibpy.pyx":574 * * * def run_method(self, g, h) : # <<<<<<<<<<<<<< @@ -6044,11 +6066,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_55run_method(PyObject *__pyx_v_self, case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, 1); __PYX_ERR(0, 572, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, 1); __PYX_ERR(0, 574, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "run_method") < 0)) __PYX_ERR(0, 572, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "run_method") < 0)) __PYX_ERR(0, 574, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6061,7 +6083,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_55run_method(PyObject *__pyx_v_self, } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 572, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("run_method", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 574, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.run_method", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6081,23 +6103,23 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_54run_method(struct __pyx_obj_8gedli size_t __pyx_t_2; __Pyx_RefNannySetupContext("run_method", 0); - /* "gedlibpy.pyx":584 + /* "gedlibpy.pyx":586 * .. note:: This function only compute the distance between two graphs, without returning a result. Use the differents function to see the result between the two graphs. * """ * self.c_env.runMethod(g, h) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 586, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 586, __pyx_L1_error) try { __pyx_v_self->c_env->runMethod(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 584, __pyx_L1_error) + __PYX_ERR(0, 586, __pyx_L1_error) } - /* "gedlibpy.pyx":572 + /* "gedlibpy.pyx":574 * * * def run_method(self, g, h) : # <<<<<<<<<<<<<< @@ -6117,7 +6139,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_54run_method(struct __pyx_obj_8gedli return __pyx_r; } -/* "gedlibpy.pyx":587 +/* "gedlibpy.pyx":589 * * * def get_upper_bound(self, g, h) : # <<<<<<<<<<<<<< @@ -6157,11 +6179,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_57get_upper_bound(PyObject *__pyx_v_ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, 1); __PYX_ERR(0, 587, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, 1); __PYX_ERR(0, 589, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_upper_bound") < 0)) __PYX_ERR(0, 587, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_upper_bound") < 0)) __PYX_ERR(0, 589, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6174,7 +6196,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_57get_upper_bound(PyObject *__pyx_v_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 587, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_upper_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 589, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_upper_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6196,7 +6218,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(struct __pyx_obj_8 PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_upper_bound", 0); - /* "gedlibpy.pyx":602 + /* "gedlibpy.pyx":604 * .. note:: The upper bound is equivalent to the result of the pessimist edit distance cost. Methods are heuristics so the library can't compute the real perfect result because it's NP-Hard problem. * """ * return self.c_env.getUpperBound(g, h) # <<<<<<<<<<<<<< @@ -6204,21 +6226,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 602, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 602, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 604, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 604, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getUpperBound(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 602, __pyx_L1_error) + __PYX_ERR(0, 604, __pyx_L1_error) } - __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":587 + /* "gedlibpy.pyx":589 * * * def get_upper_bound(self, g, h) : # <<<<<<<<<<<<<< @@ -6237,7 +6259,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_56get_upper_bound(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":605 +/* "gedlibpy.pyx":607 * * * def get_lower_bound(self, g, h) : # <<<<<<<<<<<<<< @@ -6277,11 +6299,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_59get_lower_bound(PyObject *__pyx_v_ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, 1); __PYX_ERR(0, 605, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, 1); __PYX_ERR(0, 607, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_lower_bound") < 0)) __PYX_ERR(0, 605, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_lower_bound") < 0)) __PYX_ERR(0, 607, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6294,7 +6316,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_59get_lower_bound(PyObject *__pyx_v_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 605, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_lower_bound", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 607, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_lower_bound", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6316,7 +6338,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(struct __pyx_obj_8 PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_lower_bound", 0); - /* "gedlibpy.pyx":620 + /* "gedlibpy.pyx":622 * .. note:: This function can be ignored, because lower bound doesn't have a crucial utility. * """ * return self.c_env.getLowerBound(g, h) # <<<<<<<<<<<<<< @@ -6324,21 +6346,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 620, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 620, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 622, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 622, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getLowerBound(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 620, __pyx_L1_error) + __PYX_ERR(0, 622, __pyx_L1_error) } - __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 620, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":605 + /* "gedlibpy.pyx":607 * * * def get_lower_bound(self, g, h) : # <<<<<<<<<<<<<< @@ -6357,7 +6379,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_58get_lower_bound(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":623 +/* "gedlibpy.pyx":625 * * * def get_forward_map(self, g, h) : # <<<<<<<<<<<<<< @@ -6397,11 +6419,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_61get_forward_map(PyObject *__pyx_v_ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, 1); __PYX_ERR(0, 623, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, 1); __PYX_ERR(0, 625, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_forward_map") < 0)) __PYX_ERR(0, 623, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_forward_map") < 0)) __PYX_ERR(0, 625, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6414,7 +6436,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_61get_forward_map(PyObject *__pyx_v_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 623, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_forward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 625, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_forward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6436,7 +6458,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(struct __pyx_obj_8 PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_forward_map", 0); - /* "gedlibpy.pyx":638 + /* "gedlibpy.pyx":640 * .. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! * """ * return self.c_env.getForwardMap(g, h) # <<<<<<<<<<<<<< @@ -6444,21 +6466,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 638, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 638, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getForwardMap(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 638, __pyx_L1_error) + __PYX_ERR(0, 640, __pyx_L1_error) } - __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":623 + /* "gedlibpy.pyx":625 * * * def get_forward_map(self, g, h) : # <<<<<<<<<<<<<< @@ -6477,7 +6499,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_60get_forward_map(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":641 +/* "gedlibpy.pyx":643 * * * def get_backward_map(self, g, h) : # <<<<<<<<<<<<<< @@ -6517,11 +6539,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_63get_backward_map(PyObject *__pyx_v case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, 1); __PYX_ERR(0, 641, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, 1); __PYX_ERR(0, 643, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_backward_map") < 0)) __PYX_ERR(0, 641, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_backward_map") < 0)) __PYX_ERR(0, 643, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6534,7 +6556,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_63get_backward_map(PyObject *__pyx_v } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 641, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_backward_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 643, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_backward_map", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6556,7 +6578,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(struct __pyx_obj_ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_backward_map", 0); - /* "gedlibpy.pyx":656 + /* "gedlibpy.pyx":658 * .. note:: I don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! * """ * return self.c_env.getBackwardMap(g, h) # <<<<<<<<<<<<<< @@ -6564,21 +6586,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(struct __pyx_obj_ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 658, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 658, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getBackwardMap(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 656, __pyx_L1_error) + __PYX_ERR(0, 658, __pyx_L1_error) } - __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_vector_to_py_npy_uint64(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":641 + /* "gedlibpy.pyx":643 * * * def get_backward_map(self, g, h) : # <<<<<<<<<<<<<< @@ -6597,7 +6619,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_62get_backward_map(struct __pyx_obj_ return __pyx_r; } -/* "gedlibpy.pyx":659 +/* "gedlibpy.pyx":661 * * * def get_node_image(self, g, h, node_id) : # <<<<<<<<<<<<<< @@ -6640,17 +6662,17 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_65get_node_image(PyObject *__pyx_v_s case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 1); __PYX_ERR(0, 659, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 1); __PYX_ERR(0, 661, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_id)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 2); __PYX_ERR(0, 659, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, 2); __PYX_ERR(0, 661, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_image") < 0)) __PYX_ERR(0, 659, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_image") < 0)) __PYX_ERR(0, 661, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -6665,7 +6687,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_65get_node_image(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 659, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 661, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6688,7 +6710,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(struct __pyx_obj_8g PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("get_node_image", 0); - /* "gedlibpy.pyx":677 + /* "gedlibpy.pyx":679 * * """ * return self.c_env.getNodeImage(g, h, node_id) # <<<<<<<<<<<<<< @@ -6696,22 +6718,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(struct __pyx_obj_8g * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 679, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 679, __pyx_L1_error) try { __pyx_t_4 = __pyx_v_self->c_env->getNodeImage(__pyx_t_1, __pyx_t_2, __pyx_t_3); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 677, __pyx_L1_error) + __PYX_ERR(0, 679, __pyx_L1_error) } - __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":659 + /* "gedlibpy.pyx":661 * * * def get_node_image(self, g, h, node_id) : # <<<<<<<<<<<<<< @@ -6730,7 +6752,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_64get_node_image(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":680 +/* "gedlibpy.pyx":682 * * * def get_node_pre_image(self, g, h, node_id) : # <<<<<<<<<<<<<< @@ -6773,17 +6795,17 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_67get_node_pre_image(PyObject *__pyx case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 1); __PYX_ERR(0, 680, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 1); __PYX_ERR(0, 682, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_id)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 2); __PYX_ERR(0, 680, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, 2); __PYX_ERR(0, 682, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_pre_image") < 0)) __PYX_ERR(0, 680, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_pre_image") < 0)) __PYX_ERR(0, 682, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -6798,7 +6820,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_67get_node_pre_image(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 680, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_pre_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 682, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_pre_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6821,7 +6843,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(struct __pyx_ob PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("get_node_pre_image", 0); - /* "gedlibpy.pyx":698 + /* "gedlibpy.pyx":700 * * """ * return self.c_env.getNodePreImage(g, h, node_id) # <<<<<<<<<<<<<< @@ -6829,22 +6851,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) - __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_node_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L1_error) try { __pyx_t_4 = __pyx_v_self->c_env->getNodePreImage(__pyx_t_1, __pyx_t_2, __pyx_t_3); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 698, __pyx_L1_error) + __PYX_ERR(0, 700, __pyx_L1_error) } - __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":680 + /* "gedlibpy.pyx":682 * * * def get_node_pre_image(self, g, h, node_id) : # <<<<<<<<<<<<<< @@ -6863,7 +6885,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_66get_node_pre_image(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":701 +/* "gedlibpy.pyx":703 * * * def get_induced_cost(self, g, h) : # <<<<<<<<<<<<<< @@ -6903,11 +6925,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_69get_induced_cost(PyObject *__pyx_v case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, 1); __PYX_ERR(0, 701, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, 1); __PYX_ERR(0, 703, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_induced_cost") < 0)) __PYX_ERR(0, 701, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_induced_cost") < 0)) __PYX_ERR(0, 703, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -6920,7 +6942,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_69get_induced_cost(PyObject *__pyx_v } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 701, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_induced_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 703, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -6942,7 +6964,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_ PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_induced_cost", 0); - /* "gedlibpy.pyx":717 + /* "gedlibpy.pyx":719 * * """ * return self.c_env.getInducedCost(g, h) # <<<<<<<<<<<<<< @@ -6950,21 +6972,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 717, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 717, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 719, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 719, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getInducedCost(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 717, __pyx_L1_error) + __PYX_ERR(0, 719, __pyx_L1_error) } - __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 717, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":701 + /* "gedlibpy.pyx":703 * * * def get_induced_cost(self, g, h) : # <<<<<<<<<<<<<< @@ -6983,7 +7005,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_ return __pyx_r; } -/* "gedlibpy.pyx":720 +/* "gedlibpy.pyx":722 * * * def get_node_map(self, g, h) : # <<<<<<<<<<<<<< @@ -6993,7 +7015,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_68get_induced_cost(struct __pyx_obj_ /* Python wrapper */ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_8gedlibpy_6GEDEnv_70get_node_map[] = "\n\t\t\tReturns the Node Map, like C++ NodeMap. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The Node Map between the two selected graph. \n\t\t\t:rtype: list[tuple(size_t, size_t)]\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_pre_image(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function creates datas so use it if necessary, however you can understand how assignement works with this example.\t \n\t\t"; +static char __pyx_doc_8gedlibpy_6GEDEnv_70get_node_map[] = "\n\t\t\tReturns the Node Map, like C++ NodeMap. \n\t\n\t\t\t:param g: The Id of the first compared graph \n\t\t\t:param h: The Id of the second compared graph\n\t\t\t:type g: size_t\n\t\t\t:type h: size_t\n\t\t\t:return: The Node Map between the two selected graph. \n\t\t\t:rtype: gklearn.ged.env.NodeMap.\n\t\t\t\n\t\t\t.. seealso:: run_method(), get_forward_map(), get_backward_map(), get_node_image(), get_node_pre_image(), get_assignment_matrix()\n\t\t\t.. warning:: run_method() between the same two graph must be called before this function. \n\t\t\t.. note:: This function creates datas so use it if necessary, however you can understand how assignement works with this example.\t \n\t\t"; static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_g = 0; PyObject *__pyx_v_h = 0; @@ -7023,11 +7045,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_sel case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, 1); __PYX_ERR(0, 720, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, 1); __PYX_ERR(0, 722, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_map") < 0)) __PYX_ERR(0, 720, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_map") < 0)) __PYX_ERR(0, 722, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7040,7 +7062,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_sel } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 720, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 722, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7054,37 +7076,431 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_71get_node_map(PyObject *__pyx_v_sel } static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_70get_node_map(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g, PyObject *__pyx_v_h) { + std::vector > __pyx_v_map_as_relation; + double __pyx_v_induced_cost; + PyObject *__pyx_v_source_map = NULL; + PyObject *__pyx_v_target_map = NULL; + Py_ssize_t __pyx_v_num_node_source; + Py_ssize_t __pyx_v_num_node_target; + PyObject *__pyx_v_node_map = NULL; + Py_ssize_t __pyx_v_i; + std::pair __pyx_8genexpr5__pyx_v_item; + std::pair __pyx_8genexpr6__pyx_v_item; + PyObject *__pyx_8genexpr7__pyx_v_item = NULL; + PyObject *__pyx_8genexpr8__pyx_v_item = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations size_t __pyx_t_1; size_t __pyx_t_2; std::vector > __pyx_t_3; - PyObject *__pyx_t_4 = NULL; + double __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + std::vector > ::iterator __pyx_t_6; + std::pair __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + Py_ssize_t __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + int __pyx_t_12; + PyObject *__pyx_t_13 = NULL; + int __pyx_t_14; + PyObject *__pyx_t_15 = NULL; + Py_ssize_t __pyx_t_16; + Py_ssize_t __pyx_t_17; __Pyx_RefNannySetupContext("get_node_map", 0); - /* "gedlibpy.pyx":735 + /* "gedlibpy.pyx":737 * .. note:: This function creates datas so use it if necessary, however you can understand how assignement works with this example. * """ - * return self.c_env.getNodeMap(g, h) # <<<<<<<<<<<<<< - * - * + * map_as_relation = self.c_env.getNodeMap(g, h) # <<<<<<<<<<<<<< + * induced_cost = self.c_env.getInducedCost(g, h) # @todo: the C++ implementation for this function in GedLibBind.ipp re-call get_node_map() once more, this is not neccessary. + * source_map = [item.first if item.first < len(map_as_relation) else np.inf for item in map_as_relation] # item.first < len(map_as_relation) is not exactly correct. */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getNodeMap(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 735, __pyx_L1_error) + __PYX_ERR(0, 737, __pyx_L1_error) } - __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 735, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; + __pyx_v_map_as_relation = __pyx_t_3; + + /* "gedlibpy.pyx":738 + * """ + * map_as_relation = self.c_env.getNodeMap(g, h) + * induced_cost = self.c_env.getInducedCost(g, h) # @todo: the C++ implementation for this function in GedLibBind.ipp re-call get_node_map() once more, this is not neccessary. # <<<<<<<<<<<<<< + * source_map = [item.first if item.first < len(map_as_relation) else np.inf for item in map_as_relation] # item.first < len(map_as_relation) is not exactly correct. + * # print(source_map) + */ + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 738, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 738, __pyx_L1_error) + try { + __pyx_t_4 = __pyx_v_self->c_env->getInducedCost(__pyx_t_2, __pyx_t_1); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 738, __pyx_L1_error) + } + __pyx_v_induced_cost = __pyx_t_4; + + /* "gedlibpy.pyx":739 + * map_as_relation = self.c_env.getNodeMap(g, h) + * induced_cost = self.c_env.getInducedCost(g, h) # @todo: the C++ implementation for this function in GedLibBind.ipp re-call get_node_map() once more, this is not neccessary. + * source_map = [item.first if item.first < len(map_as_relation) else np.inf for item in map_as_relation] # item.first < len(map_as_relation) is not exactly correct. # <<<<<<<<<<<<<< + * # print(source_map) + * target_map = [item.second if item.second < len(map_as_relation) else np.inf for item in map_as_relation] + */ + { /* enter inner scope */ + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_v_map_as_relation.begin(); + for (;;) { + if (!(__pyx_t_6 != __pyx_v_map_as_relation.end())) break; + __pyx_t_7 = *__pyx_t_6; + ++__pyx_t_6; + __pyx_8genexpr5__pyx_v_item = __pyx_t_7; + __pyx_t_9 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(__pyx_v_map_as_relation); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (((__pyx_8genexpr5__pyx_v_item.first < __pyx_t_10) != 0)) { + __pyx_t_9 = __Pyx_PyInt_FromSize_t(__pyx_8genexpr5__pyx_v_item.first); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = __pyx_t_9; + __pyx_t_9 = 0; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_inf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_8 = __pyx_t_11; + __pyx_t_11 = 0; + } + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 739, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } /* exit inner scope */ + __pyx_v_source_map = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + + /* "gedlibpy.pyx":741 + * source_map = [item.first if item.first < len(map_as_relation) else np.inf for item in map_as_relation] # item.first < len(map_as_relation) is not exactly correct. + * # print(source_map) + * target_map = [item.second if item.second < len(map_as_relation) else np.inf for item in map_as_relation] # <<<<<<<<<<<<<< + * # print(target_map) + * num_node_source = len([item for item in source_map if item != np.inf]) + */ + { /* enter inner scope */ + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __pyx_v_map_as_relation.begin(); + for (;;) { + if (!(__pyx_t_6 != __pyx_v_map_as_relation.end())) break; + __pyx_t_7 = *__pyx_t_6; + ++__pyx_t_6; + __pyx_8genexpr6__pyx_v_item = __pyx_t_7; + __pyx_t_11 = __pyx_convert_vector_to_py_std_3a__3a_pair_3c_size_t_2c_size_t_3e___(__pyx_v_map_as_relation); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + if (((__pyx_8genexpr6__pyx_v_item.second < __pyx_t_10) != 0)) { + __pyx_t_11 = __Pyx_PyInt_FromSize_t(__pyx_8genexpr6__pyx_v_item.second); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_8 = __pyx_t_11; + __pyx_t_11 = 0; + } else { + __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_inf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_8 = __pyx_t_9; + __pyx_t_9 = 0; + } + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 741, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + } + } /* exit inner scope */ + __pyx_v_target_map = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + + /* "gedlibpy.pyx":743 + * target_map = [item.second if item.second < len(map_as_relation) else np.inf for item in map_as_relation] + * # print(target_map) + * num_node_source = len([item for item in source_map if item != np.inf]) # <<<<<<<<<<<<<< + * # print(num_node_source) + * num_node_target = len([item for item in target_map if item != np.inf]) + */ + { /* enter inner scope */ + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __pyx_v_source_map; __Pyx_INCREF(__pyx_t_8); __pyx_t_10 = 0; + for (;;) { + if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_8)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_9); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 743, __pyx_L9_error) + #else + __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + #endif + __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_item, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_inf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyObject_RichCompare(__pyx_8genexpr7__pyx_v_item, __pyx_t_11, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 743, __pyx_L9_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (__pyx_t_12) { + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_8genexpr7__pyx_v_item))) __PYX_ERR(0, 743, __pyx_L9_error) + } + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_item); __pyx_8genexpr7__pyx_v_item = 0; + goto __pyx_L13_exit_scope; + __pyx_L9_error:; + __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_item); __pyx_8genexpr7__pyx_v_item = 0; + goto __pyx_L1_error; + __pyx_L13_exit_scope:; + } /* exit inner scope */ + __pyx_t_10 = PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 743, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_num_node_source = __pyx_t_10; + + /* "gedlibpy.pyx":745 + * num_node_source = len([item for item in source_map if item != np.inf]) + * # print(num_node_source) + * num_node_target = len([item for item in target_map if item != np.inf]) # <<<<<<<<<<<<<< + * # print(num_node_target) + * + */ + { /* enter inner scope */ + __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __pyx_v_target_map; __Pyx_INCREF(__pyx_t_8); __pyx_t_10 = 0; + for (;;) { + if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_8)) break; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_9 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_10); __Pyx_INCREF(__pyx_t_9); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 745, __pyx_L16_error) + #else + __pyx_t_9 = PySequence_ITEM(__pyx_t_8, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_9); + #endif + __Pyx_XDECREF_SET(__pyx_8genexpr8__pyx_v_item, __pyx_t_9); + __pyx_t_9 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_inf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_GOTREF(__pyx_t_11); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_9 = PyObject_RichCompare(__pyx_8genexpr8__pyx_v_item, __pyx_t_11, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 745, __pyx_L16_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (__pyx_t_12) { + if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_8genexpr8__pyx_v_item))) __PYX_ERR(0, 745, __pyx_L16_error) + } + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_item); __pyx_8genexpr8__pyx_v_item = 0; + goto __pyx_L20_exit_scope; + __pyx_L16_error:; + __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_item); __pyx_8genexpr8__pyx_v_item = 0; + goto __pyx_L1_error; + __pyx_L20_exit_scope:; + } /* exit inner scope */ + __pyx_t_10 = PyList_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 745, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_num_node_target = __pyx_t_10; + + /* "gedlibpy.pyx":748 + * # print(num_node_target) + * + * node_map = NodeMap(num_node_source, num_node_target) # <<<<<<<<<<<<<< + * # print(node_map.get_forward_map(), node_map.get_backward_map()) + * for i in range(len(source_map)): + */ + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_NodeMap); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_num_node_source); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_num_node_target); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_13 = NULL; + __pyx_t_14 = 0; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_13)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_14 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_9, __pyx_t_11}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_9, __pyx_t_11}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_15 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + if (__pyx_t_13) { + __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_13); __pyx_t_13 = NULL; + } + __Pyx_GIVEREF(__pyx_t_9); + PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_14, __pyx_t_9); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_14, __pyx_t_11); + __pyx_t_9 = 0; + __pyx_t_11 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 748, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_node_map = __pyx_t_5; + __pyx_t_5 = 0; + + /* "gedlibpy.pyx":750 + * node_map = NodeMap(num_node_source, num_node_target) + * # print(node_map.get_forward_map(), node_map.get_backward_map()) + * for i in range(len(source_map)): # <<<<<<<<<<<<<< + * node_map.add_assignment(source_map[i], target_map[i]) + * node_map.set_induced_cost(induced_cost) + */ + __pyx_t_10 = PyList_GET_SIZE(__pyx_v_source_map); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 750, __pyx_L1_error) + __pyx_t_16 = __pyx_t_10; + for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { + __pyx_v_i = __pyx_t_17; + + /* "gedlibpy.pyx":751 + * # print(node_map.get_forward_map(), node_map.get_backward_map()) + * for i in range(len(source_map)): + * node_map.add_assignment(source_map[i], target_map[i]) # <<<<<<<<<<<<<< + * node_map.set_induced_cost(induced_cost) + * + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_map, __pyx_n_s_add_assignment); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_15 = __Pyx_GetItemInt_List(__pyx_v_source_map, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_15); + __pyx_t_11 = __Pyx_GetItemInt_List(__pyx_v_target_map, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_9 = NULL; + __pyx_t_14 = 0; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_9)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + __pyx_t_14 = 1; + } + } + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_15, __pyx_t_11}; + __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + #if CYTHON_FAST_PYCCALL + if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { + PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_15, __pyx_t_11}; + __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + } else + #endif + { + __pyx_t_13 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + if (__pyx_t_9) { + __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL; + } + __Pyx_GIVEREF(__pyx_t_15); + PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_14, __pyx_t_15); + __Pyx_GIVEREF(__pyx_t_11); + PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_14, __pyx_t_11); + __pyx_t_15 = 0; + __pyx_t_11 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 751, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + } + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + + /* "gedlibpy.pyx":752 + * for i in range(len(source_map)): + * node_map.add_assignment(source_map[i], target_map[i]) + * node_map.set_induced_cost(induced_cost) # <<<<<<<<<<<<<< + * + * return node_map + */ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_map, __pyx_n_s_set_induced_cost); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 752, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_13 = PyFloat_FromDouble(__pyx_v_induced_cost); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 752, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_13); + __pyx_t_11 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8); + if (likely(__pyx_t_11)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_11); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_8, function); + } + } + __pyx_t_5 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_11, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_13); + __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 752, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "gedlibpy.pyx":754 + * node_map.set_induced_cost(induced_cost) + * + * return node_map # <<<<<<<<<<<<<< + * + * + */ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_node_map); + __pyx_r = __pyx_v_node_map; goto __pyx_L0; - /* "gedlibpy.pyx":720 + /* "gedlibpy.pyx":722 * * * def get_node_map(self, g, h) : # <<<<<<<<<<<<<< @@ -7094,16 +7510,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_70get_node_map(struct __pyx_obj_8ged /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_15); __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_map", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; + __Pyx_XDECREF(__pyx_v_source_map); + __Pyx_XDECREF(__pyx_v_target_map); + __Pyx_XDECREF(__pyx_v_node_map); + __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_item); + __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_item); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "gedlibpy.pyx":738 +/* "gedlibpy.pyx":757 * * * def get_assignment_matrix(self, g, h) : # <<<<<<<<<<<<<< @@ -7143,11 +7569,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_73get_assignment_matrix(PyObject *__ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, 1); __PYX_ERR(0, 738, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, 1); __PYX_ERR(0, 757, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_assignment_matrix") < 0)) __PYX_ERR(0, 738, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_assignment_matrix") < 0)) __PYX_ERR(0, 757, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7160,7 +7586,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_73get_assignment_matrix(PyObject *__ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 738, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_assignment_matrix", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 757, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_assignment_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7182,7 +7608,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(struct __pyx PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_assignment_matrix", 0); - /* "gedlibpy.pyx":753 + /* "gedlibpy.pyx":772 * .. note:: This function creates datas so use it if necessary. * """ * return self.c_env.getAssignmentMatrix(g, h) # <<<<<<<<<<<<<< @@ -7190,21 +7616,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(struct __pyx * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 753, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 753, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 772, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 772, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getAssignmentMatrix(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 753, __pyx_L1_error) + __PYX_ERR(0, 772, __pyx_L1_error) } - __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_int_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":738 + /* "gedlibpy.pyx":757 * * * def get_assignment_matrix(self, g, h) : # <<<<<<<<<<<<<< @@ -7223,7 +7649,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_72get_assignment_matrix(struct __pyx return __pyx_r; } -/* "gedlibpy.pyx":756 +/* "gedlibpy.pyx":775 * * * def get_all_map(self, g, h) : # <<<<<<<<<<<<<< @@ -7263,11 +7689,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_75get_all_map(PyObject *__pyx_v_self case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, 1); __PYX_ERR(0, 756, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, 1); __PYX_ERR(0, 775, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_all_map") < 0)) __PYX_ERR(0, 756, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_all_map") < 0)) __PYX_ERR(0, 775, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7280,7 +7706,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_75get_all_map(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 756, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_all_map", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 775, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_all_map", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7302,7 +7728,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(struct __pyx_obj_8gedl PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_all_map", 0); - /* "gedlibpy.pyx":771 + /* "gedlibpy.pyx":790 * .. note:: This function duplicates data so please don't use it. I also don't know how to connect the two map to reconstruct the adjacence matrix. Please come back when I know how it's work ! * """ * return self.c_env.getAllMap(g, h) # <<<<<<<<<<<<<< @@ -7310,21 +7736,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(struct __pyx_obj_8gedl * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 790, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 790, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getAllMap(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 771, __pyx_L1_error) + __PYX_ERR(0, 790, __pyx_L1_error) } - __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 771, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_npy_uint64_3e___(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":756 + /* "gedlibpy.pyx":775 * * * def get_all_map(self, g, h) : # <<<<<<<<<<<<<< @@ -7343,7 +7769,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_74get_all_map(struct __pyx_obj_8gedl return __pyx_r; } -/* "gedlibpy.pyx":774 +/* "gedlibpy.pyx":793 * * * def get_runtime(self, g, h) : # <<<<<<<<<<<<<< @@ -7383,11 +7809,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_77get_runtime(PyObject *__pyx_v_self case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, 1); __PYX_ERR(0, 774, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, 1); __PYX_ERR(0, 793, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_runtime") < 0)) __PYX_ERR(0, 774, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_runtime") < 0)) __PYX_ERR(0, 793, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -7400,7 +7826,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_77get_runtime(PyObject *__pyx_v_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 774, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_runtime", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 793, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_runtime", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7422,7 +7848,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(struct __pyx_obj_8gedl PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("get_runtime", 0); - /* "gedlibpy.pyx":789 + /* "gedlibpy.pyx":808 * .. note:: Python is a bit longer than C++ due to the functions's encapsulate. * """ * return self.c_env.getRuntime(g,h) # <<<<<<<<<<<<<< @@ -7430,21 +7856,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(struct __pyx_obj_8gedl * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 808, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 808, __pyx_L1_error) try { __pyx_t_3 = __pyx_v_self->c_env->getRuntime(__pyx_t_1, __pyx_t_2); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 789, __pyx_L1_error) + __PYX_ERR(0, 808, __pyx_L1_error) } - __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 789, __pyx_L1_error) + __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":774 + /* "gedlibpy.pyx":793 * * * def get_runtime(self, g, h) : # <<<<<<<<<<<<<< @@ -7463,7 +7889,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_76get_runtime(struct __pyx_obj_8gedl return __pyx_r; } -/* "gedlibpy.pyx":792 +/* "gedlibpy.pyx":811 * * * def quasimetric_cost(self) : # <<<<<<<<<<<<<< @@ -7492,7 +7918,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(struct __pyx_obj_ PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("quasimetric_cost", 0); - /* "gedlibpy.pyx":806 + /* "gedlibpy.pyx":825 * .. warning:: run_method() between the same two graph must be called before this function. * """ * return self.c_env.quasimetricCosts() # <<<<<<<<<<<<<< @@ -7504,15 +7930,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(struct __pyx_obj_ __pyx_t_1 = __pyx_v_self->c_env->quasimetricCosts(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 806, __pyx_L1_error) + __PYX_ERR(0, 825, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":792 + /* "gedlibpy.pyx":811 * * * def quasimetric_cost(self) : # <<<<<<<<<<<<<< @@ -7531,7 +7957,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_78quasimetric_cost(struct __pyx_obj_ return __pyx_r; } -/* "gedlibpy.pyx":809 +/* "gedlibpy.pyx":828 * * * def hungarian_LSAP(self, matrix_cost) : # <<<<<<<<<<<<<< @@ -7561,7 +7987,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(struct __pyx_obj_8g PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("hungarian_LSAP", 0); - /* "gedlibpy.pyx":820 + /* "gedlibpy.pyx":839 * .. seealso:: hungarian_LSAPE() * """ * return self.c_env.hungarianLSAP(matrix_cost) # <<<<<<<<<<<<<< @@ -7569,20 +7995,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(struct __pyx_obj_8g * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 820, __pyx_L1_error) + __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 839, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->hungarianLSAP(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 820, __pyx_L1_error) + __PYX_ERR(0, 839, __pyx_L1_error) } - __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 820, __pyx_L1_error) + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_size_t_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":809 + /* "gedlibpy.pyx":828 * * * def hungarian_LSAP(self, matrix_cost) : # <<<<<<<<<<<<<< @@ -7601,7 +8027,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_80hungarian_LSAP(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":823 +/* "gedlibpy.pyx":842 * * * def hungarian_LSAPE(self, matrix_cost) : # <<<<<<<<<<<<<< @@ -7631,7 +8057,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(struct __pyx_obj_8 PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("hungarian_LSAPE", 0); - /* "gedlibpy.pyx":834 + /* "gedlibpy.pyx":853 * .. seealso:: hungarian_LSAP() * """ * return self.c_env.hungarianLSAPE(matrix_cost) # <<<<<<<<<<<<<< @@ -7639,20 +8065,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 834, __pyx_L1_error) + __pyx_t_1 = __pyx_convert_vector_from_py_std_3a__3a_vector_3c_double_3e___(__pyx_v_matrix_cost); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 853, __pyx_L1_error) try { __pyx_t_2 = __pyx_v_self->c_env->hungarianLSAPE(__pyx_t_1); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 834, __pyx_L1_error) + __PYX_ERR(0, 853, __pyx_L1_error) } - __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 834, __pyx_L1_error) + __pyx_t_3 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":823 + /* "gedlibpy.pyx":842 * * * def hungarian_LSAPE(self, matrix_cost) : # <<<<<<<<<<<<<< @@ -7671,7 +8097,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_82hungarian_LSAPE(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":837 +/* "gedlibpy.pyx":856 * * * def add_random_graph(self, name, classe, list_of_nodes, list_of_edges, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -7721,19 +8147,19 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph(PyObject *__pyx_v case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_classe)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 1); __PYX_ERR(0, 837, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 1); __PYX_ERR(0, 856, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_list_of_nodes)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 2); __PYX_ERR(0, 837, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 2); __PYX_ERR(0, 856, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_list_of_edges)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 3); __PYX_ERR(0, 837, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, 3); __PYX_ERR(0, 856, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: @@ -7743,7 +8169,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph(PyObject *__pyx_v } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_random_graph") < 0)) __PYX_ERR(0, 837, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_random_graph") < 0)) __PYX_ERR(0, 856, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -7765,7 +8191,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_85add_random_graph(PyObject *__pyx_v } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 837, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_random_graph", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 856, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_random_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -7797,14 +8223,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ PyObject *__pyx_t_11 = NULL; __Pyx_RefNannySetupContext("add_random_graph", 0); - /* "gedlibpy.pyx":857 + /* "gedlibpy.pyx":876 * * """ * id = self.add_graph(name, classe) # <<<<<<<<<<<<<< * for node in list_of_nodes: * self.add_node(id, node[0], node[1]) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; @@ -7821,7 +8247,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_name, __pyx_v_classe}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -7829,13 +8255,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_name, __pyx_v_classe}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -7846,7 +8272,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __Pyx_INCREF(__pyx_v_classe); __Pyx_GIVEREF(__pyx_v_classe); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_classe); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } @@ -7854,7 +8280,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __pyx_v_id = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":858 + /* "gedlibpy.pyx":877 * """ * id = self.add_graph(name, classe) * for node in list_of_nodes: # <<<<<<<<<<<<<< @@ -7865,26 +8291,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __pyx_t_1 = __pyx_v_list_of_nodes; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 877, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 877, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 877, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } @@ -7894,7 +8320,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 858, __pyx_L1_error) + else __PYX_ERR(0, 877, __pyx_L1_error) } break; } @@ -7903,18 +8329,18 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":859 + /* "gedlibpy.pyx":878 * id = self.add_graph(name, classe) * for node in list_of_nodes: * self.add_node(id, node[0], node[1]) # <<<<<<<<<<<<<< * for edge in list_of_edges: * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_node, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_node, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_node, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_node, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_4 = 0; @@ -7931,7 +8357,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_id, __pyx_t_3, __pyx_t_8}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7941,7 +8367,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_v_id, __pyx_t_3, __pyx_t_8}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7949,7 +8375,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ } else #endif { - __pyx_t_10 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; @@ -7963,14 +8389,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_4, __pyx_t_8); __pyx_t_3 = 0; __pyx_t_8 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":858 + /* "gedlibpy.pyx":877 * """ * id = self.add_graph(name, classe) * for node in list_of_nodes: # <<<<<<<<<<<<<< @@ -7980,7 +8406,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":860 + /* "gedlibpy.pyx":879 * for node in list_of_nodes: * self.add_node(id, node[0], node[1]) * for edge in list_of_edges: # <<<<<<<<<<<<<< @@ -7991,26 +8417,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __pyx_t_1 = __pyx_v_list_of_edges; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_list_of_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 879, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 879, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 879, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } @@ -8020,7 +8446,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 860, __pyx_L1_error) + else __PYX_ERR(0, 879, __pyx_L1_error) } break; } @@ -8029,20 +8455,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":861 + /* "gedlibpy.pyx":880 * self.add_node(id, node[0], node[1]) * for edge in list_of_edges: * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) # <<<<<<<<<<<<<< * return id * */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_edge, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_edge, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = NULL; __pyx_t_4 = 0; @@ -8059,7 +8485,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_9, __pyx_v_id, __pyx_t_10, __pyx_t_8, __pyx_t_3, __pyx_v_ignore_duplicates}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -8070,7 +8496,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_9, __pyx_v_id, __pyx_t_10, __pyx_t_8, __pyx_t_3, __pyx_v_ignore_duplicates}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -8079,7 +8505,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ } else #endif { - __pyx_t_11 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_11 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; @@ -8099,14 +8525,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __pyx_t_10 = 0; __pyx_t_8 = 0; __pyx_t_3 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":860 + /* "gedlibpy.pyx":879 * for node in list_of_nodes: * self.add_node(id, node[0], node[1]) * for edge in list_of_edges: # <<<<<<<<<<<<<< @@ -8116,7 +8542,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":862 + /* "gedlibpy.pyx":881 * for edge in list_of_edges: * self.add_edge(id, edge[0], edge[1], edge[2], ignore_duplicates) * return id # <<<<<<<<<<<<<< @@ -8128,7 +8554,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ __pyx_r = __pyx_v_id; goto __pyx_L0; - /* "gedlibpy.pyx":837 + /* "gedlibpy.pyx":856 * * * def add_random_graph(self, name, classe, list_of_nodes, list_of_edges, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -8157,7 +8583,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_84add_random_graph(struct __pyx_obj_ return __pyx_r; } -/* "gedlibpy.pyx":865 +/* "gedlibpy.pyx":884 * * * def add_nx_graph(self, g, classe, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -8201,7 +8627,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph(PyObject *__pyx_v_sel case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_classe)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, 1); __PYX_ERR(0, 865, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, 1); __PYX_ERR(0, 884, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: @@ -8211,7 +8637,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph(PyObject *__pyx_v_sel } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_nx_graph") < 0)) __PYX_ERR(0, 865, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_nx_graph") < 0)) __PYX_ERR(0, 884, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -8229,7 +8655,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_87add_nx_graph(PyObject *__pyx_v_sel } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 865, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("add_nx_graph", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 884, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.add_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -8264,16 +8690,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged PyObject *__pyx_t_14 = NULL; __Pyx_RefNannySetupContext("add_nx_graph", 0); - /* "gedlibpy.pyx":879 + /* "gedlibpy.pyx":898 * * """ * id = self.add_graph(g.name, classe) # <<<<<<<<<<<<<< * for node in g.nodes: * self.add_node(id, str(node), g.nodes[node]) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; @@ -8290,7 +8716,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_classe}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -8299,14 +8725,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_classe}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; @@ -8317,7 +8743,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __Pyx_GIVEREF(__pyx_v_classe); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_classe); __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } @@ -8325,22 +8751,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __pyx_v_id = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":880 + /* "gedlibpy.pyx":899 * """ * id = self.add_graph(g.name, classe) * for node in g.nodes: # <<<<<<<<<<<<<< * self.add_node(id, str(node), g.nodes[node]) * for edge in g.edges: */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 899, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -8348,17 +8774,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 899, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 899, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } @@ -8368,7 +8794,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 880, __pyx_L1_error) + else __PYX_ERR(0, 899, __pyx_L1_error) } break; } @@ -8377,20 +8803,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":881 + /* "gedlibpy.pyx":900 * id = self.add_graph(g.name, classe) * for node in g.nodes: * self.add_node(id, str(node), g.nodes[node]) # <<<<<<<<<<<<<< * for edge in g.edges: * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_nodes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_node); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_node); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; @@ -8408,7 +8834,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_id, __pyx_t_3, __pyx_t_9}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -8418,7 +8844,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_id, __pyx_t_3, __pyx_t_9}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -8426,7 +8852,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged } else #endif { - __pyx_t_10 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL; @@ -8440,14 +8866,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_5, __pyx_t_9); __pyx_t_3 = 0; __pyx_t_9 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":880 + /* "gedlibpy.pyx":899 * """ * id = self.add_graph(g.name, classe) * for node in g.nodes: # <<<<<<<<<<<<<< @@ -8457,22 +8883,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":882 + /* "gedlibpy.pyx":901 * for node in g.nodes: * self.add_node(id, str(node), g.nodes[node]) * for edge in g.edges: # <<<<<<<<<<<<<< * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) * return id */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 901, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { @@ -8480,17 +8906,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 901, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 901, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } @@ -8500,7 +8926,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 882, __pyx_L1_error) + else __PYX_ERR(0, 901, __pyx_L1_error) } break; } @@ -8509,30 +8935,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":883 + /* "gedlibpy.pyx":902 * self.add_node(id, str(node), g.nodes[node]) * for edge in g.edges: * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) # <<<<<<<<<<<<<< * return id * */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_g, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = NULL; __pyx_t_5 = 0; @@ -8549,7 +8975,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_t_12}; - __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -8559,7 +8985,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_t_11, __pyx_t_12}; - __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -8567,7 +8993,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged } else #endif { - __pyx_t_14 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_13) { __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_13); __pyx_t_13 = NULL; @@ -8578,7 +9004,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_5, __pyx_t_12); __pyx_t_11 = 0; __pyx_t_12 = 0; - __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } @@ -8598,7 +9024,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_id, __pyx_t_9, __pyx_t_3, __pyx_t_10, __pyx_v_ignore_duplicates}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -8609,7 +9035,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[6] = {__pyx_t_4, __pyx_v_id, __pyx_t_9, __pyx_t_3, __pyx_t_10, __pyx_v_ignore_duplicates}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 5+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -8618,7 +9044,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged } else #endif { - __pyx_t_14 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_14 = PyTuple_New(5+__pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __pyx_t_4 = NULL; @@ -8638,14 +9064,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __pyx_t_9 = 0; __pyx_t_3 = 0; __pyx_t_10 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":882 + /* "gedlibpy.pyx":901 * for node in g.nodes: * self.add_node(id, str(node), g.nodes[node]) * for edge in g.edges: # <<<<<<<<<<<<<< @@ -8655,7 +9081,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":884 + /* "gedlibpy.pyx":903 * for edge in g.edges: * self.add_edge(id, str(edge[0]), str(edge[1]), g.get_edge_data(edge[0], edge[1]), ignore_duplicates) * return id # <<<<<<<<<<<<<< @@ -8667,7 +9093,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged __pyx_r = __pyx_v_id; goto __pyx_L0; - /* "gedlibpy.pyx":865 + /* "gedlibpy.pyx":884 * * * def add_nx_graph(self, g, classe, ignore_duplicates=True) : # <<<<<<<<<<<<<< @@ -8699,7 +9125,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_86add_nx_graph(struct __pyx_obj_8ged return __pyx_r; } -/* "gedlibpy.pyx":887 +/* "gedlibpy.pyx":906 * * * def compute_ged_on_two_graphs(self, g1, g2, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -8752,25 +9178,25 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs(PyObject case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_g2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 1); __PYX_ERR(0, 887, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 1); __PYX_ERR(0, 906, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 2); __PYX_ERR(0, 887, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 2); __PYX_ERR(0, 906, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 3); __PYX_ERR(0, 887, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 3); __PYX_ERR(0, 906, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 4); __PYX_ERR(0, 887, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, 4); __PYX_ERR(0, 906, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: @@ -8780,7 +9206,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs(PyObject } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_ged_on_two_graphs") < 0)) __PYX_ERR(0, 887, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_ged_on_two_graphs") < 0)) __PYX_ERR(0, 906, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -8804,7 +9230,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_89compute_ged_on_two_graphs(PyObject } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 887, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_ged_on_two_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 906, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_ged_on_two_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -8832,14 +9258,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("compute_ged_on_two_graphs", 0); - /* "gedlibpy.pyx":910 + /* "gedlibpy.pyx":929 * * """ * if self.is_initialized() : # <<<<<<<<<<<<<< * self.restart_env() * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 910, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8853,21 +9279,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 910, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 910, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { - /* "gedlibpy.pyx":911 + /* "gedlibpy.pyx":930 * """ * if self.is_initialized() : * self.restart_env() # <<<<<<<<<<<<<< * * g = self.add_nx_graph(g1, "") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 911, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -8881,12 +9307,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 911, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":910 + /* "gedlibpy.pyx":929 * * """ * if self.is_initialized() : # <<<<<<<<<<<<<< @@ -8895,14 +9321,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ */ } - /* "gedlibpy.pyx":913 + /* "gedlibpy.pyx":932 * self.restart_env() * * g = self.add_nx_graph(g1, "") # <<<<<<<<<<<<<< * h = self.add_nx_graph(g2, "") * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; @@ -8919,7 +9345,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g1, __pyx_kp_u_}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -8927,13 +9353,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g1, __pyx_kp_u_}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -8944,7 +9370,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_kp_u_); __Pyx_GIVEREF(__pyx_kp_u_); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_kp_u_); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } @@ -8952,14 +9378,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __pyx_v_g = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":914 + /* "gedlibpy.pyx":933 * * g = self.add_nx_graph(g1, "") * h = self.add_nx_graph(g2, "") # <<<<<<<<<<<<<< * * self.set_edit_cost(edit_cost) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_5 = 0; @@ -8976,7 +9402,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g2, __pyx_kp_u_}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -8984,13 +9410,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g2, __pyx_kp_u_}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; @@ -9001,7 +9427,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_kp_u_); __Pyx_GIVEREF(__pyx_kp_u_); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_kp_u_); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 914, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 933, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } @@ -9009,14 +9435,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __pyx_v_h = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":916 + /* "gedlibpy.pyx":935 * h = self.add_nx_graph(g2, "") * * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< * self.init(init_option) * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 916, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9030,19 +9456,19 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edit_cost); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 916, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":917 + /* "gedlibpy.pyx":936 * * self.set_edit_cost(edit_cost) * self.init(init_option) # <<<<<<<<<<<<<< * * self.set_method(method, options) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9056,19 +9482,19 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_init_option); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":919 + /* "gedlibpy.pyx":938 * self.init(init_option) * * self.set_method(method, options) # <<<<<<<<<<<<<< * self.init_method() * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; @@ -9085,7 +9511,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9093,13 +9519,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -9110,21 +9536,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_options); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 919, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":920 + /* "gedlibpy.pyx":939 * * self.set_method(method, options) * self.init_method() # <<<<<<<<<<<<<< * * resDistance = 0 */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 920, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9138,12 +9564,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 920, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":922 + /* "gedlibpy.pyx":941 * self.init_method() * * resDistance = 0 # <<<<<<<<<<<<<< @@ -9153,26 +9579,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_int_0); __pyx_v_resDistance = __pyx_int_0; - /* "gedlibpy.pyx":923 + /* "gedlibpy.pyx":942 * * resDistance = 0 * resMapping = [] # <<<<<<<<<<<<<< * self.run_method(g, h) * resDistance = self.get_upper_bound(g, h) */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 923, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_resMapping = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":924 + /* "gedlibpy.pyx":943 * resDistance = 0 * resMapping = [] * self.run_method(g, h) # <<<<<<<<<<<<<< * resDistance = self.get_upper_bound(g, h) * resMapping = self.get_node_map(g, h) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_5 = 0; @@ -9189,7 +9615,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9197,13 +9623,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; @@ -9214,21 +9640,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 924, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":925 + /* "gedlibpy.pyx":944 * resMapping = [] * self.run_method(g, h) * resDistance = self.get_upper_bound(g, h) # <<<<<<<<<<<<<< * resMapping = self.get_node_map(g, h) * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 925, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; @@ -9245,7 +9671,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9253,13 +9679,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 925, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -9270,7 +9696,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 925, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } @@ -9278,14 +9704,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_DECREF_SET(__pyx_v_resDistance, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":926 + /* "gedlibpy.pyx":945 * self.run_method(g, h) * resDistance = self.get_upper_bound(g, h) * resMapping = self.get_node_map(g, h) # <<<<<<<<<<<<<< * * return resDistance, resMapping */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 926, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_5 = 0; @@ -9302,7 +9728,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 945, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -9310,13 +9736,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 945, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; @@ -9327,7 +9753,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 926, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } @@ -9335,7 +9761,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __Pyx_DECREF_SET(__pyx_v_resMapping, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":928 + /* "gedlibpy.pyx":947 * resMapping = self.get_node_map(g, h) * * return resDistance, resMapping # <<<<<<<<<<<<<< @@ -9343,7 +9769,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 928, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_resDistance); __Pyx_GIVEREF(__pyx_v_resDistance); @@ -9355,7 +9781,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":887 + /* "gedlibpy.pyx":906 * * * def compute_ged_on_two_graphs(self, g1, g2, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -9381,7 +9807,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_88compute_ged_on_two_graphs(struct _ return __pyx_r; } -/* "gedlibpy.pyx":931 +/* "gedlibpy.pyx":950 * * * def compute_edit_distance_on_nx_graphs(self, dataset, classes, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -9434,25 +9860,25 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_classes)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 1); __PYX_ERR(0, 931, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 1); __PYX_ERR(0, 950, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 2); __PYX_ERR(0, 931, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 2); __PYX_ERR(0, 950, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 3); __PYX_ERR(0, 931, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 3); __PYX_ERR(0, 950, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 4); __PYX_ERR(0, 931, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, 4); __PYX_ERR(0, 950, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: @@ -9462,7 +9888,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_nx_graphs") < 0)) __PYX_ERR(0, 931, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_nx_graphs") < 0)) __PYX_ERR(0, 950, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -9486,7 +9912,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_91compute_edit_distance_on_nx_graphs } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 931, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_nx_graphs", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 950, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_nx_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -9522,14 +9948,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyObject *__pyx_t_12 = NULL; __Pyx_RefNannySetupContext("compute_edit_distance_on_nx_graphs", 0); - /* "gedlibpy.pyx":955 + /* "gedlibpy.pyx":974 * * """ * if self.is_initialized() : # <<<<<<<<<<<<<< * self.restart_env() * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9543,21 +9969,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 955, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 974, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { - /* "gedlibpy.pyx":956 + /* "gedlibpy.pyx":975 * """ * if self.is_initialized() : * self.restart_env() # <<<<<<<<<<<<<< * * print("Loading graphs in progress...") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 956, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9571,12 +9997,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 956, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":955 + /* "gedlibpy.pyx":974 * * """ * if self.is_initialized() : # <<<<<<<<<<<<<< @@ -9585,18 +10011,18 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs */ } - /* "gedlibpy.pyx":958 + /* "gedlibpy.pyx":977 * self.restart_env() * * print("Loading graphs in progress...") # <<<<<<<<<<<<<< * for graph in dataset : * self.add_nx_graph(graph, classes) */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":959 + /* "gedlibpy.pyx":978 * * print("Loading graphs in progress...") * for graph in dataset : # <<<<<<<<<<<<<< @@ -9607,26 +10033,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __pyx_t_1 = __pyx_v_dataset; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 978, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 978, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 978, __pyx_L1_error) #else - __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } @@ -9636,7 +10062,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 959, __pyx_L1_error) + else __PYX_ERR(0, 978, __pyx_L1_error) } break; } @@ -9645,14 +10071,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_XDECREF_SET(__pyx_v_graph, __pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":960 + /* "gedlibpy.pyx":979 * print("Loading graphs in progress...") * for graph in dataset : * self.add_nx_graph(graph, classes) # <<<<<<<<<<<<<< * listID = self.graph_ids() * print("Graphs loaded ! ") */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_nx_graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -9669,7 +10095,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_graph, __pyx_v_classes}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -9677,13 +10103,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_graph, __pyx_v_classes}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 960, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -9694,14 +10120,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_INCREF(__pyx_v_classes); __Pyx_GIVEREF(__pyx_v_classes); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_classes); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":959 + /* "gedlibpy.pyx":978 * * print("Loading graphs in progress...") * for graph in dataset : # <<<<<<<<<<<<<< @@ -9711,14 +10137,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":961 + /* "gedlibpy.pyx":980 * for graph in dataset : * self.add_nx_graph(graph, classes) * listID = self.graph_ids() # <<<<<<<<<<<<<< * print("Graphs loaded ! ") * print("Number of graphs = " + str(listID[1])) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -9732,51 +10158,51 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_listID = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":962 + /* "gedlibpy.pyx":981 * self.add_nx_graph(graph, classes) * listID = self.graph_ids() * print("Graphs loaded ! ") # <<<<<<<<<<<<<< * print("Number of graphs = " + str(listID[1])) * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":963 + /* "gedlibpy.pyx":982 * listID = self.graph_ids() * print("Graphs loaded ! ") * print("Number of graphs = " + str(listID[1])) # <<<<<<<<<<<<<< * * self.set_edit_cost(edit_cost) */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":965 + /* "gedlibpy.pyx":984 * print("Number of graphs = " + str(listID[1])) * * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< * print("Initialization in progress...") * self.init(init_option) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 965, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -9790,30 +10216,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_edit_cost); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 965, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":966 + /* "gedlibpy.pyx":985 * * self.set_edit_cost(edit_cost) * print("Initialization in progress...") # <<<<<<<<<<<<<< * self.init(init_option) * print("Initialization terminated !") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 966, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":967 + /* "gedlibpy.pyx":986 * self.set_edit_cost(edit_cost) * print("Initialization in progress...") * self.init(init_option) # <<<<<<<<<<<<<< * print("Initialization terminated !") * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 967, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -9827,30 +10253,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_init_option); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":968 + /* "gedlibpy.pyx":987 * print("Initialization in progress...") * self.init(init_option) * print("Initialization terminated !") # <<<<<<<<<<<<<< * * self.set_method(method, options) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":970 + /* "gedlibpy.pyx":989 * print("Initialization terminated !") * * self.set_method(method, options) # <<<<<<<<<<<<<< * self.init_method() * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; __pyx_t_8 = 0; @@ -9867,7 +10293,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -9875,13 +10301,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_method, __pyx_v_options}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -9892,21 +10318,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_INCREF(__pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_options); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":971 + /* "gedlibpy.pyx":990 * * self.set_method(method, options) * self.init_method() # <<<<<<<<<<<<<< * * resDistance = [[]] */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 971, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -9920,21 +10346,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 971, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":973 + /* "gedlibpy.pyx":992 * self.init_method() * * resDistance = [[]] # <<<<<<<<<<<<<< * resMapping = [[]] * for g in range(listID[0], listID[1]) : */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error) + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); @@ -9942,16 +10368,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __pyx_v_resDistance = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":974 + /* "gedlibpy.pyx":993 * * resDistance = [[]] * resMapping = [[]] # <<<<<<<<<<<<<< * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error) + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); @@ -9959,18 +10385,18 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __pyx_v_resMapping = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":975 + /* "gedlibpy.pyx":994 * resDistance = [[]] * resMapping = [[]] * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); @@ -9978,16 +10404,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_9 = __pyx_t_1; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { - __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_6 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_6 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 994, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -9995,17 +10421,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 994, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 994, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } @@ -10015,7 +10441,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 975, __pyx_L1_error) + else __PYX_ERR(0, 994, __pyx_L1_error) } break; } @@ -10024,38 +10450,38 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":976 + /* "gedlibpy.pyx":995 * resMapping = [[]] * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") # <<<<<<<<<<<<<< * for h in range(listID[0], listID[1]) : * #print("Computation between graph " + str(g) + " and graph " + str(h)) */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 995, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":977 + /* "gedlibpy.pyx":996 * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< * #print("Computation between graph " + str(g) + " and graph " + str(h)) * self.run_method(g, h) */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); @@ -10063,16 +10489,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { - __pyx_t_10 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_10 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 996, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -10080,17 +10506,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 996, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 996, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } @@ -10100,7 +10526,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 977, __pyx_L1_error) + else __PYX_ERR(0, 996, __pyx_L1_error) } break; } @@ -10109,14 +10535,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_XDECREF_SET(__pyx_v_h, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":979 + /* "gedlibpy.pyx":998 * for h in range(listID[0], listID[1]) : * #print("Computation between graph " + str(g) + " and graph " + str(h)) * self.run_method(g, h) # <<<<<<<<<<<<<< * resDistance[g][h] = self.get_upper_bound(g, h) * resMapping[g][h] = self.get_node_map(g, h) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 979, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -10133,7 +10559,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10141,13 +10567,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 979, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -10158,21 +10584,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 979, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":980 + /* "gedlibpy.pyx":999 * #print("Computation between graph " + str(g) + " and graph " + str(h)) * self.run_method(g, h) * resDistance[g][h] = self.get_upper_bound(g, h) # <<<<<<<<<<<<<< * resMapping[g][h] = self.get_node_map(g, h) * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_upper_bound); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = NULL; __pyx_t_8 = 0; @@ -10189,7 +10615,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10197,13 +10623,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL; @@ -10214,25 +10640,25 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resDistance, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resDistance, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 980, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 999, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":981 + /* "gedlibpy.pyx":1000 * self.run_method(g, h) * resDistance[g][h] = self.get_upper_bound(g, h) * resMapping[g][h] = self.get_node_map(g, h) # <<<<<<<<<<<<<< * * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_node_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; __pyx_t_8 = 0; @@ -10249,7 +10675,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10257,13 +10683,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; @@ -10274,18 +10700,18 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resMapping, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_resMapping, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 981, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_h, __pyx_t_1) < 0)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":977 + /* "gedlibpy.pyx":996 * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< @@ -10295,7 +10721,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":975 + /* "gedlibpy.pyx":994 * resDistance = [[]] * resMapping = [[]] * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< @@ -10305,18 +10731,18 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "gedlibpy.pyx":983 + /* "gedlibpy.pyx":1002 * resMapping[g][h] = self.get_node_map(g, h) * * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") # <<<<<<<<<<<<<< * return resDistance, resMapping * */ - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 983, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "gedlibpy.pyx":984 + /* "gedlibpy.pyx":1003 * * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") * return resDistance, resMapping # <<<<<<<<<<<<<< @@ -10324,7 +10750,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 984, __pyx_L1_error) + __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_resDistance); __Pyx_GIVEREF(__pyx_v_resDistance); @@ -10336,7 +10762,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs __pyx_t_9 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":931 + /* "gedlibpy.pyx":950 * * * def compute_edit_distance_on_nx_graphs(self, dataset, classes, edit_cost, method, options, init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -10366,7 +10792,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_90compute_edit_distance_on_nx_graphs return __pyx_r; } -/* "gedlibpy.pyx":987 +/* "gedlibpy.pyx":1006 * * * def compute_edit_distance_on_GXl_graphs(self, path_folder, path_XML, edit_cost, method, options="", init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -10420,19 +10846,19 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graph case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_path_XML)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 1); __PYX_ERR(0, 987, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 1); __PYX_ERR(0, 1006, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edit_cost)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 2); __PYX_ERR(0, 987, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 2); __PYX_ERR(0, 1006, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 3); __PYX_ERR(0, 987, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, 3); __PYX_ERR(0, 1006, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: @@ -10448,7 +10874,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graph } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_GXl_graphs") < 0)) __PYX_ERR(0, 987, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_edit_distance_on_GXl_graphs") < 0)) __PYX_ERR(0, 1006, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -10473,7 +10899,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_93compute_edit_distance_on_GXl_graph } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 987, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_edit_distance_on_GXl_graphs", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1006, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_edit_distance_on_GXl_graphs", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -10506,14 +10932,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph PyObject *__pyx_t_12 = NULL; __Pyx_RefNannySetupContext("compute_edit_distance_on_GXl_graphs", 0); - /* "gedlibpy.pyx":1011 + /* "gedlibpy.pyx":1030 * """ * * if self.is_initialized() : # <<<<<<<<<<<<<< * self.restart_env() * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_initialized); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10527,21 +10953,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1011, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { - /* "gedlibpy.pyx":1012 + /* "gedlibpy.pyx":1031 * * if self.is_initialized() : * self.restart_env() # <<<<<<<<<<<<<< * * print("Loading graphs in progress...") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1012, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_restart_env); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10555,12 +10981,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1011 + /* "gedlibpy.pyx":1030 * """ * * if self.is_initialized() : # <<<<<<<<<<<<<< @@ -10569,25 +10995,25 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph */ } - /* "gedlibpy.pyx":1014 + /* "gedlibpy.pyx":1033 * self.restart_env() * * print("Loading graphs in progress...") # <<<<<<<<<<<<<< * self.load_GXL_graphs(path_folder, path_XML) * listID = self.graph_ids() */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1015 + /* "gedlibpy.pyx":1034 * * print("Loading graphs in progress...") * self.load_GXL_graphs(path_folder, path_XML) # <<<<<<<<<<<<<< * listID = self.graph_ids() * print("Graphs loaded ! ") */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_load_GXL_graphs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1015, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_load_GXL_graphs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; @@ -10604,7 +11030,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_path_folder, __pyx_v_path_XML}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -10612,13 +11038,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_path_folder, __pyx_v_path_XML}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1015, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; @@ -10629,21 +11055,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __Pyx_INCREF(__pyx_v_path_XML); __Pyx_GIVEREF(__pyx_v_path_XML); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_path_XML); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1016 + /* "gedlibpy.pyx":1035 * print("Loading graphs in progress...") * self.load_GXL_graphs(path_folder, path_XML) * listID = self.graph_ids() # <<<<<<<<<<<<<< * print("Graphs loaded ! ") * print("Number of graphs = " + str(listID[1])) */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1016, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_graph_ids); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -10657,51 +11083,51 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1016, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_listID = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1017 + /* "gedlibpy.pyx":1036 * self.load_GXL_graphs(path_folder, path_XML) * listID = self.graph_ids() * print("Graphs loaded ! ") # <<<<<<<<<<<<<< * print("Number of graphs = " + str(listID[1])) * */ - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1018 + /* "gedlibpy.pyx":1037 * listID = self.graph_ids() * print("Graphs loaded ! ") * print("Number of graphs = " + str(listID[1])) # <<<<<<<<<<<<<< * * self.set_edit_cost(edit_cost) */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Number_of_graphs, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1018, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1020 + /* "gedlibpy.pyx":1039 * print("Number of graphs = " + str(listID[1])) * * self.set_edit_cost(edit_cost) # <<<<<<<<<<<<<< * print("Initialization in progress...") * self.init(init_option) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_edit_cost); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -10715,30 +11141,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_edit_cost) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_edit_cost); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1020, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1021 + /* "gedlibpy.pyx":1040 * * self.set_edit_cost(edit_cost) * print("Initialization in progress...") # <<<<<<<<<<<<<< * self.init(init_option) * print("Initialization terminated !") */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1022 + /* "gedlibpy.pyx":1041 * self.set_edit_cost(edit_cost) * print("Initialization in progress...") * self.init(init_option) # <<<<<<<<<<<<<< * print("Initialization terminated !") * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1022, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -10752,30 +11178,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_init_option) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_init_option); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1022, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1023 + /* "gedlibpy.pyx":1042 * print("Initialization in progress...") * self.init(init_option) * print("Initialization terminated !") # <<<<<<<<<<<<<< * * self.set_method(method, options) */ - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1023, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1025 + /* "gedlibpy.pyx":1044 * print("Initialization terminated !") * * self.set_method(method, options) # <<<<<<<<<<<<<< * self.init_method() * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; __pyx_t_5 = 0; @@ -10792,7 +11218,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_method, __pyx_v_options}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else @@ -10800,13 +11226,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_method, __pyx_v_options}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { - __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1025, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; @@ -10817,21 +11243,21 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __Pyx_INCREF(__pyx_v_options); __Pyx_GIVEREF(__pyx_v_options); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_options); - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1026 + /* "gedlibpy.pyx":1045 * * self.set_method(method, options) * self.init_method() # <<<<<<<<<<<<<< * * #res = [] */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { @@ -10845,23 +11271,23 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1029 + /* "gedlibpy.pyx":1048 * * #res = [] * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); @@ -10869,16 +11295,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -10886,17 +11312,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1048, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1048, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } @@ -10906,7 +11332,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1029, __pyx_L1_error) + else __PYX_ERR(0, 1048, __pyx_L1_error) } break; } @@ -10915,38 +11341,38 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1030 + /* "gedlibpy.pyx":1049 * #res = [] * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") # <<<<<<<<<<<<<< * for h in range(listID[0], listID[1]) : * #print("Computation between graph " + str(g) + " and graph " + str(h)) */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Computation_between_graph, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_t_2, __pyx_kp_u_with_all_the_others_including_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1030, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":1031 + /* "gedlibpy.pyx":1050 * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< * #print("Computation between graph " + str(g) + " and graph " + str(h)) * self.run_method(g,h) */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_listID, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_listID, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); @@ -10954,16 +11380,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { - __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1050, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -10971,17 +11397,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1050, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1050, __pyx_L1_error) #else - __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error) + __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } @@ -10991,7 +11417,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1031, __pyx_L1_error) + else __PYX_ERR(0, 1050, __pyx_L1_error) } break; } @@ -11000,14 +11426,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __Pyx_XDECREF_SET(__pyx_v_h, __pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1033 + /* "gedlibpy.pyx":1052 * for h in range(listID[0], listID[1]) : * #print("Computation between graph " + str(g) + " and graph " + str(h)) * self.run_method(g,h) # <<<<<<<<<<<<<< * #res.append((get_upper_bound(g,h), get_node_map(g,h), get_runtime(g,h))) * */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1033, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_run_method); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_11 = NULL; __pyx_t_5 = 0; @@ -11024,7 +11450,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); } else @@ -11032,13 +11458,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_g, __pyx_v_h}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { - __pyx_t_12 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1033, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; @@ -11049,14 +11475,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __Pyx_INCREF(__pyx_v_h); __Pyx_GIVEREF(__pyx_v_h); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_5, __pyx_v_h); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1031 + /* "gedlibpy.pyx":1050 * for g in range(listID[0], listID[1]) : * print("Computation between graph " + str(g) + " with all the others including himself.") * for h in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< @@ -11066,7 +11492,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "gedlibpy.pyx":1029 + /* "gedlibpy.pyx":1048 * * #res = [] * for g in range(listID[0], listID[1]) : # <<<<<<<<<<<<<< @@ -11076,29 +11502,29 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1038 + /* "gedlibpy.pyx":1057 * #return res * * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") # <<<<<<<<<<<<<< * print ("Please don't restart the environment or recall this function, you will lose your results !") * return listID */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1038, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1039 + /* "gedlibpy.pyx":1058 * * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") * print ("Please don't restart the environment or recall this function, you will lose your results !") # <<<<<<<<<<<<<< * return listID * */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1040 + /* "gedlibpy.pyx":1059 * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") * print ("Please don't restart the environment or recall this function, you will lose your results !") * return listID # <<<<<<<<<<<<<< @@ -11110,7 +11536,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph __pyx_r = __pyx_v_listID; goto __pyx_L0; - /* "gedlibpy.pyx":987 + /* "gedlibpy.pyx":1006 * * * def compute_edit_distance_on_GXl_graphs(self, path_folder, path_XML, edit_cost, method, options="", init_option="EAGER_WITHOUT_SHUFFLED_COPIES") : # <<<<<<<<<<<<<< @@ -11137,7 +11563,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_92compute_edit_distance_on_GXl_graph return __pyx_r; } -/* "gedlibpy.pyx":1043 +/* "gedlibpy.pyx":1062 * * * def get_num_node_labels(self): # <<<<<<<<<<<<<< @@ -11166,7 +11592,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_num_node_labels", 0); - /* "gedlibpy.pyx":1052 + /* "gedlibpy.pyx":1071 * .. note:: If 1 is returned, the nodes are unlabeled. * """ * return self.c_env.getNumNodeLabels() # <<<<<<<<<<<<<< @@ -11178,15 +11604,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(struct __pyx_o __pyx_t_1 = __pyx_v_self->c_env->getNumNodeLabels(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1052, __pyx_L1_error) + __PYX_ERR(0, 1071, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1052, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1043 + /* "gedlibpy.pyx":1062 * * * def get_num_node_labels(self): # <<<<<<<<<<<<<< @@ -11205,7 +11631,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_94get_num_node_labels(struct __pyx_o return __pyx_r; } -/* "gedlibpy.pyx":1055 +/* "gedlibpy.pyx":1074 * * * def get_node_label(self, label_id): # <<<<<<<<<<<<<< @@ -11238,7 +11664,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8g PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_node_label", 0); - /* "gedlibpy.pyx":1064 + /* "gedlibpy.pyx":1083 * :rtype: dict{string : string} * """ * return decode_your_map(self.c_env.getNodeLabel(label_id)) # <<<<<<<<<<<<<< @@ -11246,16 +11672,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8g * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1064, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1064, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1083, __pyx_L1_error) try { __pyx_t_4 = __pyx_v_self->c_env->getNodeLabel(__pyx_t_3); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1064, __pyx_L1_error) + __PYX_ERR(0, 1083, __pyx_L1_error) } - __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1064, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11270,14 +11696,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8g __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1055 + /* "gedlibpy.pyx":1074 * * * def get_node_label(self, label_id): # <<<<<<<<<<<<<< @@ -11299,7 +11725,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_96get_node_label(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":1067 +/* "gedlibpy.pyx":1086 * * * def get_num_edge_labels(self): # <<<<<<<<<<<<<< @@ -11328,7 +11754,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(struct __pyx_o PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_num_edge_labels", 0); - /* "gedlibpy.pyx":1076 + /* "gedlibpy.pyx":1095 * .. note:: If 1 is returned, the edges are unlabeled. * """ * return self.c_env.getNumEdgeLabels() # <<<<<<<<<<<<<< @@ -11340,15 +11766,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(struct __pyx_o __pyx_t_1 = __pyx_v_self->c_env->getNumEdgeLabels(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1076, __pyx_L1_error) + __PYX_ERR(0, 1095, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1067 + /* "gedlibpy.pyx":1086 * * * def get_num_edge_labels(self): # <<<<<<<<<<<<<< @@ -11367,7 +11793,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_98get_num_edge_labels(struct __pyx_o return __pyx_r; } -/* "gedlibpy.pyx":1079 +/* "gedlibpy.pyx":1098 * * * def get_edge_label(self, label_id): # <<<<<<<<<<<<<< @@ -11400,7 +11826,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8 PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("get_edge_label", 0); - /* "gedlibpy.pyx":1088 + /* "gedlibpy.pyx":1107 * :rtype: dict{string : string} * """ * return decode_your_map(self.c_env.getEdgeLabel(label_id)) # <<<<<<<<<<<<<< @@ -11408,16 +11834,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8 * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1088, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_label_id); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1107, __pyx_L1_error) try { __pyx_t_4 = __pyx_v_self->c_env->getEdgeLabel(__pyx_t_3); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1088, __pyx_L1_error) + __PYX_ERR(0, 1107, __pyx_L1_error) } - __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1088, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11432,14 +11858,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8 __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1079 + /* "gedlibpy.pyx":1098 * * * def get_edge_label(self, label_id): # <<<<<<<<<<<<<< @@ -11461,7 +11887,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_100get_edge_label(struct __pyx_obj_8 return __pyx_r; } -/* "gedlibpy.pyx":1102 +/* "gedlibpy.pyx":1121 * # return self.c_env.getNumNodes(graph_id) * * def get_avg_num_nodes(self): # <<<<<<<<<<<<<< @@ -11490,7 +11916,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(struct __pyx_ob PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_avg_num_nodes", 0); - /* "gedlibpy.pyx":1109 + /* "gedlibpy.pyx":1128 * :rtype: double * """ * return self.c_env.getAvgNumNodes() # <<<<<<<<<<<<<< @@ -11502,15 +11928,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(struct __pyx_ob __pyx_t_1 = __pyx_v_self->c_env->getAvgNumNodes(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1109, __pyx_L1_error) + __PYX_ERR(0, 1128, __pyx_L1_error) } - __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1109, __pyx_L1_error) + __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1102 + /* "gedlibpy.pyx":1121 * # return self.c_env.getNumNodes(graph_id) * * def get_avg_num_nodes(self): # <<<<<<<<<<<<<< @@ -11529,7 +11955,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_102get_avg_num_nodes(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1111 +/* "gedlibpy.pyx":1130 * return self.c_env.getAvgNumNodes() * * def get_node_rel_cost(self, node_label_1, node_label_2): # <<<<<<<<<<<<<< @@ -11569,11 +11995,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_105get_node_rel_cost(PyObject *__pyx case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_label_2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1130, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_rel_cost") < 0)) __PYX_ERR(0, 1111, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_node_rel_cost") < 0)) __PYX_ERR(0, 1130, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -11586,7 +12012,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_105get_node_rel_cost(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_node_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1130, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_node_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -11610,7 +12036,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_ob double __pyx_t_6; __Pyx_RefNannySetupContext("get_node_rel_cost", 0); - /* "gedlibpy.pyx":1122 + /* "gedlibpy.pyx":1141 * :rtype: double * """ * return self.c_env.getNodeRelCost(encode_your_map(node_label_1), encode_your_map(node_label_2)) # <<<<<<<<<<<<<< @@ -11618,7 +12044,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11632,12 +12058,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1122, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11651,24 +12077,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label_2) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_6 = __pyx_v_self->c_env->getNodeRelCost(__pyx_t_4, __pyx_t_5); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1122, __pyx_L1_error) + __PYX_ERR(0, 1141, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1122, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1111 + /* "gedlibpy.pyx":1130 * return self.c_env.getAvgNumNodes() * * def get_node_rel_cost(self, node_label_1, node_label_2): # <<<<<<<<<<<<<< @@ -11689,7 +12115,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_104get_node_rel_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1125 +/* "gedlibpy.pyx":1144 * * * def get_node_del_cost(self, node_label): # <<<<<<<<<<<<<< @@ -11721,7 +12147,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_ob double __pyx_t_5; __Pyx_RefNannySetupContext("get_node_del_cost", 0); - /* "gedlibpy.pyx":1134 + /* "gedlibpy.pyx":1153 * :rtype: double * """ * return self.c_env.getNodeDelCost(encode_your_map(node_label)) # <<<<<<<<<<<<<< @@ -11729,7 +12155,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1134, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11743,24 +12169,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1134, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_5 = __pyx_v_self->c_env->getNodeDelCost(__pyx_t_4); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1134, __pyx_L1_error) + __PYX_ERR(0, 1153, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1134, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1125 + /* "gedlibpy.pyx":1144 * * * def get_node_del_cost(self, node_label): # <<<<<<<<<<<<<< @@ -11781,7 +12207,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_106get_node_del_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1137 +/* "gedlibpy.pyx":1156 * * * def get_node_ins_cost(self, node_label): # <<<<<<<<<<<<<< @@ -11813,7 +12239,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_ob double __pyx_t_5; __Pyx_RefNannySetupContext("get_node_ins_cost", 0); - /* "gedlibpy.pyx":1146 + /* "gedlibpy.pyx":1165 * :rtype: double * """ * return self.c_env.getNodeInsCost(encode_your_map(node_label)) # <<<<<<<<<<<<<< @@ -11821,7 +12247,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -11835,24 +12261,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_node_label); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1146, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_5 = __pyx_v_self->c_env->getNodeInsCost(__pyx_t_4); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1146, __pyx_L1_error) + __PYX_ERR(0, 1165, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1137 + /* "gedlibpy.pyx":1156 * * * def get_node_ins_cost(self, node_label): # <<<<<<<<<<<<<< @@ -11873,7 +12299,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_108get_node_ins_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1149 +/* "gedlibpy.pyx":1168 * * * def get_median_node_label(self, node_labels): # <<<<<<<<<<<<<< @@ -11897,7 +12323,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_111get_median_node_label(PyObject *_ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_node_labels) { PyObject *__pyx_v_node_labels_b = NULL; - PyObject *__pyx_8genexpr5__pyx_v_node_label = NULL; + PyObject *__pyx_8genexpr9__pyx_v_node_label = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -11911,7 +12337,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py std::map __pyx_t_9; __Pyx_RefNannySetupContext("get_median_node_label", 0); - /* "gedlibpy.pyx":1158 + /* "gedlibpy.pyx":1177 * :rtype: dict{string : string} * """ * node_labels_b = [encode_your_map(node_label) for node_label in node_labels] # <<<<<<<<<<<<<< @@ -11919,32 +12345,32 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py * */ { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_v_node_labels)) || PyTuple_CheckExact(__pyx_v_node_labels)) { __pyx_t_2 = __pyx_v_node_labels; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_node_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_node_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1177, __pyx_L5_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1177, __pyx_L5_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1177, __pyx_L5_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -11954,15 +12380,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1158, __pyx_L5_error) + else __PYX_ERR(0, 1177, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_5); } - __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_node_label, __pyx_t_5); + __Pyx_XDECREF_SET(__pyx_8genexpr9__pyx_v_node_label, __pyx_t_5); __pyx_t_5 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1158, __pyx_L5_error) + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -11974,26 +12400,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_8genexpr5__pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_8genexpr5__pyx_v_node_label); + __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_8genexpr9__pyx_v_node_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_8genexpr9__pyx_v_node_label); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1158, __pyx_L5_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1158, __pyx_L5_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1177, __pyx_L5_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); __pyx_8genexpr5__pyx_v_node_label = 0; + __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_node_label); __pyx_8genexpr9__pyx_v_node_label = 0; goto __pyx_L8_exit_scope; __pyx_L5_error:; - __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); __pyx_8genexpr5__pyx_v_node_label = 0; + __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_node_label); __pyx_8genexpr9__pyx_v_node_label = 0; goto __pyx_L1_error; __pyx_L8_exit_scope:; } /* exit inner scope */ __pyx_v_node_labels_b = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1159 + /* "gedlibpy.pyx":1178 * """ * node_labels_b = [encode_your_map(node_label) for node_label in node_labels] * return decode_your_map(self.c_env.getMedianNodeLabel(node_labels_b)) # <<<<<<<<<<<<<< @@ -12001,16 +12427,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_v_node_labels_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1159, __pyx_L1_error) + __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_v_node_labels_b); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1178, __pyx_L1_error) try { __pyx_t_9 = __pyx_v_self->c_env->getMedianNodeLabel(__pyx_t_8); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1159, __pyx_L1_error) + __PYX_ERR(0, 1178, __pyx_L1_error) } - __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1159, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12025,14 +12451,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1149 + /* "gedlibpy.pyx":1168 * * * def get_median_node_label(self, node_labels): # <<<<<<<<<<<<<< @@ -12051,13 +12477,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_110get_median_node_label(struct __py __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_node_labels_b); - __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_node_label); + __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_node_label); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "gedlibpy.pyx":1162 +/* "gedlibpy.pyx":1181 * * * def get_edge_rel_cost(self, edge_label_1, edge_label_2): # <<<<<<<<<<<<<< @@ -12097,11 +12523,11 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_113get_edge_rel_cost(PyObject *__pyx case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_edge_label_2)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1162, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, 1); __PYX_ERR(0, 1181, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_edge_rel_cost") < 0)) __PYX_ERR(0, 1162, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_edge_rel_cost") < 0)) __PYX_ERR(0, 1181, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -12114,7 +12540,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_113get_edge_rel_cost(PyObject *__pyx } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1162, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_edge_rel_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1181, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_edge_rel_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12138,7 +12564,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_ob double __pyx_t_6; __Pyx_RefNannySetupContext("get_edge_rel_cost", 0); - /* "gedlibpy.pyx":1173 + /* "gedlibpy.pyx":1192 * :rtype: double * """ * return self.c_env.getEdgeRelCost(encode_your_map(edge_label_1), encode_your_map(edge_label_2)) # <<<<<<<<<<<<<< @@ -12146,7 +12572,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12160,12 +12586,12 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12179,24 +12605,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label_2) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_6 = __pyx_v_self->c_env->getEdgeRelCost(__pyx_t_4, __pyx_t_5); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1173, __pyx_L1_error) + __PYX_ERR(0, 1192, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1162 + /* "gedlibpy.pyx":1181 * * * def get_edge_rel_cost(self, edge_label_1, edge_label_2): # <<<<<<<<<<<<<< @@ -12217,7 +12643,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_112get_edge_rel_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1176 +/* "gedlibpy.pyx":1195 * * * def get_edge_del_cost(self, edge_label): # <<<<<<<<<<<<<< @@ -12249,7 +12675,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_ob double __pyx_t_5; __Pyx_RefNannySetupContext("get_edge_del_cost", 0); - /* "gedlibpy.pyx":1185 + /* "gedlibpy.pyx":1204 * :rtype: double * """ * return self.c_env.getEdgeDelCost(encode_your_map(edge_label)) # <<<<<<<<<<<<<< @@ -12257,7 +12683,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1185, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12271,24 +12697,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1185, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1204, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_5 = __pyx_v_self->c_env->getEdgeDelCost(__pyx_t_4); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1185, __pyx_L1_error) + __PYX_ERR(0, 1204, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1176 + /* "gedlibpy.pyx":1195 * * * def get_edge_del_cost(self, edge_label): # <<<<<<<<<<<<<< @@ -12309,7 +12735,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_114get_edge_del_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1188 +/* "gedlibpy.pyx":1207 * * * def get_edge_ins_cost(self, edge_label): # <<<<<<<<<<<<<< @@ -12341,7 +12767,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_ob double __pyx_t_5; __Pyx_RefNannySetupContext("get_edge_ins_cost", 0); - /* "gedlibpy.pyx":1197 + /* "gedlibpy.pyx":1216 * :rtype: double * """ * return self.c_env.getEdgeInsCost(encode_your_map(edge_label)) # <<<<<<<<<<<<<< @@ -12349,7 +12775,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_ob * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1197, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12363,24 +12789,24 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_ob } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_edge_label); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1197, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_map_from_py_std_3a__3a_string__and_std_3a__3a_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; try { __pyx_t_5 = __pyx_v_self->c_env->getEdgeInsCost(__pyx_t_4); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1197, __pyx_L1_error) + __PYX_ERR(0, 1216, __pyx_L1_error) } - __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1197, __pyx_L1_error) + __pyx_t_1 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1188 + /* "gedlibpy.pyx":1207 * * * def get_edge_ins_cost(self, edge_label): # <<<<<<<<<<<<<< @@ -12401,7 +12827,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_116get_edge_ins_cost(struct __pyx_ob return __pyx_r; } -/* "gedlibpy.pyx":1200 +/* "gedlibpy.pyx":1219 * * * def get_median_edge_label(self, edge_labels): # <<<<<<<<<<<<<< @@ -12425,7 +12851,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_119get_median_edge_label(PyObject *_ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_edge_labels) { CYTHON_UNUSED PyObject *__pyx_v_edge_labels_b = NULL; - PyObject *__pyx_8genexpr6__pyx_v_edge_label = NULL; + PyObject *__pyx_9genexpr10__pyx_v_edge_label = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -12439,7 +12865,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py std::map __pyx_t_9; __Pyx_RefNannySetupContext("get_median_edge_label", 0); - /* "gedlibpy.pyx":1209 + /* "gedlibpy.pyx":1228 * :rtype: dict{string : string} * """ * edge_labels_b = [encode_your_map(edge_label) for edge_label in edge_labels] # <<<<<<<<<<<<<< @@ -12447,32 +12873,32 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py * */ { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_v_edge_labels)) || PyTuple_CheckExact(__pyx_v_edge_labels)) { __pyx_t_2 = __pyx_v_edge_labels; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_edge_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_edge_labels); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1228, __pyx_L5_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1228, __pyx_L5_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1228, __pyx_L5_error) #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); #endif } @@ -12482,15 +12908,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1209, __pyx_L5_error) + else __PYX_ERR(0, 1228, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_5); } - __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_edge_label, __pyx_t_5); + __Pyx_XDECREF_SET(__pyx_9genexpr10__pyx_v_edge_label, __pyx_t_5); __pyx_t_5 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1209, __pyx_L5_error) + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_encode_your_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { @@ -12502,26 +12928,26 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py __Pyx_DECREF_SET(__pyx_t_6, function); } } - __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_8genexpr6__pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_8genexpr6__pyx_v_edge_label); + __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_9genexpr10__pyx_v_edge_label) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_9genexpr10__pyx_v_edge_label); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L5_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1209, __pyx_L5_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1228, __pyx_L5_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); __pyx_8genexpr6__pyx_v_edge_label = 0; + __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_edge_label); __pyx_9genexpr10__pyx_v_edge_label = 0; goto __pyx_L8_exit_scope; __pyx_L5_error:; - __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); __pyx_8genexpr6__pyx_v_edge_label = 0; + __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_edge_label); __pyx_9genexpr10__pyx_v_edge_label = 0; goto __pyx_L1_error; __pyx_L8_exit_scope:; } /* exit inner scope */ __pyx_v_edge_labels_b = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1210 + /* "gedlibpy.pyx":1229 * """ * edge_labels_b = [encode_your_map(edge_label) for edge_label in edge_labels] * return decode_your_map(self.c_env.getMedianEdgeLabel(edge_label_b)) # <<<<<<<<<<<<<< @@ -12529,19 +12955,19 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_edge_label_b); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_edge_label_b); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1210, __pyx_L1_error) + __pyx_t_8 = __pyx_convert_vector_from_py_std_3a__3a_map_3c_std_3a__3a_string_2c_std_3a__3a_string_3e___(__pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1229, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; try { __pyx_t_9 = __pyx_v_self->c_env->getMedianEdgeLabel(__pyx_t_8); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1210, __pyx_L1_error) + __PYX_ERR(0, 1229, __pyx_L1_error) } - __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_string(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -12556,14 +12982,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1200 + /* "gedlibpy.pyx":1219 * * * def get_median_edge_label(self, edge_labels): # <<<<<<<<<<<<<< @@ -12582,13 +13008,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_118get_median_edge_label(struct __py __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_edge_labels_b); - __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_edge_label); + __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_edge_label); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "gedlibpy.pyx":1213 +/* "gedlibpy.pyx":1232 * * * def get_nx_graph(self, graph_id, adj_matrix=True, adj_lists=False, edge_list=False): # @todo # <<<<<<<<<<<<<< @@ -12653,7 +13079,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_121get_nx_graph(PyObject *__pyx_v_se } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_nx_graph") < 0)) __PYX_ERR(0, 1213, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_nx_graph") < 0)) __PYX_ERR(0, 1232, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -12675,7 +13101,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_121get_nx_graph(PyObject *__pyx_v_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_nx_graph", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1213, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_nx_graph", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1232, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.get_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -12714,16 +13140,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge PyObject *(*__pyx_t_12)(PyObject *); __Pyx_RefNannySetupContext("get_nx_graph", 0); - /* "gedlibpy.pyx":1236 + /* "gedlibpy.pyx":1255 * The obtained graph. * """ * graph = nx.Graph() # <<<<<<<<<<<<<< * graph.graph['id'] = graph_id * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1236, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_nx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1236, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Graph); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -12738,32 +13164,32 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1236, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_graph = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1237 + /* "gedlibpy.pyx":1256 * """ * graph = nx.Graph() * graph.graph['id'] = graph_id # <<<<<<<<<<<<<< * * nb_nodes = self.get_graph_num_nodes(graph_id) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1237, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_id, __pyx_v_graph_id) < 0)) __PYX_ERR(0, 1237, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_id, __pyx_v_graph_id) < 0)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1239 + /* "gedlibpy.pyx":1258 * graph.graph['id'] = graph_id * * nb_nodes = self.get_graph_num_nodes(graph_id) # <<<<<<<<<<<<<< * original_node_ids = self.get_original_node_ids(graph_id) * node_labels = self.get_graph_node_labels(graph_id) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_num_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1239, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_num_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -12777,20 +13203,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1239, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_nb_nodes = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1240 + /* "gedlibpy.pyx":1259 * * nb_nodes = self.get_graph_num_nodes(graph_id) * original_node_ids = self.get_original_node_ids(graph_id) # <<<<<<<<<<<<<< * node_labels = self.get_graph_node_labels(graph_id) * # print(original_node_ids) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_original_node_ids); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1240, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_original_node_ids); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -12804,20 +13230,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1240, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_original_node_ids = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1241 + /* "gedlibpy.pyx":1260 * nb_nodes = self.get_graph_num_nodes(graph_id) * original_node_ids = self.get_original_node_ids(graph_id) * node_labels = self.get_graph_node_labels(graph_id) # <<<<<<<<<<<<<< * # print(original_node_ids) * # print(node_labels) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_node_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1241, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_node_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { @@ -12831,32 +13257,32 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_graph_id); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1241, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1260, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_node_labels = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1244 + /* "gedlibpy.pyx":1263 * # print(original_node_ids) * # print(node_labels) * graph.graph['original_node_ids'] = original_node_ids # <<<<<<<<<<<<<< * * for node_id in range(0, nb_nodes): */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_original_node_ids, __pyx_v_original_node_ids) < 0)) __PYX_ERR(0, 1244, __pyx_L1_error) + if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_original_node_ids, __pyx_v_original_node_ids) < 0)) __PYX_ERR(0, 1263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1246 + /* "gedlibpy.pyx":1265 * graph.graph['original_node_ids'] = original_node_ids * * for node_id in range(0, nb_nodes): # <<<<<<<<<<<<<< * graph.add_node(node_id, **node_labels[node_id]) * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] */ - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); @@ -12864,16 +13290,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_INCREF(__pyx_v_nb_nodes); __Pyx_GIVEREF(__pyx_v_nb_nodes); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_nb_nodes); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { - __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1265, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -12881,17 +13307,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1265, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1265, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1246, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -12901,7 +13327,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1246, __pyx_L1_error) + else __PYX_ERR(0, 1265, __pyx_L1_error) } break; } @@ -12910,43 +13336,43 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_XDECREF_SET(__pyx_v_node_id, __pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1247 + /* "gedlibpy.pyx":1266 * * for node_id in range(0, nb_nodes): * graph.add_node(node_id, **node_labels[node_id]) # <<<<<<<<<<<<<< * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] * */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_node_id); __Pyx_GIVEREF(__pyx_v_node_id); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_node_id); - __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_node_labels, __pyx_v_node_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_node_labels, __pyx_v_node_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (unlikely(__pyx_t_7 == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 1247, __pyx_L1_error) + __PYX_ERR(0, 1266, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_t_7))) { - __pyx_t_6 = PyDict_Copy(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_6 = PyDict_Copy(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { - __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1247, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "gedlibpy.pyx":1246 + /* "gedlibpy.pyx":1265 * graph.graph['original_node_ids'] = original_node_ids * * for node_id in range(0, nb_nodes): # <<<<<<<<<<<<<< @@ -12956,14 +13382,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1250 + /* "gedlibpy.pyx":1269 * # graph.nodes[node_id]['original_node_id'] = original_node_ids[node_id] * * edges = self.get_graph_edges(graph_id) # <<<<<<<<<<<<<< * for (head, tail), labels in edges.items(): * graph.add_edge(head, tail, **labels) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_edges); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1250, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_graph_edges); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { @@ -12977,13 +13403,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_graph_id); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_edges = __pyx_t_1; __pyx_t_1 = 0; - /* "gedlibpy.pyx":1251 + /* "gedlibpy.pyx":1270 * * edges = self.get_graph_edges(graph_id) * for (head, tail), labels in edges.items(): # <<<<<<<<<<<<<< @@ -12993,9 +13419,9 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __pyx_t_4 = 0; if (unlikely(__pyx_v_edges == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 1251, __pyx_L1_error) + __PYX_ERR(0, 1270, __pyx_L1_error) } - __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_edges, 0, __pyx_n_s_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_edges, 0, __pyx_n_s_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_7; @@ -13003,7 +13429,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge while (1) { __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_4, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_9); if (unlikely(__pyx_t_10 == 0)) break; - if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1251, __pyx_L1_error) + if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_6); if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { @@ -13012,7 +13438,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 1251, __pyx_L1_error) + __PYX_ERR(0, 1270, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -13025,15 +13451,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; - __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1251, __pyx_L1_error) + __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; @@ -13041,7 +13467,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1251, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1270, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L8_unpacking_done; @@ -13049,7 +13475,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 1251, __pyx_L1_error) + __PYX_ERR(0, 1270, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_head, __pyx_t_2); @@ -13059,16 +13485,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __Pyx_XDECREF_SET(__pyx_v_labels, __pyx_t_6); __pyx_t_6 = 0; - /* "gedlibpy.pyx":1252 + /* "gedlibpy.pyx":1271 * edges = self.get_graph_edges(graph_id) * for (head, tail), labels in edges.items(): * graph.add_edge(head, tail, **labels) # <<<<<<<<<<<<<< * # print(edges) * */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1252, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_add_edge); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1252, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_head); __Pyx_GIVEREF(__pyx_v_head); @@ -13078,16 +13504,16 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_tail); if (unlikely(__pyx_v_labels == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); - __PYX_ERR(0, 1252, __pyx_L1_error) + __PYX_ERR(0, 1271, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_labels))) { - __pyx_t_3 = PyDict_Copy(__pyx_v_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L1_error) + __pyx_t_3 = PyDict_Copy(__pyx_v_labels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { - __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_labels, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1252, __pyx_L1_error) + __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_labels, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1252, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -13096,7 +13522,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1255 + /* "gedlibpy.pyx":1274 * # print(edges) * * return graph # <<<<<<<<<<<<<< @@ -13108,7 +13534,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge __pyx_r = __pyx_v_graph; goto __pyx_L0; - /* "gedlibpy.pyx":1213 + /* "gedlibpy.pyx":1232 * * * def get_nx_graph(self, graph_id, adj_matrix=True, adj_lists=False, edge_list=False): # @todo # <<<<<<<<<<<<<< @@ -13141,7 +13567,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_120get_nx_graph(struct __pyx_obj_8ge return __pyx_r; } -/* "gedlibpy.pyx":1258 +/* "gedlibpy.pyx":1277 * * * def get_init_type(self): # <<<<<<<<<<<<<< @@ -13170,7 +13596,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8g PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_init_type", 0); - /* "gedlibpy.pyx":1267 + /* "gedlibpy.pyx":1286 * Initialization type in string. * """ * return self.c_env.getInitType().decode('utf-8') # <<<<<<<<<<<<<< @@ -13182,15 +13608,15 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8g __pyx_t_1 = __pyx_v_self->c_env->getInitType(); } catch(...) { __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1267, __pyx_L1_error) + __PYX_ERR(0, 1286, __pyx_L1_error) } - __pyx_t_2 = __Pyx_decode_cpp_string(__pyx_t_1, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1267, __pyx_L1_error) + __pyx_t_2 = __Pyx_decode_cpp_string(__pyx_t_1, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "gedlibpy.pyx":1258 + /* "gedlibpy.pyx":1277 * * * def get_init_type(self): # <<<<<<<<<<<<<< @@ -13209,7 +13635,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_122get_init_type(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":1289 +/* "gedlibpy.pyx":1308 * * * def load_nx_graph(self, nx_graph, graph_id, graph_name='', graph_class=''): # <<<<<<<<<<<<<< @@ -13257,7 +13683,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph(PyObject *__pyx_v_s case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_graph_id)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, 1); __PYX_ERR(0, 1289, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, 1); __PYX_ERR(0, 1308, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: @@ -13273,7 +13699,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph(PyObject *__pyx_v_s } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_nx_graph") < 0)) __PYX_ERR(0, 1289, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_nx_graph") < 0)) __PYX_ERR(0, 1308, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { @@ -13294,7 +13720,7 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_125load_nx_graph(PyObject *__pyx_v_s } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1289, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("load_nx_graph", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1308, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.load_nx_graph", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -13331,7 +13757,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __Pyx_RefNannySetupContext("load_nx_graph", 0); __Pyx_INCREF(__pyx_v_graph_id); - /* "gedlibpy.pyx":1312 + /* "gedlibpy.pyx":1331 * The ID of the newly loaded graph. * """ * if graph_id is None: # <<<<<<<<<<<<<< @@ -13342,14 +13768,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "gedlibpy.pyx":1313 + /* "gedlibpy.pyx":1332 * """ * if graph_id is None: * graph_id = self.add_graph(graph_name, graph_class) # <<<<<<<<<<<<<< * else: * self.clear_graph(graph_id) */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1313, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; @@ -13366,7 +13792,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_graph_name, __pyx_v_graph_class}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else @@ -13374,13 +13800,13 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_graph_name, __pyx_v_graph_class}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1313, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; @@ -13391,7 +13817,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __Pyx_INCREF(__pyx_v_graph_class); __Pyx_GIVEREF(__pyx_v_graph_class); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_graph_class); - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } @@ -13399,7 +13825,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __Pyx_DECREF_SET(__pyx_v_graph_id, __pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1312 + /* "gedlibpy.pyx":1331 * The ID of the newly loaded graph. * """ * if graph_id is None: # <<<<<<<<<<<<<< @@ -13409,7 +13835,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g goto __pyx_L3; } - /* "gedlibpy.pyx":1315 + /* "gedlibpy.pyx":1334 * graph_id = self.add_graph(graph_name, graph_class) * else: * self.clear_graph(graph_id) # <<<<<<<<<<<<<< @@ -13417,7 +13843,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g * self.add_node(graph_id, str(node), nx_graph.nodes[node]) */ /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1315, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear_graph); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { @@ -13431,29 +13857,29 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_graph_id) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_graph_id); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1315, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; - /* "gedlibpy.pyx":1316 + /* "gedlibpy.pyx":1335 * else: * self.clear_graph(graph_id) * for node in nx_graph.nodes: # <<<<<<<<<<<<<< * self.add_node(graph_id, str(node), nx_graph.nodes[node]) * for edge in nx_graph.edges: */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { - __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1335, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { @@ -13461,17 +13887,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1335, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1335, __pyx_L1_error) #else - __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1316, __pyx_L1_error) + __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } @@ -13481,7 +13907,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1316, __pyx_L1_error) + else __PYX_ERR(0, 1335, __pyx_L1_error) } break; } @@ -13490,20 +13916,20 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __Pyx_XDECREF_SET(__pyx_v_node, __pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1317 + /* "gedlibpy.pyx":1336 * self.clear_graph(graph_id) * for node in nx_graph.nodes: * self.add_node(graph_id, str(node), nx_graph.nodes[node]) # <<<<<<<<<<<<<< * for edge in nx_graph.edges: * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_node); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_node); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_nodes); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_node); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_node); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; @@ -13521,7 +13947,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_5, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13531,7 +13957,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_5, __pyx_t_11}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -13539,7 +13965,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } else #endif { - __pyx_t_12 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_12 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; @@ -13553,14 +13979,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, __pyx_t_11); __pyx_t_5 = 0; __pyx_t_11 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1316 + /* "gedlibpy.pyx":1335 * else: * self.clear_graph(graph_id) * for node in nx_graph.nodes: # <<<<<<<<<<<<<< @@ -13570,22 +13996,22 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1318 + /* "gedlibpy.pyx":1337 * for node in nx_graph.nodes: * self.add_node(graph_id, str(node), nx_graph.nodes[node]) * for edge in nx_graph.edges: # <<<<<<<<<<<<<< * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) * return graph_id */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { - __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { @@ -13593,17 +14019,17 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1337, __pyx_L1_error) #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1337, __pyx_L1_error) #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1318, __pyx_L1_error) + __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } @@ -13613,7 +14039,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 1318, __pyx_L1_error) + else __PYX_ERR(0, 1337, __pyx_L1_error) } break; } @@ -13622,30 +14048,30 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1319 + /* "gedlibpy.pyx":1338 * self.add_node(graph_id, str(node), nx_graph.nodes[node]) * for edge in nx_graph.edges: * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) # <<<<<<<<<<<<<< * return graph_id * */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_edge); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_nx_graph, __pyx_n_s_get_edge_data); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_edge, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_edge, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = NULL; __pyx_t_6 = 0; @@ -13662,7 +14088,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -13672,7 +14098,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_13, __pyx_t_14}; - __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -13680,7 +14106,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } else #endif { - __pyx_t_16 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_16 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL; @@ -13691,7 +14117,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_6, __pyx_t_14); __pyx_t_13 = 0; __pyx_t_14 = 0; - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_16, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_16, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } @@ -13711,7 +14137,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_11, __pyx_t_5, __pyx_t_12}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -13722,7 +14148,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_graph_id, __pyx_t_11, __pyx_t_5, __pyx_t_12}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; @@ -13731,7 +14157,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } else #endif { - __pyx_t_16 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_16 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_10); __pyx_t_10 = NULL; @@ -13748,14 +14174,14 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __pyx_t_11 = 0; __pyx_t_5 = 0; __pyx_t_12 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_16, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1318 + /* "gedlibpy.pyx":1337 * for node in nx_graph.nodes: * self.add_node(graph_id, str(node), nx_graph.nodes[node]) * for edge in nx_graph.edges: # <<<<<<<<<<<<<< @@ -13765,7 +14191,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "gedlibpy.pyx":1320 + /* "gedlibpy.pyx":1339 * for edge in nx_graph.edges: * self.add_edge(graph_id, str(edge[0]), str(edge[1]), nx_graph.get_edge_data(edge[0], edge[1])) * return graph_id # <<<<<<<<<<<<<< @@ -13777,7 +14203,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g __pyx_r = __pyx_v_graph_id; goto __pyx_L0; - /* "gedlibpy.pyx":1289 + /* "gedlibpy.pyx":1308 * * * def load_nx_graph(self, nx_graph, graph_id, graph_name='', graph_class=''): # <<<<<<<<<<<<<< @@ -13809,30 +14235,33 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_124load_nx_graph(struct __pyx_obj_8g return __pyx_r; } -/* "gedlibpy.pyx":1323 +/* "gedlibpy.pyx":1342 * * - * def compute_induced_cost(self, g_id, h_id): # <<<<<<<<<<<<<< + * def compute_induced_cost(self, g_id, h_id, node_map): # <<<<<<<<<<<<<< * """ * Computes the edit cost between two graphs induced by a node map. */ /* Python wrapper */ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_8gedlibpy_6GEDEnv_126compute_induced_cost[] = "\n\t\tComputes the edit cost between two graphs induced by a node map.\n\n\t\tParameters\n\t\t----------\n\t\tg_id : int\n\t\t\tID of input graph.\n\t\th_id : int\n\t\t\tID of input graph.\n\n\t\tReturns\n\t\t-------\n\t\tNone.\n\t\t\n\t\tNotes\n\t\t-----\n\t\tThe induced edit cost of the node map between `g_id` and `h_id` is implictly computed and stored in `GEDEnv::node_maps_`.\n\n\t\t"; +static char __pyx_doc_8gedlibpy_6GEDEnv_126compute_induced_cost[] = "\n\t\tComputes the edit cost between two graphs induced by a node map.\n\n\t\tParameters\n\t\t----------\n\t\tg_id : int\n\t\t\tID of input graph.\n\t\th_id : int\n\t\t\tID of input graph.\n\t\tnode_map: gklearn.ged.env.NodeMap.\n\t\t\tThe NodeMap instance whose reduced cost will be computed and re-assigned.\n\n\t\tReturns\n\t\t-------\n\t\tNone.\t\t\n\t\t"; static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_g_id = 0; PyObject *__pyx_v_h_id = 0; + PyObject *__pyx_v_node_map = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("compute_induced_cost (wrapper)", 0); { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g_id,&__pyx_n_s_h_id,0}; - PyObject* values[2] = {0,0}; + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_g_id,&__pyx_n_s_h_id,&__pyx_n_s_node_map,0}; + PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); @@ -13849,73 +14278,107 @@ static PyObject *__pyx_pw_8gedlibpy_6GEDEnv_127compute_induced_cost(PyObject *__ case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h_id)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 2, 2, 1); __PYX_ERR(0, 1323, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 3, 3, 1); __PYX_ERR(0, 1342, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node_map)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 3, 3, 2); __PYX_ERR(0, 1342, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_induced_cost") < 0)) __PYX_ERR(0, 1323, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_induced_cost") < 0)) __PYX_ERR(0, 1342, __pyx_L3_error) } - } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_g_id = values[0]; __pyx_v_h_id = values[1]; + __pyx_v_node_map = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1323, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("compute_induced_cost", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1342, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g_id, __pyx_v_h_id); + __pyx_r = __pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(((struct __pyx_obj_8gedlibpy_GEDEnv *)__pyx_v_self), __pyx_v_g_id, __pyx_v_h_id, __pyx_v_node_map); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id) { - CYTHON_UNUSED double __pyx_v_cost; +static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx_obj_8gedlibpy_GEDEnv *__pyx_v_self, PyObject *__pyx_v_g_id, PyObject *__pyx_v_h_id, PyObject *__pyx_v_node_map) { + double __pyx_v_induced_cost; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations size_t __pyx_t_1; size_t __pyx_t_2; + double __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; __Pyx_RefNannySetupContext("compute_induced_cost", 0); - /* "gedlibpy.pyx":1344 + /* "gedlibpy.pyx":1359 + * None. * """ - * - * cost = 0.0 # <<<<<<<<<<<<<< - * self.c_env.computeInducedCost(g_id, h_id) + * induced_cost = self.c_env.computeInducedCost(g_id, h_id) # <<<<<<<<<<<<<< + * node_map.set_induced_cost(induced_cost) * */ - __pyx_v_cost = 0.0; + __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1359, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1359, __pyx_L1_error) + try { + __pyx_t_3 = __pyx_v_self->c_env->computeInducedCost(__pyx_t_1, __pyx_t_2); + } catch(...) { + __Pyx_CppExn2PyErr(); + __PYX_ERR(0, 1359, __pyx_L1_error) + } + __pyx_v_induced_cost = __pyx_t_3; - /* "gedlibpy.pyx":1345 - * - * cost = 0.0 - * self.c_env.computeInducedCost(g_id, h_id) # <<<<<<<<<<<<<< + /* "gedlibpy.pyx":1360 + * """ + * induced_cost = self.c_env.computeInducedCost(g_id, h_id) + * node_map.set_induced_cost(induced_cost) # <<<<<<<<<<<<<< * * */ - __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_g_id); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1345, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_h_id); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1345, __pyx_L1_error) - try { - __pyx_v_self->c_env->computeInducedCost(__pyx_t_1, __pyx_t_2); - } catch(...) { - __Pyx_CppExn2PyErr(); - __PYX_ERR(0, 1345, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_node_map, __pyx_n_s_set_induced_cost); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_induced_cost); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); + if (likely(__pyx_t_7)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_7); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_5, function); + } } + __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1360, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1323 + /* "gedlibpy.pyx":1342 * * - * def compute_induced_cost(self, g_id, h_id): # <<<<<<<<<<<<<< + * def compute_induced_cost(self, g_id, h_id, node_map): # <<<<<<<<<<<<<< * """ * Computes the edit cost between two graphs induced by a node map. */ @@ -13924,6 +14387,10 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_126compute_induced_cost(struct __pyx __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("gedlibpy.GEDEnv.compute_induced_cost", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -14039,7 +14506,7 @@ static PyObject *__pyx_pf_8gedlibpy_6GEDEnv_130__setstate_cython__(CYTHON_UNUSED return __pyx_r; } -/* "gedlibpy.pyx":1375 +/* "gedlibpy.pyx":1390 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14080,11 +14547,11 @@ static PyObject *__pyx_pw_8gedlibpy_13EditCostError_1__init__(PyObject *__pyx_se case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1375, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1390, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1375, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1390, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -14097,7 +14564,7 @@ static PyObject *__pyx_pw_8gedlibpy_13EditCostError_1__init__(PyObject *__pyx_se } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1375, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1390, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.EditCostError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14115,16 +14582,16 @@ static PyObject *__pyx_pf_8gedlibpy_13EditCostError___init__(CYTHON_UNUSED PyObj __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "gedlibpy.pyx":1382 + /* "gedlibpy.pyx":1397 * :type message: string * """ * self.message = message # <<<<<<<<<<<<<< * * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1382, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1397, __pyx_L1_error) - /* "gedlibpy.pyx":1375 + /* "gedlibpy.pyx":1390 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14144,7 +14611,7 @@ static PyObject *__pyx_pf_8gedlibpy_13EditCostError___init__(CYTHON_UNUSED PyObj return __pyx_r; } -/* "gedlibpy.pyx":1392 +/* "gedlibpy.pyx":1407 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14185,11 +14652,11 @@ static PyObject *__pyx_pw_8gedlibpy_11MethodError_1__init__(PyObject *__pyx_self case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1392, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1407, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1392, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1407, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -14202,7 +14669,7 @@ static PyObject *__pyx_pw_8gedlibpy_11MethodError_1__init__(PyObject *__pyx_self } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1392, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1407, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.MethodError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14220,16 +14687,16 @@ static PyObject *__pyx_pf_8gedlibpy_11MethodError___init__(CYTHON_UNUSED PyObjec __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "gedlibpy.pyx":1399 + /* "gedlibpy.pyx":1414 * :type message: string * """ * self.message = message # <<<<<<<<<<<<<< * * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1399, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1414, __pyx_L1_error) - /* "gedlibpy.pyx":1392 + /* "gedlibpy.pyx":1407 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14249,7 +14716,7 @@ static PyObject *__pyx_pf_8gedlibpy_11MethodError___init__(CYTHON_UNUSED PyObjec return __pyx_r; } -/* "gedlibpy.pyx":1409 +/* "gedlibpy.pyx":1424 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14290,11 +14757,11 @@ static PyObject *__pyx_pw_8gedlibpy_9InitError_1__init__(PyObject *__pyx_self, P case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1409, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1424, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1409, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1424, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -14307,7 +14774,7 @@ static PyObject *__pyx_pw_8gedlibpy_9InitError_1__init__(PyObject *__pyx_self, P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1409, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1424, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gedlibpy.InitError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); @@ -14325,16 +14792,16 @@ static PyObject *__pyx_pf_8gedlibpy_9InitError___init__(CYTHON_UNUSED PyObject * __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "gedlibpy.pyx":1416 + /* "gedlibpy.pyx":1431 * :type message: string * """ * self.message = message # <<<<<<<<<<<<<< * * */ - if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1416, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_message, __pyx_v_message) < 0) __PYX_ERR(0, 1431, __pyx_L1_error) - /* "gedlibpy.pyx":1409 + /* "gedlibpy.pyx":1424 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< @@ -14354,7 +14821,7 @@ static PyObject *__pyx_pf_8gedlibpy_9InitError___init__(CYTHON_UNUSED PyObject * return __pyx_r; } -/* "gedlibpy.pyx":1423 +/* "gedlibpy.pyx":1438 * ######################################### * * def encode_your_map(map_u): # <<<<<<<<<<<<<< @@ -14394,19 +14861,19 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("encode_your_map", 0); - /* "gedlibpy.pyx":1435 + /* "gedlibpy.pyx":1450 * * """ * res = {} # <<<<<<<<<<<<<< * for key, value in map_u.items(): * res[key.encode('utf-8')] = value.encode('utf-8') */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1435, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1436 + /* "gedlibpy.pyx":1451 * """ * res = {} * for key, value in map_u.items(): # <<<<<<<<<<<<<< @@ -14416,9 +14883,9 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p __pyx_t_2 = 0; if (unlikely(__pyx_v_map_u == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 1436, __pyx_L1_error) + __PYX_ERR(0, 1451, __pyx_L1_error) } - __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_u, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1436, __pyx_L1_error) + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_u, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -14426,7 +14893,7 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p while (1) { __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); if (unlikely(__pyx_t_7 == 0)) break; - if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1436, __pyx_L1_error) + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); @@ -14434,14 +14901,14 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); __pyx_t_6 = 0; - /* "gedlibpy.pyx":1437 + /* "gedlibpy.pyx":1452 * res = {} * for key, value in map_u.items(): * res[key.encode('utf-8')] = value.encode('utf-8') # <<<<<<<<<<<<<< * return res * */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -14455,10 +14922,10 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p } __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1437, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1437, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { @@ -14472,16 +14939,16 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1437, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1437, __pyx_L1_error) + if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1438 + /* "gedlibpy.pyx":1453 * for key, value in map_u.items(): * res[key.encode('utf-8')] = value.encode('utf-8') * return res # <<<<<<<<<<<<<< @@ -14493,7 +14960,7 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "gedlibpy.pyx":1423 + /* "gedlibpy.pyx":1438 * ######################################### * * def encode_your_map(map_u): # <<<<<<<<<<<<<< @@ -14519,7 +14986,7 @@ static PyObject *__pyx_pf_8gedlibpy_8encode_your_map(CYTHON_UNUSED PyObject *__p return __pyx_r; } -/* "gedlibpy.pyx":1441 +/* "gedlibpy.pyx":1456 * * * def decode_your_map(map_b): # <<<<<<<<<<<<<< @@ -14559,19 +15026,19 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("decode_your_map", 0); - /* "gedlibpy.pyx":1453 + /* "gedlibpy.pyx":1468 * * """ * res = {} # <<<<<<<<<<<<<< * for key, value in map_b.items(): * res[key.decode('utf-8')] = value.decode('utf-8') */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1453, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_res = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1454 + /* "gedlibpy.pyx":1469 * """ * res = {} * for key, value in map_b.items(): # <<<<<<<<<<<<<< @@ -14581,9 +15048,9 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ __pyx_t_2 = 0; if (unlikely(__pyx_v_map_b == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 1454, __pyx_L1_error) + __PYX_ERR(0, 1469, __pyx_L1_error) } - __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1454, __pyx_L1_error) + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -14591,7 +15058,7 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ while (1) { __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); if (unlikely(__pyx_t_7 == 0)) break; - if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1454, __pyx_L1_error) + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); @@ -14599,14 +15066,14 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); __pyx_t_6 = 0; - /* "gedlibpy.pyx":1455 + /* "gedlibpy.pyx":1470 * res = {} * for key, value in map_b.items(): * res[key.decode('utf-8')] = value.decode('utf-8') # <<<<<<<<<<<<<< * return res * */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -14620,10 +15087,10 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ } __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1455, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1455, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { @@ -14637,16 +15104,16 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_kp_u_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_u_utf_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1455, __pyx_L1_error) + if (unlikely(PyDict_SetItem(__pyx_v_res, __pyx_t_5, __pyx_t_6) < 0)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1456 + /* "gedlibpy.pyx":1471 * for key, value in map_b.items(): * res[key.decode('utf-8')] = value.decode('utf-8') * return res # <<<<<<<<<<<<<< @@ -14658,7 +15125,7 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ __pyx_r = __pyx_v_res; goto __pyx_L0; - /* "gedlibpy.pyx":1441 + /* "gedlibpy.pyx":1456 * * * def decode_your_map(map_b): # <<<<<<<<<<<<<< @@ -14684,7 +15151,7 @@ static PyObject *__pyx_pf_8gedlibpy_10decode_your_map(CYTHON_UNUSED PyObject *__ return __pyx_r; } -/* "gedlibpy.pyx":1459 +/* "gedlibpy.pyx":1474 * * * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< @@ -14723,19 +15190,19 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("decode_graph_edges", 0); - /* "gedlibpy.pyx":1477 + /* "gedlibpy.pyx":1492 * This is a helper function for function `GEDEnv.get_graph_edges()`. * """ * map_edges = {} # <<<<<<<<<<<<<< * for key, value in map_edge_b.items(): * map_edges[key] = decode_your_map(value) */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1477, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_map_edges = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1478 + /* "gedlibpy.pyx":1493 * """ * map_edges = {} * for key, value in map_edge_b.items(): # <<<<<<<<<<<<<< @@ -14745,9 +15212,9 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject __pyx_t_2 = 0; if (unlikely(__pyx_v_map_edge_b == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 1478, __pyx_L1_error) + __PYX_ERR(0, 1493, __pyx_L1_error) } - __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_edge_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1478, __pyx_L1_error) + __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_map_edge_b, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -14755,7 +15222,7 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject while (1) { __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4); if (unlikely(__pyx_t_7 == 0)) break; - if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1478, __pyx_L1_error) + if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5); @@ -14763,14 +15230,14 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6); __pyx_t_6 = 0; - /* "gedlibpy.pyx":1479 + /* "gedlibpy.pyx":1494 * map_edges = {} * for key, value in map_edge_b.items(): * map_edges[key] = decode_your_map(value) # <<<<<<<<<<<<<< * return map_edges * */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1479, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_decode_your_map); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { @@ -14784,15 +15251,15 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject } __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_value); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1479, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(PyDict_SetItem(__pyx_v_map_edges, __pyx_v_key, __pyx_t_6) < 0)) __PYX_ERR(0, 1479, __pyx_L1_error) + if (unlikely(PyDict_SetItem(__pyx_v_map_edges, __pyx_v_key, __pyx_t_6) < 0)) __PYX_ERR(0, 1494, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1480 + /* "gedlibpy.pyx":1495 * for key, value in map_edge_b.items(): * map_edges[key] = decode_your_map(value) * return map_edges # <<<<<<<<<<<<<< @@ -14804,7 +15271,7 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject __pyx_r = __pyx_v_map_edges; goto __pyx_L0; - /* "gedlibpy.pyx":1459 + /* "gedlibpy.pyx":1474 * * * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< @@ -14829,7 +15296,7 @@ static PyObject *__pyx_pf_8gedlibpy_12decode_graph_edges(CYTHON_UNUSED PyObject return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -14878,7 +15345,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 * * cdef int i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -14887,7 +15354,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 * cdef int i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -14896,7 +15363,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -14905,7 +15372,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14919,7 +15386,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4_bool_binop_done; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14930,7 +15397,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14939,7 +15406,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -14952,7 +15419,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 272, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 * ndim = PyArray_NDIM(self) * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14961,7 +15428,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14975,7 +15442,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L7_bool_binop_done; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -14986,7 +15453,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -14995,7 +15462,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -15008,7 +15475,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 276, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -15017,7 +15484,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -15026,7 +15493,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -15035,7 +15502,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15045,7 +15512,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) # <<<<<<<<<<<<<< @@ -15054,7 +15521,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim)))); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 * # This is allocated as one block, strides first. * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -15063,7 +15530,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 * info.strides = PyObject_Malloc(sizeof(Py_ssize_t) * 2 * ndim) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15075,7 +15542,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":286 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -15084,7 +15551,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":287 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -15094,7 +15561,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15104,7 +15571,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":289 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -15114,7 +15581,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -15125,7 +15592,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L9:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -15134,7 +15601,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -15143,7 +15610,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -15152,7 +15619,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":296 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -15161,7 +15628,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":297 * cdef int t * cdef char* f = NULL * cdef dtype descr = PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -15174,7 +15641,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":300 * cdef int offset * * info.obj = self # <<<<<<<<<<<<<< @@ -15187,7 +15654,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.obj = self * * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< @@ -15197,7 +15664,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":303 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":303 * * if not PyDataType_HASFIELDS(descr): * t = descr.type_num # <<<<<<<<<<<<<< @@ -15207,7 +15674,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15227,7 +15694,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L15_next_or:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":305 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -15244,7 +15711,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L14_bool_binop_done:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15253,7 +15720,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (unlikely(__pyx_t_1)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -15266,7 +15733,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 306, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":304 * if not PyDataType_HASFIELDS(descr): * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -15275,7 +15742,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":307 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -15288,7 +15755,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_UBYTE: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":308 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -15299,7 +15766,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_SHORT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":309 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -15310,7 +15777,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_USHORT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":310 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -15321,7 +15788,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_INT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":311 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -15332,7 +15799,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_UINT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":312 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":312 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -15343,7 +15810,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONG: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":313 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":313 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -15354,7 +15821,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_ULONG: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":314 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":314 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -15365,7 +15832,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONGLONG: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":315 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":315 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -15376,7 +15843,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_ULONGLONG: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":316 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":316 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -15387,7 +15854,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_FLOAT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":317 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":317 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -15398,7 +15865,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_DOUBLE: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":318 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":318 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -15409,7 +15876,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_LONGDOUBLE: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":319 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":319 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -15420,7 +15887,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CFLOAT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":320 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":320 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -15431,7 +15898,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CDOUBLE: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":321 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":321 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -15442,7 +15909,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_CLONGDOUBLE: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":322 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":322 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -15453,7 +15920,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; case NPY_OBJECT: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":323 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":323 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -15464,7 +15931,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":325 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":325 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -15485,7 +15952,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":326 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":326 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -15494,7 +15961,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":327 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":327 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -15504,7 +15971,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":302 * info.obj = self * * if not PyDataType_HASFIELDS(descr): # <<<<<<<<<<<<<< @@ -15513,7 +15980,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":329 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":329 * return * else: * info.format = PyObject_Malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -15523,7 +15990,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF)); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":330 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":330 * else: * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -15532,7 +15999,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":331 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":331 * info.format = PyObject_Malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -15541,7 +16008,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":332 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":332 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -15551,7 +16018,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error) __pyx_v_f = __pyx_t_9; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":335 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":335 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -15561,7 +16028,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -15593,7 +16060,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15617,7 +16084,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -15627,7 +16094,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":339 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":339 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) # <<<<<<<<<<<<<< @@ -15636,7 +16103,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->format); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":338 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -15645,7 +16112,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15655,7 +16122,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":341 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":341 * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * PyObject_Free(info.strides) # <<<<<<<<<<<<<< @@ -15664,7 +16131,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ PyObject_Free(__pyx_v_info->strides); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":340 * if PyArray_HASFIELDS(self): * PyObject_Free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -15673,7 +16140,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":337 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -15685,7 +16152,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15699,7 +16166,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -15713,7 +16180,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -15732,7 +16199,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15746,7 +16213,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":825 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -15760,7 +16227,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":824 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -15779,7 +16246,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15793,7 +16260,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -15807,7 +16274,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -15826,7 +16293,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15840,7 +16307,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -15854,7 +16321,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -15873,7 +16340,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15887,7 +16354,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -15901,7 +16368,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -15920,7 +16387,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -15934,7 +16401,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ int __pyx_t_1; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -15944,7 +16411,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -15956,7 +16423,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -15965,7 +16432,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -15979,7 +16446,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -15994,7 +16461,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -16023,7 +16490,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":847 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -16032,7 +16499,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":848 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":848 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -16041,7 +16508,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16064,7 +16531,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":852 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -16081,7 +16548,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":853 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -16116,7 +16583,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -16133,7 +16600,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (unlikely(__pyx_t_6)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -16146,7 +16613,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 856, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":855 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -16155,7 +16622,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16175,7 +16642,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":859 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -16192,7 +16659,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16201,7 +16668,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (unlikely(__pyx_t_6)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":860 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -16214,7 +16681,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(2, 860, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":858 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -16223,7 +16690,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":870 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":870 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -16239,7 +16706,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":871 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":871 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -16248,7 +16715,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":872 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":872 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -16257,7 +16724,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":873 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -16268,7 +16735,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":875 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":875 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -16278,7 +16745,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16288,7 +16755,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":878 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":878 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -16300,7 +16767,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -16310,7 +16777,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (unlikely(__pyx_t_6)) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -16323,7 +16790,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(2, 880, __pyx_L1_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":879 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -16332,7 +16799,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":883 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":883 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -16350,7 +16817,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":884 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":884 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -16368,7 +16835,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":885 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":885 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -16386,7 +16853,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":886 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":886 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -16404,7 +16871,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":887 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":887 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -16422,7 +16889,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":888 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":888 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -16440,7 +16907,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":889 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":889 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -16458,7 +16925,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":890 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":890 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -16476,7 +16943,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":891 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":891 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -16494,7 +16961,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":892 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":892 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -16512,7 +16979,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":893 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":893 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -16530,7 +16997,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":894 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":894 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -16548,7 +17015,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":895 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":895 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -16566,7 +17033,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":896 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":896 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -16586,7 +17053,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":897 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":897 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -16606,7 +17073,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":898 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":898 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -16626,7 +17093,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":899 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":899 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -16644,7 +17111,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":901 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":901 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -16663,7 +17130,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":902 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":902 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -16672,7 +17139,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":877 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -16682,7 +17149,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":906 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":906 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -16695,7 +17162,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":851 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -16705,7 +17172,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":907 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":907 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -16715,7 +17182,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 * return () * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -16740,7 +17207,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -16752,7 +17219,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_array_base", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1023 * * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -16761,7 +17228,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1024 * cdef inline void set_array_base(ndarray arr, object base): * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -16770,7 +17237,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1022 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -16782,7 +17249,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16797,7 +17264,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1027 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1027 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -16806,7 +17273,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -16816,7 +17283,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_base == NULL) != 0); if (__pyx_t_1) { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1029 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1029 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -16827,7 +17294,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1028 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -16836,7 +17303,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1030 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1030 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -16848,7 +17315,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1026 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -16863,7 +17330,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -16884,7 +17351,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16900,7 +17367,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1036 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1036 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< @@ -16909,7 +17376,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16923,7 +17390,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1037 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1037 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -16938,7 +17405,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -16954,7 +17421,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1035 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -16969,7 +17436,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1034 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -16992,7 +17459,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17013,7 +17480,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17029,7 +17496,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1042 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1042 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -17038,7 +17505,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17052,7 +17519,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1043 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1043 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17067,7 +17534,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -17083,7 +17550,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1041 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -17098,7 +17565,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1040 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -17121,7 +17588,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 +/* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -17142,7 +17609,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17158,7 +17625,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1048 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1048 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -17167,7 +17634,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error) - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17181,7 +17648,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1049 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1049 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -17195,7 +17662,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1050 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1050 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -17209,7 +17676,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1047 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -17224,7 +17691,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1046 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -19859,8 +20326,14 @@ static int __pyx_import_star_set(PyObject *o, PyObject* py_name, char *name) { "UINT32_t", "X", "Y", - "__pyx_ctuple_dbc1b__c5621__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc", - "__pyx_ctuple_dbc1b__c5621__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc_struct", + "__pyx_ctuple_1ac95__89cad__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc", + "__pyx_ctuple_1ac95__89cad__std__in_map__lAngstd__in_pair__lAngsize_t__comma_size_t__rAng__comma_std__in_map__lAngstd__in_string__comma_std__in_string__rAng__rAng__etc__etc_struct", + "__pyx_ctuple_Py_ssize_t", + "__pyx_ctuple_Py_ssize_t__and_Py_ssize_t", + "__pyx_ctuple_Py_ssize_t__and_Py_ssize_t_struct", + "__pyx_ctuple_Py_ssize_t_struct", + "__pyx_ctuple_double", + "__pyx_ctuple_double_struct", "__pyx_ctuple_size_t", "__pyx_ctuple_size_t__space___const___and_size_t__space___const_", "__pyx_ctuple_size_t__space___const___and_size_t__space___const__struct", @@ -20067,6 +20540,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1}, {&__pyx_n_s_MethodError, __pyx_k_MethodError, sizeof(__pyx_k_MethodError), 0, 0, 1, 1}, {&__pyx_n_s_MethodError___init, __pyx_k_MethodError___init, sizeof(__pyx_k_MethodError___init), 0, 0, 1, 1}, + {&__pyx_n_s_NodeMap, __pyx_k_NodeMap, sizeof(__pyx_k_NodeMap), 0, 0, 1, 1}, {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0}, {&__pyx_kp_u_Number_of_graphs, __pyx_k_Number_of_graphs, sizeof(__pyx_k_Number_of_graphs), 0, 1, 0, 0}, {&__pyx_kp_u_Please_don_t_restart_the_environ, __pyx_k_Please_don_t_restart_the_environ, sizeof(__pyx_k_Please_don_t_restart_the_environ), 0, 1, 0, 0}, @@ -20077,6 +20551,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_n_s__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 0, 1, 1}, + {&__pyx_n_s_add_assignment, __pyx_k_add_assignment, sizeof(__pyx_k_add_assignment), 0, 0, 1, 1}, {&__pyx_n_s_add_edge, __pyx_k_add_edge, sizeof(__pyx_k_add_edge), 0, 0, 1, 1}, {&__pyx_n_s_add_graph, __pyx_k_add_graph, sizeof(__pyx_k_add_graph), 0, 0, 1, 1}, {&__pyx_n_s_add_node, __pyx_k_add_node, sizeof(__pyx_k_add_node), 0, 0, 1, 1}, @@ -20125,6 +20600,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_get_original_node_ids, __pyx_k_get_original_node_ids, sizeof(__pyx_k_get_original_node_ids), 0, 0, 1, 1}, {&__pyx_n_s_get_upper_bound, __pyx_k_get_upper_bound, sizeof(__pyx_k_get_upper_bound), 0, 0, 1, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, + {&__pyx_n_s_gklearn_ged_env, __pyx_k_gklearn_ged_env, sizeof(__pyx_k_gklearn_ged_env), 0, 0, 1, 1}, {&__pyx_n_s_graph, __pyx_k_graph, sizeof(__pyx_k_graph), 0, 0, 1, 1}, {&__pyx_n_s_graph_class, __pyx_k_graph_class, sizeof(__pyx_k_graph_class), 0, 0, 1, 1}, {&__pyx_n_s_graph_id, __pyx_k_graph_id, sizeof(__pyx_k_graph_id), 0, 0, 1, 1}, @@ -20136,6 +20612,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_u_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 1, 0, 1}, {&__pyx_n_s_ignore_duplicates, __pyx_k_ignore_duplicates, sizeof(__pyx_k_ignore_duplicates), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, + {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1}, {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1}, {&__pyx_n_s_init_method, __pyx_k_init_method, sizeof(__pyx_k_init_method), 0, 0, 1, 1}, @@ -20177,8 +20654,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_node_label, __pyx_k_node_label, sizeof(__pyx_k_node_label), 0, 0, 1, 1}, {&__pyx_n_s_node_label_1, __pyx_k_node_label_1, sizeof(__pyx_k_node_label_1), 0, 0, 1, 1}, {&__pyx_n_s_node_label_2, __pyx_k_node_label_2, sizeof(__pyx_k_node_label_2), 0, 0, 1, 1}, + {&__pyx_n_s_node_map, __pyx_k_node_map, sizeof(__pyx_k_node_map), 0, 0, 1, 1}, {&__pyx_n_s_node_type, __pyx_k_node_type, sizeof(__pyx_k_node_type), 0, 0, 1, 1}, {&__pyx_n_s_nodes, __pyx_k_nodes, sizeof(__pyx_k_nodes), 0, 0, 1, 1}, + {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, + {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, {&__pyx_kp_u_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 1, 0, 0}, {&__pyx_kp_u_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 1, 0, 0}, {&__pyx_n_s_nx, __pyx_k_nx, sizeof(__pyx_k_nx), 0, 0, 1, 1}, @@ -20204,6 +20684,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_run_method, __pyx_k_run_method, sizeof(__pyx_k_run_method), 0, 0, 1, 1}, {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1}, {&__pyx_n_s_set_edit_cost, __pyx_k_set_edit_cost, sizeof(__pyx_k_set_edit_cost), 0, 0, 1, 1}, + {&__pyx_n_s_set_induced_cost, __pyx_k_set_induced_cost, sizeof(__pyx_k_set_induced_cost), 0, 0, 1, 1}, {&__pyx_n_s_set_method, __pyx_k_set_method, sizeof(__pyx_k_set_method), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, @@ -20216,8 +20697,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 958, __pyx_L1_error) - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 975, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 750, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 977, __pyx_L1_error) __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(2, 272, __pyx_L1_error) __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(2, 856, __pyx_L1_error) @@ -20232,80 +20713,80 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "gedlibpy.pyx":958 + /* "gedlibpy.pyx":977 * self.restart_env() * * print("Loading graphs in progress...") # <<<<<<<<<<<<<< * for graph in dataset : * self.add_nx_graph(graph, classes) */ - __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Loading_graphs_in_progress); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 958, __pyx_L1_error) + __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Loading_graphs_in_progress); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 977, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "gedlibpy.pyx":962 + /* "gedlibpy.pyx":981 * self.add_nx_graph(graph, classes) * listID = self.graph_ids() * print("Graphs loaded ! ") # <<<<<<<<<<<<<< * print("Number of graphs = " + str(listID[1])) * */ - __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Graphs_loaded); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 962, __pyx_L1_error) + __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Graphs_loaded); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "gedlibpy.pyx":966 + /* "gedlibpy.pyx":985 * * self.set_edit_cost(edit_cost) * print("Initialization in progress...") # <<<<<<<<<<<<<< * self.init(init_option) * print("Initialization terminated !") */ - __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Initialization_in_progress); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 966, __pyx_L1_error) + __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Initialization_in_progress); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 985, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "gedlibpy.pyx":968 + /* "gedlibpy.pyx":987 * print("Initialization in progress...") * self.init(init_option) * print("Initialization terminated !") # <<<<<<<<<<<<<< * * self.set_method(method, options) */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Initialization_terminated); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 968, __pyx_L1_error) + __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Initialization_terminated); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 987, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "gedlibpy.pyx":983 + /* "gedlibpy.pyx":1002 * resMapping[g][h] = self.get_node_map(g, h) * * print("Finish ! The return contains edit distances and NodeMap but you can check the result with graphs'ID until you restart the environment") # <<<<<<<<<<<<<< * return resDistance, resMapping * */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Finish_The_return_contains_edit); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 983, __pyx_L1_error) + __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_u_Finish_The_return_contains_edit); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1002, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "gedlibpy.pyx":1038 + /* "gedlibpy.pyx":1057 * #return res * * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") # <<<<<<<<<<<<<< * print ("Please don't restart the environment or recall this function, you will lose your results !") * return listID */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Finish_You_can_check_the_result); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1038, __pyx_L1_error) + __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_Finish_You_can_check_the_result); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1057, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "gedlibpy.pyx":1039 + /* "gedlibpy.pyx":1058 * * print ("Finish ! You can check the result with each ID of graphs ! There are in the return") * print ("Please don't restart the environment or recall this function, you will lose your results !") # <<<<<<<<<<<<<< * return listID * */ - __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Please_don_t_restart_the_environ); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1039, __pyx_L1_error) + __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Please_don_t_restart_the_environ); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); @@ -20328,7 +20809,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -20339,7 +20820,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -20350,7 +20831,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":306 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -20361,7 +20842,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":856 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -20372,7 +20853,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":880 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -20383,7 +20864,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1038 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -20394,7 +20875,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); - /* "../../../../../../../../../home/ljia/.local/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 + /* "../../virtualenv/v0.2_latest_requirements_versions/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1044 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -20405,122 +20886,122 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); - /* "gedlibpy.pyx":126 + /* "gedlibpy.pyx":128 * * * def get_edit_cost_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents edit cost functions and returns the result. */ - __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_edit_cost_options, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_edit_cost_options, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 128, __pyx_L1_error) - /* "gedlibpy.pyx":140 + /* "gedlibpy.pyx":142 * * * def get_method_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents method for edit distance computation between graphs and returns the result. */ - __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 140, __pyx_L1_error) + __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_method_options, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 140, __pyx_L1_error) + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_method_options, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 142, __pyx_L1_error) - /* "gedlibpy.pyx":153 + /* "gedlibpy.pyx":155 * * * def get_init_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. */ - __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_option); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_init_options, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_init_options, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 155, __pyx_L1_error) - /* "gedlibpy.pyx":166 + /* "gedlibpy.pyx":168 * * * def get_dummy_node() : # <<<<<<<<<<<<<< * """ * Returns the ID of a dummy node. */ - __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_dummy_node, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 166, __pyx_L1_error) + __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_get_dummy_node, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 168, __pyx_L1_error) - /* "gedlibpy.pyx":1375 + /* "gedlibpy.pyx":1390 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1375, __pyx_L1_error) + __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); - __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1375, __pyx_L1_error) + __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1390, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 1390, __pyx_L1_error) - /* "gedlibpy.pyx":1392 + /* "gedlibpy.pyx":1407 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1392, __pyx_L1_error) + __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1407, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); - __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 1392, __pyx_L1_error) + __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1407, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 1407, __pyx_L1_error) - /* "gedlibpy.pyx":1409 + /* "gedlibpy.pyx":1424 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_tuple__32 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1409, __pyx_L1_error) + __pyx_tuple__32 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1424, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32); - __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 1409, __pyx_L1_error) + __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_init_2, 1424, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 1424, __pyx_L1_error) - /* "gedlibpy.pyx":1423 + /* "gedlibpy.pyx":1438 * ######################################### * * def encode_your_map(map_u): # <<<<<<<<<<<<<< * """ * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. */ - __pyx_tuple__34 = PyTuple_Pack(4, __pyx_n_s_map_u, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1423, __pyx_L1_error) + __pyx_tuple__34 = PyTuple_Pack(4, __pyx_n_s_map_u, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); - __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_encode_your_map, 1423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1423, __pyx_L1_error) + __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_encode_your_map, 1438, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 1438, __pyx_L1_error) - /* "gedlibpy.pyx":1441 + /* "gedlibpy.pyx":1456 * * * def decode_your_map(map_b): # <<<<<<<<<<<<<< * """ * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. */ - __pyx_tuple__36 = PyTuple_Pack(4, __pyx_n_s_map_b, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1441, __pyx_L1_error) + __pyx_tuple__36 = PyTuple_Pack(4, __pyx_n_s_map_b, __pyx_n_s_res, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1456, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); - __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_your_map, 1441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1441, __pyx_L1_error) + __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_your_map, 1456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 1456, __pyx_L1_error) - /* "gedlibpy.pyx":1459 + /* "gedlibpy.pyx":1474 * * * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< * """ * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. */ - __pyx_tuple__38 = PyTuple_Pack(4, __pyx_n_s_map_edge_b, __pyx_n_s_map_edges, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1459, __pyx_L1_error) + __pyx_tuple__38 = PyTuple_Pack(4, __pyx_n_s_map_edge_b, __pyx_n_s_map_edges, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1474, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); - __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_graph_edges, 1459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1459, __pyx_L1_error) + __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_gedlibpy_pyx, __pyx_n_s_decode_graph_edges, 1474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 1474, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -20572,15 +21053,15 @@ static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + if (PyType_Ready(&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 180, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8gedlibpy_GEDEnv.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8gedlibpy_GEDEnv.tp_dictoffset && __pyx_type_8gedlibpy_GEDEnv.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8gedlibpy_GEDEnv.tp_getattro = __Pyx_PyObject_GenericGetAttr; } - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GEDEnv, (PyObject *)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 178, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GEDEnv, (PyObject *)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 180, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8gedlibpy_GEDEnv) < 0) __PYX_ERR(0, 180, __pyx_L1_error) __pyx_ptype_8gedlibpy_GEDEnv = &__pyx_type_8gedlibpy_GEDEnv; __Pyx_RefNannyFinishContext(); return 0; @@ -20861,563 +21342,596 @@ if (!__Pyx_RefNanny) { /* "gedlibpy.pyx":115 * ############################# * + * import numpy as np # <<<<<<<<<<<<<< + * import networkx as nx + * from gklearn.ged.env import NodeMap + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":116 + * + * import numpy as np * import networkx as nx # <<<<<<<<<<<<<< + * from gklearn.ged.env import NodeMap + * + */ + __pyx_t_1 = __Pyx_Import(__pyx_n_s_networkx, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_nx, __pyx_t_1) < 0) __PYX_ERR(0, 116, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gedlibpy.pyx":117 + * import numpy as np + * import networkx as nx + * from gklearn.ged.env import NodeMap # <<<<<<<<<<<<<< * * # import librariesImport */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_networkx, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_n_s_NodeMap); + __Pyx_GIVEREF(__pyx_n_s_NodeMap); + PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_NodeMap); + __pyx_t_2 = __Pyx_Import(__pyx_n_s_gklearn_ged_env, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_NodeMap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_nx, __pyx_t_1) < 0) __PYX_ERR(0, 115, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_NodeMap, __pyx_t_1) < 0) __PYX_ERR(0, 117, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "gedlibpy.pyx":118 + /* "gedlibpy.pyx":120 * * # import librariesImport * from ctypes import * # <<<<<<<<<<<<<< * import os * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s__20); __Pyx_GIVEREF(__pyx_n_s__20); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s__20); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_ctypes, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_import_star(__pyx_t_2) < 0) __PYX_ERR(0, 118, __pyx_L1_error); + PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s__20); + __pyx_t_1 = __Pyx_Import(__pyx_n_s_ctypes, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_import_star(__pyx_t_1) < 0) __PYX_ERR(0, 120, __pyx_L1_error); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":119 + /* "gedlibpy.pyx":121 * # import librariesImport * from ctypes import * * import os # <<<<<<<<<<<<<< * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') */ - __pyx_t_2 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(0, 119, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":120 + /* "gedlibpy.pyx":122 * from ctypes import * * import os * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') # <<<<<<<<<<<<<< * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cdll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cdll); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_fann_libdoublefann_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_fann_libdoublefann_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib1, __pyx_t_4) < 0) __PYX_ERR(0, 120, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib1, __pyx_t_4) < 0) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":121 + /* "gedlibpy.pyx":123 * import os * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') # <<<<<<<<<<<<<< * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_realpath); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_realpath); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_u_lib_libsvm_3_22_libsvm_so); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_kp_u_lib_libsvm_3_22_libsvm_so); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib2, __pyx_t_2) < 0) __PYX_ERR(0, 121, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib2, __pyx_t_1) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":122 + /* "gedlibpy.pyx":124 * lib1 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/fann/libdoublefann.so') * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') # <<<<<<<<<<<<<< * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cdll); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cdll); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_realpath); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_nomad_libnomad_so); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_kp_u_lib_nomad_libnomad_so); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 122, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib3, __pyx_t_4) < 0) __PYX_ERR(0, 122, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib3, __pyx_t_4) < 0) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":123 + /* "gedlibpy.pyx":125 * lib2 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/libsvm.3.22/libsvm.so') * lib3 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libnomad.so') * lib4 = cdll.LoadLibrary(os.path.dirname(os.path.realpath(__file__)) + '/lib/nomad/libsgtelib.so') # <<<<<<<<<<<<<< * * */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_cdll); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LoadLibrary); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dirname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_realpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_file); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_kp_u_lib_nomad_libsgtelib_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_u_lib_nomad_libsgtelib_so); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib4, __pyx_t_2) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_lib4, __pyx_t_1) < 0) __PYX_ERR(0, 125, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":126 + /* "gedlibpy.pyx":128 * * * def get_edit_cost_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents edit cost functions and returns the result. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_1get_edit_cost_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_edit_cost_options, __pyx_t_2) < 0) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_1get_edit_cost_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_edit_cost_options, __pyx_t_1) < 0) __PYX_ERR(0, 128, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":140 + /* "gedlibpy.pyx":142 * * * def get_method_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents method for edit distance computation between graphs and returns the result. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_3get_method_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_method_options, __pyx_t_2) < 0) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_3get_method_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_method_options, __pyx_t_1) < 0) __PYX_ERR(0, 142, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":153 + /* "gedlibpy.pyx":155 * * * def get_init_options() : # <<<<<<<<<<<<<< * """ * Searchs the differents initialization parameters for the environment computation for graphs and returns the result. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_5get_init_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_init_options, __pyx_t_2) < 0) __PYX_ERR(0, 153, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_5get_init_options, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_init_options, __pyx_t_1) < 0) __PYX_ERR(0, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":166 + /* "gedlibpy.pyx":168 * * * def get_dummy_node() : # <<<<<<<<<<<<<< * """ * Returns the ID of a dummy node. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_7get_dummy_node, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_dummy_node, __pyx_t_2) < 0) __PYX_ERR(0, 166, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_7get_dummy_node, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_dummy_node, __pyx_t_1) < 0) __PYX_ERR(0, 168, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":483 + /* "gedlibpy.pyx":485 * * * def set_edit_cost(self, edit_cost, edit_cost_constant = []) : # <<<<<<<<<<<<<< * """ * Sets an edit cost function to the environment, if it exists. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 483, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_k__2 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 485, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_k__2 = __pyx_t_1; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; - /* "gedlibpy.pyx":502 + /* "gedlibpy.pyx":504 * * * def set_personal_edit_cost(self, edit_cost_constant = []) : # <<<<<<<<<<<<<< * """ * Sets an personal edit cost function to the environment. */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_k__3 = __pyx_t_2; - __Pyx_GIVEREF(__pyx_t_2); - __pyx_t_2 = 0; + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_k__3 = __pyx_t_1; + __Pyx_GIVEREF(__pyx_t_1); + __pyx_t_1 = 0; - /* "gedlibpy.pyx":1352 + /* "gedlibpy.pyx":1367 * ##################################################################### * * list_of_edit_cost_options = get_edit_cost_options() # <<<<<<<<<<<<<< * list_of_method_options = get_method_options() * list_of_init_options = get_init_options() */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_edit_cost_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1352, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1352, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_edit_cost_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1367, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_edit_cost_options, __pyx_t_5) < 0) __PYX_ERR(0, 1352, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_edit_cost_options, __pyx_t_5) < 0) __PYX_ERR(0, 1367, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "gedlibpy.pyx":1353 + /* "gedlibpy.pyx":1368 * * list_of_edit_cost_options = get_edit_cost_options() * list_of_method_options = get_method_options() # <<<<<<<<<<<<<< * list_of_init_options = get_init_options() * */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_method_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1353, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_get_method_options); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_method_options, __pyx_t_2) < 0) __PYX_ERR(0, 1353, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_method_options, __pyx_t_1) < 0) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1354 + /* "gedlibpy.pyx":1369 * list_of_edit_cost_options = get_edit_cost_options() * list_of_method_options = get_method_options() * list_of_init_options = get_init_options() # <<<<<<<<<<<<<< * * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_init_options); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1354, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1354, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_get_init_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1369, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_init_options, __pyx_t_5) < 0) __PYX_ERR(0, 1354, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (PyDict_SetItem(__pyx_d, __pyx_n_s_list_of_init_options, __pyx_t_5) < 0) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "gedlibpy.pyx":1361 + /* "gedlibpy.pyx":1376 * ##################### * * class Error(Exception): # <<<<<<<<<<<<<< * """ * Class for error's management. This one is general. */ - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1361, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_Error, __pyx_n_s_Error, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_error_s_management_Th); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1361, __pyx_L1_error) + __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Error, __pyx_t_5, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1361, __pyx_L1_error) + __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_5, __pyx_n_s_Error, __pyx_n_s_Error, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_error_s_management_Th); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1376, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Error, __pyx_t_5, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_Error, __pyx_t_4) < 0) __PYX_ERR(0, 1361, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_Error, __pyx_t_4) < 0) __PYX_ERR(0, 1376, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "gedlibpy.pyx":1368 + /* "gedlibpy.pyx":1383 * * * class EditCostError(Error) : # <<<<<<<<<<<<<< * """ * Class for Edit Cost Error. Raise an error if an edit cost function doesn't exist in the library (not in list_of_edit_cost_options). */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1368, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1368, __pyx_L1_error) + __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_2, __pyx_n_s_EditCostError, __pyx_n_s_EditCostError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Edit_Cost_Error_Raise); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1368, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_1, __pyx_n_s_EditCostError, __pyx_n_s_EditCostError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Edit_Cost_Error_Raise); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); - /* "gedlibpy.pyx":1375 + /* "gedlibpy.pyx":1390 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_13EditCostError_1__init__, 0, __pyx_n_s_EditCostError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1375, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_13EditCostError_1__init__, 0, __pyx_n_s_EditCostError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1375, __pyx_L1_error) + if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1368 + /* "gedlibpy.pyx":1383 * * * class EditCostError(Error) : # <<<<<<<<<<<<<< * """ * Class for Edit Cost Error. Raise an error if an edit cost function doesn't exist in the library (not in list_of_edit_cost_options). */ - __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_EditCostError, __pyx_t_2, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1368, __pyx_L1_error) + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_EditCostError, __pyx_t_1, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_EditCostError, __pyx_t_4) < 0) __PYX_ERR(0, 1368, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_EditCostError, __pyx_t_4) < 0) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1385 + /* "gedlibpy.pyx":1400 * * * class MethodError(Error) : # <<<<<<<<<<<<<< * """ * Class for Method Error. Raise an error if a computation method doesn't exist in the library (not in list_of_method_options). */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_n_s_MethodError, __pyx_n_s_MethodError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Method_Error_Raise_an); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); + __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_5, __pyx_n_s_MethodError, __pyx_n_s_MethodError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Method_Error_Raise_an); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1400, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); - /* "gedlibpy.pyx":1392 + /* "gedlibpy.pyx":1407 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_11MethodError_1__init__, 0, __pyx_n_s_MethodError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1392, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_11MethodError_1__init__, 0, __pyx_n_s_MethodError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1392, __pyx_L1_error) + if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1407, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1385 + /* "gedlibpy.pyx":1400 * * * class MethodError(Error) : # <<<<<<<<<<<<<< * """ * Class for Method Error. Raise an error if a computation method doesn't exist in the library (not in list_of_method_options). */ - __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MethodError, __pyx_t_5, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error) + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MethodError, __pyx_t_5, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_MethodError, __pyx_t_4) < 0) __PYX_ERR(0, 1385, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_MethodError, __pyx_t_4) < 0) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "gedlibpy.pyx":1402 + /* "gedlibpy.pyx":1417 * * * class InitError(Error) : # <<<<<<<<<<<<<< * """ * Class for Init Error. Raise an error if an init option doesn't exist in the library (not in list_of_init_options). */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1417, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); + PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error) + __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_2, __pyx_n_s_InitError, __pyx_n_s_InitError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Init_Error_Raise_an_e); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1402, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_1, __pyx_n_s_InitError, __pyx_n_s_InitError, (PyObject *) NULL, __pyx_n_s_gedlibpy, __pyx_kp_s_Class_for_Init_Error_Raise_an_e); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); - /* "gedlibpy.pyx":1409 + /* "gedlibpy.pyx":1424 * :type message: string * """ * def __init__(self, message): # <<<<<<<<<<<<<< * """ * Inits the error with its message. */ - __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_9InitError_1__init__, 0, __pyx_n_s_InitError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1409, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_8gedlibpy_9InitError_1__init__, 0, __pyx_n_s_InitError___init, NULL, __pyx_n_s_gedlibpy, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetNameInClass(__pyx_t_1, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1409, __pyx_L1_error) + if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_init_2, __pyx_t_4) < 0) __PYX_ERR(0, 1424, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "gedlibpy.pyx":1402 + /* "gedlibpy.pyx":1417 * * * class InitError(Error) : # <<<<<<<<<<<<<< * """ * Class for Init Error. Raise an error if an init option doesn't exist in the library (not in list_of_init_options). */ - __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_InitError, __pyx_t_2, __pyx_t_1, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error) + __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_InitError, __pyx_t_1, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_InitError, __pyx_t_4) < 0) __PYX_ERR(0, 1402, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_InitError, __pyx_t_4) < 0) __PYX_ERR(0, 1417, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1423 + /* "gedlibpy.pyx":1438 * ######################################### * * def encode_your_map(map_u): # <<<<<<<<<<<<<< * """ * Encodes Python unicode strings in dictionnary `map` to utf-8 byte strings for C++ functions. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_9encode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1423, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_encode_your_map, __pyx_t_2) < 0) __PYX_ERR(0, 1423, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_9encode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1438, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_encode_your_map, __pyx_t_1) < 0) __PYX_ERR(0, 1438, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1441 + /* "gedlibpy.pyx":1456 * * * def decode_your_map(map_b): # <<<<<<<<<<<<<< * """ * Decodes utf-8 byte strings in `map` from C++ functions to Python unicode strings. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_11decode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_your_map, __pyx_t_2) < 0) __PYX_ERR(0, 1441, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_11decode_your_map, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_your_map, __pyx_t_1) < 0) __PYX_ERR(0, 1456, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gedlibpy.pyx":1459 + /* "gedlibpy.pyx":1474 * * * def decode_graph_edges(map_edge_b): # <<<<<<<<<<<<<< * """ * Decode utf-8 byte strings in graph edges `map` from C++ functions to Python unicode strings. */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_13decode_graph_edges, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1459, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_graph_edges, __pyx_t_2) < 0) __PYX_ERR(0, 1459, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8gedlibpy_13decode_graph_edges, NULL, __pyx_n_s_gedlibpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1474, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_decode_graph_edges, __pyx_t_1) < 0) __PYX_ERR(0, 1474, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "gedlibpy.pyx":1 * # distutils: language = c++ # <<<<<<<<<<<<<< * * """ */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "vector.from_py":45 * @@ -23154,6 +23668,20 @@ bad: return module; } +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); @@ -23630,6 +24158,7 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f Py_XINCREF(code); op->func_code = code; op->defaults_pyobjects = 0; + op->defaults_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; @@ -23883,6 +24412,7 @@ static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; + m->defaults_size = size; return m->defaults; } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { @@ -23903,7 +24433,7 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { +static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON @@ -24007,7 +24537,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } diff --git a/gklearn/gedlib/gedlibpy.cpython-36m-x86_64-linux-gnu.so b/gklearn/gedlib/gedlibpy.cpython-36m-x86_64-linux-gnu.so index e950062a8c7c79d9e738617614a693f744c4f9a0..eab13a81fe043988da37ff8fbed858a07bc2b8bc 100644 GIT binary patch literal 33325048 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ΜZ?PUcg#Qi8VlYF3@Q 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