2009-11-30 2 views
3

Привет всем,R ошибки allocMatrix

Я пытался загрузить определенное количество Affymetrix CEL файлов, со стандартной командой Bioconductor (R 2.8.1 на 64-битной Linux, 72 Гб оперативной памяти)

abatch<-ReadAffy() 

Но я получаю это сообщение:

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

Что общий смысл этой ошибки allocMatrix? Есть ли способ увеличить максимальный размер?

Спасибо

+0

Я попробовал его на R 2.10.0, такой же проблемой. –

+0

В R-Help есть нить: http://www.mail-archive.com/[email protected]/msg27488.html – rcs

+0

Прочтите, но это не проблема. Как и в этой теме, у меня нет разреженных матриц. Мне было интересно, поможет ли вмешательство в исходный код R. Подобно индексированию с использованием longs вместо ints. –

ответ

5

Проблема в том, что все основные функции используют INTs вместо LONG для генерации объектов R. Например, ваше сообщение об ошибке поступает из array.c в/SRC/главного

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

где Н.Р. и н.д. целых чисел генерируемых перед тем, стоя на количество строк и столбцов вашей матрицы:

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

Итак, чтобы сократить его, все в исходном коде должно быть изменено на LONG, возможно, не только в array.c, но и в большинстве основных функций, и для этого потребуется некоторое переписывание. Извините за то, что вы не помогли, но я думаю, что это единственное решение. В качестве альтернативы, вы можете ждать R 3.x в следующем году, и, надеюсь, они будут реализовывать это ...

+0

Я думаю, что это ... Время учиться C. Спасибо! –

1

Если вы пытаетесь работать на огромных Affymetrix наборов данных, возможно, лучше удачи, используя пакеты из aroma.affymetrix.

Кроме того, биокондуктор представляет собой (в частности) быстро движущийся проект, и вам обычно предлагается обновить до последней версии R, чтобы получить какую-либо дальнейшую «поддержку» (помощь в списке рассылки BioC). Я вижу, что Траун также упоминает, что имеет аналогичную проблему с R 2.10, но вы все равно можете подумать об обновлении в любом случае.

+0

Да, это именно то, что аромат. affymetrix был создан для гигантских наборов данных атак –

+0

Большинство функций в аффилированных и affyPLM-пакетах уже имеют шаги оптимизации для экономии памяти (например, justRMA (destructive = TRUE)). Для этого я всегда находил аромат совершенно излишним. К сожалению, проблема остается с ароматом, поскольку внутренний предел представления allocMatrix в R не увеличивается. –

+1

Я согласен с тем, что большинство аффинных функций делают то, что делает aroma.affymetrix для больших наборов данных. Они также определенно быстрее. Тем не менее, aroma.affymetrix хорош, когда у вас нет машины-монстра (поскольку она накладывает ограничение на потребление ОЗУ). – Tonio

1

Я наткнулся на эту тему случайно. Нет, структура aroma. * Не ограничена ограничением allocMatrix() для int и longs, поскольку он не адресует данные, используя только одно адресное пространство - вместо этого он также подмножеств также через файловую систему. Он никогда не удерживает и никогда не загружает полный набор данных в память в любое время. В основном файловая система устанавливает ограничение, а не ОЗУ и адресное пространство вашей ОС.

/Henrik (автор аромата. *)

Смежные вопросы