Skip to content

Commit 5b563c9

Browse files
committed
update docstrings
1 parent 47a37dd commit 5b563c9

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

src/fileio.jl

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,23 @@ function dict_deserialize_tree(id::UInt, d::Dict)
123123
end
124124
end
125125

126+
"""
127+
save_tensor_network(tn::GenericTensorNetwork; folder::String)
128+
129+
Serialize a tensor network to disk for storage/reloading. Creates three structured files:
130+
- `code.json`: OMEinsum contraction code (tree structure and contraction order)
131+
- `fixedvertices.json`: JSON-serialized Dict of pinned vertex configurations
132+
- `problem.json`: Problem specification using ProblemReductions serialization
133+
134+
The target folder will be created recursively if it doesn't exist. Files are overwritten
135+
if they already exist. Uses JSON for human-readable serialization with type preservation.
136+
137+
The saved files can be loaded using [`load_tensor_network`](@ref).
138+
139+
# Arguments
140+
- `tn::GenericTensorNetwork`: a [`GenericTensorNetwork`](@ref) instance to serialize. Must contain valid code, problem, and fixedvertices fields.
141+
- `folder::String`: Destination directory path. Parent directories will be created as needed.
142+
"""
126143
function save_tensor_network(tn::GenericTensorNetwork; folder::String)
127144
!isdir(folder) && mkpath(folder)
128145

@@ -136,6 +153,21 @@ function save_tensor_network(tn::GenericTensorNetwork; folder::String)
136153
return nothing
137154
end
138155

156+
"""
157+
load_tensor_network(folder::String) -> GenericTensorNetwork
158+
159+
Load a tensor network from disk that was previously saved using [`save_tensor_network`](@ref).
160+
Reconstructs the network from three required files: contraction code, fixed vertices mapping, and problem specification.
161+
162+
# Arguments
163+
- `folder::String`: Path to directory containing saved network files. Must contain:
164+
- `code.json`: Contraction order/structure from OMEinsum
165+
- `fixedvertices.json`: Dictionary of pinned vertex states
166+
- `problem.json`: Problem specification and parameters
167+
168+
# Returns
169+
- `GenericTensorNetwork`: Reconstructed tensor network.
170+
"""
139171
function load_tensor_network(folder::String)
140172
!isdir(folder) && throw(SystemError("Folder not found: $folder"))
141173

test/fileio.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ end
5656
problem = IndependentSet(g, UnitWeight(10))
5757
tn = GenericTensorNetwork(problem; fixedvertices=Dict(1=>0, 2=>1))
5858
folder = tempname()
59-
GenericTensorNetworks.save_tensor_network(tn; folder=folder)
60-
tn2 = GenericTensorNetworks.load_tensor_network(folder)
59+
save_tensor_network(tn; folder=folder)
60+
tn2 = load_tensor_network(folder)
6161
@test tn.problem == tn2.problem
6262
@test tn.code == tn2.code
6363
@test tn.fixedvertices == tn2.fixedvertices
@@ -66,15 +66,15 @@ end
6666
# test with empty fixedvertices
6767
tn3 = GenericTensorNetwork(problem)
6868
folder2 = tempname()
69-
GenericTensorNetworks.save_tensor_network(tn3; folder=folder2)
70-
tn4 = GenericTensorNetworks.load_tensor_network(folder2)
69+
save_tensor_network(tn3; folder=folder2)
70+
tn4 = load_tensor_network(folder2)
7171
@test tn3.problem == tn4.problem
7272
@test tn3.code == tn4.code
7373
@test tn3.fixedvertices == tn4.fixedvertices
7474

7575
# test error cases
7676
empty_folder = tempname()
7777
mkpath(empty_folder)
78-
@test_throws SystemError GenericTensorNetworks.load_tensor_network(empty_folder)
78+
@test_throws SystemError load_tensor_network(empty_folder)
7979
end
8080

0 commit comments

Comments
 (0)