Skip to content

Refactor TensorNetwork to class-based OOP organization #109

Refactor TensorNetwork to class-based OOP organization

Refactor TensorNetwork to class-based OOP organization #109

Triggered via pull request October 9, 2023 15:56
@mofeingmofeing
synchronize #103
refactor/oop
Status Failure
Total duration 20m 31s
Artifacts

Documenter.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

1 error and 6 warnings
Documenter
Process completed with exit code 1.
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
failed to run `@example` block in src/examples/ad-tn.md:10-25 ```@example autodiff using Tenet using Zygote using Random: seed! # hide rng = seed!(4) # hide ψ = rand(MPS{Open}, n = 4, p = 2, χ = 2) ϕ = rand(MPS{Open}, n = 4, p = 2, χ = 4) ψ = rand(rng, MPS{Open}, n = 4, p = 2, χ = 2) # hide ϕ = rand(rng, MPS{Open}, n = 4, p = 2, χ = 4) # hide tn = hcat(ψ, ϕ) plot(tn) # hide ``` exception = PlotMethodError: no plot method for arguments (::Matrix{QuantumTensorNetwork}). To support these arguments, define plot!(::Combined{Any, S} where S<:Tuple{Matrix{QuantumTensorNetwork}}) Available methods are: Stacktrace: [1] _plot!(p::Combined{Any, Tuple{Matrix{QuantumTensorNetwork}}}) @ Makie ~/.julia/packages/Makie/NrrbP/src/interfaces.jl:321 [2] plot!(p::Combined{Any, Tuple{Matrix{QuantumTensorNetwork}}}) @ Makie ~/.julia/packages/Makie/NrrbP/src/interfaces.jl:316 [3] plot!(scene::Scene, P::Type{Combined{Any, Tuple{Matrix{QuantumTensorNetwork}}}}, attributes::Attributes, input::Tuple{Observable{Matrix{QuantumTensorNetwork}}}, args::Observable{Tuple{Matrix{QuantumTensorNetwork}}}) @ Makie ~/.julia/packages/Makie/NrrbP/src/interfaces.jl:398 [4] plot!(scene::Scene, P::Type{Any}, attributes::Attributes, args::Matrix{QuantumTensorNetwork}; kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ Makie ~/.julia/packages/Makie/NrrbP/src/interfaces.jl:310 [5] plot!(scene::Scene, P::Type{Any}, attributes::Attributes, args::Matrix{QuantumTensorNetwork}) @ Makie ~/.julia/packages/Makie/NrrbP/src/interfaces.jl:275 [6] get_axis(fig::Any, P::Any, axis_kw::Dict, plot_attr::Any, plot_args::Any) @ Makie ~/.julia/packages/Makie/NrrbP/src/figureplotting.jl:43 [7] plot(P::Type{Any}, args::Matrix{QuantumTensorNetwork}; axis::NamedTuple{(), Tuple{}}, figure::NamedTuple{(), Tuple{}}, kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ Makie ~/.julia/packages/Makie/NrrbP/src/figureplotting.jl:62 [8] plot(P::Type{Any}, args::Matrix{QuantumTensorNetwork}) @ Makie ~/.julia/packages/Makie/NrrbP/src/figureplotting.jl:55 [9] plot(args::Matrix{QuantumTensorNetwork}; attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ MakieCore ~/.julia/packages/MakieCore/7iPhv/src/recipes.jl:35 [10] plot(args::Matrix{QuantumTensorNetwork}) @ MakieCore ~/.julia/packages/MakieCore/7iPhv/src/recipes.jl:34 [11] top-level scope @ ad-tn.md:24 [12] eval @ ./boot.jl:370 [inlined] [13] #54 @ ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:738 [inlined] [14] cd(f::Documenter.var"#54#56"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [15] (::Documenter.var"#53#55"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:737 [16] (::IOCapture.var"#3#5"{DataType, Documenter.var"#53#55"{Documenter.Page, Module, Expr}, Task, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:119 [17] with_logstate(f::Function, logstate::Any) @ Base.CoreLogging ./logging.jl:514 [18] with_logger @ ./logging.jl:626 [inlined] [19] capture(f::Documenter.var"#53#55"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool) @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:116 [20] runner(#unused#::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:736
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
failed to run `@example` block in src/examples/ad-tn.md:44-69 ```@example autodiff η = 0.01 @time losses = map(1:200) do it # compute gradient loss, ∇ = withgradient(Params(arrays(ψ))) do ((contract(tn) |> first) - 1)^2 end # direct gradient descent for array in arrays(ψ) array .-= η * ∇[array] end # normalize state normalize!(ψ) return loss end f = Figure() # hide ax = Axis(f[1, 1], yscale = log10, xscale = identity, xlabel="Iterations") # hide lines!(losses, label="Loss") # hide lines!(map(x -> 1 - sqrt(x), losses), label="Overlap") # hide f[1,2] = Legend(f, ax, framevisible=false) # hide f # hide ``` exception = MethodError: no method matching contract(::Matrix{QuantumTensorNetwork}) Closest candidates are: contract(::Union{AbstractArray{T, 0}, T}, !Matched::Tensor{T, N, A} where {N, A<:AbstractArray{T, N}}) where T @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Numerics.jl:67 contract(!Matched::Tensor; dims) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Numerics.jl:56 contract(!Matched::Tensor, !Matched::Tensor; dims) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Numerics.jl:40 ... Stacktrace: [1] macro expansion @ ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:101 [inlined] [2] _pullback(ctx::Zygote.Context{true}, f::typeof(contract), args::Matrix{QuantumTensorNetwork}) @ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:101 [3] _pullback @ ./ad-tn.md:49 [inlined] [4] _pullback(::Zygote.Context{true}, ::Main.__atexample__named__autodiff.var"#2#4") @ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface2.jl:0 [5] pullback(f::Function, ps::Zygote.Params{Zygote.Buffer{Array{Float64}, Vector{Array{Float64}}}}) @ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface.jl:414 [6] withgradient(f::Function, args::Zygote.Params{Zygote.Buffer{Array{Float64}, Vector{Array{Float64}}}}) @ Zygote ~/.julia/packages/Zygote/XJ8pP/src/compiler/interface.jl:154 [7] (::Main.__atexample__named__autodiff.var"#1#3")(it::Int64) @ Main.__atexample__named__autodiff ./ad-tn.md:48 [8] iterate @ ./generator.jl:47 [inlined] [9] _collect(c::UnitRange{Int64}, itr::Base.Generator{UnitRange{Int64}, Main.__atexample__named__autodiff.var"#1#3"}, #unused#::Base.EltypeUnknown, isz::Base.HasShape{1}) @ Base ./array.jl:802 [10] collect_similar(cont::UnitRange{Int64}, itr::Base.Generator{UnitRange{Int64}, Main.__atexample__named__autodiff.var"#1#3"}) @ Base ./array.jl:711 [11] map(f::Function, A::UnitRange{Int64}) @ Base ./abstractarray.jl:3263 [12] top-level scope @ ./timing.jl:273 [13] eval @ ./boot.jl:370 [inlined] [14] #54 @ ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:738 [inlined] [15] cd(f::Documenter.var"#54#56"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [16] (::Documenter.var"#53#55"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:737 [17] (::IOCapture.var"#3#5"{DataType, Documenter.var"#53#55"{Documenter.Page, Module, Expr}, Task, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:119 [18] with_logstate(f::Function, logstate::Any) @ Base.CoreLogging ./logging.jl:514 [19] with_logger @ ./logging.jl:626 [inlined] [20] capture(f::Documenter.var"#53#55"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool) @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:116 [21] runner(#unused#::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:736
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
failed to run `@example` block in src/examples/google-rqc.md:37-48 ```@example circuit using QuacIO using Tenet _sites = [5, 6, 14, 15, 16, 17, 24, 25, 26, 27, 28, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 72, 73, 74, 75, 76, 83, 84, 85, 94]; # load circuit and convert to `TensorNetwork` circuit = QuacIO.parse(joinpath(@__DIR__, "sycamore_53_10_0.qasm"), format = QuacIO.Qflex(), sites = _sites); tn = TensorNetwork(circuit) tn = view(tn, [i => 1 for i in inds(tn, set=:open)]...) plot(tn) # hide ``` exception = MethodError: no method matching inds(::Quac.Gate{Quac.Hz, 1, NamedTuple{(:θ, :ϕ), Tuple{Float64, Float64}}}) Closest candidates are: inds(!Matched::Tenet.AbstractQuantumTensorNetwork, !Matched::Val{:virtual}) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Quantum/Quantum.jl:21 inds(!Matched::Tenet.AbstractQuantumTensorNetwork, !Matched::Val{:physical}) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Quantum/Quantum.jl:20 inds(!Matched::Tenet.AbstractQuantumTensorNetwork, !Matched::Val{:out}) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/Quantum/Quantum.jl:18 ... Stacktrace: [1] (::Tenet.var"#65#68")(dict::Dict{Symbol, Vector{Int64}}, ::Tuple{Int64, Quac.Gate{Quac.Hz, 1, NamedTuple{(:θ, :ϕ), Tuple{Float64, Float64}}}}) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/TensorNetwork.jl:22 [2] BottomRF @ ./reduce.jl:81 [inlined] [3] _foldl_impl @ ./reduce.jl:58 [inlined] [4] foldl_impl(op::Base.BottomRF{Tenet.var"#65#68"}, nt::Dict{Symbol, Vector{Int64}}, itr::Base.Iterators.Enumerate{Quac.Circuit}) @ Base ./reduce.jl:48 [5] mapfoldl_impl @ ./reduce.jl:44 [inlined] [6] #mapfoldl#288 @ ./reduce.jl:170 [inlined] [7] mapfoldl @ ./reduce.jl:170 [inlined] [8] #mapreduce#292 @ ./reduce.jl:302 [inlined] [9] mapreduce @ ./reduce.jl:302 [inlined] [10] #reduce#294 @ ./reduce.jl:485 [inlined] [11] reduce @ ./reduce.jl:485 [inlined] [12] TensorNetwork(tensors::Quac.Circuit) @ Tenet ~/work/Tenet.jl/Tenet.jl/src/TensorNetwork.jl:21 [13] top-level scope @ google-rqc.md:45 [14] eval @ ./boot.jl:370 [inlined] [15] #54 @ ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:738 [inlined] [16] cd(f::Documenter.var"#54#56"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [17] (::Documenter.var"#53#55"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:737 [18] (::IOCapture.var"#3#5"{DataType, Documenter.var"#53#55"{Documenter.Page, Module, Expr}, Task, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:119 [19] with_logstate(f::Function, logstate::Any) @ Base.CoreLogging ./logging.jl:514 [20] with_logger @ ./logging.jl:626 [inlined] [21] capture(f::Documenter.var"#53#55"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool) @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:116 [22] runner(#unused#::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:736
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
failed to run `@example` block in src/examples/google-rqc.md:52-56 ```@example circuit # simplify Tensor Network by preemptively contracting trivial cases tn = transform(tn, Tenet.RankSimplification) plot(tn, layout=Stress()) # hide ``` exception = UndefVarError: `tn` not defined Stacktrace: [1] top-level scope @ google-rqc.md:54 [2] eval @ ./boot.jl:370 [inlined] [3] #54 @ ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:738 [inlined] [4] cd(f::Documenter.var"#54#56"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [5] (::Documenter.var"#53#55"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:737 [6] (::IOCapture.var"#3#5"{DataType, Documenter.var"#53#55"{Documenter.Page, Module, Expr}, Task, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:119 [7] with_logstate(f::Function, logstate::Any) @ Base.CoreLogging ./logging.jl:514 [8] with_logger @ ./logging.jl:626 [inlined] [9] capture(f::Documenter.var"#53#55"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool) @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:116 [10] runner(#unused#::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:736
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
failed to run `@example` block in src/examples/google-rqc.md:60-64 ```@example circuit using EinExprs path = einexpr(tn, optimizer = Greedy) plot(path, layout=Stress()) # hide ``` exception = UndefVarError: `tn` not defined Stacktrace: [1] top-level scope @ google-rqc.md:62 [2] eval @ ./boot.jl:370 [inlined] [3] #54 @ ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:738 [inlined] [4] cd(f::Documenter.var"#54#56"{Module, Expr}, dir::String) @ Base.Filesystem ./file.jl:112 [5] (::Documenter.var"#53#55"{Documenter.Page, Module, Expr})() @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:737 [6] (::IOCapture.var"#3#5"{DataType, Documenter.var"#53#55"{Documenter.Page, Module, Expr}, Task, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}, IOContext{Base.PipeEndpoint}})() @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:119 [7] with_logstate(f::Function, logstate::Any) @ Base.CoreLogging ./logging.jl:514 [8] with_logger @ ./logging.jl:626 [inlined] [9] capture(f::Documenter.var"#53#55"{Documenter.Page, Module, Expr}; rethrow::Type, color::Bool) @ IOCapture ~/.julia/packages/IOCapture/8Uj7o/src/IOCapture.jl:116 [10] runner(#unused#::Type{Documenter.Expanders.ExampleBlocks}, node::MarkdownAST.Node{Nothing}, page::Documenter.Page, doc::Documenter.Document) @ Documenter ~/.julia/packages/Documenter/9kOxY/src/expander_pipeline.jl:736
Documenter: ../../../.julia/packages/Documenter/9kOxY/src/utilities/utilities.jl#L46
undefined binding 'Quantum' in `@docs` block in src/quantum/index.md:3-5 ```@docs Quantum ```