Skip to content

Commit 4af8788

Browse files
authored
Add comparison with ColPack to tests (#17)
* Compare against ColPack * Only test correctness
1 parent 1582bf3 commit 4af8788

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

test/Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
44
Chairmarks = "0ca39b1e-fe0b-4e98-acfc-b1656634c4de"
5+
ColPack = "ffa27691-3a59-46ab-a8d4-551f45b8d401"
56
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
67
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
78
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
@@ -12,3 +13,6 @@ MatrixDepot = "b51810bb-c9f3-55da-ae3c-350fc1fbce05"
1213
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1314
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
1415
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
16+
17+
[compat]
18+
ColPack = "0.4"

test/colpack.jl

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using ColPack: ColPack, ColPackColoring
2+
using LinearAlgebra
3+
using SparseMatrixColorings
4+
using SparseMatrixColorings: NaturalOrder
5+
using SparseArrays
6+
using StableRNGs
7+
using Test
8+
9+
rng = StableRNG(63)
10+
11+
my_column_coloring(J) = column_coloring(J, GreedyColoringAlgorithm(NaturalOrder()))
12+
my_row_coloring(J) = row_coloring(J, GreedyColoringAlgorithm(NaturalOrder()))
13+
my_symmetric_coloring(H) = symmetric_coloring(H, GreedyColoringAlgorithm(NaturalOrder()))
14+
15+
function colpack_column_coloring(J)
16+
A = ColPack.matrix2adjmatrix(J; partition_by_rows=false)
17+
coloring = ColPackColoring(A, ColPack.d1_coloring(), ColPack.natural_ordering())
18+
return ColPack.get_colors(coloring)
19+
end
20+
21+
function colpack_row_coloring(J)
22+
A = ColPack.matrix2adjmatrix(J; partition_by_rows=true)
23+
coloring = ColPackColoring(A, ColPack.d1_coloring(), ColPack.natural_ordering())
24+
return ColPack.get_colors(coloring)
25+
end
26+
27+
function colpack_symmetric_coloring(H)
28+
coloring = ColPackColoring(H, ColPack.star_coloring(), ColPack.natural_ordering())
29+
return ColPack.get_colors(coloring)
30+
end
31+
32+
n_values = floor.(Int, 10 .^ (1:3))
33+
p_values(n) = (2:4:min(n, 20)) ./ n
34+
35+
@testset verbose = true "Correctness" begin
36+
@testset "Column coloring" begin
37+
@testset "n=$n - p=$p" for n in n_values, p in p_values(n)
38+
J = sprand(rng, n, n + 1, p)
39+
color1 = my_column_coloring(J)
40+
color2 = colpack_column_coloring(J)
41+
@test color1 == color2
42+
end
43+
end
44+
@testset "Row coloring" begin
45+
@testset "n=$n - p=$p" for n in n_values, p in p_values(n)
46+
J = sprand(rng, n, n + 1, p)
47+
color1 = my_row_coloring(J)
48+
color2 = colpack_row_coloring(J)
49+
@test color1 == color2
50+
end
51+
end
52+
@testset "Symmetric coloring" begin
53+
@testset "n=$n - p=$p" for n in n_values, p in p_values(n)
54+
H = sparse(Symmetric(sprand(rng, n, n, p)))
55+
color1 = my_symmetric_coloring(H)
56+
color2 = colpack_symmetric_coloring(H)
57+
@test color1 == color2
58+
end
59+
end
60+
end;

test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ include("reference/figures.jl")
5454
end
5555
end
5656
@testset verbose = true "Comparison" begin
57+
@testset "ColPack.jl" begin
58+
include("colpack.jl")
59+
end
5760
@testset "SuiteSparse" begin
5861
include("suitesparse.jl")
5962
end

0 commit comments

Comments
 (0)