FindClusters选择多少resolution合适?

2021-10-23  本文已影响0人  生信云笔记

日常瞎掰

  昨天看到一个关于女孩找对象方面的笑话,大概内容是这样的:
一个女孩天天为应该找一个什么样的男朋友而纠结,于是这个女孩便向大师寻求帮助。
  “大师,我应该找一个什么样的男朋友”,女孩说。
  “我给你六点建议”,大师看了一眼女孩,心中若有所思地沉默了片刻,开口说到。
  女孩渴望地点了点头。
  然后大师便娓娓道来。
  第一,“找一个工作稳定的男朋友!”
  第二,“找一个能让你开心的男朋友!”
  第三,“找一个温柔的男朋友!”
  第四,“找一个家庭关系不那么复杂的男朋友!”
  第五,“找一个会做家务的男朋友!”
  说到这里,大师停顿了一下,强调到,“切记,最后一点最为重要!
  女孩迫切地点了点头。
  “千万不要让那五个男朋友见面!” 接着,大师语重心长地说道。

  本来都没有动力写帖子了,看完这个笑话后,本来躺平的我瞬间爬起来写了这个帖子(总算来拉回到下面要说的内容上了 ô‿ô)。好了,下面我们切换到下一话题,说说我们今天的正题。

  我们都知道FindClusters函数在做分群的时候,需要指定\color{#0000CD}{resolution}这个参数,这个参数越大,分的群也就越多。那么,分多少个群合适呢?用哪一个resolution合适呢?因为数据集的不同,所以这个是没有标准答案的。虽然没有标准的答案,但我们可以尽量根据自己的数据集找到合理的分群。最简单粗暴的莫过于直接用tSNE的图来看,当分辨率提高时,细胞群随着增多,当发现有些群分散到多个地方时,说明resolution可能有点高了。
  对于这个问题,高手们早就想到了,开发了可以用来观察分群结果的包——clustree。该包可以把不同resolution下的分类结果放在一起展示,让我们可以清晰的看到当分辨率提高时新的细胞群是由低分辨率状态下哪些细胞组合而成。这样我们可以参考一下用哪个resolution更合适。同时,最为方便的是这个包可以非常方便的基于Seurat包的object对象来操作。下面我们就来看看这个包吧!

示例展示

  这里用一个Seurat对象做为演示,设置resolution从0.5到1.2间隔为0.1,共8个分辨率,仅是为了做一个展示,代码不是很完整:

>library(Seurat)
>library(clustree)
>obj <- FindClusters(obj, resolution = seq(0.5,1.2,by=0.1))
>clustree(obj)

结果如下图:

  从上面的代码可以看到,clustree包对Seuat对象非常友好,可以直接用Seurat对象展示不同resolution的分群结果,同时可以清晰的看到不同resolution下细胞群之间的关系。图中一行表示一个resolution下所有的细胞,整体来看随着resolution增大细胞群数也随着增加。那么,选哪个resolution合适呢?从这张图可以看到resolution为0.5时(第一行),共有12个细胞群,resolution为0.6时(第二行),共有15个细胞群,也可以清楚的看到resolution为0.6,多出来的细胞群主要是resolution为0.5时0、2、10这三个群一分为二的结果。大家应该也看到了,resolution为0.7时(第三行)细胞群数也为15,从0.6到0.7群数还是比较稳定的,但是到resolution为0.8时,群数又开始增加了,好像0.7是一个拐点,这个是不是可以做为一个不错的选择呢?当然了,前面也说过分群本来就没有标准答案,找一个认为合理的就行。这个就好像跟“人丑就要多读书”一样,到底该读哪一本书或者哪一些书也没法说清楚。

结束语

  好吧,废话天天有,好像今天特别多,为啥呢?因为内容不够,废话来凑啊。为了保持良好的习惯,和一致的风格,这个第三段必须得有!就像小学生作文一样,最后再来个总结:分群没有标准答案,合理即可

上一篇下一篇

猜你喜欢

热点阅读