From f61d5445eddb013d4c642ea01c169c0bf3bbee0d Mon Sep 17 00:00:00 2001 From: Matthew Fishman Date: Fri, 28 Aug 2026 21:45:12 -0400 Subject: [PATCH 1/3] Migrate to the NamedGraphs v0.14 interface NamedGraphs v0.14 removed the submodules and the position-graph interface this package imported, so it no longer loads, and five docs pages used the removed generators submodule. The contraction-sequence `Key` is vendored here now, since its old form relied on removed ordinal indexing. --- Project.toml | 12 +++++++-- docs/Project.toml | 2 +- docs/src/computing_properties.md | 3 +-- docs/src/developer_methods.md | 2 +- docs/src/experimental_methods.md | 4 +-- docs/src/itensor_networks.md | 5 ++-- docs/src/solvers.md | 3 +-- docs/src/tree_tensor_networks.md | 4 +-- src/abstractindsnetwork.jl | 6 ++--- src/abstractitensornetwork.jl | 20 +++++---------- src/caches/abstractbeliefpropagationcache.jl | 6 ++--- src/contract.jl | 9 ++++--- src/contraction_sequences.jl | 25 ++++++++++++++----- src/edge_sequences.jl | 10 ++++---- src/formnetworks/abstractformnetwork.jl | 8 +++--- src/formnetworks/bilinearformnetwork.jl | 4 +-- src/formnetworks/linearformnetwork.jl | 4 +-- src/indsnetwork.jl | 5 ++-- src/solvers/region_plans/dfs_plans.jl | 3 +-- src/solvers/region_plans/euler_plans.jl | 2 +- src/solvers/subspace/densitymatrix.jl | 2 +- .../abstracttreetensornetwork.jl | 21 ++++++++-------- .../opsum_to_ttn/opsum_to_ttn.jl | 7 +++--- .../projttns/abstractprojttn.jl | 3 +-- .../projttns/projouterprodttn.jl | 2 +- src/treetensornetworks/projttns/projttn.jl | 3 +-- src/treetensornetworks/projttns/projttnsum.jl | 3 +-- src/treetensornetworks/treetensornetwork.jl | 3 +-- test/Project.toml | 4 +-- test/solvers/test_applyexp.jl | 3 +-- test/test_abstractgraph.jl | 3 +-- test/test_additensornetworks.jl | 3 +-- test/test_apply.jl | 2 +- test/test_belief_propagation.jl | 2 +- test/test_contraction_sequence.jl | 2 +- test/test_expect.jl | 3 +-- test/test_forms.jl | 2 +- test/test_indsnetwork.jl | 2 +- test/test_itensornetwork.jl | 4 +-- test/test_itensornetworksadaptext.jl | 2 +- test/test_normalize.jl | 3 +-- test/test_opsum_to_ttn.jl | 2 +- test/test_opsum_to_ttn_mpo_cross_check.jl | 3 +-- test/test_sitetype.jl | 2 +- test/test_tebd.jl | 3 +-- test/test_ttn_expect.jl | 2 +- test/test_ttn_position.jl | 3 +-- test/test_ttns.jl | 2 +- test/utils.jl | 5 ++-- 49 files changed, 112 insertions(+), 126 deletions(-) diff --git a/Project.toml b/Project.toml index 149749fde..014250f9d 100644 --- a/Project.toml +++ b/Project.toml @@ -33,6 +33,14 @@ ITensorVisualizationBase = "cd2553d2-8bef-4d93-8a38-c62f17d5ad23" OMEinsumContractionOrders = "6f22d1fd-8eed-4bb7-9776-e7d684900715" TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" +[sources.DataGraphs] +rev = "mf/namedgraphs-v0.14" +url = "https://github.com/ITensor/DataGraphs.jl" + +[sources.NamedGraphs] +rev = "main" +url = "https://github.com/ITensor/NamedGraphs.jl" + [extensions] ITensorNetworksITensorVisualizationBaseExt = "ITensorVisualizationBase" ITensorNetworksOMEinsumContractionOrdersExt = "OMEinsumContractionOrders" @@ -41,7 +49,7 @@ ITensorNetworksTensorOperationsExt = "TensorOperations" [compat] Accessors = "0.1.42" Adapt = "4" -DataGraphs = "0.4.1, 0.5" +DataGraphs = "0.6" Dictionaries = "0.4" DocStringExtensions = "0.9" Graphs = "1.8" @@ -51,7 +59,7 @@ IsApprox = "0.1, 1, 2" KrylovKit = "0.6, 0.7, 0.8, 0.9, 0.10" MacroTools = "0.5" NDTensors = "0.3, 0.4" -NamedGraphs = "0.11.1, 0.12, 0.13" +NamedGraphs = "0.14" OMEinsumContractionOrders = "0.8.3, 0.9, 1" SimpleTraits = "0.9" SplitApplyCombine = "1.2" diff --git a/docs/Project.toml b/docs/Project.toml index d0d00b827..8e6c69577 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -19,6 +19,6 @@ ITensorFormatter = "0.2.27" ITensorNetworks = "0.23" ITensors = "0.9" Literate = "2.20.1" -NamedGraphs = "0.11, 0.12, 0.13" +NamedGraphs = "0.14" OMEinsumContractionOrders = "1.2.2" TensorOperations = "5.5" diff --git a/docs/src/computing_properties.md b/docs/src/computing_properties.md index 71396880c..1c22b4d64 100644 --- a/docs/src/computing_properties.md +++ b/docs/src/computing_properties.md @@ -6,8 +6,7 @@ using ITensorNetworks: ITensorNetwork, TreeTensorNetwork, expect, inner, loginner, normalize, siteinds using ITensors: Index, random_itensor using LinearAlgebra: norm -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: incident_edges, named_grid function random_state(g, s; link_space) l = Dict(e => Index(link_space, "Link") for e in edges(g)) diff --git a/docs/src/developer_methods.md b/docs/src/developer_methods.md index c9fb876f8..213457620 100644 --- a/docs/src/developer_methods.md +++ b/docs/src/developer_methods.md @@ -168,7 +168,7 @@ * Tree-traversal sequence: cover `g` with a forest, then for each tree push a post-order DFS sweep followed by its reverse — gives a back-and-forth sequence covering every edge (`edge_sequences.jl`): ```julia - edge_sequence(::Algorithm"forest_cover", g; root_vertex = GraphsExtensions.default_root_vertex) + edge_sequence(::Algorithm"forest_cover", g; root_vertex = default_root_vertex) ``` * Parallel sequence: each edge (and its reverse) as its own one-edge group, suitable diff --git a/docs/src/experimental_methods.md b/docs/src/experimental_methods.md index e89d37533..c78eac049 100644 --- a/docs/src/experimental_methods.md +++ b/docs/src/experimental_methods.md @@ -55,13 +55,13 @@ Methods which still need to be discussed, modified, or deprecated. * Sweep-based truncation. The whole-TTN form orthogonalizes towards `src(e)` before each bond truncation; the edge form lifts `truncate` from the underlying `ITensorNetwork` (`treetensornetworks/abstracttreetensornetwork.jl`): ```julia - truncate(tn::AbstractTTN; root_vertex = GraphsExtensions.default_root_vertex(tn), kwargs...) + truncate(tn::AbstractTTN; root_vertex = default_root_vertex(tn), kwargs...) truncate(tn::AbstractTTN, edge::AbstractEdge; kwargs...) ``` * Contract the whole tree into a single `ITensor` via a reverse post-order DFS sequence (`treetensornetworks/abstracttreetensornetwork.jl`): ```julia - contract(tn::AbstractTTN, root_vertex = GraphsExtensions.default_root_vertex(tn); kwargs...) + contract(tn::AbstractTTN, root_vertex = default_root_vertex(tn); kwargs...) ``` * Inner product `⟨x|y⟩`, matrix element `⟨y|A|x⟩`, and four-network form `⟨B|y|A|x⟩`, diff --git a/docs/src/itensor_networks.md b/docs/src/itensor_networks.md index 9cef13d02..eeb6e2891 100644 --- a/docs/src/itensor_networks.md +++ b/docs/src/itensor_networks.md @@ -23,7 +23,7 @@ indices: using Graphs: edges, ne, neighbors, nv, vertices using ITensorNetworks: ITensorNetwork, add, linkinds, siteinds using ITensors: Index, ITensor -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid i, j, k = Index(2, "i"), Index(2, "j"), Index(2, "k") A, B, C = ITensor(i, j), ITensor(j, k), ITensor(k) @@ -39,8 +39,7 @@ indices on each edge, build the indices once per edge and reuse them at both end ```@example main using ITensors: random_itensor -using NamedGraphs: NamedGraph -using NamedGraphs.GraphsExtensions: edgetype, incident_edges +using NamedGraphs: NamedGraph, edgetype, incident_edges g = NamedGraph(named_grid((3, 3))) s = siteinds("S=1/2", g) # one spin-½ site Index per vertex diff --git a/docs/src/solvers.md b/docs/src/solvers.md index 7769931fe..d81432fe4 100644 --- a/docs/src/solvers.md +++ b/docs/src/solvers.md @@ -20,8 +20,7 @@ using Graphs: vertices using ITensorNetworks: ITensorNetwork, TreeTensorNetwork, dmrg, dst, edges, normalize, siteinds, src using ITensors: Index, OpSum, random_itensor -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: incident_edges, named_comb_tree function random_state(g, s; link_space) l = Dict(e => Index(link_space, "Link") for e in edges(g)) diff --git a/docs/src/tree_tensor_networks.md b/docs/src/tree_tensor_networks.md index 67ee74dec..2a144ef45 100644 --- a/docs/src/tree_tensor_networks.md +++ b/docs/src/tree_tensor_networks.md @@ -37,9 +37,7 @@ using ITensorNetworks: ITensorNetwork, TreeTensorNetwork, ortho_region, orthogon siteinds using ITensors: ITensors, Index, random_itensor using LinearAlgebra: norm -using NamedGraphs: NamedGraph -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: NamedGraph, incident_edges, named_comb_tree # Comb-tree TTN (a popular tree topology for 2D-like systems) g = NamedGraph(named_comb_tree((3, 2))) diff --git a/src/abstractindsnetwork.jl b/src/abstractindsnetwork.jl index 3253cc63a..2ae2b7ced 100644 --- a/src/abstractindsnetwork.jl +++ b/src/abstractindsnetwork.jl @@ -3,9 +3,7 @@ using DataGraphs: DataGraphs, AbstractDataGraph, DataGraph, IsUnderlyingGraph, e set_edge_data!, set_vertex_data!, underlying_graph_type, vertex_data using Graphs: Graphs, AbstractEdge using ITensors: ITensors, Index, unioninds -using NamedGraphs.GraphsExtensions: - GraphsExtensions, directed_graph, incident_edges, rename_vertices -using NamedGraphs: NamedGraphs +using NamedGraphs: NamedGraphs, directed_graph, incident_edges, rename_vertices abstract type AbstractIndsNetwork{V, I} <: AbstractDataGraph{V, Vector{I}, Vector{I}} end @@ -14,7 +12,7 @@ data_graph(graph::AbstractIndsNetwork) = not_implemented() # Overload if needed Graphs.is_directed(::Type{<:AbstractIndsNetwork}) = false -GraphsExtensions.directed_graph(is::AbstractIndsNetwork) = directed_graph(data_graph(is)) +NamedGraphs.directed_graph(is::AbstractIndsNetwork) = directed_graph(data_graph(is)) # AbstractDataGraphs overloads DataGraphs.underlying_graph(is::AbstractIndsNetwork) = underlying_graph(data_graph(is)) diff --git a/src/abstractitensornetwork.jl b/src/abstractitensornetwork.jl index 8f2daa300..1a60a1df4 100644 --- a/src/abstractitensornetwork.jl +++ b/src/abstractitensornetwork.jl @@ -3,15 +3,14 @@ using DataGraphs: DataGraphs, set_vertex_data!, underlying_graph, underlying_graph_type, vertex_data using Dictionaries: Dictionaries, Dictionary using Graphs: Graphs, Graph, add_edge!, add_vertex!, bfs_tree, center, dst, edges, edgetype, - has_edge, ne, neighbors, rem_edge!, src, vertices + has_edge, ne, neighbors, rem_edge!, src, steiner_tree, vertices using ITensors: ITensors, ITensor, Index, addtags, commoninds, commontags, contract, dag, inds, noprime, onehot, prime, replaceprime, replacetags, setprime, settags, sim, swaptags, tags using LinearAlgebra: LinearAlgebra, qr, qr! using NDTensors: NDTensors, Algorithm, dim, scalartype -using NamedGraphs.GraphsExtensions: - add_edges, directed_graph, incident_edges, rename_vertices, vertextype, ⊔ -using NamedGraphs: NamedGraphs, NamedGraph, Vertices, not_implemented, steiner_tree +using NamedGraphs: NamedGraphs, NamedGraph, add_edges, directed_graph, incident_edges, + not_implemented, rename_vertices, vertextype, ⊔ using SplitApplyCombine: flatten abstract type AbstractITensorNetwork{V} <: AbstractDataGraph{V, ITensor, ITensor} end @@ -56,7 +55,7 @@ Base.eltype(tn::AbstractITensorNetwork) = eltype(vertex_data(tn)) # Overload if needed Graphs.is_directed(::Type{<:AbstractITensorNetwork}) = false -function GraphsExtensions.directed_graph(tn::AbstractITensorNetwork) +function NamedGraphs.directed_graph(tn::AbstractITensorNetwork) return directed_graph(underlying_graph(tn)) end @@ -75,13 +74,6 @@ DataGraphs.is_edge_assigned(::AbstractITensorNetwork, _) = false DataGraphs.get_vertex_data(tn::AbstractITensorNetwork, v) = vertex_data(tn)[v] -function NamedGraphs.vertex_positions(tn::AbstractITensorNetwork) - return NamedGraphs.vertex_positions(underlying_graph(tn)) -end -function NamedGraphs.ordered_vertices(tn::AbstractITensorNetwork) - return NamedGraphs.ordered_vertices(underlying_graph(tn)) -end - function Adapt.adapt_structure(to, tn::AbstractITensorNetwork) return map(adapt(to), tn) end @@ -623,7 +615,7 @@ function add(tn1::AbstractITensorNetwork, tn2::AbstractITensorNetwork) length(linkinds(tn2, e)) > 1 && qr!(tn2, e) end - edges_tn1, edges_tn2 = edges(tn1), edges(tn2) + edges_tn1, edges_tn2 = collect(edges(tn1)), collect(edges(tn2)) if !issetequal(edges_tn1, edges_tn2) new_edges = union(edges_tn1, edges_tn2) @@ -631,7 +623,7 @@ function add(tn1::AbstractITensorNetwork, tn2::AbstractITensorNetwork) tn2 = add_edges(tn2, new_edges) end - edges_tn1, edges_tn2 = edges(tn1), edges(tn2) + edges_tn1, edges_tn2 = collect(edges(tn1)), collect(edges(tn2)) @assert issetequal(edges_tn1, edges_tn2) tn12 = copy(tn1) diff --git a/src/caches/abstractbeliefpropagationcache.jl b/src/caches/abstractbeliefpropagationcache.jl index 29eb6542a..ba0a6ea56 100644 --- a/src/caches/abstractbeliefpropagationcache.jl +++ b/src/caches/abstractbeliefpropagationcache.jl @@ -5,18 +5,16 @@ using Graphs: Graphs, IsDirected, dst, src using ITensors: dir using LinearAlgebra: diag, dot using NDTensors: NDTensors -using NamedGraphs.GraphsExtensions: subgraph using NamedGraphs.PartitionedGraphs: PartitionedGraph, PartitionedGraphs, QuotientEdge, QuotientVertex, boundary_quotientedges, quotientedges, quotientvertices, unpartitioned_graph -using NamedGraphs.SimilarType: SimilarType -using NamedGraphs: to_graph_index +using NamedGraphs: NamedGraphs, subgraph, to_graph_index using SimpleTraits: SimpleTraits, @traitfn, Not using SplitApplyCombine: group abstract type AbstractBeliefPropagationCache{V, PV} <: AbstractITensorNetwork{V} end -function SimilarType.similar_type(bpc::AbstractBeliefPropagationCache) +function NamedGraphs.similar_type(bpc::AbstractBeliefPropagationCache) return typeof(tensornetwork(bpc)) end diff --git a/src/contract.jl b/src/contract.jl index 3592700ef..770603563 100644 --- a/src/contract.jl +++ b/src/contract.jl @@ -1,8 +1,7 @@ using ITensors.NDTensors: @Algorithm_str, Algorithm, NDTensors, contract using ITensors: ITensor, scalar using LinearAlgebra: normalize! -using NamedGraphs.OrdinalIndexing: th -using NamedGraphs: NamedGraphs +using NamedGraphs: decoded_vertex, encoded_vertex, to_graph_index function NDTensors.contract(tn::AbstractITensorNetwork; alg = "exact", kwargs...) return contract(Algorithm(alg), tn; kwargs...) @@ -15,8 +14,10 @@ function NDTensors.contract( sequence = contraction_sequence(tn; contraction_sequence_kwargs...), kwargs... ) - sequence_linear_index = deepmap(v -> NamedGraphs.vertex_positions(tn)[v], sequence) - ts = map(v -> tn[v], (1:nv(tn))th) + sequence_linear_index = deepmap( + v -> encoded_vertex(tn, to_graph_index(tn, v)), sequence + ) + ts = map(code -> tn[decoded_vertex(tn, code)], 1:nv(tn)) return contract(ts; sequence = sequence_linear_index, kwargs...) end diff --git a/src/contraction_sequences.jl b/src/contraction_sequences.jl index 281189250..1acd709a8 100644 --- a/src/contraction_sequences.jl +++ b/src/contraction_sequences.jl @@ -1,8 +1,22 @@ -using Graphs: vertices +using Graphs: nv, vertices using ITensors.NDTensors: @Algorithm_str, Algorithm using ITensors: ITensor -using NamedGraphs.Keys: Key -using NamedGraphs.OrdinalIndexing: th +using NamedGraphs: NamedGraphs, decoded_vertex + +# A key (index) type, used for unambiguously identifying an object as a key or +# index of an indexable object rather than as a container to descend into. That +# distinction matters for the nested structure of a contraction sequence, whose +# leaves are vertices that may themselves be containers: +# +# [Key([1, 2]), [Key([3, 4]), Key([5, 6])]] +struct Key{K} + I::K +end +Key(I...) = Key(I) + +Base.show(io::IO, I::Key) = print(io, "Key(", I.I, ")") + +NamedGraphs.to_graph_index(graph, key::Key) = key.I const ITensorList = Union{Vector{ITensor}, Tuple{Vararg{ITensor}}} @@ -24,9 +38,8 @@ function deepmap(f, tree; filter = (x -> x isa AbstractArray)) end function contraction_sequence(tn::AbstractITensorNetwork; kwargs...) - # TODO: Use `token_vertex` and/or `token_vertices` here. - ts = map(v -> tn[v], (1:nv(tn))th) + ts = map(code -> tn[decoded_vertex(tn, code)], 1:nv(tn)) seq_linear_index = contraction_sequence(ts; kwargs...) # TODO: Use `Functors.fmap` or `StructWalk`? - return deepmap(n -> Key(vertices(tn)[n * th]), seq_linear_index) + return deepmap(code -> Key(decoded_vertex(tn, code)), seq_linear_index) end diff --git a/src/edge_sequences.jl b/src/edge_sequences.jl index 9cf9ed575..429f49fc8 100644 --- a/src/edge_sequences.jl +++ b/src/edge_sequences.jl @@ -1,9 +1,8 @@ using Graphs: IsDirected, connected_components, edges, edgetype using ITensors.NDTensors: @Algorithm_str, Algorithm -using NamedGraphs.GraphsExtensions: - GraphsExtensions, forest_cover, subgraph, undirected_graph using NamedGraphs.PartitionedGraphs: PartitionedGraph, QuotientEdge, quotient_graph -using NamedGraphs: NamedGraphs +using NamedGraphs: + NamedGraphs, default_root_vertex, forest_cover, subgraph, undirected_graph using SimpleTraits: SimpleTraits, @traitfn, Not default_edge_sequence_alg() = "forest_cover" @@ -32,7 +31,7 @@ end @traitfn function edge_sequence( ::Algorithm"forest_cover", g::::(!IsDirected); - root_vertex = GraphsExtensions.default_root_vertex + root_vertex = default_root_vertex ) forests = forest_cover(g) edges = edgetype(g)[] @@ -47,5 +46,6 @@ end end @traitfn function edge_sequence(::Algorithm"parallel", g::::(!IsDirected)) - return [[e] for e in vcat(edges(g), reverse.(edges(g)))] + es = collect(edges(g)) + return [[e] for e in vcat(es, reverse.(es))] end diff --git a/src/formnetworks/abstractformnetwork.jl b/src/formnetworks/abstractformnetwork.jl index 6a041dbc0..cbff439f3 100644 --- a/src/formnetworks/abstractformnetwork.jl +++ b/src/formnetworks/abstractformnetwork.jl @@ -1,6 +1,6 @@ using DataGraphs: DataGraphs, underlying_graph, vertex_data using Graphs: induced_subgraph -using NamedGraphs.SimilarType: SimilarType +using NamedGraphs: NamedGraphs default_bra_vertex_suffix() = "bra" default_ket_vertex_suffix() = "ket" @@ -10,18 +10,18 @@ abstract type AbstractFormNetwork{V} <: AbstractITensorNetwork{V} end #Needed for interface dual_index_map(f::AbstractFormNetwork) = not_implemented() -# TODO: Use `NamedGraphs.GraphsExtensions.parent_graph`. +# TODO: Use `NamedGraphs.parent_graph`. tensornetwork(f::AbstractFormNetwork) = not_implemented() Base.copy(f::AbstractFormNetwork) = not_implemented() operator_vertex_suffix(f::AbstractFormNetwork) = not_implemented() bra_vertex_suffix(f::AbstractFormNetwork) = not_implemented() ket_vertex_suffix(f::AbstractFormNetwork) = not_implemented() -function SimilarType.similar_type(f::AbstractFormNetwork) +function NamedGraphs.similar_type(f::AbstractFormNetwork) return typeof(tensornetwork(f)) end -# TODO: Use `NamedGraphs.GraphsExtensions.parent_graph` / `parent_graph_type`. +# TODO: Use `NamedGraphs.parent_graph` / `parent_graph_type`. DataGraphs.underlying_graph(f::AbstractFormNetwork) = underlying_graph(tensornetwork(f)) DataGraphs.vertex_data(f::AbstractFormNetwork) = vertex_data(tensornetwork(f)) diff --git a/src/formnetworks/bilinearformnetwork.jl b/src/formnetworks/bilinearformnetwork.jl index 0404acf23..ed13fca31 100644 --- a/src/formnetworks/bilinearformnetwork.jl +++ b/src/formnetworks/bilinearformnetwork.jl @@ -2,7 +2,7 @@ using Adapt: adapt using DataGraphs: DataGraphs, set_vertex_data! using ITensors.NDTensors: datatype, denseblocks using ITensors: ITensor, Index, Op, dag, delta, prime, sim -using NamedGraphs.GraphsExtensions: disjoint_union +using NamedGraphs: disjoint_union default_dual_site_index_map = prime default_dual_link_index_map = sim @@ -44,7 +44,7 @@ end operator_vertex_suffix(blf::BilinearFormNetwork) = blf.operator_vertex_suffix bra_vertex_suffix(blf::BilinearFormNetwork) = blf.bra_vertex_suffix ket_vertex_suffix(blf::BilinearFormNetwork) = blf.ket_vertex_suffix -# TODO: Use `NamedGraphs.GraphsExtensions.parent_graph`. +# TODO: Use `NamedGraphs.parent_graph`. tensornetwork(blf::BilinearFormNetwork) = blf.tensornetwork # Forward vertex writes to the wrapped network so reverse-index map and diff --git a/src/formnetworks/linearformnetwork.jl b/src/formnetworks/linearformnetwork.jl index 9e9fb4c43..b4f774daf 100644 --- a/src/formnetworks/linearformnetwork.jl +++ b/src/formnetworks/linearformnetwork.jl @@ -1,6 +1,6 @@ using DataGraphs: DataGraphs, set_vertex_data! using ITensors: ITensor, dag, prime -using NamedGraphs.GraphsExtensions: disjoint_union +using NamedGraphs: disjoint_union default_dual_link_index_map = prime @@ -36,7 +36,7 @@ end bra_vertex_suffix(lf::LinearFormNetwork) = lf.bra_vertex_suffix ket_vertex_suffix(lf::LinearFormNetwork) = lf.ket_vertex_suffix -# TODO: Use `NamedGraphs.GraphsExtensions.parent_graph`. +# TODO: Use `NamedGraphs.parent_graph`. tensornetwork(lf::LinearFormNetwork) = lf.tensornetwork # Forward vertex writes to the wrapped network so reverse-index map and diff --git a/src/indsnetwork.jl b/src/indsnetwork.jl index d65a6b14e..a77e6fa6c 100644 --- a/src/indsnetwork.jl +++ b/src/indsnetwork.jl @@ -4,9 +4,8 @@ using Dictionaries: AbstractDictionary, Dictionary, Indices using Graphs.SimpleGraphs: AbstractSimpleGraph using Graphs: Graphs using ITensors: Index, QN, dag -using NamedGraphs.GraphsExtensions: vertextype -using NamedGraphs.NamedGraphGenerators: named_path_graph -using NamedGraphs: NamedGraphs, AbstractNamedGraph, NamedEdge, NamedGraph +using NamedGraphs: + NamedGraphs, AbstractNamedGraph, NamedEdge, NamedGraph, named_path_graph, vertextype using SimpleTraits: SimpleTraits, @traitfn, Not # Spaces accepted by `Index`: a plain `Integer` dimension (dense) or a QN-block diff --git a/src/solvers/region_plans/dfs_plans.jl b/src/solvers/region_plans/dfs_plans.jl index 7a5c32b7c..79d51dbd9 100644 --- a/src/solvers/region_plans/dfs_plans.jl +++ b/src/solvers/region_plans/dfs_plans.jl @@ -1,6 +1,5 @@ using Graphs: dst, src -using NamedGraphs.GraphsExtensions: - default_root_vertex, post_order_dfs_edges, post_order_dfs_vertices +using NamedGraphs: default_root_vertex, post_order_dfs_edges, post_order_dfs_vertices function post_order_dfs_plan( graph, sweep_kwargs; nsites, root_vertex = default_root_vertex(graph) diff --git a/src/solvers/region_plans/euler_plans.jl b/src/solvers/region_plans/euler_plans.jl index d4076c118..856988e06 100644 --- a/src/solvers/region_plans/euler_plans.jl +++ b/src/solvers/region_plans/euler_plans.jl @@ -1,5 +1,5 @@ using Graphs: dst, src -using NamedGraphs.GraphsExtensions: default_root_vertex +using NamedGraphs: default_root_vertex function euler_sweep( graph; diff --git a/src/solvers/subspace/densitymatrix.jl b/src/solvers/subspace/densitymatrix.jl index 558efdf69..973509e6e 100644 --- a/src/solvers/subspace/densitymatrix.jl +++ b/src/solvers/subspace/densitymatrix.jl @@ -1,5 +1,5 @@ using ITensors: hascommoninds, uniqueinds -using NamedGraphs.GraphsExtensions: incident_edges +using NamedGraphs: incident_edges using Printf: @printf function subspace_expand!( diff --git a/src/treetensornetworks/abstracttreetensornetwork.jl b/src/treetensornetworks/abstracttreetensornetwork.jl index f1fb6bd22..db3e032c1 100644 --- a/src/treetensornetworks/abstracttreetensornetwork.jl +++ b/src/treetensornetworks/abstracttreetensornetwork.jl @@ -3,9 +3,8 @@ using Graphs: has_vertex using ITensors: ITensors, @Algorithm_str, Algorithm, ITensor, directsum, hasinds, permute, plev using IsApprox: IsApprox, Approx -using NamedGraphs.GraphsExtensions: GraphsExtensions, a_star, edge_path, leaf_vertices, - post_order_dfs_edges, post_order_dfs_vertices, vertextype -using NamedGraphs: NamedGraph, namedgraph_a_star, steiner_tree +using NamedGraphs: NamedGraph, default_root_vertex, post_order_dfs_edges, + post_order_dfs_vertices, vertextype using TupleTools: TupleTools abstract type AbstractTreeTensorNetwork{V} <: AbstractITensorNetwork{V} end @@ -76,7 +75,7 @@ Truncation parameters are passed through `kwargs`. See also: [`orthogonalize`](@ref). """ function Base.truncate( - tn::AbstractTTN; root_vertex = GraphsExtensions.default_root_vertex(tn), kwargs... + tn::AbstractTTN; root_vertex = default_root_vertex(tn), kwargs... ) for e in post_order_dfs_edges(tn, root_vertex) # always orthogonalize towards source first to make truncations controlled @@ -98,7 +97,7 @@ end # TODO: decide on contraction order: reverse dfs vertices or forward dfs edges? function NDTensors.contract( - tn::AbstractTTN, root_vertex = GraphsExtensions.default_root_vertex(tn); kwargs... + tn::AbstractTTN, root_vertex = default_root_vertex(tn); kwargs... ) tn = copy(tn) # reverse post order vertices @@ -123,7 +122,7 @@ Both networks must have the same graph structure and compatible site indices. See also: [`loginner`](@ref ITensorNetworks.loginner), `norm`, [`inner(y, A, x)`](@ref ITensorNetworks.inner). """ function ITensors.inner( - x::AbstractTTN, y::AbstractTTN; root_vertex = GraphsExtensions.default_root_vertex(x) + x::AbstractTTN, y::AbstractTTN; root_vertex = default_root_vertex(x) ) xᴴ = sim(dag(x); sites = []) y = sim(y; sites = []) @@ -212,7 +211,7 @@ end # TODO: stick with this traversal or find optimal contraction sequence? function loginner( tn1::AbstractTTN, tn2::AbstractTTN; - root_vertex = GraphsExtensions.default_root_vertex(tn1) + root_vertex = default_root_vertex(tn1) ) N = nv(tn1) if nv(tn2) != N @@ -252,7 +251,7 @@ end function Base.:+( ::Algorithm"directsum", tns::AbstractTTN...; - root_vertex = GraphsExtensions.default_root_vertex(first(tns)) + root_vertex = default_root_vertex(first(tns)) ) @assert all(tn -> nv(first(tns)) == nv(tn), tns) @@ -369,7 +368,7 @@ function ITensors.inner( y::AbstractTTN, A::AbstractTTN, x::AbstractTTN; - root_vertex = GraphsExtensions.default_root_vertex(x) + root_vertex = default_root_vertex(x) ) traversal_order = reverse(post_order_dfs_vertices(x, root_vertex)) ydag = sim(dag(y); sites = []) @@ -387,7 +386,7 @@ function ITensors.inner( y::AbstractTTN, A::AbstractTTN, x::AbstractTTN; - root_vertex = GraphsExtensions.default_root_vertex(B) + root_vertex = default_root_vertex(B) ) N = nv(B) if nv(y) != N || nv(x) != N || nv(A) != N @@ -447,7 +446,7 @@ function expect( state::AbstractTTN; vertices = vertices(state), # TODO: verify that this is a sane default - root_vertex = GraphsExtensions.default_root_vertex(state) + root_vertex = default_root_vertex(state) ) # TODO: Optimize this with proper caching. state /= norm(state) diff --git a/src/treetensornetworks/opsum_to_ttn/opsum_to_ttn.jl b/src/treetensornetworks/opsum_to_ttn/opsum_to_ttn.jl index 2fca80e00..ac1503629 100644 --- a/src/treetensornetworks/opsum_to_ttn/opsum_to_ttn.jl +++ b/src/treetensornetworks/opsum_to_ttn/opsum_to_ttn.jl @@ -5,9 +5,8 @@ using ITensors.LazyApply: Prod, Sum, coefficient using ITensors.NDTensors: Block, blockdim, maxdim, nblocks, nnzblocks, truncate! using ITensors.Ops: Op, OpSum, argument, coefficient, name, params, site, terms, which_op using ITensors: ITensor, flux, has_fermion_string, itensor, removeqns, space -using NamedGraphs.GraphsExtensions: - GraphsExtensions, boundary_edges, degrees, is_leaf_vertex, vertex_path, vertextype -using NamedGraphs: NamedGraph +using NamedGraphs: + NamedGraph, boundary_edges, default_root_vertex, is_leaf_vertex, vertextype using StaticArrays: MVector # @@ -646,7 +645,7 @@ Convert an OpSum object `os` to a TreeTensorNetwork, with indices given by `site function TreeTensorNetwork( os::OpSum, sites::IndsNetwork; - root_vertex = GraphsExtensions.default_root_vertex(sites), + root_vertex = default_root_vertex(sites), kwargs... ) length(terms(os)) == 0 && error("OpSum has no terms") diff --git a/src/treetensornetworks/projttns/abstractprojttn.jl b/src/treetensornetworks/projttns/abstractprojttn.jl index 462dbbb23..5f48f31af 100644 --- a/src/treetensornetworks/projttns/abstractprojttn.jl +++ b/src/treetensornetworks/projttns/abstractprojttn.jl @@ -1,8 +1,7 @@ using DataGraphs: DataGraphs, underlying_graph using Graphs: neighbors using ITensors: ITensor, contract, order, product -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs: NamedGraphs, NamedEdge, vertextype +using NamedGraphs: NamedGraphs, NamedEdge, incident_edges, vertextype abstract type AbstractProjTTN{V} end diff --git a/src/treetensornetworks/projttns/projouterprodttn.jl b/src/treetensornetworks/projttns/projouterprodttn.jl index cfd4db635..5afc05144 100644 --- a/src/treetensornetworks/projttns/projouterprodttn.jl +++ b/src/treetensornetworks/projttns/projouterprodttn.jl @@ -1,7 +1,7 @@ using DataGraphs: DataGraphs using Dictionaries: set! using ITensors: ITensor, hascommoninds -using NamedGraphs.GraphsExtensions: incident_edges, is_leaf_vertex +using NamedGraphs: incident_edges, is_leaf_vertex struct ProjOuterProdTTN{V} <: AbstractProjTTN{V} pos::Union{Vector{<:V}, NamedEdge{V}} diff --git a/src/treetensornetworks/projttns/projttn.jl b/src/treetensornetworks/projttns/projttn.jl index 09f2ed342..7e735083d 100644 --- a/src/treetensornetworks/projttns/projttn.jl +++ b/src/treetensornetworks/projttns/projttn.jl @@ -2,8 +2,7 @@ using DataGraphs: DataGraphs, underlying_graph using Dictionaries: Dictionary, Indices using Graphs: edgetype, vertices using ITensors: ITensor, hascommoninds -using NamedGraphs.GraphsExtensions: incident_edges, is_leaf_vertex -using NamedGraphs: NamedEdge +using NamedGraphs: NamedEdge, incident_edges, is_leaf_vertex struct ProjTTN{V, Pos <: Union{Indices{V}, NamedEdge{V}}} <: AbstractProjTTN{V} pos::Pos diff --git a/src/treetensornetworks/projttns/projttnsum.jl b/src/treetensornetworks/projttns/projttnsum.jl index 6bb996f28..b852678d5 100644 --- a/src/treetensornetworks/projttns/projttnsum.jl +++ b/src/treetensornetworks/projttns/projttnsum.jl @@ -1,7 +1,6 @@ using ITensors.LazyApply: LazyApply, terms using ITensors: ITensors, contract, product -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs: NamedGraphs +using NamedGraphs: NamedGraphs, incident_edges struct ProjTTNSum{V, T <: AbstractProjTTN{V}, Z <: Number} <: AbstractProjTTN{V} terms::Vector{T} diff --git a/src/treetensornetworks/treetensornetwork.jl b/src/treetensornetworks/treetensornetwork.jl index 19644bb36..6aa0afb77 100644 --- a/src/treetensornetworks/treetensornetwork.jl +++ b/src/treetensornetworks/treetensornetwork.jl @@ -2,8 +2,7 @@ using DataGraphs: DataGraphs, set_vertex_data!, underlying_graph, vertex_data using Dictionaries: Dictionary, Indices using Graphs: Graphs, is_tree, rem_vertex!, vertices using ITensors: ITensor, Index -using NamedGraphs.GraphsExtensions: vertextype -using NamedGraphs: NamedGraph +using NamedGraphs: NamedGraph, vertextype """ TreeTensorNetwork{V} <: AbstractTreeTensorNetwork{V} diff --git a/test/Project.toml b/test/Project.toml index 2df05c325..d090df3f1 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -36,7 +36,7 @@ path = ".." Adapt = "4.3" Aqua = "0.8.11" Compat = "4.16" -DataGraphs = "0.4.1, 0.5" +DataGraphs = "0.6" Dictionaries = "0.4.4" Glob = "1.3.1" Graphs = "1.12" @@ -50,7 +50,7 @@ KrylovKit = "0.8, 0.9, 0.10" LinearAlgebra = "1.10" Metis = "1.5" NDTensors = "0.3, 0.4" -NamedGraphs = "0.11.1, 0.12, 0.13" +NamedGraphs = "0.14" OMEinsumContractionOrders = "0.9.5, 1" Pkg = "1.10" Random = "1.10" diff --git a/test/solvers/test_applyexp.jl b/test/solvers/test_applyexp.jl index faa4e1db8..13ca3583b 100644 --- a/test/solvers/test_applyexp.jl +++ b/test/solvers/test_applyexp.jl @@ -3,8 +3,7 @@ using ITensorNetworks: ITensorNetworks, TreeTensorNetwork, applyexp, dmrg, maxlinkdim, siteinds, time_evolve using ITensors using ITensors.Ops: OpSum -using NamedGraphs.NamedGraphGenerators: named_path_graph -using NamedGraphs: NamedGraph +using NamedGraphs: NamedGraph, named_path_graph using TensorOperations: TensorOperations using Test: @test, @testset #For contraction order finding include(joinpath(@__DIR__, "..", "utils.jl")) diff --git a/test/test_abstractgraph.jl b/test/test_abstractgraph.jl index 954ead5c2..486a4f6af 100644 --- a/test/test_abstractgraph.jl +++ b/test/test_abstractgraph.jl @@ -1,6 +1,5 @@ using Graphs: add_edge!, add_vertex! -using NamedGraphs.GraphsExtensions: is_binary_arborescence, is_rooted, root_vertex -using NamedGraphs: NamedDiGraph +using NamedGraphs: NamedDiGraph, is_binary_arborescence, is_rooted, root_vertex using Test: @test, @testset @testset "test rooted directed graphs" begin diff --git a/test/test_additensornetworks.jl b/test/test_additensornetworks.jl index 7503fd1f2..758fa1077 100644 --- a/test/test_additensornetworks.jl +++ b/test/test_additensornetworks.jl @@ -3,8 +3,7 @@ using ITensorNetworks: ITensorNetwork, TreeTensorNetwork, inner_network, orthogonalize, siteinds, truncate using ITensors: ITensors, apply, inner, op, scalar using LinearAlgebra: norm_sqr -using NamedGraphs.NamedGraphGenerators: named_comb_tree, named_grid -using NamedGraphs: NamedEdge +using NamedGraphs: NamedEdge, named_comb_tree, named_grid using StableRNGs: StableRNG using TensorOperations: TensorOperations using Test: @test, @testset diff --git a/test/test_apply.jl b/test/test_apply.jl index 21a97086e..68682809f 100644 --- a/test/test_apply.jl +++ b/test/test_apply.jl @@ -3,7 +3,7 @@ using Graphs: vertices using ITensorNetworks: BeliefPropagationCache, apply, environment, initialize_cache, norm_sqr_network, siteinds, update using ITensors: ITensors, Algorithm, ITensor, inner, op -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid using SplitApplyCombine: group using StableRNGs: StableRNG using TensorOperations: TensorOperations diff --git a/test/test_belief_propagation.jl b/test/test_belief_propagation.jl index 67d6fd1e7..f9b99edae 100644 --- a/test/test_belief_propagation.jl +++ b/test/test_belief_propagation.jl @@ -9,8 +9,8 @@ include("utils.jl") using ITensors.NDTensors: array using ITensors: ITensors, ITensor, combiner, dag, inds, inner, prime, random_itensor using LinearAlgebra: eigvals, tr -using NamedGraphs.NamedGraphGenerators: named_grid using NamedGraphs.PartitionedGraphs: PartitionedGraph, quotientedges +using NamedGraphs: named_grid using StableRNGs: StableRNG using TensorOperations: TensorOperations using Test: @test, @testset diff --git a/test/test_contraction_sequence.jl b/test/test_contraction_sequence.jl index 2dc3f16f3..d418d8317 100644 --- a/test/test_contraction_sequence.jl +++ b/test/test_contraction_sequence.jl @@ -1,6 +1,6 @@ using ITensorNetworks: contraction_sequence, norm_sqr_network, siteinds using ITensors: ITensors, contract -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid using OMEinsumContractionOrders: OMEinsumContractionOrders using StableRNGs: StableRNG using TensorOperations: TensorOperations diff --git a/test/test_expect.jl b/test/test_expect.jl index 73b9046af..e41d4de93 100644 --- a/test/test_expect.jl +++ b/test/test_expect.jl @@ -2,8 +2,7 @@ using Dictionaries: AbstractDictionary using Graphs: SimpleGraph, uniform_tree using ITensorNetworks: ITensorNetwork, expect, siteinds using ITensors: Op -using NamedGraphs.NamedGraphGenerators: named_grid -using NamedGraphs: NamedGraph, vertices +using NamedGraphs: NamedGraph, named_grid, vertices using SplitApplyCombine: group using StableRNGs: StableRNG using TensorOperations: TensorOperations diff --git a/test/test_forms.jl b/test/test_forms.jl index 40923d452..0cdd07424 100644 --- a/test/test_forms.jl +++ b/test/test_forms.jl @@ -6,7 +6,7 @@ using ITensorNetworks: BeliefPropagationCache, BilinearFormNetwork, LinearFormNe tensornetwork, union_all_inds, update using ITensors: Index, contract, dag, inds, prime, random_itensor, sim using LinearAlgebra: norm -using NamedGraphs.NamedGraphGenerators: named_comb_tree, named_grid +using NamedGraphs: named_comb_tree, named_grid using StableRNGs: StableRNG using TensorOperations: TensorOperations using Test: @test, @testset diff --git a/test/test_indsnetwork.jl b/test/test_indsnetwork.jl index 2ae3e8294..37ed32404 100644 --- a/test/test_indsnetwork.jl +++ b/test/test_indsnetwork.jl @@ -4,7 +4,7 @@ using Graphs: edges, ne, nv, vertices using ITensorNetworks: IndsNetwork, union_all_inds using ITensors.NDTensors: dim using ITensors: Index -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: named_comb_tree using StableRNGs: StableRNG using Test: @test, @testset @testset "IndsNetwork constructors" begin diff --git a/test/test_itensornetwork.jl b/test/test_itensornetwork.jl index 0ef338035..b13640de9 100644 --- a/test/test_itensornetwork.jl +++ b/test/test_itensornetwork.jl @@ -9,9 +9,7 @@ using ITensors.NDTensors: NDTensors, dim using ITensors: ITensors, ITensor, Index, Op, commonind, commoninds, contract, dag, hasinds, inds, inner, itensor, onehot, order, prime, random_itensor, scalartype, sim using NDTensors: NDTensors, dim -using NamedGraphs.GraphsExtensions: disjoint_union, incident_edges -using NamedGraphs.NamedGraphGenerators: named_comb_tree, named_grid -using NamedGraphs: NamedEdge +using NamedGraphs: NamedEdge, disjoint_union, incident_edges, named_comb_tree, named_grid using Random: randn! using StableRNGs: StableRNG using TensorOperations: TensorOperations diff --git a/test/test_itensornetworksadaptext.jl b/test/test_itensornetworksadaptext.jl index 3594a6793..b84ae4206 100644 --- a/test/test_itensornetworksadaptext.jl +++ b/test/test_itensornetworksadaptext.jl @@ -1,7 +1,7 @@ using Adapt: Adapt, adapt using ITensorNetworks: siteinds using ITensors: ITensors -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid using Test: @test, @testset include("utils.jl") diff --git a/test/test_normalize.jl b/test/test_normalize.jl index 47a478aca..dd3abe960 100644 --- a/test/test_normalize.jl +++ b/test/test_normalize.jl @@ -4,9 +4,8 @@ using ITensorNetworks: BeliefPropagationCache, QuadraticFormNetwork, norm_sqr_network, rescale, scalartype, siteinds, vertex_scalars using ITensors: dag, inner, scalar using LinearAlgebra: normalize -using NamedGraphs.NamedGraphGenerators: named_comb_tree, named_grid using NamedGraphs.PartitionedGraphs: PartitionedGraph -using NamedGraphs: NamedGraph +using NamedGraphs: NamedGraph, named_comb_tree, named_grid using StableRNGs: StableRNG using TensorOperations: TensorOperations using Test: @test, @testset diff --git a/test/test_opsum_to_ttn.jl b/test/test_opsum_to_ttn.jl index ae8eb67a3..3e1d36630 100644 --- a/test/test_opsum_to_ttn.jl +++ b/test/test_opsum_to_ttn.jl @@ -1,7 +1,7 @@ using Graphs: vertices using ITensorNetworks: ITensorNetworks, OpSum, TreeTensorNetwork, siteinds using ITensors.NDTensors: with_auto_fermion -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid using Test: @test, @testset @testset "OpSum to TTN converter" begin diff --git a/test/test_opsum_to_ttn_mpo_cross_check.jl b/test/test_opsum_to_ttn_mpo_cross_check.jl index 995c93f6c..b8999ffdd 100644 --- a/test/test_opsum_to_ttn_mpo_cross_check.jl +++ b/test/test_opsum_to_ttn_mpo_cross_check.jl @@ -7,8 +7,7 @@ using ITensors.NDTensors: matrix, with_auto_fermion using ITensors: @disable_warn_order, ITensor, Index, combinedind, combiner, contract, dag, inds, removeqns using LinearAlgebra: norm -using NamedGraphs.GraphsExtensions: leaf_vertices, post_order_dfs_vertices -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: leaf_vertices, named_comb_tree, post_order_dfs_vertices using Test: @test, @test_broken, @testset include("utils.jl") using .ModelHamiltonians: ModelHamiltonians diff --git a/test/test_sitetype.jl b/test/test_sitetype.jl index c8c53f7f5..3a6974f73 100644 --- a/test/test_sitetype.jl +++ b/test/test_sitetype.jl @@ -4,7 +4,7 @@ using Graphs: nv, vertices using ITensorNetworks: IndsNetwork, siteinds using ITensors.NDTensors: dim using ITensors: Index, SiteType, hastags, space -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid using Test: @test, @testset @testset "Site ind system" begin diff --git a/test/test_tebd.jl b/test/test_tebd.jl index 8fbfbb1e5..361d27f16 100644 --- a/test/test_tebd.jl +++ b/test/test_tebd.jl @@ -1,8 +1,7 @@ using Graphs: vertices using ITensorNetworks: ITensorNetwork, cartesian_to_linear, dmrg, expect, siteinds, tebd using ITensors: ITensors -using NamedGraphs.GraphsExtensions: rename_vertices -using NamedGraphs.NamedGraphGenerators: named_grid +using NamedGraphs: named_grid, rename_vertices using Test: @test, @test_broken, @testset include("utils.jl") using .ModelHamiltonians: ModelHamiltonians diff --git a/test/test_ttn_expect.jl b/test/test_ttn_expect.jl index 2ba474cb9..9a3b277e0 100644 --- a/test/test_ttn_expect.jl +++ b/test/test_ttn_expect.jl @@ -1,7 +1,7 @@ using Graphs: vertices using ITensorNetworks: TreeTensorNetwork, expect, siteinds using LinearAlgebra: norm -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: named_comb_tree using StableRNGs: StableRNG using Test: @test, @testset include("utils.jl") diff --git a/test/test_ttn_position.jl b/test/test_ttn_position.jl index a5baf934c..0eaa12ffe 100644 --- a/test/test_ttn_position.jl +++ b/test/test_ttn_position.jl @@ -4,8 +4,7 @@ using ITensorNetworks: ITensorNetwork, ProjTTN, TreeTensorNetwork, environments, position, siteinds using ITensors.NDTensors: with_auto_fermion using ITensors: ITensor, Index -using NamedGraphs.NamedGraphGenerators: named_comb_tree, named_path_graph -using NamedGraphs: NamedEdge, NamedGraph +using NamedGraphs: NamedEdge, NamedGraph, named_comb_tree, named_path_graph using Test: @test, @testset include("utils.jl") using .ModelHamiltonians: ModelHamiltonians diff --git a/test/test_ttns.jl b/test/test_ttns.jl index fe39b458f..ecbedc53e 100644 --- a/test/test_ttns.jl +++ b/test/test_ttns.jl @@ -2,7 +2,7 @@ using DataGraphs: vertex_data using Graphs: vertices using ITensorNetworks: ITensorNetwork, TreeTensorNetwork, ortho_region, orthogonalize, siteinds -using NamedGraphs.NamedGraphGenerators: named_comb_tree +using NamedGraphs: named_comb_tree using StableRNGs: StableRNG using Test: @test, @testset include("utils.jl") diff --git a/test/utils.jl b/test/utils.jl index ddb54e3f8..34c7b7196 100644 --- a/test/utils.jl +++ b/test/utils.jl @@ -9,8 +9,7 @@ using Graphs: AbstractGraph, add_edge!, dst, edges, src, vertices using ITensorNetworks: ITensorNetwork, IndsNetwork using ITensors.NDTensors: dim using ITensors: ITensors, ITensor, Index, QN, dag, hasqns, inds, itensor -using NamedGraphs.GraphsExtensions: incident_edges -using NamedGraphs: NamedGraph +using NamedGraphs: NamedGraph, incident_edges using Random: Random, AbstractRNG # --- random_tensornetwork ---------------------------------------------------- @@ -238,7 +237,7 @@ using SplitApplyCombine: group function group_terms(ℋ::Sum, g) grouped_terms = group(ITensors.terms(ℋ)) do t - findfirst(edges(g)) do e + findfirst(collect(edges(g))) do e return to_tuple.(ITensors.sites(t)) ⊆ [src(e), dst(e)] end end From cd81bcf861465fb4843e872d0e1e436ea8cc4160 Mon Sep 17 00:00:00 2001 From: Matthew Fishman Date: Mon, 31 Aug 2026 10:55:53 -0400 Subject: [PATCH 2/3] Add a changelog Records that 0.23.0 requires NamedGraphs v0.14, whose breaking changes reach the network types here through `AbstractNamedGraph`, and points at the NamedGraphs changelog for what those are. --- docs/make.jl | 1 + docs/src/changelog.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 docs/src/changelog.md diff --git a/docs/make.jl b/docs/make.jl index 0e4e7e011..1462362a0 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -49,6 +49,7 @@ makedocs(; "Deprecated Methods" => "deprecated_methods.md", ], "API Reference" => "reference.md", + "Changelog" => "changelog.md", ] ) diff --git a/docs/src/changelog.md b/docs/src/changelog.md new file mode 100644 index 000000000..c94078406 --- /dev/null +++ b/docs/src/changelog.md @@ -0,0 +1,15 @@ +# Changelog + +## [0.23.0](https://github.com/ITensor/ITensorNetworks.jl/compare/v0.22.0...main) - Unreleased + +### Breaking changes + +- Requires NamedGraphs v0.14. The network types here are `AbstractNamedGraph` + subtypes, so its breaking changes carry through to them, including the output + types of `vertices` and `edges` and the return values of the mutating + functions. See the + [NamedGraphs changelog](https://itensor.github.io/NamedGraphs.jl/stable/changelog/) + ([#384](https://github.com/ITensor/ITensorNetworks.jl/pull/384)). +- The leaf type of a contraction sequence is `ITensorNetworks.Key`, where it was + `NamedGraphs.Keys.Key` + ([#384](https://github.com/ITensor/ITensorNetworks.jl/pull/384)). From 7d3e483e2db6073a77aace31a090482344313d50 Mon Sep 17 00:00:00 2001 From: Matthew Fishman Date: Tue, 8 Sep 2026 22:34:25 -0400 Subject: [PATCH 3/3] Resolve NamedGraphs and DataGraphs from the registry --- Project.toml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Project.toml b/Project.toml index 014250f9d..b62844aeb 100644 --- a/Project.toml +++ b/Project.toml @@ -33,14 +33,6 @@ ITensorVisualizationBase = "cd2553d2-8bef-4d93-8a38-c62f17d5ad23" OMEinsumContractionOrders = "6f22d1fd-8eed-4bb7-9776-e7d684900715" TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" -[sources.DataGraphs] -rev = "mf/namedgraphs-v0.14" -url = "https://github.com/ITensor/DataGraphs.jl" - -[sources.NamedGraphs] -rev = "main" -url = "https://github.com/ITensor/NamedGraphs.jl" - [extensions] ITensorNetworksITensorVisualizationBaseExt = "ITensorVisualizationBase" ITensorNetworksOMEinsumContractionOrdersExt = "OMEinsumContractionOrders"