2012-04-11 8 views
2

Ich bin relativ neu in R und ich versuche, das folgende Problem zu lösen:Speicherprobleme mit großer sozialen Netzwerken Visualisierung mit R und Cytoscape

ich auf einem Windows 7 Enterprise-Plattform mit der 32-Bit-Version von R arbeiten und haben etwa 3 GB RAM auf meinem Rechner. Ich habe große soziale Netzwerkdaten (ca. 7.000 Vertices und ca. 30.000 Kanten), die derzeit in meiner SQL-Datenbank gespeichert sind. Ich habe es geschafft, diese Daten (Scheitelpunkt- und Kantenattribute weglassen) in einen R-Datenrahmen und dann in ein igraph-Objekt zu ziehen. Für weitere Analysen und Visualisierungen würde ich jetzt gerne diesen Zyklopen mit RCytoscape in Cytoscape schieben. Momentan ist mein Ansatz, das Objekt in ein graphiNEL-Objekt zu konvertieren, da RCytoscape gut mit diesem Objekt Typ funktioniert. (Die iigraph Plotfunktionen sind viel zu langsam und fehlen weitere Analyse-Funktionalität.)

Leider habe ich immer Probleme mit dem Speicher bei der Ausführung dieser Skript. Es hat jedoch früher mit kleineren Netzwerken funktioniert.

Hat jemand eine Idee, wie Sie dieses Problem lösen können? Oder können Sie alle anderen Visualisierungs- und Analysetools empfehlen, die gut funktionieren mit R und können solche großen Daten verarbeiten?

Jede Hilfe würde sehr geschätzt werden. Vielen Dank im Voraus!

Best, Ignacio

Antwort

0

Es ist eine Weile gewesen, da ich Cytoscape verwendet, so bin ich nicht ganz sicher, wie es zu tun, aber die manual besagt, dass Sie Textdateien als Eingabe verwenden können die „Table Import“ Funktion verwenden .

In igraph können Sie die Funktion write.graph() verwenden, um ein Diagramm auf eine Reihe von Arten zu exportieren. Auf diese Weise können Sie vermeiden, dass Sie in ein graphNEL Objekt konvertieren müssen, was ausreichen könnte, um nicht zu viel Speicher zu haben.

+0

Vielen Dank an Sie beide. Ich freue mich auf Pauls Lösung und wenn es nicht funktioniert, muss ich mich darauf konzentrieren, die Daten direkt über das SQL-Plugin in Cytoscape zu importieren ... Am besten, Ignacio – user1326028

1

Es tut uns leid, dass wir einige Tage gebraucht haben, um auf Sie zurückzukommen.

I lief nur einige Tests, bei denen

1) eine Adjazenzmatrix in R 2) ein R graphNEL erzeugt wird, wird dann aus der Matrix 3) (optional) -Knoten & Kanten Attribute erstellt 4 hinzugefügt) ein CytoscapeWindow erstellt wird, angezeigt wird, und legte aus, und

(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 

zu meiner völligen Überraschung neu gezeichnet, und Verdruss, gibt es eine exponentielle Abschwächung der ‚cw‘ (der new.CytoscapeWindow Methode) --which nicht macht Sinn überhaupt. Es kann sein, dass deine Gedächtnis-Erschöpfung damit zusammenhängt und ziemlich reparierbar ist.

Ich werde dies erkunden, und wahrscheinlich eine Korrektur in der nächsten Woche haben.

Übrigens, wussten Sie, dass Sie ein Diagramm NEL direkt aus einer Adjazenzmatrix erstellen können?

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

Danke, Ignacio, für Ihren hilfreichsten Bericht. Ich hätte diese Timing-Tests schon lange machen sollen!

  • Paul
+0

Vielen Dank an euch beide. Ich freue mich auf Pauls Lösung, und wenn es nicht funktioniert, muss ich darauf zurückgreifen, die Daten direkt über das SQL-Plugin in Cytoscape zu importieren ... Best, Ignacio – user1326028

Verwandte Themen