美文网首页
转录组不求人系列(四):UMAP分析及可视化

转录组不求人系列(四):UMAP分析及可视化

作者: KS科研分享与服务 | 来源:发表于2021-12-23 08:48 被阅读0次

    什么是UMAP?和PCA一样,一种降维的算法,如果不是统计学或者数据专业的人,我建议不要去看它的原理,知道如何用就足够了。

    也许听到UMAP最多的是对单细胞数据的分析降维,类似于下图:

    图片

    然而其他数据,像大样本的转录组在PCA降维效果不好的时候,可以使用UMAP,毕竟现在转录非常便宜,随便测几十个样品和玩似的。

    首先构建一个数据集,行为样本,列为基因,并对样本的特征进行分组。

    图片

    读入数据:

    
    setwd("E:/生物信息学")
    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')]#新构建一个表,不含有label
    A_umap <- data.frame(t(apply(A_umap,1,
                                 function(v){(v-mean(v,na.rm=T))/sd(v,na.rm=T)})),
                         stringsAsFactors=F)#标准化
    umap <- umap(A_umap,method='naive',n_neighbors = 10)    
    head(umap$layout)    
    #####################
           [,1]      [,2]
    r1 16.16427 -11.32371
    r2 16.26652 -11.21803
    r3 16.28917 -11.45600
    r4 16.28618 -11.56981
    r5 16.15085 -12.07527
    r6 16.65784 -12.28240        
    

    提取分析结果用于作图:

    
    B <- data.frame(umap$layout)
    B$label <- A$label2 
    colnames(B) <- c('UMAP_1','UMAP_2','label')
    

    作图是由ggplot实现的,应该很熟悉了:

    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())
    
    图片

    降维效果很好,当然图的颜色也是可以修改的,和之前讲的ggplot的修饰一样。除了对样本的分组,还可以展现其他的分组,毕竟数据中我们设置了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())
    
    图片

    效果不错!

    样本多可以试试这个方法,不局限于转录组,其他的任何数据都可以!

    下节预告---TSNE降维分析

    想要示例数据的可以打赏截图联系作者获取,记得留下邮箱!

    相关文章

      网友评论

          本文标题:转录组不求人系列(四):UMAP分析及可视化

          本文链接:https://www.haomeiwen.com/subject/mnqhqrtx.html