Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Commit

Permalink
Merge pull request #53 from OrkoHunter/metis
Browse files Browse the repository at this point in the history
Put function definitions separate from nxmetis/__init__.py
  • Loading branch information
ysitu committed Aug 6, 2015
2 parents 14c8eb2 + 9ff460d commit 3cd2f6f
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 8 deletions.
8 changes: 4 additions & 4 deletions nxmetis/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

from nxmetis import enums
from nxmetis import exceptions
from nxmetis import _metis
from nxmetis import metis
from nxmetis import types

__all__ = ['node_nested_dissection', 'partition', 'vertex_separator',
Expand Down Expand Up @@ -134,7 +134,7 @@ def node_nested_dissection(G, weight='weight', options=None):
xadj, adjncy = _convert_graph(G)

with _zero_numbering(options):
perm = _metis.node_nd(xadj, adjncy, vwgt, options)[0]
perm = metis.node_nd(xadj, adjncy, vwgt, options)[0]

nodes = list(G)
perm = [nodes[i] for i in perm]
Expand Down Expand Up @@ -252,7 +252,7 @@ def partition(G, nparts, node_weight='weight', node_size='size',
tpwgts = list(itertools.chain.from_iterable(tpwgts))

with _zero_numbering(options):
objval, part = _metis.part_graph(xadj, adjncy, nparts, vwgt, vsize,
objval, part = metis.part_graph(xadj, adjncy, nparts, vwgt, vsize,
adjwgt, tpwgts, ubvec, options,
recursive)

Expand Down Expand Up @@ -305,7 +305,7 @@ def vertex_separator(G, weight='weight', options=None):
xadj, adjncy = _convert_graph(G)

with _zero_numbering(options):
part = _metis.compute_vertex_separator(xadj, adjncy, vwgt, options)[1]
part = metis.compute_vertex_separator(xadj, adjncy, vwgt, options)[1]

groups = [[], [], []]
for u, i in zip(G, part):
Expand Down
24 changes: 24 additions & 0 deletions nxmetis/metis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
"""
This module is a wrapper of the ``_metis`` extension generated
from ``_metis.pyx``. This is to let sphinx import the module for
documentation builds with or without the ``_metis`` extension.
"""
try:
from nxmetis import _metis
except ImportError:
def node_nd(*args, **kwargs):
raise Exception("NetworkX-METIS not installed!")

def part_graph(*args, **kwargs):
raise Exception("NetworkX-METIS not installed!")

def compute_vertex_separator(*args, **kwargs):
raise Exception("NetworkX-METIS not installed!")

def set_default_options(*args, **kwargs):
raise Exception("NetworkX-METIS not installed!")
else:
node_nd = _metis.node_nd
part_graph = _metis.part_graph
compute_vertex_separator = _metis.compute_vertex_separator
set_default_options = _metis.set_default_options
4 changes: 2 additions & 2 deletions nxmetis/tests/test_metis.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import nxmetis
from nxmetis import exceptions
from nxmetis import _metis
from nxmetis import metis
from nxmetis import types


Expand Down Expand Up @@ -102,5 +102,5 @@ def test_MetisOptions(self):
options = types.MetisOptions(niter=-2)
nose.tools.assert_raises_regexp(exceptions.MetisError,
'Input Error: Incorrect niter.',
_metis.part_graph, xadj, adjncy, 2,
metis.part_graph, xadj, adjncy, 2,
options=options)
4 changes: 2 additions & 2 deletions nxmetis/types.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import numbers

from nxmetis import enums
from nxmetis import _metis
from nxmetis import metis

__all__ = ['MetisOptions']

Expand All @@ -18,7 +18,7 @@ def __init__(self, **kwargs):
>>> options = MetisOptions(ncuts=2, niter=100)
"""
_metis.set_default_options(self)
metis.set_default_options(self)
for key, value in kwargs.items():
if value is not None:
setattr(self, key, value)
Expand Down

0 comments on commit 3cd2f6f

Please sign in to comment.