3

如果有任何模块可以让我在 Julia 中导入图形(网络),现在有人吗?

使用 Python 时,我使用了 graph-tool 包,它对我很有帮助!我有 .gt 文件格式的图表。我可以在 Julia 中使用任何模块,以便在那里导入它们吗?

我搜索了 LightGraphs 和 Junet,它们是相当新的,但似乎在文档中看不到任何“导入”部分。

4

2 回答 2

4

最直接的解决方案是将gt文件转换graphml为与 LightGraphs 兼容的格式,并且是graph-tool 推荐的替代格式


假设您有一个过去由以下 python 代码生成的“.gt”文件:

from graph_tool.all import *
g = Graph()
v1 = g.add_vertex()
v2 = g.add_vertex()
e = g.add_edge(v1,v2)
g.save('g.gt')

启动一个新的 python 会话,并从 "gt" 转换为 "graphml" 格式:

import graph_tool as gt
g = gt.Graph()
g.load('g.gt')
g.save('g.xml.gz')

然后,在 julia 中,使用LightGraphsGraphIO从 GraphML 文件中加载:

using LightGraphs, GraphIO
D = loadgraphs("g.xml.gz", GraphMLFormat())
#> Dict{String,LightGraphs.AbstractGraph} with 1 entry:
#   "G" => {2, 1} directed simple Int64 graph

如果您想PyCall直接从 julia 内部(即在脚本中)执行转换,方法如下:

using PyCall
@pyimport graph_tool as gt
G = gt.Graph()
G[:load]("g.gt")
G[:save]("g.xml.gz")

(请注意,这意味着您的机器上已经安装了 python 和图形工具库,并且可以从 julia 访问)。


从理论上讲,如果您更喜欢图形工具并且您习惯了它的语法并希望继续直接使用.gt文件格式,您可以通过 PyCall 在 julia 中使用它,如上所述。不过,这是否比迁移到为 julia 设计的 LightGraphs 更可取是另一回事。这是你的电话:)


PS。来自利明顿的问候,利明顿人!

于 2017-07-10T18:49:18.970 回答
1

LightGraphs 的图形导入现在位于GraphIO.jl中。目前支持的导入格式包括

  • GML
  • 图6
  • GEXF
  • GraphML
  • 帕杰克网

更多格式即将推出。

于 2017-07-10T17:52:40.123 回答