什么格式用于存储图形?

3
我正在从其他来源提取的图表中工作。目前我们使用Python的networkx模块分析图表。
我现在面临选择存储图表格式的任务。对于纯粹基于Python的解决方案,Pickle似乎是一个很好的选择。然而,我们现在处于原型阶段,并且有很大的可能性需要转向C++以处理性能和可扩展性问题。
因此,我希望我的图表以广泛支持多数图表库的格式存储,以最小化未来项目贡献者面临的麻烦。
请您提供一些关于我应该使用哪种格式的建议?
2个回答

4

TGF是您的解决方案。

Python示例:

 #!/usr/bin/python

import fileinput, re

depends = {}
for line in fileinput.input():
    m = re.match('(.+):\s*(.*)',line) # find every depenency line of the form "<item>: <dependencies>"
    if m:
        item = m.group(1)
        dependency_list = m.group(2)
        print item,item # node definition

        if dependency_list: # there are dependencies
            depends[item] = dependency_list.split() # store the list into a dictionary for later

print "#" # end of node list, start of edge list

for item in depends:
    for dependency in depends[item]:
        print item,dependency # edge definition

1
极简和美。谢谢,先生。 - nofrills

0

我不确定这里是否非常相关,但是一个基于图形的数据库是否可以胜任这项工作?

您有几个选择,例如Neo4jAllegroGraph,而且您很容易找到Python或任何其他语言的绑定,并且大多数解决方案都提供REST API。

注意,我提供的第一个链接并不是非常最新的,现在有更多的解决方案,即使它没有写上,Python的API也是可用的。您还可以查看此处(图形数据库部分)。

编辑 我发现这也可能是一个有趣的选择,它似乎是以JSON样式或分隔文本的格式处理和存储图形的合适格式:

此外,您可能还想看看这里:


但肯定不是非常简约的解决方案:o) - cedbeu
是的,Neo4j在这里肯定是一个非常相关的选项。不幸的是,我没有找到Networkx的任何内置函数来处理这些数据库,但我正在研究它。 - nofrills
@user506877,嗯,我不清楚networkx是否支持neo4j,但是乍一看似乎没有支持。可能你可以使用类似于bulbflow之类的工具来很容易地进行接口连接...我在我的答案中添加了一些更详细的细节。 - cedbeu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接