2016-07-29 45 views
0

Ich erhalte Microarray-Daten von NCBI mit der getgeodata() Methode. Dies liefert eine Struktur, mit einem Feld Daten, die eine DataMatrix ist, wobei jede Spalte eine andere Probe darstellt und Zeilen die Sonden darstellen. Aus irgendeinem Grund, jede Zelle in der Data Matrix ist selbst ein Data Matrix 1x1 und so, wenn ich versuche, wie etwas zu tun:Abflachung einer DataMatrix von DataMatrices

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

Matlab führt den Fehler:

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

Ich glaube, ich muss flacht die DataMatrix so ab, dass die Werte in den 1x1 DataMatrices die Werte in der größeren DataMatrix sind, aber ich bin nicht sicher, wie dies in Matlab zu erreichen ist.

Irgendeine Idee, wie man das macht (idiomatisch)?

Antwort

1

DataMatrix scheint eine Matlab Klasse/Objekt zu sein (speziell).

Das bedeutet, dass Sie die Dokumentation lesen können, d. H. doc bioma.data.DataMatrix. Sie können auch eine Liste der verfügbaren Methoden direkt vom Objekt abrufen, indem Sie [TAB] drücken, nachdem Sie den Namen der DataMatrix und einen Punkt in Ihrer Konsole geschrieben haben.

Auf jeden Fall scheint es ein .double() Methode zu sein, das, was Sie nicht genau wollen, das heißt konvertieren alle Daten in ein Array von Doppel, das heißt

am_accesion.Data.double() 
+0

Es ist eine interessante Datenstruktur; Ich bin nicht darüber gekommen. Sie können Dinge wie 'MyData (:, 'Spaltenname') 'oder' MyData ([1: 5], {'Spaltenname1', 'Spaltenname2'})' tun. Das ist ziemlich cool; schön zu wissen, dass das existiert. –

+0

scheint einem R data.frame ähnlich zu sein. Die DataMatrix in einer DataMatrix ist jedoch nur komisch, auch wenn sie so gespeichert wird - sie macht die Variable Inspektionsansicht unbrauchbar. – merv

+1

Es ist sinnvoll, wenn Sie eine Teilmenge erhalten möchten, bei der Sie immer noch die Möglichkeit haben, nach Zeilen-/Spaltennamen zu suchen (d. H. Es handelt sich um eine Teilmenge desselben Typs). Die wirkliche Schwäche ist die Unfähigkeit von matlab, Operatoren zu verketten, also müssen Sie temporäre Variablen überall zuweisen, d. H. Tun 'd = Daten (1: 10,1: 10); d.double() 'anstelle von' Data (1: 10,1: 10) .double() 'oder sogar' Data.double() (1: 10,1: 10) ' –