Вопрос
Всем привет,
Я пытался загрузить определенное количество файлов 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?Есть ли способ увеличить его максимальный размер?
Спасибо
Решение
Проблема в том, что все основные функции используют INT вместо LONG для генерации R объектов. Например, ваше сообщение об ошибке приходит из array.c в / src / main
if ((double)nr * (double)nc > INT_MAX)
error(_("too many elements specified"));
где nr и nc - сгенерированные ранее целые числа, обозначающие количество строк и столбцов вашей матрицы:
nr = asInteger(snr);
nc = asInteger(snc);
Таким образом, чтобы сократить это, все в исходном коде должно быть изменено на LONG, возможно, не только в array.c, но и в большинстве основных функций, и это потребует некоторой переписывания. Извините, что не помогал, но я думаю, что это единственное решение. В качестве альтернативы, вы можете подождать R 3.x в следующем году, и, надеюсь, они это реализуют ...
Другие советы
Если вы пытаетесь работать с огромными наборами данных affymetrix, вам может повезти, если вы используете пакеты из aroma.affymetrix .
Кроме того, bioconductor - это (особенно) быстро развивающийся проект, и вам, как правило, предлагается обновить его до последней версии R, чтобы получить любую дальнейшую "поддержку". (помощь в списке рассылки BioC). Я вижу, что Траун также упоминает о наличии аналогичной проблемы с R 2.10, но вы все равно можете подумать об обновлении.
Я случайно наткнулся на эту тему.Нет, платформа Aroma.* не ограничена ограничением allocMatrix() на целые и длинные числа, поскольку она не обращается к данным, используя только обычное адресное пространство - вместо этого она также выполняет подмножества через файловую систему.Он никогда не сохраняет и никогда не загружает полный набор данных в память.По сути, ограничение устанавливает файловая система, а не ОЗУ или адресное пространство вашей ОС.
/Хенрик (автор книги «Аромат».*)