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
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. *)