Skip to content

Commit bb400c7

Browse files
committed
Printing
1 parent 1a2712c commit bb400c7

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

src/ITensorBase.jl

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,43 @@ const TagSet = Set{Tag}
2323

2424
tagset(tags::String) = Set(filter(!isempty, String.(strip.(split(tags, ",")))))
2525

26+
function tagsstring(tags::TagSet)
27+
str = ""
28+
length(tags) == 0 && return str
29+
tags_vec = collect(tags)
30+
for n in 1:(length(tags_vec) - 1)
31+
str *= "$(tags_vec[n]),"
32+
end
33+
str *= "$(tags_vec[end])"
34+
return str
35+
end
36+
2637
@kwdef struct IndexName <: AbstractName
2738
id::UInt64 = rand(UInt64)
28-
plev::Int = 0
2939
tags::TagSet = TagSet()
40+
plev::Int = 0
3041
end
3142
NamedDimsArrays.randname(n::IndexName) = IndexName()
3243

44+
id(n::IndexName) = n.id
3345
tags(n::IndexName) = n.tags
46+
plev(n::IndexName) = n.plev
47+
3448
settags(n::IndexName, tags) = @set n.tags = tags
3549
addtags(n::IndexName, ts) = settags(n, tags(n) tagset(ts))
3650

37-
plev(n::IndexName) = n.plev
3851
setprime(n::IndexName, plev) = @set n.plev = plev
3952
prime(n::IndexName) = setprime(n, plev(n) + 1)
4053

54+
function Base.show(io::IO, i::IndexName)
55+
idstr = "id=$(id(i) % 1000)"
56+
tagsstr = !isempty(tags(i)) ? "|\"$(tagsstring(tags(i)))\"" : ""
57+
primestr = primestring(plev(i))
58+
str = "IndexName($(idstr)$(tagsstr))$(primestr)"
59+
print(io, str)
60+
return nothing
61+
end
62+
4163
struct IndexVal{Value<:Integer} <: AbstractNamedInteger{Value,IndexName}
4264
value::Value
4365
name::IndexName
@@ -60,7 +82,12 @@ function Index(length::Int, tags::String; kwargs...)
6082
return Index(Base.OneTo(length), IndexName(; kwargs..., tags=tagset(tags)))
6183
end
6284

85+
# TODO: Define for `NamedDimsArrays.NamedViewIndex`.
86+
id(i::Index) = id(name(i))
6387
tags(i::Index) = tags(name(i))
88+
plev(i::Index) = plev(name(i))
89+
90+
# TODO: Define for `NamedDimsArrays.NamedViewIndex`.
6491
addtags(i::Index, tags) = setname(i, addtags(name(i), tags))
6592
prime(i::Index) = setname(i, prime(name(i)))
6693
Base.adjoint(i::Index) = prime(i)
@@ -73,6 +100,29 @@ NamedDimsArrays.name(i::Index) = i.name
73100
# Constructor
74101
NamedDimsArrays.named(i::AbstractUnitRange, name::IndexName) = Index(i, name)
75102

103+
function primestring(plev)
104+
if plev < 0
105+
return " (warning: prime level $plev is less than 0)"
106+
end
107+
if plev == 0
108+
return ""
109+
elseif plev > 3
110+
return "'$plev"
111+
else
112+
return "'"^plev
113+
end
114+
end
115+
116+
function Base.show(io::IO, i::Index)
117+
lenstr = "length=$(dename(length(i)))"
118+
idstr = "|id=$(id(i) % 1000)"
119+
tagsstr = !isempty(tags(i)) ? "|\"$(tagsstring(tags(i)))\"" : ""
120+
primestr = primestring(plev(i))
121+
str = "Index($(lenstr)$(idstr)$(tagsstr))$(primestr)"
122+
print(io, str)
123+
return nothing
124+
end
125+
76126
struct NoncontiguousIndex{T,Value<:AbstractVector{T}} <:
77127
AbstractNamedVector{T,Value,IndexName}
78128
value::Value

src/quirks.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
# TODO: Define this properly.
22
dag(i::Index) = i
3+
# TODO: Deprecate.
4+
dim(i::Index) = dename(length(i))
5+
# TODO: Define this properly.
36
hasqns(i::Index) = false
4-
dim(i::Index) = length(i)
7+
inds(a::ITensor) = nameddimsindices(a)
8+
# TODO: Deprecate.
9+
itensor(parent::AbstractArray, nameddimsindices) = ITensor(parent, nameddimsindices)
10+
function itensor(parent::AbstractArray, i1::Index, i_rest::Index...)
11+
return ITensor(parent, (i1, i_rest...))
12+
end

0 commit comments

Comments
 (0)