Вопрос

Всем привет,

Я пытался загрузить определенное количество файлов 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() на целые и длинные числа, поскольку она не обращается к данным, используя только обычное адресное пространство - вместо этого она также выполняет подмножества через файловую систему.Он никогда не сохраняет и никогда не загружает полный набор данных в память.По сути, ограничение устанавливает файловая система, а не ОЗУ или адресное пространство вашей ОС.

/Хенрик (автор книги «Аромат».*)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top