2012-06-22 57 views
3

我正在從事一個涉及使用從其他來源提取的圖形的項目。目前我們使用python的networkx模塊來分析圖形。什麼格式可用於存儲圖形

我現在面臨着選擇存儲圖形格式的任務。 Pickle似乎是純粹基於python的解決方案的不錯選擇。然而,我們現在處於原型開發階段,並且出現性能和可伸縮性問題,我們將不得不切換到C++。

因此,我希望我的圖表以大多數圖庫廣泛支持的格式存儲,以儘量減少項目中未來貢獻者面臨的麻煩。

您能否給我一些關於我應該使用哪種格式的建議?

回答

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

+極簡主義也是如此。 – cedbeu

0

我不是蘇爾是非常與此有關,但不會一graph-based database做的工作?

例如,您有幾個選項,例如Neo4jAllegroGraph,您會發現很多python或任何其他語言的綁定,並且大多數解決方案還提供了REST API。

我提供的first link也不是很先進的日期,現在有很多更多的解決方案,併爲Python API是即使它寫它不是它用。你也可以看看here(圖表數據庫部分)。

編輯我發現,它可以被interresting會對這個看看爲好,它似乎是用於處理和存儲在任何一個JSON風格graphes一個合適的格式或分隔符的文本:

此外,你可能想看看這裏:

+0

但肯定它不是一個非常簡約的解決方案:o) – cedbeu

+0

是的,Neo4j肯定是一個非常相關的選項。不幸的是,我還沒有發現Networkx的內置函數來處理這些數據庫,但我正在研究它。 – nofrills

+0

@ user506877,mmmh我不知道networkx,但乍一看似乎沒有支持neo4j。可能你可以很容易地將它們與bulbflow等東西進行交互......我用一些更多的細節編輯了我的答案。 – cedbeu

相關問題