让Single cell UMAP注释支棱起来

最近在画UMAP的时候发现有的时候细胞亚群的注释与点重合颜色上不是很搭配,同事提出让注释“支棱”起来,首先想到的是ggforce中的geom_mark_ellipse,实践中遇到一些问题(比如,ggforce会受outlier影响,看起来比较乱),于是有了这一篇Single cell的记录。

ggforee
受outlier影响

尝试用ggforce注释

library(dplyr)
library(Seurat)
library(SeuratData)
library(patchwork)
library(ggforce)
##InstallData("pbmc3k")
data("pbmc3k")
points <- 
  data.frame(pbmc3k.final@reductions$umap@cell.embeddings, cluster=Idents(pbmc3k.final))
DimPlot(pbmc3k.final) + 
  geom_mark_ellipse(data=points, aes(x=UMAP_1, y=UMAP_2, label=cluster, col=cluster),
                    inherit.aes = F) + 
  NoLegend()

版本一

非常难看不是吗?因为有一些cluster(Naive CD4 T)存在异常值,ggforce中的函数会包含所有的点。所以应该将异常值去掉,这个方法有很多,我使用的是之前用到的置信椭圆的方法。

修改

思路如下:

  • 对每一个cluster计算一个尽量小的置信椭圆
  • 用置信椭圆上的点来画geom_mark_ellipse

points <- 
  data.frame(pbmc3k.final@reductions$umap@cell.embeddings, cluster=Idents(pbmc3k.final))
## adapted from https://github.com/fawda123/ggord/blob/master/R/ggord.R
theta <- c(seq(-pi, pi, length = 50), seq(pi, -pi, length = 50))
circle <- cbind(cos(theta), sin(theta))
library(plyr)
aux <- function(x, one, two, prob=0.8) {
    if(nrow(x) <= 2) {
      return(NULL)
    }
    sigma <- var(cbind(x[,one], x[,two]))
    mu <- c(mean(x[,one]), mean(x[,two]))
    ed <- sqrt(qchisq(prob, df = 2))
    data.frame(sweep(circle %*% chol(sigma) * ed, 2, mu, FUN = '+'))
}
ell <- plyr::ddply(points, "cluster", aux, one="UMAP_1", two="UMAP_2")
DimPlot(pbmc3k.final) + 
  geom_mark_ellipse(data=ell, aes(x=X1, y=X2, label=cluster, col=cluster),
                    inherit.aes = F) + 
  NoLegend()

版本二

微调

下面就是进行一些微调,将椭圆缩小使注释指在亚群上更好的位置

## 调整prob参数
ell <- plyr::ddply(points, "cluster", aux, one="UMAP_1", two="UMAP_2", prob=0.1)
DimPlot(pbmc3k.final) + 
  geom_mark_ellipse(data=ell, aes(x=X1, y=X2, label=cluster, col=cluster),
                    inherit.aes = F) + 
  NoLegend()

把椭圆隐藏

DimPlot(pbmc3k.final) + 
  geom_mark_ellipse(data=ell, aes(x=X1, y=X2, label=cluster, group=cluster),
                    color=NA,
                    inherit.aes = F) + 
  NoLegend()

(0)

相关推荐

  • 单细胞工具箱|Seurat官网标准流程

    学习单细胞转录组肯定先来一遍Seurat官网的标准流程. 数据来源于Peripheral Blood Mononuclear Cells (PBMC),共2700个单细胞, Illumina Next ...

  • 单细胞Marker基因可示化包Nebulosa

    与传统的转录组测序相比,单细胞测序技术噪声很大,使得单细胞转录组数据包含大量的dropout事件(导致基因表达量为0或接近0),即使是一些标记(Marker)基因也有可能表达量很低.当在使用其对聚类的 ...

  • 大姨妈似的讨厌星象走了,12星座都支棱起来!

    嗯呢,木星明天就过境了! 时隔12年啊,它终于又一次来到了双鱼座,激动不?兴奋不?想支棱起来不?但碎叨的判答姐还是想提醒一下大家,在星体的运转中,永远是正面负面星象交替,没有谁一直好运傍身,也不可能一 ...

  • 王一博怼脸特写,这个颜值真的被高估了吧,古装能支棱起来吗?

    本文由明星粉丝团作者吃糖原创,未经允许不得转载 这一段时间由王一博作为主演拍摄的电视剧<风气洛阳>在娱乐圈里面的热度真的是越来越高了,这一部电视剧在前一段时间正式杀青的时候就有很多的网友关 ...

  • 反悬浮反狗血反歧视,国产剧终于支棱了

    最近打开微博,网友们都不对劲--熬夜竞赛. 有人熬到凌晨两点. 有人肝到凌晨三点. 还有人已经出现意识不清醒,开始跪求:哪里有花钱熬夜的通道! 什么让他们如此疯狂? 是下面这对CP太!好!嗑!了! 昨 ...

  • PG One开抖音,弹壳换红花会背景,都支棱起来了?

    嗨,这里是背挎包会下腰不吃辣椒的你大猫~~~ 风和日丽的一天,大猫在网上冲浪的时候,突然看到了这样一则消息:PG One开抖音账号了. ★ 开抖音的PG One 看到这"哈圈顶流" ...

  • 速战速决,帐篷支棱起来

    Aeri 筹资信息 产品名称Aeri 上线平台indiegogo 发起团队Aeri 发起地区美国 目标金额581,612HKD 筹集金额155,703HKD(至今,项目未结束) 完成进度373%(至今 ...

  • 支棱起爆炸头,挑起“月九”重担!

    ▲富士台月9电视剧<勿言推理>主演菅田将晖和原作中形象 演员菅田将晖(28岁)将在明年1月开播的富士台电视剧<勿言推理>(每周一晚9点)中担任主演,这是他首次担任"月 ...

  • 民宿沦为遗体暂存处?!被“清零”的民宿,还能“支棱”起来吗?

    前段时间,日本大阪市住吉区内发生了一件令人又震惊又唏嘘的事件. 回顾起来,整件事还得从疫情和民宿说起...... 3月12日,日本大阪府相关机构接到了民众的举报:住吉区一户民宿经营者在自己的一户建里暂 ...

  • 回归电视剧,景甜这回支棱起来了吗

    景甜作为影视圈里的一位传奇女演员,参演的作品几乎都是国际大制作,奈何却没有一部作品是正面评价.在和好莱坞合作的征途中,她要么完美妆容上战场,要么着威亚勇屠怪兽,在众多的特训之下,这回终于杀出一条&qu ...

  • 中年少女:支棱起来,别想退休,还有件大事等着你干

    以前,怕孩子长大,长得太大,说明自己老了. 现在,怕孙辈长大,他长大了,咱得老成啥样儿? 秀姐最近嘟嘟囔囔的机会少了,刷圈儿概率低了,因为她帮闺女带闺女去了. 秀姐当初嫁闺女时信誓旦旦:我不和亲家争带 ...