Skip to content

Commit 3f1692c

Browse files
authored
Remove ITensorMPS.jl dependency (#224)
1 parent 7023120 commit 3f1692c

33 files changed

+67
-281
lines changed

Project.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ITensorNetworks"
22
uuid = "2919e153-833c-4bdc-8836-1ea460a35fc7"
33
authors = ["Matthew Fishman <[email protected]>, Joseph Tindall <[email protected]> and contributors"]
4-
version = "0.12.2"
4+
version = "0.13.0"
55

66
[deps]
77
AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
@@ -13,7 +13,6 @@ Dictionaries = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4"
1313
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
1414
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
1515
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
16-
ITensorMPS = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2"
1716
ITensors = "9136182c-28ba-11e9-034c-db9fb085ebd5"
1817
IsApprox = "28f27b66-4bd8-47e7-9110-e2746eb8bed7"
1918
IterTools = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
@@ -63,7 +62,6 @@ DocStringExtensions = "0.9"
6362
EinExprs = "0.6.4"
6463
Graphs = "1.8"
6564
GraphsFlows = "0.1.1"
66-
ITensorMPS = "0.3"
6765
ITensors = "0.7, 0.8"
6866
IsApprox = "0.1, 1, 2"
6967
IterTools = "1.4.0"

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ Literate = "98b081ad-f1c9-55d3-8b20-4c87d4299306"
55

66
[compat]
77
Documenter = "1.10.0"
8-
ITensorNetworks = "0.12.0"
8+
ITensorNetworks = "0.13.0"
99
Literate = "2.20.1"

examples/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
ITensorNetworks = "2919e153-833c-4bdc-8836-1ea460a35fc7"
33

44
[compat]
5-
ITensorNetworks = "0.12.0"
5+
ITensorNetworks = "0.13.0"

src/ITensorNetworks.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ include("contract_approx/partition.jl")
2323
include("contract_approx/binary_tree_partition.jl")
2424
include("contract.jl")
2525
include("specialitensornetworks.jl")
26-
include("boundarymps.jl")
2726
include("partitioneditensornetwork.jl")
2827
include("edge_sequences.jl")
2928
include("caches/abstractbeliefpropagationcache.jl")

src/abstractitensornetwork.jl

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ using ITensors:
3838
settags,
3939
sim,
4040
swaptags
41-
using ITensorMPS: ITensorMPS, add, linkdim, linkinds, siteinds
4241
using .ITensorsExtensions: ITensorsExtensions, indtype, promote_indtype
4342
using LinearAlgebra: LinearAlgebra, factorize
4443
using MacroTools: @capture
@@ -255,7 +254,7 @@ indsnetwork(tn::AbstractITensorNetwork) = IndsNetwork(tn)
255254

256255
# TODO: Output a `VertexDataGraph`? Unfortunately
257256
# `IndsNetwork` doesn't allow iterating over vertex data.
258-
function ITensorMPS.siteinds(tn::AbstractITensorNetwork)
257+
function siteinds(tn::AbstractITensorNetwork)
259258
is = IndsNetwork(underlying_graph(tn))
260259
for v in vertices(tn)
261260
is[v] = uniqueinds(tn, v)
@@ -268,7 +267,7 @@ function flatten_siteinds(tn::AbstractITensorNetwork)
268267
return identity.(flatten(map(v -> siteinds(tn, v), vertices(tn))))
269268
end
270269

271-
function ITensorMPS.linkinds(tn::AbstractITensorNetwork)
270+
function linkinds(tn::AbstractITensorNetwork)
272271
is = IndsNetwork(underlying_graph(tn))
273272
for e in edges(tn)
274273
is[e] = commoninds(tn, e)
@@ -302,7 +301,11 @@ function ITensors.uniqueinds(tn::AbstractITensorNetwork, edge::Pair)
302301
return uniqueinds(tn, edgetype(tn)(edge))
303302
end
304303

305-
function ITensors.siteinds(tn::AbstractITensorNetwork, vertex)
304+
function siteinds(tn::AbstractITensorNetwork, vertex)
305+
return uniqueinds(tn, vertex)
306+
end
307+
# Fix ambiguity error with IndsNetwork constructor.
308+
function siteinds(tn::AbstractITensorNetwork, vertex::Int)
306309
return uniqueinds(tn, vertex)
307310
end
308311

@@ -311,7 +314,7 @@ function ITensors.commoninds(tn::AbstractITensorNetwork, edge)
311314
return commoninds(tn[src(e)], tn[dst(e)])
312315
end
313316

314-
function ITensorMPS.linkinds(tn::AbstractITensorNetwork, edge)
317+
function linkinds(tn::AbstractITensorNetwork, edge)
315318
return commoninds(tn, edge)
316319
end
317320

@@ -807,24 +810,24 @@ end
807810
# Link dimensions
808811
#
809812

810-
function ITensorMPS.maxlinkdim(tn::AbstractITensorNetwork)
813+
function maxlinkdim(tn::AbstractITensorNetwork)
811814
md = 1
812815
for e in edges(tn)
813816
md = max(md, linkdim(tn, e))
814817
end
815818
return md
816819
end
817820

818-
function ITensorMPS.linkdim(tn::AbstractITensorNetwork, edge::Pair)
821+
function linkdim(tn::AbstractITensorNetwork, edge::Pair)
819822
return linkdim(tn, edgetype(tn)(edge))
820823
end
821824

822-
function ITensorMPS.linkdim(tn::AbstractITensorNetwork{V}, edge::AbstractEdge{V}) where {V}
825+
function linkdim(tn::AbstractITensorNetwork{V}, edge::AbstractEdge{V}) where {V}
823826
ls = linkinds(tn, edge)
824827
return prod([isnothing(l) ? 1 : dim(l) for l in ls])
825828
end
826829

827-
function ITensorMPS.linkdims(tn::AbstractITensorNetwork{V}) where {V}
830+
function linkdims(tn::AbstractITensorNetwork{V}) where {V}
828831
ld = DataGraph{V}(
829832
copy(underlying_graph(tn)); vertex_data_eltype=Nothing, edge_data_eltype=Int
830833
)
@@ -882,7 +885,7 @@ is_multi_edge(tn::AbstractITensorNetwork, e) = length(linkinds(tn, e)) > 1
882885
is_multi_edge(tn::AbstractITensorNetwork) = Base.Fix1(is_multi_edge, tn)
883886

884887
"""Add two itensornetworks together by growing the bond dimension. The network structures need to be have the same vertex names, same site index on each vertex """
885-
function ITensorMPS.add(tn1::AbstractITensorNetwork, tn2::AbstractITensorNetwork)
888+
function add(tn1::AbstractITensorNetwork, tn2::AbstractITensorNetwork)
886889
@assert issetequal(vertices(tn1), vertices(tn2))
887890

888891
tn1 = combine_linkinds(tn1; edges=filter(is_multi_edge(tn1), edges(tn1)))

src/apply.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ using ITensors:
2323
unioninds,
2424
uniqueinds
2525
using ITensors.ContractionSequenceOptimization: optimal_contraction_sequence
26-
using ITensorMPS: siteinds
2726
using KrylovKit: linsolve
2827
using LinearAlgebra: eigen, norm, svd
2928
using NamedGraphs: NamedEdge, has_edge

src/boundarymps.jl

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/caches/abstractbeliefpropagationcache.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ using Graphs: IsDirected
22
using SplitApplyCombine: group
33
using LinearAlgebra: diag, dot
44
using ITensors: dir
5-
using ITensorMPS: ITensorMPS
65
using NamedGraphs.PartitionedGraphs:
76
PartitionedGraphs,
87
PartitionedGraph,
@@ -140,7 +139,7 @@ for f in [
140139
:(PartitionedGraphs.partitionvertices),
141140
:(PartitionedGraphs.vertices),
142141
:(PartitionedGraphs.boundary_partitionedges),
143-
:(ITensorMPS.linkinds),
142+
:(linkinds),
144143
]
145144
@eval begin
146145
function $f(bpc::AbstractBeliefPropagationCache, args...; kwargs...)

src/caches/beliefpropagationcache.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ using Graphs: IsDirected
22
using SplitApplyCombine: group
33
using LinearAlgebra: diag, dot
44
using ITensors: dir
5-
using ITensorMPS: ITensorMPS
65
using NamedGraphs.PartitionedGraphs:
76
PartitionedGraphs,
87
PartitionedGraph,

src/expect.jl

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
using Dictionaries: Dictionary, set!
2-
using ITensors: Op, op, contract, siteinds, which_op
3-
using ITensorMPS: ITensorMPS, expect
2+
using ITensors: Op, op, contract, which_op
43

54
default_expect_alg() = "bp"
65

7-
function ITensorMPS.expect(
6+
function expect(
87
ψIψ::AbstractFormNetwork, op::Op; contract_kwargs=(; sequence="automatic"), kwargs...
98
)
109
v = only(op.sites)
@@ -18,7 +17,7 @@ function ITensorMPS.expect(
1817
return numerator / denominator
1918
end
2019

21-
function ITensorMPS.expect(
20+
function expect(
2221
alg::Algorithm,
2322
ψ::AbstractITensorNetwork,
2423
ops;
@@ -40,25 +39,21 @@ function ITensorMPS.expect(
4039
return map(op -> expect(ψIψ, op; alg, cache!, update_cache=false, kwargs...), ops)
4140
end
4241

43-
function ITensorMPS.expect(alg::Algorithm"exact", ψ::AbstractITensorNetwork, ops; kwargs...)
42+
function expect(alg::Algorithm"exact", ψ::AbstractITensorNetwork, ops; kwargs...)
4443
ψIψ = inner_network(ψ, ψ)
4544
return map(op -> expect(ψIψ, op; alg, kwargs...), ops)
4645
end
4746

48-
function ITensorMPS.expect(
49-
ψ::AbstractITensorNetwork, op::Op; alg=default_expect_alg(), kwargs...
50-
)
47+
function expect::AbstractITensorNetwork, op::Op; alg=default_expect_alg(), kwargs...)
5148
return expect(Algorithm(alg), ψ, [op]; kwargs...)
5249
end
5350

54-
function ITensorMPS.expect(
51+
function expect(
5552
ψ::AbstractITensorNetwork, op::String, vertices; alg=default_expect_alg(), kwargs...
5653
)
5754
return expect(Algorithm(alg), ψ, [Op(op, vertex) for vertex in vertices]; kwargs...)
5855
end
5956

60-
function ITensorMPS.expect(
61-
ψ::AbstractITensorNetwork, op::String; alg=default_expect_alg(), kwargs...
62-
)
57+
function expect::AbstractITensorNetwork, op::String; alg=default_expect_alg(), kwargs...)
6358
return expect(ψ, op, vertices(ψ); alg, kwargs...)
6459
end

0 commit comments

Comments
 (0)