2016-07-29 58 views
0

我使用getgeodata()方法從NCBI獲取微陣列數據。這返回結構,具有字段數據,它是DataMatrix,每列代表不同的樣本和代表探針的行。出於某種原因,儘管在數據矩陣的每個細胞本身是一個1x1的二維條碼,因此,當我嘗試做這樣的事情:展平數據矩陣的DataMatrix

am_accession = getgeodata('GSE2034') 
am_data_adj = rmabackadj(am_accession.Data) 

Matlab的引發錯誤:

Error using rmabackadj (line 80) Probe intensity values must be numeric and real.

我想我需要壓扁DataMatrix,以便1x1 DataMatrices中的值是較大DataMatrix中的值,但是,我不確定如何在Matlab中完成此操作。

任何想法如何做到這一點(慣用)?

回答

1

DataMatrix看起來是一個matlab類/對象(特別是bioma.data.DataMatrix)。

這意味着您可以閱讀其文檔,即doc bioma.data.DataMatrix。 您也可以直接從對象中獲取可用方法的列表,方法是在控制檯中寫入DataMatrix的名稱和點後,按[TAB]

在任何情況下,似乎沒有你想要的正是一個.double()方法,即所有的數據轉換成雙打的陣列,即

am_accesion.Data.double() 
+0

這是一個有趣的數據結構;我沒有來過它。你可以做像MyData(:''columnname')',或'MyData([1:5],{'columnname1','columnname2'})''。這很酷,很高興知道這存在。 –

+0

似乎與R數據幀類似。 DataMatrix中的DataMatrix雖然即使以這種方式存儲,也很奇怪 - 它使變量檢查視圖變得無用。 – merv

+1

如果您希望獲得仍保留按行/列名查詢的子集(即它是同一類型的子集)的子集,那麼這很有意義。真正的弱點是matlab無法鏈接操作符,所以你必須在整個地方分配臨時變量,也就是'd = Data(1:10,1:10); d.double()'而不是'Data(1:10,1:10).double()'或者甚至是'Data.double()(1:10,1:10)' –