[Dimensionality Reduction] code for performing PCA, SVD, clustering, etc...
# Calculate top 50 expression PCs
# See: http://genomicsclass.github.io/book/pages/mds.html
s <- svd(datExpr-rowMeans(datExpr))
max_pc = 50
pc = matrix(NA, nrow=ncol(datExpr),ncol=max_pc)
for(i in 1:max_pc) pc[,i] = s$d[i]*s$v[,i]
# Scree Plot
plot(s$d[1:max_pc]^2/sum(s$d^2))