计算机专业掉入生信坑真是心塞……
WGCNA是个R 工具包, 用来分析gene数据的
这是2008年发表在BMC BIO上的一篇文章,由于方法简单,便于理解,而且效果不错,一直深得生物学家们的喜爱。
这里只谈论大概思想原理:
首先,我们的数据一般是个样本(m个)*gene(n个)的矩阵。一般来说,n>>m
WGCNA,的主要思想是(这里讨论unsigned):
1) 计算基因之间的相关性(e.g 皮尔森相关系数),将其绝对值作为一个相似度矩阵S;
2) 认为gene网络是个scale free network,就是只有少量gene特别重要,和很多gene都有关,大多数不重要;
2) 这样,就利用公式 a i j = S i j β a_{ij}=S _{ij}^\beta aij=Sijβ , 来扩大这种相似度的贫富差距,使重要的更重要(权重更大),不重要连接的权重更小。(β是通过soft threshold找到的)
3)计算基因节点之间的TOM值来得到距离矩阵,为聚类准备。
计算TOM值的原因是,作者认为,两个节点之间如果有越多的间接关系(节点a和b有越多的一阶公共节点),则这两个节点之间的相似度应该更高;
TOM值的计算方法如下:
w
i
j
=
l
i
j
+
a
i
j
m
i
n
(
k
i
,
k
j
)
+
1
−
a
i
j
w_{ij}=\frac{l_{ij}+a_{ij}}{min(k_i,k_j)+1-a_{ij}}
wij=min(ki,kj)+1−aijlij+aij
其中,
l
i
j
=
∑
u
a
i
u
a
u
j
l_{ij}=\sum\nolimits_{u}a_{iu}a_{uj}
lij=∑uaiuauj ,
u
u
u就是
i
i
i和
j
j
j的所有一阶公共节点(不包括
j
j
j)
k i k_i ki就是 i i i的所有一阶邻居(如果i和j之间有边,则也包括j)
可以看出, 0 ≤ ω i j ≤ 1 0\leq ω_{ij}\leq 1 0≤ωij≤1
所以距离矩阵 d = 1 − w d=1-w d=1−w
4)简单地在这个距离矩阵上,用层次聚类,得到若干gene clusters,这里将其定义为gene Modules
5)在每个module上用pca计算其第一主成分,用这一个向量代替整个cluster
6)然后就在这些个Modules,想做什么做什么了,比如看看module和其他features or labels的关系啦,在每个module里找重要的gene啦什么的
小结:
gene数据一般都是少样本的高维数据,所以要分析,必须先降维;
如果不在乎数据的可解释性(一般生物学家都在乎),那就feature extraction,可以选择无监督的(pca之类的),或者有监督的(lda之类的),也可以考虑非线性的;
如果在乎的话,那就feature selection,把不重要的feature(genes)都去掉,同样可以选择supervised or unsupervised;
WGCNA, 它其实也是一种降维手段,但是它没有删除任何gene,只是通过聚类将其分组了,然后用pca找出第一主成分,来代表这个类,这样就降维了;
感觉这个方法之所以受欢迎,是因为:
1)scale free network的作用,可能gene数据真的很符合无标度网络的结构;
2)数据的可解释性很强,既用pca降了维, 又没有丢失任何一个gene;