Инструменты Python для визуализации 100 тыс. вершин и 1 млн ребер?

Я хочу визуализировать данные, надеюсь сделать их интерактивными. Прямо сейчас я использую NetworkX и Matplotlib, которые максимально используют мои 8 ГБ, когда я пытаюсь «нарисовать» график. Я не знаю, какие варианты и методы существуют для обработки такого большого кластера** данных. Если бы кто-то мог указать мне правильное направление, это было бы здорово. У меня также есть карта GFX с поддержкой CUDA, если это может быть полезно.

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


person wnewport    schedule 13.04.2011    source источник


Ответы (6)


У меня нет с этим опыта, но tulip, похоже, создан для этого.

person static_rtti    schedule 13.04.2011
comment
Ссылка у меня не работает. - person Jay Askren; 13.04.2011
comment
Теперь это работает. Возможно, сервер был временно недоступен. - person Jay Askren; 13.04.2011
comment
Мой друг сказал мне, что Тюльпан, хотя и идеально подходит для такой работы, имеет крутую кривую обучения. Он предложил Cytoscape, но теперь я смотрю на решения для веб-приложений. - person wnewport; 14.04.2011
comment
Я не думаю, что какой-либо браузер достаточно быстр, чтобы справиться с такой нагрузкой, но вы можете попробовать :) - person static_rtti; 14.04.2011

Вам следует обратиться в официальный список рассылки wxPython. Там есть люди, которые, вероятно, могут вам помочь. Я удивлен, что matplotlib не может этого сделать. Это может просто потребовать, чтобы вы каким-то образом реструктурировали свой код. На данный момент основные способы рисования в wxPython — через различные контроллеры домена, один из виджетов FloatCanvas или для построения графиков, wx.Plot или matplotlib.

person Mike Driscoll    schedule 13.04.2011

Может быть, PyOpenGL? Его можно использовать вместе с wxPython.

Редактировать: Только что проверил производительность без какой-либо оптимизации: для отрисовки 100 000 вершин требуется 0,2 с, а для отрисовки 1 млн ребер — 4 с.

person Fenikso    schedule 13.04.2011

Рассматривали ли вы graphviz? Не интерактивный, хотя с самого начала он был разработан для обработки очень больших графов (хотя 1 миллион ребер может быть даже за пределами его возможностей).

Существует модуль Python (pydot), который упрощает взаимодействие с graphviz. Опять же, не могу сказать наверняка, что он будет масштабироваться до ваших уровней. Однако это должно быть легко выяснить: установка обоих проста.

чт.

person sfinnie    schedule 13.04.2011
comment
Dot хорош, но я уверен, что это выходит за рамки его возможностей. К счастью, сейчас есть лучшие решения с открытым исходным кодом, такие как tulip (есть и другие). - person static_rtti; 14.04.2011
comment
да, тюльпан был для меня новым - выглядит интересно. Удачи найти что-нибудь. - person sfinnie; 14.04.2011

Рассматривали ли вы возможность использования ParaView или Посетить? Это две интерактивные программы построения графиков, предназначенные для обработки и построения (очень!) больших наборов данных. Оба они также имеют интерфейс сценариев Python, поэтому вы можете автоматизировать/управлять визуализацией из интерпретатора Python.

person Chris    schedule 08.12.2011

Вы пробовали использовать Gephi?

Я считаю, что это очень хорошо масштабируется.

person Jeremy    schedule 17.09.2013