Skip to content

Commit

Permalink
Add two more pagerank variants (#2950)
Browse files Browse the repository at this point in the history
  • Loading branch information
siyuan0322 committed Jun 30, 2023
1 parent a222479 commit 5ffad66
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 8 deletions.
28 changes: 22 additions & 6 deletions coordinator/gscoordinator/builtin/app/.gs_conf.yaml
Expand Up @@ -7,6 +7,22 @@ app:
- grape::ImmutableEdgecutFragment
- gs::ArrowProjectedFragment
- gs::DynamicProjectedFragment
- algo: pagerank_directed
type: cpp_pie
class_name: grape::PageRankDirected
src: pagerank/pagerank_directed.h
compatible_graph:
- grape::ImmutableEdgecutFragment
- gs::ArrowProjectedFragment
- gs::DynamicProjectedFragment
- algo: pagerank_opt
type: cpp_pie
class_name: grape::PageRankOpt
src: pagerank/pagerank_opt.h
compatible_graph:
- grape::ImmutableEdgecutFragment
- gs::ArrowProjectedFragment
- gs::DynamicProjectedFragment
- algo: sssp
type: cpp_pie
class_name: grape::SSSP
Expand Down Expand Up @@ -53,6 +69,12 @@ app:
- grape::ImmutableEdgecutFragment
- gs::ArrowProjectedFragment
- gs::DynamicProjectedFragment
- algo: lcc
type: cpp_pie
class_name: grape::LCC
src: lcc/lcc.h
compatible_graph:
- gs::DynamicFragment
- algo: sssp_path
type: cpp_pie
class_name: gs::SSSPPath
Expand Down Expand Up @@ -118,12 +140,6 @@ app:
src: apps/kshell/kshell.h
compatible_graph:
- gs::DynamicFragment
- algo: lcc
type: cpp_pie
class_name: grape::LCC
src: lcc/lcc.h
compatible_graph:
- gs::DynamicFragment
- algo: clustering
type: cpp_pie
class_name: gs::Clustering
Expand Down
1 change: 1 addition & 0 deletions python/graphscope/analytical/app/__init__.py
Expand Up @@ -52,6 +52,7 @@
from graphscope.analytical.app.lpa import lpa_u2i
from graphscope.analytical.app.pagerank import pagerank
from graphscope.analytical.app.pagerank import pagerank_nx
from graphscope.analytical.app.pagerank import pagerank_opt
from graphscope.analytical.app.sssp import sssp
from graphscope.analytical.app.triangles import triangles
from graphscope.analytical.app.voterank import voterank
Expand Down
39 changes: 37 additions & 2 deletions python/graphscope/analytical/app/pagerank.py
Expand Up @@ -16,18 +16,21 @@
# limitations under the License.
#

import logging

from graphscope.framework.app import AppAssets
from graphscope.framework.app import not_compatible_for
from graphscope.framework.app import project_to_simple

__all__ = ["pagerank", "pagerank_nx"]
__all__ = ["pagerank", "pagerank_opt", "pagerank_nx"]

logger = logging.getLogger("graphscope")


@project_to_simple
@not_compatible_for("arrow_property", "dynamic_property")
def pagerank(graph, delta=0.85, max_round=10):
"""Evalute PageRank on a graph.
"""Evaluate PageRank on a graph.
Args:
graph (:class:`graphscope.Graph`): A simple graph.
Expand All @@ -51,11 +54,43 @@ def pagerank(graph, delta=0.85, max_round=10):
>>> c = graphscope.pagerank(pg, delta=0.85, max_round=10)
>>> sess.close()
"""
if graph.is_directed():
logger.warning(
"PageRank is not designed for directed graph, please use `pagerank_directed`"
)
delta = float(delta)
max_round = int(max_round)
return AppAssets(algo="pagerank", context="vertex_data")(graph, delta, max_round)


@project_to_simple
@not_compatible_for("arrow_property", "dynamic_property")
def pagerank_directed(graph, delta=0.85, max_round=10):
"""Evaluate PageRank on a graph."""
if not graph.is_directed():
logger.warning(
"PageRank-directed is not designed for undirected graph, please use `pagerank`"
)
delta = float(delta)
max_round = int(max_round)
return AppAssets(algo="pagerank_directed", context="vertex_data")(
graph, delta, max_round
)


@project_to_simple
@not_compatible_for("arrow_property", "dynamic_property")
def pagerank_opt(graph, delta=0.85, max_round=10):
"""Evaluate PageRank on a graph."""
if graph.is_directed():
logger.warning("PageRankOpt is not designed for directed graph.")
delta = float(delta)
max_round = int(max_round)
return AppAssets(algo="pagerank_opt", context="vertex_data")(
graph, delta, max_round
)


@project_to_simple
@not_compatible_for("arrow_property", "dynamic_property")
def pagerank_nx(graph, alpha=0.85, max_iter=100, tol=1e-06):
Expand Down

0 comments on commit 5ffad66

Please sign in to comment.