Beispiel #1
0
	def _compute_single_kernel_series(self, g1, g2):
		self.__add_dummy_labels([g1] + [g2])
		if self.__remove_totters:
			g1 = untotterTransformation(g1, self.__node_label, self.__edge_label) # @todo: this may not work.
			g2 = untotterTransformation(g2, self.__node_label, self.__edge_label)
		kernel = self.__kernel_do(g1, g2)
		return kernel			
Beispiel #2
0
    def _compute_kernel_list_series(self, g1, g_list):
        self._add_dummy_labels(g_list + [g1])

        if self._remove_totters:
            g1 = untotterTransformation(
                g1, self._node_labels,
                self._edge_labels)  # @todo: this may not work.
            iterator = get_iters(g_list,
                                 desc='removing tottering',
                                 file=sys.stdout,
                                 verbose=(self._verbose >= 2))
            # @todo: this may not work.
            g_list = [
                untotterTransformation(G, self._node_labels, self._edge_labels)
                for G in iterator
            ]

        # compute kernel list.
        kernel_list = [None] * len(g_list)
        iterator = get_iters(range(len(g_list)),
                             desc='Computing kernels',
                             file=sys.stdout,
                             length=len(g_list),
                             verbose=(self._verbose >= 2))
        for i in iterator:
            kernel = self._kernel_do(g1, g_list[i])
            kernel_list[i] = kernel

        return kernel_list
Beispiel #3
0
	def _compute_gm_series(self):
		self.__add_dummy_labels(self._graphs)
		
		if self.__remove_totters:
			if self._verbose >= 2:
				iterator = tqdm(self._graphs, desc='removing tottering', file=sys.stdout)
			else:
				iterator = self._graphs
			# @todo: this may not work.
			self._graphs = [untotterTransformation(G, self.__node_label, self.__edge_label) for G in iterator]
		
		# compute Gram matrix.
		gram_matrix = np.zeros((len(self._graphs), len(self._graphs)))
		
		from itertools import combinations_with_replacement
		itr = combinations_with_replacement(range(0, len(self._graphs)), 2)
		if self._verbose >= 2:
			iterator = tqdm(itr, desc='calculating kernels', file=sys.stdout)
		else:
			iterator = itr
		for i, j in iterator:
			kernel = self.__kernel_do(self._graphs[i], self._graphs[j])
			gram_matrix[i][j] = kernel
			gram_matrix[j][i] = kernel # @todo: no directed graph considered?
				
		return gram_matrix
Beispiel #4
0
    def _compute_gm_series(self):
        self._add_dummy_labels(self._graphs)

        if self._remove_totters:
            iterator = get_iters(self._graphs,
                                 desc='removing tottering',
                                 file=sys.stdout,
                                 verbose=(self._verbose >= 2))
            # @todo: this may not work.
            self._graphs = [
                untotterTransformation(G, self._node_labels, self._edge_labels)
                for G in iterator
            ]

        # compute Gram matrix.
        gram_matrix = np.zeros((len(self._graphs), len(self._graphs)))

        from itertools import combinations_with_replacement
        itr = combinations_with_replacement(range(0, len(self._graphs)), 2)
        len_itr = int(len(self._graphs) * (len(self._graphs) + 1) / 2)
        iterator = get_iters(itr,
                             desc='Computing kernels',
                             file=sys.stdout,
                             length=len_itr,
                             verbose=(self._verbose >= 2))
        for i, j in iterator:
            kernel = self._kernel_do(self._graphs[i], self._graphs[j])
            gram_matrix[i][j] = kernel
            gram_matrix[j][i] = kernel  # @todo: no directed graph considered?

        return gram_matrix
Beispiel #5
0
    def _compute_kernel_list_imap_unordered(self, g1, g_list):
        self._add_dummy_labels(g_list + [g1])

        if self._remove_totters:
            g1 = untotterTransformation(
                g1, self._node_labels,
                self._edge_labels)  # @todo: this may not work.
            pool = Pool(self._n_jobs)
            itr = range(0, len(g_list))
            if len(g_list) < 100 * self._n_jobs:
                chunksize = int(len(g_list) / self._n_jobs) + 1
            else:
                chunksize = 100
            remove_fun = self._wrapper_untotter
            iterator = get_iters(pool.imap_unordered(remove_fun, itr,
                                                     chunksize),
                                 desc='removing tottering',
                                 file=sys.stdout,
                                 length=len(g_list),
                                 verbose=(self._verbose >= 2))
            for i, g in iterator:
                g_list[i] = g
            pool.close()
            pool.join()

        # compute kernel list.
        kernel_list = [None] * len(g_list)

        def init_worker(g1_toshare, g_list_toshare):
            global G_g1, G_g_list
            G_g1 = g1_toshare
            G_g_list = g_list_toshare

        do_fun = self._wrapper_kernel_list_do

        def func_assign(result, var_to_assign):
            var_to_assign[result[0]] = result[1]

        itr = range(len(g_list))
        len_itr = len(g_list)
        parallel_me(do_fun,
                    func_assign,
                    kernel_list,
                    itr,
                    len_itr=len_itr,
                    init_worker=init_worker,
                    glbv=(g1, g_list),
                    method='imap_unordered',
                    n_jobs=self._n_jobs,
                    itr_desc='Computing kernels',
                    verbose=self._verbose)

        return kernel_list
Beispiel #6
0
	def _compute_kernel_list_series(self, g1, g_list):
		self.__add_dummy_labels(g_list + [g1])
		
		if self.__remove_totters:
			g1 = untotterTransformation(g1, self.__node_label, self.__edge_label) # @todo: this may not work.
			if self._verbose >= 2:
				iterator = tqdm(g_list, desc='removing tottering', file=sys.stdout)
			else:
				iterator = g_list
			# @todo: this may not work.
			g_list = [untotterTransformation(G, self.__node_label, self.__edge_label) for G in iterator]
				
		# compute kernel list.
		kernel_list = [None] * len(g_list)
		if self._verbose >= 2:
			iterator = tqdm(range(len(g_list)), desc='calculating kernels', file=sys.stdout)
		else:
			iterator = range(len(g_list))
		for i in iterator:
			kernel = self.__kernel_do(g1, g_list[i])
			kernel_list[i] = kernel
				
		return kernel_list
Beispiel #7
0
	def _wrapper_untotter(self, i):
		return i, untotterTransformation(self._graphs[i], self.__node_label, self.__edge_label) # @todo: this may not work.
Beispiel #8
0
def wrapper_untotter(Gn, node_label, edge_label, i):
    return i, untotterTransformation(Gn[i], node_label, edge_label)