如果有任何模块可以让我在 Julia 中导入图形(网络),现在有人吗?
使用 Python 时,我使用了 graph-tool 包,它对我很有帮助!我有 .gt 文件格式的图表。我可以在 Julia 中使用任何模块,以便在那里导入它们吗?
我搜索了 LightGraphs 和 Junet,它们是相当新的,但似乎在文档中看不到任何“导入”部分。
如果有任何模块可以让我在 Julia 中导入图形(网络),现在有人吗?
使用 Python 时,我使用了 graph-tool 包,它对我很有帮助!我有 .gt 文件格式的图表。我可以在 Julia 中使用任何模块,以便在那里导入它们吗?
我搜索了 LightGraphs 和 Junet,它们是相当新的,但似乎在文档中看不到任何“导入”部分。
最直接的解决方案是将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 中,使用LightGraphs
包GraphIO
从 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。来自利明顿的问候,利明顿人!