Skip to content

Commit e9f1be2

Browse files
authored
Generalize Index constructor to allow ranges, define hastag (#23)
1 parent 8d97e59 commit e9f1be2

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ITensorBase"
22
uuid = "4795dd04-0d67-49bb-8f44-b89c448a1dc7"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.1.12"
4+
version = "0.1.13"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"

src/index.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ plev(n::IndexName) = n.plev
2525

2626
settags(n::IndexName, tags) = @set n.tags = tags
2727

28+
hastag(n::IndexName, tagname::String) = haskey(tags(n), tagname)
29+
2830
gettag(n::IndexName, tagname::String) = tags(n)[tagname]
2931
gettag(n::IndexName, tagname::String, default) = get(tags(n), tagname, default)
3032
function settag(n::IndexName, tagname::String, tag::String)
@@ -69,15 +71,22 @@ struct Index{T,Value<:AbstractUnitRange{T}} <: AbstractNamedUnitRange{T,Value,In
6971
name::IndexName
7072
end
7173

74+
function Index(r::AbstractUnitRange; kwargs...)
75+
return Index(r, IndexName(; kwargs...))
76+
end
77+
7278
function Index(length::Int; kwargs...)
73-
return Index(Base.OneTo(length), IndexName(; kwargs...))
79+
return Index(Base.OneTo(length); kwargs...)
7480
end
7581

7682
# TODO: Define for `NamedDimsArrays.NamedViewIndex`.
7783
id(i::Index) = id(name(i))
7884
tags(i::Index) = tags(name(i))
7985
plev(i::Index) = plev(name(i))
8086

87+
# TODO: Define for `NamedDimsArrays.NamedViewIndex`.
88+
hastag(i::Index, tagname::String) = hastag(name(i), tagname)
89+
8190
# TODO: Define for `NamedDimsArrays.NamedViewIndex`.
8291
gettag(i::Index, tagname::String) = gettag(name(i), tagname)
8392
gettag(i::Index, tagname::String, default) = gettag(name(i), tagname, default)

test/test_basics.jl

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
1-
using ITensorBase: ITensorBase, ITensor, Index, gettag, inds, plev, prime, settag, unsettag
1+
using ITensorBase:
2+
ITensorBase, ITensor, Index, gettag, hastag, inds, plev, prime, settag, tags, unsettag
23
using DiagonalArrays: δ, delta, diagview
3-
using NamedDimsArrays: unname
4+
using NamedDimsArrays: dename, name, named
45
using Test: @test, @test_broken, @testset
56

67
@testset "ITensorBase" begin
78
@testset "Basics" begin
89
i, j = Index.((2, 2))
910
x = randn(2, 2)
1011
for a in (ITensor(x, i, j), ITensor(x, (i, j)))
11-
@test unname(a) == x
12+
@test dename(a) == x
1213
@test plev(i) == 0
1314
@test plev(prime(i)) == 1
15+
@test length(tags(i)) == 0
1416
a′ = prime(a)
15-
@test unname(a′) == x
17+
@test dename(a′) == x
1618
@test issetequal(inds(a′), (prime(i), prime(j)))
1719
end
1820

1921
i = Index(2)
2022
i = settag(i, "X", "x")
23+
@test hastag(i, "X")
24+
@test !hastag(i, "Y")
2125
@test gettag(i, "X") == "x"
2226
i = unsettag(i, "X")
2327
@test isnothing(gettag(i, "X", nothing))
28+
@test !hastag(i, "X")
29+
@test !hastag(i, "Y")
30+
31+
i = Index(Base.OneTo(2))
32+
@test length(i) == named(2, name(i))
33+
@test dename(length(i)) == 2
34+
@test dename(i) == 1:2
35+
@test plev(i) == 0
36+
@test length(tags(i)) == 0
2437
end
2538
@testset "delta" begin
2639
i, j = Index.((2, 2))
@@ -37,7 +50,7 @@ using Test: @test, @test_broken, @testset
3750
@test eltype(a) === Bool
3851
# TODO: Fix this.
3952
@test_broken diagview(a)
40-
@test diagview(unname(a)) == ones(2)
53+
@test diagview(dename(a)) == ones(2)
4154
end
4255
end
4356
end

0 commit comments

Comments
 (0)