UMAP分析及可视化
生活随笔
收集整理的這篇文章主要介紹了
UMAP分析及可视化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
什么是UMAP?和PCA一樣,一種降維的算法,如果不是統(tǒng)計學(xué)或者數(shù)據(jù)專業(yè)的人,我建議不要去看它的原理,知道如何用就足夠了。
也許聽到UMAP最多的是對單細(xì)胞數(shù)據(jù)的分析降維,類似于下圖:
然而其他數(shù)據(jù),像大樣本的轉(zhuǎn)錄組在PCA降維效果不好的時候,可以使用UMAP,畢竟現(xiàn)在轉(zhuǎn)錄非常便宜,隨便測幾十個樣品和玩似的。
首先構(gòu)建一個數(shù)據(jù)集,行為樣本,列為基因,并對樣本的特征進(jìn)行分組。
讀入數(shù)據(jù):?
setwd("E:/生物信息學(xué)")options(stringsAsFactors= F)####A <- read.csv("UMAP.csv",header = T,row.names = 1)安裝R包:
install.packages("umap")library(umap)UMAP分析:
A_umap <- A[,colnames(A)!= c('label2', 'label3','label4')]#新構(gòu)建一個表,不含有l(wèi)abelA_umap <- data.frame(t(apply(A_umap,1, function(v){(v-mean(v,na.rm=T))/sd(v,na.rm=T)})),?????????????????????stringsAsFactors=F)#標(biāo)準(zhǔn)化umap <- umap(A_umap,method='naive',n_neighbors = 10)????head(umap$layout)????##################### [,1] [,2]r1 16.16427 -11.32371r2 16.26652 -11.21803r3 16.28917 -11.45600r4 16.28618 -11.56981r5 16.15085 -12.07527r6 16.65784 -12.28240?????????????提取分析結(jié)果用于作圖:
B <- data.frame(umap$layout)B$label <- A$label2 colnames(B) <- c('UMAP_1','UMAP_2','label')作圖是由ggplot實現(xiàn)的,應(yīng)該很熟悉了:???????
ggplot(B, aes(x=UMAP_1, y=UMAP_2, colour=label)) + geom_point(size=1)+ xlab("UMAP_1")+ ylab("UMAP_2")+ theme( panel.grid.major = element_blank(), panel.grid.minor = element_blank(), legend.title=element_blank(), panel.border = element_blank(), axis.line.x = element_line(color="black", size = 0.5), axis.line.y = element_line(color="black", size = 0.5), panel.background = element_blank())降維效果很好,當(dāng)然圖的顏色也是可以修改的,和之前講的ggplot的修飾一樣。除了對樣本的分組,還可以展現(xiàn)其他的分組,畢竟數(shù)據(jù)中我們設(shè)置了3
個label,我們看一下以性別的分組作圖是什么樣的?只需要改動下label即可。
??????
C <- data.frame(umap$layout)C$label <- A$label3 colnames(C) <- c('UMAP_1','UMAP_2','label') ggplot(C, aes(x=UMAP_1, y=UMAP_2, colour=label)) + geom_point(size=1)+ xlab("UMAP_1")+ ylab("UMAP_2")+ theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), legend.title=element_blank(), panel.border = element_blank(), axis.line.x = element_line(color="black", size = 0.5), axis.line.y = element_line(color="black", size = 0.5), panel.background = element_blank())效果不錯!
樣本多可以試試這個方法,不局限于轉(zhuǎn)錄組,其他的任何數(shù)據(jù)都可以!
想要示例數(shù)據(jù)的可以打賞截圖聯(lián)系作者獲取,記得留下郵箱!
?
總結(jié)
以上是生活随笔為你收集整理的UMAP分析及可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu5745La Vie en ros
- 下一篇: mysql的时区_MySQL时区支持