表达分析哪家强?层次聚类、k-means、mfuzz、WGCNA?
表达分析是转录组数据分析中占比很大的一部分内容,可以说是转录组文章的半壁江山了。什么层次聚类、k-mean聚类、mfuzz聚类、WGCNA,什么热图、折线图、网络图,看起来花团锦簇。今天,我们就来点评一下这些表达分析方法的原理和应用场景。
ParI:层次聚类
层次聚类(hierarchical clustering),是一种很直观的聚类算法。通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最底层(叶片),顶层是一个根节点。层次聚类可分为凝聚的(agglomerative)和分裂的(divisive)两种。我们通常用的比较多的是第一种。
凝聚的:自下而上。每个样本归为一类(叶子),计算每个类之间的距离,将距离最近的两个类合并为新的大类,重新计算合并后的类和其他类之间的距离,再合并距离最近的类,迭代此过程直至所有样本都划分到某一类。
分裂的:与凝聚的相反,先将所有的对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象在单独的一个簇中。
应用~~
表达层次聚类,就是利用不同样品中不同基因的表达量这个数据集,按照层次聚类的算法,计算基因之间的关系(距离),表达模式相似的基因聚得越近。一般用热图(heat map)呈现结果。
应用:当基因集较大时,层次聚类可将不同样品的成千上万个基因的表达量数据分为几个或者几十个cluster,同时可对样品也进行聚类。一般用于所有表达基因或所有差异表达基因。层次聚类也可对特定小目标群的基因集或基因家族进行表达模式分析,可直观查看基因表达趋势分布。
ParII:K-means聚类
K-means聚类,K是设定的聚类数目。将数据点划分为k个cluster,找到每个cluster的中心,依据每个数据点与cluster中心的距离进行归类。核心就是迭代找到每个cluster的中心,要求每个数据点与它们所属cluster的中心尽量接近。优点是快,效率高。缺点是需要事先给出聚类数目K,初始很难判断给出合适的K;其得到的是局域最优,跟初始给定中心值有关,需要尝试多个初始值。可通过对数据计算轮廓系数来选择最优K值。
应用~~
适用于数据量大或对聚类结果要求不高的情况,或者在数据分析初期用来测试看看数据集合的大致分类情况。用K-means聚类对所有差异表达基因进行表达趋势分类,看看总体上差异基因可分为几大类,通常用热图和折线图来呈现分类结果和每个cluster的表达趋势。
ParIII:Mfuzz聚类
Mfuzz,称为模糊聚类,采用fuzzy c-means algorithm聚类算法,又称为软聚类算法。K-means聚类就是硬聚类算法。Mfuzz在定义基因和cluster之间的关系时,不是硬聚类那样只能把一个基因划分到一个cluster中,它计算每个基因与不同cluster的关系(memebership score),那么可以根据这个值来看基因是否属于某个cluster。
应用~~
用Mfuzz进行表达数据聚类分析时,它更加适合于不明显区分开的数据集合,比如时间序列这种逐渐变化,且会频繁出现聚类重叠的表达数据。通常用折线图来呈现不同cluster的表达趋势。
ParIV:WGCNA
最后压轴的就是WGCNA共表达分析!
WGCNA是(加权基因共表达网络分析)是分析基因共表达的工具之一。它的核心计算步骤主要包括:构建基因关系网络和构建基因模块。在计算基因间相关关系时,也采用了软阈值的方法,即通过加权函数(领接函数)将相关系数变换成邻接矩阵。这样基因表达关系网络就符合无尺度网络原则,即该网络中少数基因与其他基因的连线显著多于一般的基因,这样的网络也更具有生物学意义。在此基础之上,构建基因关系网络的时候,不仅考虑了直接关系,还考虑了基因间的间接关系,这也是非常重要的具有生物学意义的步骤。
应用~~
适用于复杂的多样本转录组数据,比如不同器官、组织类型和不同阶段的发育调控、生物和非生物胁迫的不同时间点的转录组数据。一般对所有差异基因(几千上万个基因)进行WGCNA,鉴定到表达模式类似的基因模块(十几或者几十个),基于模块和样品或表型关联分析筛选关键几个模块,再分析模块内部基因关系筛选关键基因(几个)。