PhenoGraph聚类算法

背景&思想

PhenoGraph算法的输入是一个N X D的矩阵, 把这个矩阵中的行划分到类别中,使得类别间的差异大于类别内的差异。

我们的假设是,这些类别代表具有生物学意义表型的细胞群。我们的前提假设是细胞群聚集在D维空间的密集区域,由紧密Marker表达组合定义。因此,我们的目标是在D维空间中辨别这些密集的细胞区域。然而,我们不知道数据中类别的数量,大小或高维形状(例如,椭球,凸)。 单细胞域(domain)特别具有挑战性,因为不同类别之间,类别大小可能会有数量级上的差异(例如,造血干细胞与T细胞),并且我们希望识别罕见子集(类别)而不是将它们作为离群点而丢弃。此外,虽然大多数聚类算法都假设类别内样本分布近似椭球形,但我们已经证明许多细胞亚类具有复杂的形状并且不一定是凸形的(viSNE enables visualization of high dimensional single-cell data and reveals phenotypic heterogeneity of leukemia. Nat Biotechnol. 2013)。 用于密度检测的参数方法需要关于细胞群体(例如,椭球,凸)的形状的强依赖性假设,而单细胞数据中通常不符合这样的假设。

为了克服这些障碍,我们构建了一个图形结构来表示单细胞数据中细胞状态的高维几何结构。每个细胞作为节点并且通过边连接到其邻居细胞(与其最相似的细胞),该边的权重由细胞之间的相似性设置。细胞在高维空间中的密集区域将在该图中表现为高度互连的模块,通过该模块内具有高密度的边的特征来识别。一旦构建完毕,该图可以被划分成这些紧密互连的模块的子集,称为群体(communities),代表不同的表型亚群(类别)。这些图中的群体(communities)的检测(Community structure in social and biological networks. Proc. Natl. Acad. Sci. 2002)为识别亚群提供了一种高效方法。与混合模型等参数化方法不同,该方法不假设子群(某一类别)的大小、分布或数量。该方法成功的关键是构造一个图形结构,这个图形结构真实的表示D维空间中存在的几何结构。PhenoGraph分两步建立单细胞数据的图结构。

步骤

第一步,使用欧式距离为每个细胞识别k个最近邻居,其中k是该方法的唯一参数;如果k值太大,较小的群体(communities)会受到其他节点的影响,难以被识别出来。而如果,k值太小会导致我们想要找的细胞群体内紧密度较差。

因此,在第二步中,我们改进了第一步中定义的k邻居。对所有细胞的k近邻搜索的结果是一组集合:N组k邻居。我们对这些集合进行操作以建立一个加权图。在这个图中,每对节点(细胞)之间的权重是基于它们共享的邻居的数量。

节点i和j之间的权重由以下公式给出:


其中v(i)是节点i的k邻居;v(j)是节点j的k邻居。

以这种方式由真实数据构造的图具有明显的模块化结构。

群体(communities)检测是指将节点划分成不同的群体(communities),从而捕获这个模块化结构。对于一组群体(communities)的确定C={c_(1,) c_(2,),…,c_k},模块系数Q的定义由下面公式确定:


其中Wij是节点i,j的边权重,si是节点i与其他所有节点的边权重加和,sj同上,ci是节点i所在的群体(communities),如果u=v,Kronecker delta 函数δ(u,v)=1;否则为0,m=1/2 ∑▒W_ij 是一个标准化常数。

模块系数Q介于-1到1之间,对于任意一个确定了群体(communities)图结构都可以计算这么一个指标。所以该指标可以作为客观衡量把图结构区分成子集的质量。这样,该问题就转化成一个组合优化问题,即NP完全问题。

接下来用Louvain方法(Fast unfolding of communities in large networks. J. Stat. Mech. 2008)来解决上述问题。Louvain方法具体步骤是,在第一次迭代时,每一个节点(细胞)被单独作为一类(一个群体),在每一次迭代时,若两个节点的合并能使得模块系数Q有最大的增长,那么将这两个节点合并成一类。直到模块系数Q不再增加为止。

REF: Data-Driven Phenotypic Dissection of AML Reveals Progenitor-like Cells that Correlate with Prognosis. 2015 Cell.

群体(communities)检测过程中的Resolution的限制

检测群体(communities)结构对于发现复杂网络中结构与功能之间的联系以及生物学和社会学等许多学科的实际应用至关重要。现在广泛使用的一种流行方法依赖于对模块的数量的优化,这是将网络划分为群体(communities)的质量指标。我们发现,即使在模块定义明确的情况下,模块化优化也可能无法识别小于一定规模的模块,该模块的规模取决于网络的总大小和模块的互连程度。Newman和Girvan(Finding and evaluating community structure in networks. Physical review E, 2004.)在群体(communities)检测方面取得了决定性的进展,他们引入了一种定量方法来衡量将网络划分为群体(communities)的质量,即模块化。该度量实质上将给定模块内的连接数与相同大小和相同度数序列的随机图的期望值进行比较。如果选择模块化作为相关质量函数,则群体(communities)检测的问题就等同于模块化优化。后者非常重要,因为将网络划分为群体(communities)的可能性至少随着网络的大小呈指数增长,即使对于较小的图,穷举式优化在计算上也不可行。我们表明模块化优化确实不能解决大数量的模块。因此,有必要对通过模块化优化获得的模块进行检查。我们表明,模块化存在一个固有规模,该规模取决于网络中边的总数。小于此规模的模块可能无法解析,即使在极端情况下,它们是通过单桥连接的完整图形。模块化分辨率的极限实际上取决于群体(communities)对之间的互连程度,并且可以达到整个网络大小的数量级。因此,事先无法确定通过模块化优化检测到的模块(大还是小)确实是单个模块还是多个较小模块的集合。然而,最大模块性因网络的不同而不同,并且取决于网络的连接数。我们证明了任何网络的模块性值的上限都是1,并且我们看到模块性是与网络尺度相关的。

REF: Resolution limit in community detection. 2007 PNAS.

Seurat包中的PhenoGraph方法实现

函数FindClusters

FindClusters(object, modularity.fxn = 1, initial.membership = NULL, weights = NULL, node.sizes = NULL,  resolution = 0.8, algorithm = 1, n.start = 10, n.iter = 10, random.seed = 0, group.singletons = TRUE, temp.file.location = NULL, edge.file.name = NULL, verbose = TRUE, ...)

参数

#object: Seurat Object

#modularity.fxn: 计算模块系数函数,1为标准函数;2为备选函数,这里没有具体说明是什么函数,我认为1是上面提到的Kronecker delta函数。

# resolution: 分辨率参数,如果大于1,则会得到较多数目的群体(communities);如果小于1,则会得到较少数目的群体(communities)。

#algorithm: 模块系数优化算法,1使用原始Louvain算法;2使用Louvain algorithm with multilevel refinement;3使用SLM算法;4使用Leiden算法(注:4需要额外安装插件)

#n.start: 随机开始的数量

#n.iter: 最大迭代次数

#random.seed: 随机数种子

#graph.name: 图的名字

#group.singletons: (TRUE/FALSE)是否把比较特异的细胞分配到最近的类别中,若FALSE,则可能会出现某个类只有一个细胞的情况

#verbose: 是否在控制台输出结果

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