2

私はRに比較的慣れておらず、次の問題を解決しようとしています:

私は R の 32 ビット バージョンを搭載した Windows 7 Enterprise プラットフォームで作業しており、マシンには約 3GB の RAM があります。現在、SQL データベースに格納されている大規模なソーシャル ネットワーク データ (約 7,000 の頂点と約 30,000 のエッジ) があります。このデータ (頂点とエッジの属性を省略) を R データフレームにプルし、次に igraph オブジェクトにプルすることができました。さらなる分析と視覚化のために、RCytoscape を使用してこの igraph を Cytoscape にプッシュしたいと思います。RCytoscape はこのオブジェクト タイプでうまく機能するように見えるので、現在、私のアプローチは igraph オブジェクトを graphNEL オブジェクトに変換することです。(igraph プロット関数は非常に遅く、それ以上の分析機能がありません。)

残念ながら、このスクリプトを実行すると、常にメモリの問題が発生します。ただし、以前は小規模なネットワークで機能していました。

この問題を解決する方法を知っている人はいますか? または、R とうまく連携し、そのような大規模なデータを処理できる他の視覚化および分析ツールをお勧めできますか?

どんな助けでも大歓迎です。よろしくお願いします!

ベスト、イグナシオ

4

2 に答える 2

1

ご連絡に数日お時間をいただいて申し訳ありません。

私はちょうどいくつかのテストを実行しました

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")

Ignacio さん、非常に有益なレポートをありがとうございます。これらのタイミング テストはずっと前に行うべきでした。

  • ポール
于 2012-04-17T22:58:58.577 に答える
0

Cytoscapeを久しぶりに使ったのでやり方がよくわからないのですが、マニュアルには「Table Import」機能を使ってテキストファイルを入力として使えると書いてあります。

igraph関数を使用して、さまざまな方法でグラフwrite.graph()をエクスポートできます。graphNELこのようにして、メモリ不足にならないように十分なオブジェクトに変換する必要がなくなります。

于 2012-04-11T08:32:34.927 に答える