2009-11-30 90 views
3

HI所有,半徑誤差allocMatrix

我試圖加載一定量的Affymetrix公司的CEL文件,使用標準Bioconductor的命令(在64位Linux - [R 2.8.1,72 GB的RAM)

abatch<-ReadAffy() 

但我不斷收到這樣的信息:

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

這是什麼allocMatrix錯誤的一般含義?有沒有辦法增加它的最大尺寸?

謝謝

+0

我嘗試了R上2.10.0,同樣的問題。 – 2009-11-30 12:54:21

+0

R-Help上有一個線程:http://www.mail-archive.com/[email protected]/msg27488.html – rcs 2009-11-30 12:54:22

+0

閱讀它,但它並沒有真正解決問題。正如在該線程中,我沒有稀疏矩陣。我想知道是否篡改R源代碼會有所幫助。就像使用longs而不是int進行索引一樣。 – 2009-11-30 12:57:55

回答

5

問題是所有核心函數都使用INT來代替LONG來生成R對象。例如,你的錯誤消息來自array.c在/ SRC /主

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明年,並希望他們會實施這...

+0

我想這就是它......學習時間C.謝謝! – 2009-12-01 15:31:37

1

如果你想在龐大的數據集的Affymetrix工作,你可能會使用包從aroma.affymetrix有更好的運氣。此外,bioconductor是一個(尤其是)快速移動的項目,通常會要求您升級到最新版本的R以獲得任何持續的「支持」(BioC郵件列表上的幫助)。我看到Thrawn也提到R 2.10有類似的問題,但是仍然可以考慮升級。

+0

是的,這正是什麼香氣。 affymetrix是爲龐大的數據集而設計的 – 2009-12-01 02:26:19

+0

affy和affyPLM包中的大多數函數都已經有了優化步驟來節省內存(例如justRMA(破壞性= TRUE))。爲此,我總是發現香氣相當多餘。 不幸的是,問題仍然存在於芳香中,因爲R中的內部allocMatrix表示限制沒有增加。 – 2009-12-01 11:56:15

+1

我同意,大多數親和函數做什麼aroma.affymetrix爲大數據集做。他們也肯定更快。然而,當你沒有怪物機器時,aroma.affymetrix是很好的(因爲它會限制RAM的消耗)。 – Tonio 2009-12-01 12:02:17

1

我偶然碰到了這個線程。不,芳香框架不受alloc和math()長度限制,因爲它沒有單獨使用常規地址空間來尋址數據 - 而是通過文件系統來分配子集。它永遠不會佔用,並且永遠不會將完整的數據集隨時加載到內存中。基本上文件系統設置限制,而不是你的操作系統的RAM或地址空間。

/亨裏克 (香氣的作者。*)