Pergunta

HI all,

Eu estava tentando carregar uma certa quantidade de arquivos Affymetrix CEL, com o comando BioConductor padrão (R ??2.8.1 em 64 bits linux, 72 GB de RAM)

abatch<-ReadAffy()

Mas eu continuo recebendo esta mensagem:

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

Qual é o significado geral desse erro allocMatrix? Existe alguma maneira de aumentar seu tamanho máximo?

Obrigado

Foi útil?

Solução

O problema é que todas as funções essenciais utilizar INTs em vez de LONGs para gerar objetos R. Por exemplo, a mensagem de erro vem de array.c in / src / main

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

onde nr e nc são inteiros gerados antes, de pé para o número de linhas e colunas da matriz:

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

Assim, para cortá-lo curto, tudo no código-fonte deve ser alterado para LONG, possivelmente, não só na array.c mas na maioria dos principais funções, e que seria necessário algum reescrita. Desculpe por não ser mais útil, mas eu acho que esta é a única solução. Alternativamente, você pode esperar por R 3.x próximo ano, e esperamos que eles vão implementar isso ...

Outras dicas

Se você está tentando trabalhar em enormes conjuntos de dados Affymetrix, você poderia ter melhor sorte usando pacotes de aroma.affymetrix .

Além disso, bioconductor é um (em particular) em movimento rápido de projeto e você vai normalmente ser solicitado a atualizar para a versão mais recente do R, a fim de obter qualquer continuou "suporte" (ajuda na lista de discussão BIOC). Vejo que Thrawn também menciona ter um problema semelhante com R 2,10, mas você ainda pode pensar sobre a atualização de qualquer maneira.

topei com esta discussão por acaso. . Não, o aroma * quadro não é limitada pela limitação allocMatrix () de inteiros e longs, porque não faz dados de endereço usando o espaço de endereço normal sozinho - em vez disso, subconjuntos também através do sistema de arquivos. Nunca segurar e nunca carrega o conjunto completo de dados na memória a qualquer momento. Basicamente, o sistema de arquivos define o limite, e não a RAM nem o espaço de endereço de vocês OS.

/ Henrik (Autor de aroma. *)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top