https://github.com/kit-parco/networkit
Tip revision: 02de60d064527410c0acf8e1c8cb0d403c5c1409 authored by Fabian Brandt on 08 September 2020, 08:28:43 UTC
Merge pull request #587 from cndolo/refactor/edgelist-reader
Merge pull request #587 from cndolo/refactor/edgelist-reader
Tip revision: 02de60d
scd.pyx
from libc.stdint cimport uint64_t
from libcpp.map cimport map
from libcpp.set cimport set
from libcpp.string cimport string
ctypedef uint64_t index
ctypedef index node
from .graph cimport _Graph, Graph
def stdstring(pystring):
""" convert a Python string to a bytes object which is automatically coerced to std::string"""
pybytes = pystring.encode("utf-8")
return pybytes
cdef extern from "<networkit/scd/PageRankNibble.hpp>":
cdef cppclass _PageRankNibble "NetworKit::PageRankNibble":
_PageRankNibble(_Graph G, double alpha, double epsilon) except +
map[node, set[node]] run(set[node] seeds) except +
cdef class PageRankNibble:
"""
Produces a cut around a given seed node using the PageRank-Nibble algorithm.
see Andersen, Chung, Lang: Local Graph Partitioning using PageRank Vectors
Parameters:
-----------
G : networkit.Graph in which the cut is to be produced, must be unweighted.
alpha : Loop probability of random walk; smaller values tend to produce larger communities.
epsilon: Tolerance threshold for approximation of PageRank vectors
"""
cdef _PageRankNibble *_this
cdef Graph _G
def __cinit__(self, Graph G, double alpha, double epsilon):
self._G = G
self._this = new _PageRankNibble(G._this, alpha, epsilon)
def run(self, set[node] seeds):
"""
Produces a cut around a given seed node.
Parameters:
-----------
seeds : the seed node ids.
"""
return self._this.run(seeds)
cdef extern from "<networkit/scd/GCE.hpp>":
cdef cppclass _GCE "NetworKit::GCE":
_GCE(_Graph G, string quality) except +
map[node, set[node]] run(set[node] seeds) except +
cdef class GCE:
"""
Produces a cut around a given seed node using the GCE algorithm.
Parameters:
-----------
G : networkit.Graph in which the cut is to be produced, must be unweighted.
"""
cdef _GCE *_this
cdef Graph _G
def __cinit__(self, Graph G, quality):
self._G = G
self._this = new _GCE(G._this, stdstring(quality))
def run(self, set[node] seeds):
"""
Produces a cut around a given seed node.
Parameters:
-----------
seeds : the seed node ids.
"""
return self._this.run(seeds)