Domanda

Ciao a tutti

Stavo cercando di caricare una certa quantità di file CEL Affymetrix, con il comando BioConductor standard (R 2.8.1 su Linux a 64 bit, 72 GB di RAM)

abatch<-ReadAffy()

Ma continuo a ricevere questo messaggio:

Error in read.affybatch(filenames = l$filenames, phenoData = l$phenoData,  : 
  allocMatrix: too many elements specified

Qual è il significato generale di questo errore allocMatrix? C'è un modo per aumentarne le dimensioni massime?

Grazie

È stato utile?

Soluzione

Il problema è che tutte le funzioni principali usano INT anziché LONG per generare oggetti R. Ad esempio, il tuo messaggio di errore proviene da array.c in / src / main

if ((double)nr * (double)nc > INT_MAX)
    error(_("too many elements specified"));

dove nr e nc sono numeri interi generati prima, che rappresentano il numero di righe e colonne della tua matrice:

nr = asInteger(snr);
nc = asInteger(snc);

Quindi, per farla breve, tutto nel codice sorgente dovrebbe essere cambiato in LUNGO, probabilmente non solo in array.c ma nella maggior parte delle funzioni di base, e ciò richiederebbe una certa riscrittura. Ci scusiamo per non essere più utile, ma suppongo che questa sia l'unica soluzione. In alternativa, potresti aspettare R 3.x il prossimo anno, e spero che implementeranno questo ...

Altri suggerimenti

Se stai cercando di lavorare su enormi set di dati affymetrix, potresti avere più fortuna usando i pacchetti da aroma.affymetrix .

Inoltre, il bioconduttore è un progetto (in particolare) in rapido movimento e in genere ti verrà chiesto di eseguire l'aggiornamento alla versione più recente di R per ottenere qualsiasi "supporto" continuo. (aiuto sulla mailing list di BioC). Vedo che Thrawn menziona anche un problema simile con R 2.10, ma potresti comunque pensare di aggiornare comunque.

Mi sono imbattuto in questo thread per caso. No, l'aroma. * Framework non è limitato dalla limitazione allocMatrix () di ints e long, perché non indirizza i dati utilizzando solo lo spazio di indirizzi normale, ma esegue la sottoinsieme anche tramite il file system. Non regge mai e non carica mai il set di dati completo in memoria in qualsiasi momento. Fondamentalmente il file system imposta il limite, non la RAM né lo spazio degli indirizzi del tuo sistema operativo.

/ Henrik (autore di aroma. *)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top