私は前述のデータ(edgelistまたはpajek形式)を分析しようとしています。最初はigraphパッケージのRプロジェクトでした。しかし、メモリの制限(6GB)はやりません。 128GBのPCでデータを処理できますか? RAMにグラフ全体を必要としない代替手段はありますか?
ありがとうございます。
P.S:私はいくつかのプログラムを見つけましたが、私はいくつかのプロ(ええ、それはあなたです)の意見を聞きたいと思います。
私は前述のデータ(edgelistまたはpajek形式)を分析しようとしています。最初はigraphパッケージのRプロジェクトでした。しかし、メモリの制限(6GB)はやりません。 128GBのPCでデータを処理できますか? RAMにグラフ全体を必要としない代替手段はありますか?
ありがとうございます。
P.S:私はいくつかのプログラムを見つけましたが、私はいくつかのプロ(ええ、それはあなたです)の意見を聞きたいと思います。
度数分布だけが必要な場合は、グラフパッケージはまったく必要ありません。私はより多くの詳細についてはtheir websiteをチェックアウトあなたがRAM
foreach
を使っ度計算を並列化することができbigtablulate packageをお勧めします。このアプローチの簡単な例を示すには、最初に100万のノードのうち100万のエッジを含むedgelistで例を作成しましょう。
set.seed(1)
N <- 1e6
M <- 1e6
edgelist <- cbind(sample(1:N,M,replace=TRUE),
sample(1:N,M,replace=TRUE))
colnames(edgelist) <- c("sender","receiver")
write.table(edgelist,file="edgelist-small.csv",sep=",",
row.names=FALSE,col.names=FALSE)
次に、このファイルを10回連結して、例を少し大きくします。
system("
for i in $(seq 1 10)
do
cat edgelist-small.csv >> edgelist.csv
done")
次はbigtabulate
パッケージをロードし、私たちのedgelistを持つテキストファイルを読み込みます。コマンドread.big.matrix()
は、我々は最初の列にbigtable()
を使用してoutdegreesを計算することができR.
library(bigtabulate)
x <- read.big.matrix("edgelist.csv", header = FALSE,
type = "integer",sep = ",",
backingfile = "edgelist.bin",
descriptor = "edgelist.desc")
nrow(x) # 1e7 as expected
ファイルバックオブジェクトを作成します。
outdegree <- bigtable(x,1)
head(outdegree)
期待通りにテーブルが働いていることを確認するためのクイック健全性チェック:
# Check table worked as expected for first "node"
j <- as.numeric(names(outdegree[1])) # get name of first node
all.equal(as.numeric(outdegree[1]), # outdegree's answer
sum(x[,1]==j)) # manual outdegree count
入次数を取得するには、ちょうどbigtable(x,2)
を行います。
私はそれが正しくなる場合は、問題を行列計算に移しています。私はすきです。例を挙げてください。 –
度計算のために容易でスケーラブルであるようです。グラフのマニュピュレーションを扱うことはできますか?間引きを追加するなど?私は彼らの文書を読む必要があります。 Christopherをお寄せいただきありがとうございます。 –
「分析する」と答えると、あなたは何をしようとしているのかより具体的になりますか? – ose
もちろん。分布をプロットするために使用する度数(イン、アウト、トータル)を計算したいと思います。大きなグラフから小さなグラフ(サンプリングプロセス)にノードとエッジを移動できるようにしたいと考えています。ここではigraphのadd.verticesとadd.edgesが非常に便利です。 –
データの形式は何ですか? edgelistは60gbだけですか? (つまり、各行に1つのエッジの送信者と受信者を表す2つの数字が含まれているテキストファイルですか?) –