【问题标题】:What format to use for storing graphs使用什么格式存储图表
【发布时间】:2012-06-22 10:04:54
【问题描述】:

我正在从事一个项目,该项目涉及使用从其他来源提取的图形。目前我们正在使用 python 的networkx 模块来分析图形。

我现在面临选择存储图表格式的任务。对于纯基于 python 的解决方案,Pickle 似乎是一个不错的选择。然而,我们现在处于原型设计阶段,很有可能我们将不得不切换到 C++ 来解决性能和可伸缩性问题。

因此,我希望以大多数图形库广泛支持的格式存储我的图形,以最大程度地减少项目中未来贡献者面临的麻烦。

您能否就我应该使用哪种格式给我一些建议?

【问题讨论】:

    标签: python graph bulbs tinkerpop


    【解决方案1】:

    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
    

    【讨论】:

    • 极简而美丽。谢谢你,先生。
    【解决方案2】:

    我在这里不是很相关,但graph-based database 不会做这项工作吗?

    您有几个选项,例如 Neo4jAllegroGraph,您会很容易找到一些针对 python 或任何其他语言的绑定,而且大多数解决方案也提供了一个 REST API。

    注意,我提供的first link 不是最新的,现在有更多的解决方案,并且Python 的API 可用,即使它没有写在上面。您还可以查看here(图数据库部分)。

    edit我发现看看这个也很有趣,它似乎是一种适合以 JSON 样式或分隔文本处理和存储图形的格式:

    另外,你可能想看看这里:

    【讨论】:

    • 但可以肯定这不是一个非常简约的解决方案 :o)
    • 是的,Neo4j 在这里肯定是一个非常相关的选项。不幸的是,我还没有找到 Networkx 的任何内置函数来处理这些数据库,但我正在研究它。
    • @user506877, mmmh 我不了解networkx,但乍一看它似乎不支持neo4j。可能您可以很容易地将它们与灯泡流之类的东西交互......我用更多细节编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    相关资源
    最近更新 更多