Проблемы с памятью при крупномасштабной визуализации в социальных сетях с использованием R и Cytoscape

Я относительно новичок в R и пытаюсь решить следующую проблему:

Я работаю на платформе Windows 7 Enterprise с 32-битной версией R и на моей машине около 3 ГБ ОЗУ. У меня есть крупномасштабные данные социальной сети (около 7000 вершин и около 30 000 ребер), которые в настоящее время хранятся в моей базе данных SQL. Мне удалось вытащить эти данные (за исключением атрибутов вершин и ребер) в R-фрейм данных, а затем в объект igraph. Для дальнейшего анализа и визуализации я бы хотел перенести этот igraph в Cytoscape с помощью RCytoscape. В настоящее время мой подход заключается в преобразовании объекта igraph в объект graphNEL, поскольку RCytoscape, похоже, хорошо работает с этим типом объекта. (Функции построения графиков слишком медленные и лишены возможности дальнейшего анализа.)

К сожалению, я всегда сталкиваюсь с проблемами памяти при запуске этого скрипта. Ранее он работал с небольшими сетями, хотя.

У кого-нибудь есть идеи как решить эту проблему? Или вы можете порекомендовать какие-либо другие инструменты визуализации и анализа, которые хорошо работают с R и могут обрабатывать такие масштабные данные?

Любая помощь приветствуется. Большое спасибо заранее!

Бест, Игнасио

2 ответа

Извините, что потратил несколько дней, чтобы вернуться к вам.

Я только что провел несколько тестов, в которых

1) матрица смежности создается в R 2) затем R graphNEL создается из матрицы 3) (необязательно) добавляются атрибуты узла и ребра 4) создается, отображается и раскладывается окно CytoscapeWindow и перерисовывается

(all times are in seconds)

nodes   edges  attributes? matrix    graph   cw    display   layout  redraw   total
  70      35       no       0.001    0.001   0.5      5.7      2.5    0.016    9.4
  70       0       no       0.033    0.001   0.2      4.2      0.5    0.49     5.6
 700     350       no       0.198    0.036   6.0      8.3      1.6    0.037   16.7
1000     500       no       0.64     0.07   12.0      9.8      1.8    0.09    24.9
1000     500      yes       0.42    30.99   15.7     29.9      1.7    0.08    79.4
2000    1000       no       3.5      0.30   73.5     14.9      4.8    0.08    96.6
2500    1250       no       2.7      0.45  127.1     18.3     11.5    0.09   160.7
3000    1500       no       4.2      0.46  236.8     19.6     10.7    0.10   272.8
4000    2000       no       8.4      0.98  502.2     27.9     21.4    0.14   561.8

К моему полному удивлению и огорчению, в 'cw' (метод new.CytoscapeWindow) наблюдается экспоненциальное замедление - что вообще не имеет смысла. Может случиться так, что истощение вашей памяти связано с этим и вполне исправимо.

Я буду исследовать это, и, возможно, исправлюсь на следующей неделе.

Кстати, знаете ли вы, что вы можете создать graphNEL непосредственно из матрицы смежности?

g = new ("graphAM", adjMat = matrix, edgemode="directed")

Спасибо, Игнасио, за ваш самый полезный доклад. Я должен был сделать эти тесты времени давно!

  • Павел

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

В igraph Вы можете использовать write.graph() функция экспорта графа несколькими способами. Таким образом, вы можете обойтись без преобразования graphNEL объект, который может быть достаточно, чтобы не исчерпать память.

Другие вопросы по тегам