2016-07-29 51 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)' –