mkatari-bioinformatics-august-2013-clustering
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
mkatari-bioinformatics-august-2013-clustering [2013/08/29 09:30] – mkatari | mkatari-bioinformatics-august-2013-clustering [2014/12/11 15:11] – [K-means] mkatari | ||
---|---|---|---|
Line 2: | Line 2: | ||
- | Clustering rna-seq data, continuation from [[mkatari-bioinformatics-august-2013-deseq|DESeq]] | + | ====== |
+ | continuation from [[mkatari-bioinformatics-august-2013-deseq|DESeq]] | ||
Get the significant genes | Get the significant genes | ||
Line 35: | Line 36: | ||
< | < | ||
sigGenes.hclust.k2< | sigGenes.hclust.k2< | ||
+ | </ | ||
+ | |||
+ | Now to get all the genes that are in cluster 2 simply type. | ||
+ | |||
+ | < | ||
+ | hclust.k2.cluster2=names(which(sigGenes.hclust.k2==2)) | ||
+ | </ | ||
+ | |||
+ | Now we can create a new matrix/data frame with just these genes. This new matrix can be used to plot a heatmap to make it easier to see a expression profile of the cluster (see below). | ||
+ | |||
+ | < | ||
+ | hclust.k2.cluster2.normalized = sigGenes.normalized[hclust.k2.cluster2, | ||
</ | </ | ||
Line 53: | Line 66: | ||
</ | </ | ||
- | Heatmap | + | ====== K-means ====== |
+ | The K-means method uses euclidean distance to measure distance. Since in biology we are more interested in gene expression profiles instead of magnitude of expression levels, let's scale our data so that the mean of the expression values is 0 and the expression values will be the standard deviations away from the mean. | ||
+ | |||
+ | < | ||
+ | # this function takes an vector to be calculated. | ||
+ | scaleData <- function(x) { | ||
+ | x = as.numeric(x) | ||
+ | meanx = mean(x) | ||
+ | sdx = sd(x) | ||
+ | y = (x-meanx)/ | ||
+ | return(y) | ||
+ | } | ||
+ | |||
+ | #we need to transpose it because apply function returns the genes as different columns. | ||
+ | scaledSigGenes = t(apply(sigGenes.normalized, | ||
+ | colnames(scaledSigGenes)=colnames(sigGenes.normalized) | ||
+ | |||
+ | #now to run k-means | ||
+ | SigGenes.kmeans.2 = kmeans(scaledSigGenes, | ||
+ | |||
+ | # a measure of how well the clustering has performed | ||
+ | # it is the sum of squares between members of the outside group and sum of squares total | ||
+ | # higher the better. | ||
+ | SigGenes.kmeans.2$betweenss/ | ||
+ | |||
+ | #to get the genes in the different clusters | ||
+ | SigGenes.kmeans.2.group1 = names(which(SigGenes.kmeans.2$cluster==1)) | ||
+ | SigGenes.kmeans.2.group2 = names(which(SigGenes.kmeans.2$cluster==2)) | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ====== | ||
< | < | ||
Line 61: | Line 107: | ||
These functions will make it easy for us to specify how we want the clustering to be performed in the heatmap function | These functions will make it easy for us to specify how we want the clustering to be performed in the heatmap function | ||
- | </code> | + | < |
hclust2 <- function(x, method=" | hclust2 <- function(x, method=" | ||
hclust(x, method=method, | hclust(x, method=method, | ||
Line 71: | Line 117: | ||
</ | </ | ||
- | Create heatmap. We can save it to a pdf file | + | Create heatmap. We can save it to a pdf file. Note that sigGenes.normalized is just a matrix. Here we can provide any matrix of values, for example hclust.k2.cluster2.normalized which is the expression values of genes in cluster 2 (see above) |
< | < | ||
Line 91: | Line 137: | ||
dev.off() | dev.off() | ||
</ | </ | ||
- |
mkatari-bioinformatics-august-2013-clustering.txt · Last modified: 2015/06/17 13:26 by mkatari