File: simple_part.py

package info (click to toggle)
scotchpy 1.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 1,476 kB
  • sloc: python: 4,882; ansic: 68; sh: 34; makefile: 32
file content (56 lines) | stat: -rw-r--r-- 2,333 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
## SPDX-License-Identifier: BSD-2-Clause
##
## Copyright 2020-2025 Inria & Université de Bordeaux
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
##
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
##
## 2. Redistributions in binary form must reproduce the above
## copyright notice, this list of conditions and the following
## disclaimer in the documentation and/or other materials provided
## with the distribution.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
## CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
## BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
## TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
## ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
## TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
## THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##

import numpy as np
import scotchpy
from scotchpy.common import proper_int as scotch_num

try:
    graf = scotchpy.Graph()
except scotchpy.LibraryError:
    self.fail("cannot initialize graph")
    raise

# Example from Scotch user's manual, page 59
graf.build(baseval=1,
           vertnbr=7,
           edgenbr = 24,
           verttab = np.array([1,4,10,13,16,19,22,25], dtype=scotch_num),
           edgetab = np.array([3,2,6,3,4,1,7,6,5,1,2,4,2,7,3,7,2,6,2,1,5,5,2,4], dtype=scotch_num),
           edlotab = np.array([1,1,1,2,2,1,2,3,3,1,2,2,2,1,2,1,3,3,3,1,3,1,2,1], dtype=scotch_num))

if scotchpy.graph._nx_found  and scotchpy.graph._matplotlib_found:
    parttab = np.zeros(graf.vertnbr, dtype=scotch_num)
    graf.part(partnbr = 2, parttab = parttab)
    try:
        graf.draw(node_color = parttab, labels=dict(zip(range(1,8), [f'{i}' for i in range(1,8)])))
    except ModuleNotFoundError:
        pass