문제

안녕하세요,

표준 바이오 컨덕터 명령 (64 비트 리눅스의 R 2.8.1, 72GB의 RAM)과 함께 일정량의 Affymetrix CEL 파일을로드하려고했습니다.

abatch<-ReadAffy()

그러나 나는이 메시지를 계속 받고 있습니다.

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

이 allocmatrix 오류의 일반적인 의미는 무엇입니까? 최대 크기를 늘리는 방법이 있습니까?

고맙습니다

도움이 되었습니까?

해결책

문제는 모든 핵심 함수가 R 객체를 생성하는 데 오랜 시간 대신 ints를 사용한다는 것입니다. 예를 들어, 오류 메시지는 array.c in /src /main에서 나옵니다.

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

NR과 NC가 이전에 생성 된 정수 인 경우 매트릭스의 행과 열의 수를 나타냅니다.

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

따라서 짧게 자르려면 소스 코드의 모든 것이 Array.c뿐만 아니라 대부분의 핵심 함수에서 길고 길게 변경되어야하며, 일부는 다시 작성해야합니다. 더 도움이되지 않아서 죄송하지만 이것이 유일한 해결책이라고 생각합니다. 또는 내년에 R 3.x를 기다릴 수 있으며,이를 구현하기를 바랍니다.

다른 팁

거대한 Affymetrix 데이터 세트에서 작업하려는 경우 패키지를 사용하여 더 나은 행운을 누릴 수 있습니다. 아로마. Affymetrix.

또한 Bioconductor는 (특히) 빠르게 움직이는 프로젝트이며 일반적으로 지속적인 "지원"(BIOC 메일 링리스트의 도움말)을 얻기 위해 최신 버전의 R로 업그레이드해야합니다. Thrawn은 R 2.10과 비슷한 문제가 있다고 언급하지만 여전히 업그레이드에 대해 생각할 수 있습니다.

나는 우연히이 실에 부딪쳤다. 아니요, 아로마.* 프레임 워크는 ints and long의 allocmatrix () 제한에 의해 제한되지 않습니다. 왜냐하면 일반 주소 공간 만 사용하여 데이터를 다루지 않기 때문입니다. 대신 파일 시스템을 통해 서브 세트. 그것은 결코 완전한 데이터 세트를 언제든지 메모리에로드하지 않습니다. 기본적으로 파일 시스템은 OS의 RAM이나 주소 공간이 아닌 한계를 설정합니다.

/Henrik (Aroma의 저자*)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top