如何保存和加载LightGraphs和MetaGraphs中的MetaGraph对象,以便在加载元图时仍具有元数据?
现在,我有一个元数据mg
可以使用以下方式保存:
LightGraphs.savegraph("net.lg", mg)
但是尝试重新加载它:
reloaded = LightGraphs.loadgraph("net.lg")
给我以下内容:
BoundsError: attempt to access 2-element Array{SubString{String},1} at index [3]
无论如何,在MetaGaphs软件包中的元数据中有待阅读吗?
最佳答案
我们使用JLD2.jl提供的JLD格式支持MetaGraphs持久性:
using LightGraphs, MetaGraphs
julia> g = Graph(10,20)
{10, 20} undirected simple Int64 graph
julia> mg = MetaGraph(g)
{10, 20} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)
julia> savegraph("foo.mg", mg)
1
julia> mg2 = loadgraph("foo.mg", MGFormat())
{10, 20} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)
julia> mg2 == mg
true
请注意,您需要在
MGFormat()
中指定loadgraph
,否则LightGraphs不会知道您要加载的图形类型。关于io - MetaGraphs加载并保存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50213538/