Ich habe einige Fragen zum Clustering in Zeitreihen und speziell zum Clustering gesehen, aber ich glaube nicht, dass sie meine Frage beantworten.
Hintergrund: Ich möchte Gene in einem Zeitverlaufsexperiment in Hefe bündeln. Es gibt vier Zeitpunkt sagen: t1 t2 t3 und t4 und die Gesamtzahl der Gene G . Ich habe die Daten in Form einer Matrix M, in der die Spalten die Behandlungen (oder Zeitpunkte) t1 t2 t3 und t4 darstellen und die Zeilen die Gene darstellen. Daher ist M eine Gx4-Matrix.
Problem: Ich möchte die Gene, die sich über alle Zeitpunkte t1, t2, t3 und t4 sowie innerhalb eines bestimmten Zeitpunkts ti , in dem i in {1, 2, 3, 4} ist, gleich verhalten, gruppieren (falls dies nicht möglich ist) Bei beiden Clustern zusammen ist das Clustering innerhalb eines Zeitpunkts wichtiger als das Clustering über Zeitpunkte hinweg. Darüber hinaus möchte ich eine Heatmap zeichnen.
Meine Lösung:
Ich verwende den folgenden R-Code, um eine Heatmap sowie die Cluster mithilfe der hclust
Funktion in R zu erhalten (führt hierarchische Cluster mit euklidischem Abstand durch).
row.scaled.expr <- (expr.diff - rowMeans(expr.diff)) / rowSds(expr.diff)
breaks.expr <- c(quantile(row.scaled.expr[row.scaled.expr < 0],
seq(0,1,length=10)[-9]), 0,
quantile(row.scaled.expr[row.scaled.expr > 0],
seq(0,1,length=10))[-1] )
blue.red.expr <- maPalette(low = "blue", high = "red", mid = "white",
k=length(breaks.expr) - 1)
pdf("images/clust.pdf",
height=30,width=20,pointsize=20)
ht1 <- heatmap.2(row.scaled.expr, col = blue.red.expr, Colv = FALSE, key = FALSE,
dendrogram = "row", scale = "none", trace = "none",
cex=1.5, cexRow=1, cexCol=2,
density.info = "none", breaks = breaks.expr,
labCol = colnames(row.scaled.expr),
labRow="",
lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),
main=expression("Heat Map"),
ylab="Genes in the Microarray",
xlab="Treatments"
)
dev.off()
Ich habe kürzlich ein hopach
Paket in Bioconductor entdeckt , mit dem die Anzahl der Cluster geschätzt werden kann. Zuvor habe ich zufällig die Anzahl der Fächer für die Heatmap zugewiesen und den Baum in einer geeigneten Höhe geschnitten, um eine vorgegebene Anzahl von Clustern zu erhalten.
Mögliche Probleme in meiner Lösung:
- Möglicherweise gruppiere ich die Gene innerhalb einer bestimmten Behandlung nicht und gruppiere Gene nur über Behandlungen hinweg oder umgekehrt.
- Es gibt möglicherweise bessere Möglichkeiten, eine Heatmap für das Muster zu erhalten, das ich sehen möchte (ähnliche Gene innerhalb einer Behandlung und über Behandlungen hinweg).
- Möglicherweise gibt es bessere Visualisierungsmethoden, die mir nicht bekannt sind.
Hinweis:
csgillespie (Moderator) hat auf seiner Website ein allgemeineres Dokument, in dem er alle Aspekte der Zeitverlaufsanalyse (einschließlich Heatmaps und Clustering) behandelt. Ich würde mich freuen, wenn Sie mich auf einen Artikel verweisen können, der Heatmaps und Clustering im Detail beschreibt.
Ich habe das
pvclust
Paket ausprobiert , aber es beschwert sich, dass M singulär ist und dann abstürzt.
quelle
In Ergänzung zur Antwort von @ mbq (
Mfuzz
sieht gut aus) werde ich nur einige Referenzen (PDFs) zum Clustering von Genexpressionsdaten im Zeitverlauf einfügen :Haben Sie das
timecourse
Paket ausprobiert (wie von @csgillespie in seinem Handzettel vorgeschlagen )?quelle
timecourse
Paket dient nicht wirklich zur Bestimmung von Clustern, sondern zur Berechnung der differentiell exprimierten Gene.kml
aber ich bin kein wirklicher Experte auf diesem Gebiet).Haben Sie versucht, bei der Erstellung Ihres Dendrogramms Standard-Clustering-Algorithmen für Ihre Daten zu verwenden, um die anderen Antworten zu ergänzen (die so aussehen, als ob sie Ihr Problem lösen sollten)? Zum Beispiel,
Anstatt die durchschnittliche Entfernung für das Clustering zu verwenden, können Sie auch "ward", "single", "median", ... verwenden.
?hclust
Eine vollständige Liste finden Sie unter.Verwenden Sie zum Extrahieren von Clustern den
hclust
Befehl direkt und anschließend dencutree
Befehl. Zum Beispiel,Weitere Details finden Sie auf meiner Webseite .
quelle
cutree
Befehl bekannt, mit dem Cluster aus dem Heatmap.2-Objekt extrahiert werden können.