From 47673ced60ce91cb82108a9192593d132520f2e3 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Thu, 3 Jul 2025 11:48:22 -0400 Subject: [PATCH 1/4] Add `axes` for `SnakePattern` --- src/lattices/snakepattern.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lattices/snakepattern.jl b/src/lattices/snakepattern.jl index 09bfd38..8d7685d 100644 --- a/src/lattices/snakepattern.jl +++ b/src/lattices/snakepattern.jl @@ -10,6 +10,9 @@ end SnakePattern(lattice) = SnakePattern(lattice, identity) +Base.axes(lattice::SnakePattern) = axes(lattice.lattice) +Base.isfinite(::Type{SnakePattern{N,G}}) where {N,G} = isfinite(G) + function linearize_index(snake::SnakePattern, i...) return snake.pattern(linearize_index(snake.lattice, i...)) end From 9d25f4aebbace672631455ee25e162010c16de48 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Thu, 3 Jul 2025 11:49:18 -0400 Subject: [PATCH 2/4] Bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index c8d257f..cee5668 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "MPSKitModels" uuid = "ca635005-6f8c-4cd1-b51d-8491250ef2ab" authors = ["Maarten Van Damme", "Lukas Devos", "Gertian Roose", "Klaas Gunst"] -version = "0.4.2" +version = "0.4.3" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" From 6aa76365796ab4ca9e6f3219eea26159b056f01b Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Thu, 3 Jul 2025 12:14:47 -0400 Subject: [PATCH 3/4] More fixes --- src/lattices/snakepattern.jl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lattices/snakepattern.jl b/src/lattices/snakepattern.jl index 8d7685d..2866799 100644 --- a/src/lattices/snakepattern.jl +++ b/src/lattices/snakepattern.jl @@ -17,8 +17,14 @@ function linearize_index(snake::SnakePattern, i...) return snake.pattern(linearize_index(snake.lattice, i...)) end -vertices(snake::SnakePattern) = vertices(snake.lattice) -nearest_neighbours(snake::SnakePattern) = nearest_neighbours(snake.lattice) +function vertices(snake::SnakePattern) + return map(x -> LatticePoint(x.coordinates, snake), vertices(snake.lattice)) +end +function nearest_neighbours(snake::SnakePattern) + return map(nearest_neighbours(snake.lattice)) do (x, y) + return LatticePoint(x.coordinates, snake), LatticePoint(y.coordinates, snake) + end +end bipartition(snake::SnakePattern) = bipartition(snake.lattice) """ From 5941b693682706654db347738d3b81ab97c46dfe Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Thu, 3 Jul 2025 12:14:55 -0400 Subject: [PATCH 4/4] SnakePattern tests --- test/lattices.jl | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/lattices.jl b/test/lattices.jl index a467d3a..036111f 100644 --- a/test/lattices.jl +++ b/test/lattices.jl @@ -201,3 +201,43 @@ end @test allunique(NNN) end end + +@testset "SnakePattern" begin + base_lattice = FiniteCylinder(4, 16) + base_V = vertices(base_lattice) + base_NN = nearest_neighbours(base_lattice) + + lattice = SnakePattern(base_lattice, identity) + + V = vertices(lattice) + @test all(zip(V, base_V)) do (x, y) + return linearize_index(x) == linearize_index(y) + end + + @test length(base_lattice) == length(lattice) + @test lattice[1, 1] == first(V) + + NN = nearest_neighbours(lattice) + @test all(zip(NN, base_NN)) do (x, y) + return linearize_index.(Tuple(x)) == + linearize_index.(Tuple(y)) + end + + pattern(i) = length(lattice) - i + 1 + lattice = SnakePattern(base_lattice, pattern) + + V = vertices(lattice) + @test all(zip(V, base_V)) do (x, y) + return linearize_index(x) == pattern(linearize_index(y)) + end + + @test length(base_lattice) == length(lattice) + @test lattice[1, 1] == first(V) + + base_NN = nearest_neighbours(base_lattice) + NN = nearest_neighbours(lattice) + @test all(zip(NN, base_NN)) do (x, y) + return linearize_index.(Tuple(x)) == + pattern.(linearize_index.(Tuple(y))) + end +end