在 Julia 中导入图形(网络)
Import a graph (network) in Julia
现在有人知道是否有任何模块可以让我在 Julia 中导入图形(网络)吗?
与 Python 合作时,我使用了 graph-tool 包,它对我非常有用!我的图表采用 .gt 文件格式。我可以在 Julia 中使用任何模块,以便我可以在那里导入它们吗?
我搜索了 LightGraphs 和 Junet,它们是相当新的但似乎在文档中看不到任何 "import" 部分。
LightGraphs 的图形导入现在在 GraphIO.jl 中。目前支持的导入格式包括
- GML
- 图 6
- GEXF
- GraphML
- 帕杰克网络
- 点
即将推出更多格式。
最直接的解决方案是将您的 gt
文件转换为 graphml
格式,该格式与 LightGraphs 兼容,并且是 the recommended alternative format by graph-tool。
假设您有一个“.gt”文件,该文件在过去由以下 python 代码生成:
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
文件格式,您 可以 如上所述,从 julia 内部通过 PyCall 使用它。这是否比迁移到为 julia designed LightGraphs 更好是另一回事。由您决定:)
PS。来自利明顿的问候,利明顿同胞!
现在有人知道是否有任何模块可以让我在 Julia 中导入图形(网络)吗?
与 Python 合作时,我使用了 graph-tool 包,它对我非常有用!我的图表采用 .gt 文件格式。我可以在 Julia 中使用任何模块,以便我可以在那里导入它们吗?
我搜索了 LightGraphs 和 Junet,它们是相当新的但似乎在文档中看不到任何 "import" 部分。
LightGraphs 的图形导入现在在 GraphIO.jl 中。目前支持的导入格式包括
- GML
- 图 6
- GEXF
- GraphML
- 帕杰克网络
- 点
即将推出更多格式。
最直接的解决方案是将您的 gt
文件转换为 graphml
格式,该格式与 LightGraphs 兼容,并且是 the recommended alternative format by graph-tool。
假设您有一个“.gt”文件,该文件在过去由以下 python 代码生成:
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
文件格式,您 可以 如上所述,从 julia 内部通过 PyCall 使用它。这是否比迁移到为 julia designed LightGraphs 更好是另一回事。由您决定:)
PS。来自利明顿的问候,利明顿同胞!