Frage
HALLO alle,
Ich habe versucht, eine bestimmte Menge an Affymetrix CEL-Dateien zu laden, mit dem Standard BioConductor Befehl (R 2.8.1 auf 64-Bit-Linux, 72 GB RAM)
abatch<-ReadAffy()
Aber ich bekomme immer wieder diese Meldung:
Error in read.affybatch(filenames = l$filenames, phenoData = l$phenoData, :
allocMatrix: too many elements specified
Was ist die allgemeine Bedeutung dieses allocMatrix Fehler entdeckt? Gibt es eine Möglichkeit die maximale Größe zu erhöhen?
Danke
Lösung
Das Problem ist, dass alle Kernfunktionen INTs anstelle von LONGs für R Objekte zu erzeugen. Zum Beispiel Ihre Fehlermeldung kommt von Array.c in / src / main
if ((double)nr * (double)nc > INT_MAX)
error(_("too many elements specified"));
wo nr und nc ganze Zahlen sind, erzeugt vor, für die Anzahl der Zeilen und Spalten der Matrix stehen:
nr = asInteger(snr);
nc = asInteger(snc);
Also, um es kurz zu schneiden, alles im Quellcode sollte LONG geändert werden, möglicherweise nicht nur in Array.c aber in den meisten Kernfunktionen, und das wäre etwas Neuschreiben erfordern. Sorry für die nicht mehr nützlich sein, aber ich denke, das ist die einzige Lösung ist. Alternativ können Sie für R 3.x zum nächsten Jahr warten können, und hoffentlich werden sie diese umzusetzen ...
Andere Tipps
Wenn Sie versuchen, auf riesige affymetrix Datensätze zu arbeiten, könnten Sie mehr Glück haben Pakete von aroma.affymetrix .
Auch Bioconductor ist ein (vor allem) schnell bewegendes Projekt und Sie in der Regel, um jegliche Fortsetzung „Unterstützung“ zu bekommen, um die neueste Version von R Upgrade gefragt werden (Hilfe auf der BioC Mailingliste). Ich sehe, dass Thrawn erwähnt auch ein ähnliches Problem mit R 2.10 mit, aber Sie könnten immer noch darüber nachdenken, sowieso zu aktualisieren.
ich in diesen Thread zufällig gestoßen. . Nein, das Aroma * Rahmen wird durch die allocMatrix () Begrenzung der ints und sehnt mich nicht darauf beschränkt, da es keine Daten adressiert den regelmäßigen Adressraum allein mit - anstatt es Teilmengen auch über das Dateisystem. Es hält nie und nie lädt die kompletten in den Speicher gesetzt Daten jederzeit. Grundsätzlich ist das Dateisystem setzt die Grenze, nicht den RAM noch den Adressraum von Ihnen OS.
/ Henrik (Autor von Aroma. *)