From eaf36eadf8b4320070e67a26f12734f743a6146b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20S=C3=A1nchez=20Ram=C3=ADrez?= Date: Tue, 10 Sep 2024 11:52:45 -0400 Subject: [PATCH] Support conversion from `ITensorNetwork` to `Quantum`, `TensorNetwork` --- ext/TenetITensorNetworksExt.jl | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ext/TenetITensorNetworksExt.jl b/ext/TenetITensorNetworksExt.jl index 97c35ef2..d3df7642 100644 --- a/ext/TenetITensorNetworksExt.jl +++ b/ext/TenetITensorNetworksExt.jl @@ -1,6 +1,22 @@ module TenetITensorNetworksExt using Tenet -using ITensorNetworks +using ITensorNetworks: ITensorNetworks, ITensorNetwork, ITensor, siteinds, plev, vertices +const ITensors = ITensorNetworks.ITensors +const DataGraphs = ITensorNetworks.DataGraphs + +Tenet.TensorNetwork(tn::ITensorNetwork) = TensorNetwork([tn[v] for v in vertices(tn)]) + +function Tenet.Quantum(tn::ITensorNetwork) + sitedict = Dict( + map(pairs(DataGraphs.vertex_data(siteinds(tn)))) do (loc, index) + index = only(index) + primelevel = plev(index) + @assert primelevel ∈ (0, 1) + Site(loc; dual=Bool(primelevel)) => Symbol(ITensors.id(index)) + end, + ) + return Quantum(TensorNetwork(tn), sitedict) +end end