Skip to content

Commit 9e81b8f

Browse files
committed
one more show update
1 parent 75787eb commit 9e81b8f

File tree

1 file changed

+43
-49
lines changed

1 file changed

+43
-49
lines changed

src/states/finitemps.jl

Lines changed: 43 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -445,70 +445,64 @@ function Base.summary(io::IO, ψ::FiniteMPS)
445445
end
446446
function Base.show(io::IO, mime::MIME"text/plain", ψ::FiniteMPS)
447447
summary(io, ψ)
448-
print(io, " with center $(ψ.center)")
449-
get(io, :compact, false)::Bool && return nothing
450-
println(io, ":")
448+
449+
if get(io, :compact, false)
450+
print(io, " center: ", ψ.center, "\tmaxdim: ", maximum(dim, left_virtualspace(ψ)))
451+
return nothing
452+
end
453+
454+
println(io, ":\ncenter: ", ψ.center, "\tmaxdim: ", maximum(dim, left_virtualspace(ψ)))
455+
451456
io = IOContext(io, :typeinfo => spacetype(ψ), :compact => true)
452457
charset = (; start = "", mid = "", stop = "", ver = "", dash = "──")
453-
limit = get(io, :limit, true)::Bool
454-
half_screen_rows = limit ? div(displaysize(io)[1] - 8, 4) : typemax(Int)
455458

459+
limit = get(io, :limit, true)::Bool
460+
half_screen_rows = limit ? div(displaysize(io)[1] - 2, 4) : typemax(Int)
456461
L = length(ψ)
462+
463+
if L <= 2 * half_screen_rows # everything fits!
464+
half_screen_rows = typemax(Int)
465+
end
466+
467+
468+
# special handling of edge spaces => don't print if trivial
469+
Vright = right_virtualspace(ψ, L)
470+
right_trivial = Vright == oneunit(Vright)
471+
Vleft = left_virtualspace(ψ, 1)
472+
left_trivial = Vleft == oneunit(Vleft)
473+
474+
475+
right_trivial || println(io, "", Vright)
457476
for i in reverse(1:L)
458-
if i < half_screen_rows || i > L - half_screen_rows
459-
Vr = right_virtualspace(ψ, i)
460-
if i == L && Vr == oneunit(Vr)
461-
println(io, "─[$i]─ ", physicalspace(ψ, i))
477+
if i > L - half_screen_rows
478+
if i == L
479+
connector = right_trivial ? "" : ""
480+
println(io, connector, "─[$i]─ ", physicalspace(ψ, i))
462481
elseif i == 1
463-
println(io, "", Vr)
464-
Vl = left_virtualspace(ψ, 1)
465-
if Vl == oneunit(Vr)
466-
println(io, "└─[$i]─ ", physicalspace(ψ, i))
467-
else
468-
println(io, "├─[$i]─ ", physicalspace(ψ, i))
469-
println(io, "", Vl)
470-
end
482+
connector = left_trivial ? "" : ""
483+
println(io, connector, "─[$i]─ ", physicalspace(ψ, i))
471484
else
472-
println(io, "", Vr)
473485
println(io, "├─[$i]─ ", physicalspace(ψ, i))
474486
end
487+
488+
i != 1 && println(io, "", left_virtualspace(ψ, i))
475489
elseif i == half_screen_rows
476490
println(io, "│ ⋮")
477-
end
478-
end
479-
480-
return nothing
481-
for site in HalfInt.(reverse((1 / 2):(1 / 2):(L + 1 / 2)))
482-
if site < half_screen_rows || site > L - half_screen_rows
483-
char = if isinteger(site)
484-
site == 1 ? charset.stop : (site == L && site > c) ? charset.start : charset.mid
485-
else
486-
site == HalfInt(L + 1 / 2) ? charset.start : site == HalfInt(1 / 2) ? charset.stop : charset.ver
487-
end
488-
if site > c # ARs
489-
if isinteger(site)
490-
print(io, char, charset.dash, " AR[$(Int(site))]: ", space.ARs[Int(site)]))
491-
site == 1 || println(io)
492-
end
493-
elseif site == c # AC or C
494-
if isinteger(c) # center is an AC
495-
print(io, char, charset.dash, " AC[$(Int(site))]: ", space.ACs[Int(site)]))
496-
site == 1 || println(io)
497-
else # center is a bond-tensor
498-
print(io, char, " C[$(Int(site - 1 / 2))]: ", space.Cs[Int(site + 1 / 2)]))
499-
site == 1 || println(io)
500-
end
491+
elseif i < half_screen_rows
492+
i != L && println(io, "", right_virtualspace(ψ, i))
493+
if i == L
494+
connector = right_trivial ? "" : ""
495+
println(io, connector, "─[$i]─ ", physicalspace(ψ, i))
496+
elseif i == 1
497+
connector = left_trivial ? "" : ""
498+
println(io, connector, "─[$i]─ ", physicalspace(ψ, i))
501499
else
502-
if isinteger(site)
503-
print(io, char, charset.dash, " AL[$(Int(site))]: ", space.ALs[Int(site)]))
504-
site == 1 || println(io)
505-
end
500+
println(io, "├─[$i]─ ", physicalspace(ψ, i))
506501
end
507-
elseif site == half_screen_rows
508-
println(io, charset.ver, "\n", charset.ver)
509-
site == 1 || println(io)
510502
end
511503
end
504+
left_trivial || println(io, "", Vleft)
505+
512506
return nothing
513507
end
514508

0 commit comments

Comments
 (0)