2012-06-22 2 views
3

Я работаю над проектом, который включает в себя работу с графиками, извлеченными из какого-либо другого источника. В настоящее время мы используем модуль networkx python для анализа графика.Какой формат использовать для хранения графиков

Теперь я столкнулся с задачей выбора формата для хранения графиков. Pickle, по-видимому, является хорошим выбором для чисто основанного на python решения. Однако мы сейчас находимся на стадии прототипирования, и есть большая вероятность, что нам придется переключиться на C++ для повышения производительности и масштабируемости.

Поэтому я хотел бы, чтобы мои графики хранились в формате, широко поддерживаемом большинством библиотек графов, чтобы свести к минимуму трудности, с которыми сталкиваются будущие авторы проекта.

Не могли бы вы дать мне какое-то предложение относительно того формата, который я должен использовать?

ответ

4

TGF - ваше решение. Пример

питон:

#!/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

+1 для минимализма. – cedbeu

0

Я не сюр быть очень актуальна здесь, но бы не graph-based database сделать эту работу?

У вас есть пара опций, например Neo4j10 или AllegroGraph, и вы легко найдете пару привязок для python или любого другого языка, и большинство решений также предоставляют REST API в любом случае.

примечание что first link я представил не очень уточненный, в настоящее время существует много больше решений, а также API для Python доступны, даже если это написано, что это не на нем. Вы также можете посмотреть here (раздел Графические базы данных).

редактировать я обнаружил, что это может быть interresting, чтобы посмотреть на это, как хорошо, это, кажется, подходящий формат для обработки и хранения в виде графиков в любом стиле JSON или текст с разделителями:

Кроме того, вы можете захотеть взглянуть на здесь:

+0

Но наверняка это не очень минималистичное решение: o) – cedbeu

+0

Да, Neo4j, безусловно, очень полезный вариант здесь. К сожалению, я не нашел встроенной функции Networkx для обработки этих баз данных, но я изучаю ее. – nofrills

+0

@ user506877, mmmh Я не знаю о networkx, но на первый взгляд он, похоже, не поддерживает neo4j. Вероятно, вы могли бы легко их легко связать с вещами вроде bulbflow ... Я отредактировал свой ответ с некоторыми подробностями. – cedbeu

Смежные вопросы