Julia SimpleHypergraphs.jl-从文本文件加载hypergraph

Julia SimpleHypergraphs.jl-从文本文件加载hypergraph,julia,network-analysis,hypergraph,Julia,Network Analysis,Hypergraph,我正在使用SimpleHypergraphs.jl库,并尝试从文本文件(如csv)构建hypergraph 例如,我想从csv文件加载hypergraph,如下所示: 0.0, 7.0, 0.0, 0.0 1.3, 2.8, 4.5, 0.0 0.0, 1.3, 3.1, 4.2 1.2, 0.0, 5.6, 5.0 我收到以下错误: “错误:MethodError:没有与Hypergraph匹配的方法(::矩阵{Float64})” 我是朱莉娅的新手,如果能举个例子说明我是如何做到这一点的,

我正在使用SimpleHypergraphs.jl库,并尝试从文本文件(如csv)构建hypergraph

例如,我想从csv文件加载hypergraph,如下所示:

0.0, 7.0, 0.0, 0.0
1.3, 2.8, 4.5, 0.0
0.0, 1.3, 3.1, 4.2
1.2, 0.0, 5.6, 5.0
我收到以下错误: “错误:MethodError:没有与Hypergraph匹配的方法(::矩阵{Float64})”


我是朱莉娅的新手,如果能举个例子说明我是如何做到这一点的,我将不胜感激。谢谢

作为
Hypergraph
构造函数传递的矩阵应具有
Union{Nothing,T}
类型的元素,其中
T
是某种数值类型(例如
矩阵{Union{Float64,Nothing}
而不仅仅是
矩阵{Float64}

在SimpleHypergraphs.jl中,我们使用
nothing
(而不是
0
)表示顶点不属于超边,因为在许多超图算法/应用程序中,顶点可能属于权重为零的超边

因此,您可以使用以下代码读取文件(为了再现性,我将文件内容放入文本变量中):

该矩阵现在可以轻松地用作
Hypergraph
构造函数

julia> h1 = Hypergraph(mat)
4×4 Hypergraph{Float64, Nothing, Nothing, Dict{Int64, Float64}}:
 0.0  7.0  0.0  0.0
 1.3  2.8  4.5  0.0
 0.0  1.3  3.1  4.2
 1.2  0.0  5.6  5.0
但是,这可能不是您所需要的,因为零(
0.0
)表示顶点属于权重为零的超边的情况:

draw(h1, HyperNetX)

因此,您可能实际上希望将零转换为
nothing
s,以表示顶点不属于超边的情况:

h2 = Hypergraph(replace(mat, 0 => nothing))
现在你得到了你想要的:

draw(h2, HyperNetX)

h2 = Hypergraph(replace(mat, 0 => nothing))
draw(h2, HyperNetX)