Single cell RNA-seq data analysis with R视频学习笔记(七)

这一讲是介绍单细胞聚类的相关知识点。里面不仅是介绍方法,还有一些相关的原理,每一种cluster是怎么工作的(不是数学公式,而是用图形说明原理),有的地方主讲人讲的太偏于数学原理,我就直接跳过去了。所以如果想了解细节的童鞋可以看看。

视频地址:https://www.youtube.com/watch?v=Qa6k7RIwltg&list=PLjiXAZO27elC_xnk7gVNM85I2IQl5BEJN&index=7

练习地址:https://github.com/NBISweden/excelerate-scRNAseq/blob/master/session-clustering/Clustering.md

之前讲了质量控制、降维,现在这一步就是鉴定你的data里的细胞群。上图就是一个简单的流程图。拿到scRNA-seq 的matrix,这个matrix里含有细胞和features(这里就是基因)。然后你把细胞聚类(clustering),然后你再试着将这些细胞群注释,标注细胞群的名称。

上图就是从QC开始的一个简单的分析流程,图里打√的部分都是之前几讲讲过的,今天要讲的是clustering。那么在讲聚类前,还涉及一步是feature selection。这部分主讲人会在下面讲到。

所以,为什么我们需要做feature selection?这里有一个名词叫curse of dimensionality(有道翻译出来是“维数灾难”,孤陋寡闻的我没听说过这个词。。)。主讲人举了个例子:上图的两张PCA图,左边那个你只用500个基因来分析,你可以得到非常好的clustering;而右边你用2万个基因来分析,你会发现细胞并没有分的很开,比如黑色和灰色的细胞群就没有像左边那样分的很开。所以curse of dimensionality的意思就是:你想看越多的features,那么背景noise就会越大。所以去除一些基因的目的就是提高real 的信号,提高信噪比。另外一个目的就是降低计算的复杂程度。

上图是一个feature selection的方法,你的目的是选出那些在你的dataset里不同细胞之间表达差异最大的那些基因。但是问题是,当你看variance和平均表达量之间的关系,你会发现他们是相互依赖的。所以你第一件事可以做的就是:画变异系数图(变异系数:coefficient of variation)。棕色的点是所有的基因,蓝色的点是spike-in,根据这些你可以fit一个函数在spike-in上(基因和spike-in之间的variation是技术层面的variation)。粉色的点显示的是基因的true variation。但是如果你用的是droplet-base的方法进行测序,是不适用spike-in的,如果是这种情况,你就要根据你所有的基因来估计技术noise。比如下面这种方法:

上图是基于dropout的feature selection的方法。原理我就不听了,听也听不懂。。主要看右下角,蓝色线是根据所有基因评估出来的,类似于上一个方法图里的红色虚线。这里蓝色线右面的黄色点,就是你data里真正的variation.

接下来选主要成分。上图是Elbow plot图,也叫碎石图。这图是对主要成分进行排序。那么排在第一的成分就是你的data里最大的variation。然后你可以选择多少个PC进行下游分析,那么虚线右边的PC就可以忽略不看了。

在这一讲里,主讲人将主要介绍3种聚类的方法。

先看上图,先看看什么是好的聚类,什么是不好的聚类。那你觉得哪一个聚类结果更好呢?很显然,左图的聚类明显比右边的好。为什么呢?因为左图里,同一个圈里的点之间的距离,要明显小于和另一个圈里的距离。而右图并不是。

首先是第一种,Hierarchical clustering,分层聚类。举个简单的例子,8个点分布在二维里。现在我们想把这些点聚类。

首先我们要做的是,把最接近的两个细胞圈在一起。在右边系统树图里,4和2之间连接的高度,代表两个点的距离。

第二步,把离的第二近的两个细胞圈在一起。然后再在右边系统树图里标出5和8的height。

第三步,把4和2的圈与3画在一起,因为这个距离是第三近的。同样的,在右边系统树图里把4,2和3的height标出来。接着用同样的方法,一步一步把系统树画完整:

直到上图,把两个离的较远的群划分在一起,这样cluster就结束了。

如果你想要两个分群,那么可以把系统树从上面切开,这样就得到了两个独立的群。

那么怎么计算两个cluster之间的距离呢?主讲人主要讲了其中的两种:第一种方法是single linkage,这种方法是计算两个cluster里每一个点之间的距离。然后得到最短的和最长的距离,取平均值。

第二种方法是complete linkage。这种方法是计算两个cluster里距离最远的两个点的距离,然后取最小的那个距离。

由于两种方法的不同,可导致你最后的聚类结果的不同。如果你用single linkage聚类,你最终会得到比较“长条”的聚类结果;而complete linkage方法聚类,你会得到比较大的聚类结果。

上面讲了分层聚类方法,现在来讲k-means聚类方法。这种聚类方法是先从data里随机选取两个随机点,这里不是说所有的k-means方法都是先取两个随机点,如果你只想把细胞聚类为2类,那么就随机取2个开始。你想把细胞聚几类,就要随机取几个开始。

然后把其他细胞根据距离每个随机点(prototype)的远近,分配给不同的随机点,形成一个cluster。

之后根据你分的群里每个点的平均距离,更新你的prototype(随机点),所以上图里可以看到,随机点的位置改变了。

由于随机点的位置改变,这时就要忽略你之前的分派了。现在所有的点根据新的随机点,再重新被分派到离自己最近的随机点,形成一个新的cluster。

然后再根据两个cluster里的点的平均距离来更新随机点的位置,上图看到,随机点的位置又变了。

根据这个再次更新的随机点,每个点又会被重新分派给新的cluster。这个过程会被一直重复,直到没有点的分配改变,那么这个循环就会停止。最终的cluster会像下图一样:

但是,k-means聚类方法仍然存在一些缺陷。第一,就是k-means做出来的聚类图,基本上都是圆圈形状的聚类。但是你的dataset不会刚好都是圆圈的那种聚类,比如上图,如果你用k-means聚类,就会得到很奇怪的聚类结果。所以如果你确定你的聚类会得到圆圈形状的结果,用k-means就没问题。

第三种要讲的聚类方法是基于graph的聚类。graph,就是network。它包括节点和边界。

在单细胞的分析里,人们讨论的graph主要分两类。KNN和SNN。这两种很相似,但是还是有不同点。(这里原理实在是听不懂,是和数学模型有关的)像我们经常使用的Seurat包就是基于 graph的方法进行聚类的(下面省略几张PPT是数学模型的,太过于复杂,感兴趣的可以去看视频)

请记住,聚类是非常主观的一个过程。这取决于你使用哪种聚类方法,不同聚类方法给出的结果可能完全不一样。重要的是聚类以后你的实验证明。

还有一个办法可以验证你的clustering是否合适。你可以从你的dataset里得到的cluster中抽出一部分细胞,每个cluster都抽出一部分细胞,组成一个小的dataset,然后把这个小的dataset进行聚类,如果你的小的dataset聚类结果和你的总的dataset聚类结果非常相似,那么你的clustering是比较靠谱的。你可以利用这种方法多重复几次,如果你每一次的聚类结果图形都是一样的,那么这个结果就比较可靠。

请记得:经常要检查你的QC情况。是否有低质量的细胞、是否有线粒体基因、是否有批次效应!因为clustering对于你输入的dataset是非常敏感的,任何干扰都有可能导致结果的不同。

注释你的clusters。这一步是一门“艺术”,会花你很多时间。因为你要找到每一个cluster的差异表达基因或者是marker。所以关于这一步,实在是没有一个统一的标准。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容