Cluster3.0 和 treeView的使用

最近用Cluster和Treeview对454测序结果进行了作图,效果不错,转载一下中文教程。

 

介绍:

ClusterTreeView是分析并可视化DNA芯片数据或是其它基因组数据集的软件程序,Cluster用多种不同的方式组织分析数据,TreeView则将这些组织好的数据可视化,这个软件的下一个版本会将这两个软件合成为一个应用程序。

这个说明书是使用这个软件的一个参考,而不是对软件中所用方法的全面分析。很多方法都是从标准的统计聚类中得到的,对于聚类分析的那些非常好的教科书,我们会在最后的参考书目中给列出,参考书目中还包括最新的生物科学的论文,尤其是那些所用的方法与我们的非常相似的论文。  

Cluster 

 

 

 

 

 

导入数据:

Cluster的第一步就是导入数据,当前版本的Cluster只接受以tab键为分隔符的数据格式,比如Excel,通过点File Format Help可以得到输入格式的说明。

 

依照惯例,在输入表格中,行代表基因,列代表样本或是不同的观察,下面的例子就是一个时间过程的输入文件:

 

第一列中的每一行(基因)一般都代表标识符(绿色的字符),第一行中每一列代表样本的标签(蓝色的字符),此时的标签表示时间进程,红色字符代表的是每一行基因的种类是什么,本文件的YORF代表酵母开放阅读框,这个地方可以是任意的字母或数字的值,在TreeView中,应用它可以将每一行的基因连接到外部的网站中。

 

剩下的数据就是每个基因在不同样本中的表达值,24列的“5.8”表示基因YAL001C2小时观察到的数据为5.8。空数据是允许的,就用空值表示(里面什么都没有),如,YAL005C2小时的数据就是空的。

 

我们很可能要对输入数据额外的添加一些信息,最大的Cluster的输入文件如下所示:

 

 

 

 

黄色的区域是可有可无的,默认情况下,TreeView用第一列的ID号作为每个基因的标签,NAME那一列是对每个基因的进一步描述性标签,从而与第一列的标签相区别,关于GWEIGHTGORDER这两列和EWEIGHTEORDER这两行的内容会晚一些再解释。

示例数据:可在http://rana.stanford.edu/software/demo.txt.这个网站中得到,这个数据时酵母基因表达谱数据,下载后并导入到Cluster中。

 

Cluster会呈现如下的导入信息:

 

 

 

 

调整过滤数据:可以通过Filter DataAdjust Data 这两项对数据进行调整和过滤。

 

调整数据:

 

 

 

Log Transform Data:将每个数值取对数代替原来的数值,即x=log2x)。

 

Normalize Genes and/or Arrays:将每一行每一列的所有数值都乘以一个标度因子S,使每一行每一列的数值的平方和为1.0(每行/列的S是不同的)

 

Mean Center Genes and/or Arrays:将每一行或列的所有值减去这一行或列的平均值,使这一行或列的平均值为0

 

Median Center Gene and/or Arrays: 将每一行或列的所有值减去这一行或列的中位数,使这一行或列的中位数为0

 

以上的每项调整不是连在一起的,每项的先后顺序是很重要的,在进行之前要仔细的考虑好。

 

操作的顺序为:

 

Log transform all values

Mean center rows

Median center rows

Normalize rows

 

  

在什么情况下,我们需要对数据进行调整呢?

 

Log transformation:许多DNA微阵列实验的结果是荧光比值,基本上都需要进行对数化处理。比如一个不同时间点的基因表达值,并将结果与时间点0的值相比较,假设在时间点1,这个基因表达没有改变,在时间点2,它表达上调两倍,在时间点3,它表达下调两倍(与时间点0相比)。则在这三个时间点上,最初的比值为:1,2,0.5。但在多数情况下,我们认为2倍上调和2倍下调的变化幅度应该是一样的,只不过是方向不同,一个上调,一个下调,但在我们的数据中,时间点12的变化为12-1),时间点13的变化为-0.50.5-1)。这样的话,上调两倍的变化幅度就是下调两倍变化幅度的2倍,通常情况下,我们并不想要这样的结果,如果我们将所得到的最初数据都取对数,则每个时间点的表达值变为0,1-1,这样的话,上调2倍和下调两倍对于时间点0的变化幅度就一样了,都是1。在大多数的应用中,都推荐将数据对数化。

 

 

Mean/Median Centering假设这样的一个实验:你观察一下大量的肿瘤样本与同一个参考样本相比较的情况,这个同一个参考样本来自于细胞系的集合。对于每个基因,你会得到一系列的比值,这个比值与这个基因在参考样本中的表达水平相关,由于参考样本与你的实验室毫无关联的,你希望你的分析与参考样本中的基因总数是相互独立的。这个要求可以通过调整能够代表每个基因的变化的特性值而得到,比如平均值或是中位数,这也就是Mean/median centering的功能。Centering能够降低参考样本在实验中的作用,比如在许多的时间进程的实验。

 

 中心化数据还可以消除某种程度的偏差。多数的双色荧光杂交实验的结果都没有对系统误差进行校正,这个误差来源于RNA总量的差异,标记为效率和图像采集参数。这个偏差带来的影响是将所有基因的比值都乘以标量,通过将对数化数据进行Meanmedian centering处理可以校正这个偏差,最后基因的平均数期望得到1

 

大体上,比起Meancentering,我推荐median centering

 

 

 

标准化:

标准化设置一行或一列的幅度(值的平方和)向量为1Cluster中使用的度量距离的大多数方法都用标准化数据向量,但数据的输出格式则还是最初的输入的格式,如果你想输出这种标准化向量格式,你需要选中这个选项。

 

 

一个原始的数据样本可以做如下的调整:

 

 

1. 对数据进行对数化

 

2Median center 基因和阵列

 

重复第二步5-10

 

3.标准化基因和阵列

 

重复第三步5-10次。

 

 

这样做后的结果是,数据将会被对数化,优化了中位数(也就是所有行或列的中位数的值接近0),标准化了数据集(也就是所有的行和列的幅度接近于1)。

 

 

做完以上的调整后,你要保存一下数据集。

过滤数据:

  

过滤数据的作用就是移除那些不满足某些特性的数据。现有的可供筛选的特性有如下几个:

 

 

%Present>=X.它的作用是,如果某列的缺失值大于百分之(100-x),则把这列移除,如上图中,x=80,则如果某列的缺失值大于20%,则剔除这一列。

 

 

SDGene Vector>=X.移除那些标准误小于X的所有基因。 

 

At least X Observations absVal>=Y.它的作用是,对于某个确定值Y,如果某个基因没有至少X个绝对值大于Y的观察值,则这个基因将被移除。如图中,某个基因不会被移除,那么它的观察值中至少有一个绝对值大于2

 

MaxVal-MinVal>=X.移除那些最大值与最小值之差小于X的所有基因。

 

当数据通过过滤器时,并不会立即应用,软件会先提示你过滤器的结果,如果你愿意接受这个结果,则点击Accept,否则将不会有改变的。

 

 

 

等级聚类

 

 

等级聚类即是可以对你的数据进行等级聚类。这是一个非常强大,有用的方法,可以分析各种类型的大基因组数据集。我们在最后的文献引用中列出了关于应用等级聚类分析的论文。

 

我们通过聚类分析得到的是二元的,凝聚的,有等级的聚类。基本的思想就是将一系列的条目(基因或阵列)组成一个树,如果两个条目非常相似,则它们会由一个短树枝相连,当相似性不断下降时,树枝的长度也会相应变长。

 

相似性/距离:

 

我们首先应该解决的问题是“相似性”是如何定义的,计算两串数字的相似性的方法有很多,Cluster提供了少量的选项。对于两串数字(两个向量X={X1,X2,…Xn}Y={Y1,Y2,…Yn}的皮尔森相关系数定义为

 

 

其中 X的平均值, 为标准差。

 

对于相关系数概念的理解有很多种,如果你以XY为横纵轴做一个散点图,(即是让X1,Y1为一个点,X2,Y2为一个点,以此类推)那么相关系数r就代表用一条直线来适应这些值的可行性有多大。如果你把XY看成N维空间内通过原点的两个向量,那么相关系数r就表示XY向量的角度有多大。

 

最简单的理解相关性系数的方法就是把XY画成曲线,r就代表这两个曲线形状的相似程度。皮尔森相关系数的范围是-11之间,1表示两个向量完全相同,0表示二者完全相互独立,-1表示二者数值相同,但方向相反,如果两个向量的标量值发生改变(比如将Y中的所有值都乘以2),XY的相关系数是不变的,因为不管长度如何变化,两个曲线的形状还是相同的,相关系数还是1,只不过幅度不同。

 

以上对皮尔森相关系数的表述是教科书中所讲的,如果你想用这种方法的话,直接在Similarity Metric目录下选择Correlationcentered)即可,但实际上,除了这种方法,Cluster还用用另外三种形式的皮尔森相关系数。

 

Correlationuncentered)用的是下面经过修改的后的等式。

 

 

 

它与之前的皮尔森相关系数是一样的,只不过它设想平均值是0,尽管没有。二者的区别在于,如果两个向量XY是相同形状,但他们通过一个固定的值代偿性相关,则在centered correlation中,他们的相关系数是1,但在uncensored correlation中不是1,

 

Cluster提供了两种相似性度量,即是这两个相关性函数的绝对值,对于两个具有相反表达模式的相关性条目,相反基因的标准的相关性系数是很远的。

 

另外两种度量方法是皮尔森相关系数的非参数形式,如要了解,请参考以下的网页:

 

http://www.ulib.org/webRoot/Books/Numerical_Recipes/bookcpdf/c14-6.pdf

 

XY有缺失值时,相似性的计算只取决于那些XY都不缺失的条目。

 

 

Cluster

选好以上任意一种相关性的度量方法,就可以进行聚类了,第一步是计算要聚类的(比如当前数据集中的基因集)所有条目配对的距离(距离=1-相似性)。这是非常耗时的,计算所有的程序需要我们的机器有较大的内存。

 

 

当我们计算好距离矩阵时,就可以开始聚类了,聚类过程是成团的等级聚类过程,即是反复的进行这样的循环:用树中的一个点或是支连接两个最近的条目(就是最短距离的两个),支的长度由两个条目的距离所决定。当一个新的支代替了原来两个聚类的点时,这两个点就被移除了,新产出的支再与其它的点进行聚类,直到最后聚成一类为止。当聚类开始时,我们要处理的有两种类型的条目,一种是真实的条目(比如单个基因),一种是包含许多真实条目的假条目,我们有很多方法来处理假的条目,Cluster提供了三种选择。

 

 

如果你点击Average LinkageClustering,我们将用向量来定义每一个假条目,这个向量就是它所包含的所有真实的条目(比如基因)的平均向量。并计算这个向量与剩下所有条目的距离,计算的方法也之前用的相似性度量的方法一样。这样,如果我们将一个包含5个条目的支与一个条目聚成一类形成一个新的支,则这个新的向量是它所包含的六个向量的平均值,而不是聚类的两个向量的平均值(注意,在计算平均值时是不用缺失值的,一个假的条目时可以有缺失值的,如果它所包含的所有条目在某一个行/列上都有缺失值)。对于熟悉聚类算法的读者可知,这与真正的平均聚类是有差别的,两个条目XY的距离是XY所包含的所有条目的配对距离的平均值。

 

 

Single Linkage Clustering中,两个条目XY的距离是XY中所包含的所有条目的配对距离的最小值。

  

Complete Linkage Clustering中,两个条目XY的距离是XY中所包含的所有条目的配对距离的最小值。(Single Linkage Clustering的说明一样?)

加权

默认情况下,所有的条目都是平等的计算的,但有些情况下,你希望给一些值多一些权重,例如,在阵列中,有一个基因有两个副本,当计算距离时,你希望每一个副本的权重都变的小一些,你可以通过在输入文件中使用GWEIGHT(基因加权)EWEIGHT(实验加权)来设置权重,默认情况下,所有的权重为1,这样,对于X={X1,X2,…Xn}Y={Y1,Y2,…,Yn},带权重{W1,W2,…,Wn}的皮尔森相关系数r为:

 

 

注意,当你要聚类行(基因)时,你要用列(阵列)的权重。

 

基于一个不能被完全理解的函数来计算权重是可能的。如果你要计算聚类基因的权重,你要选中在Hierarchical Clustering中的Genes内的Calculate Weights

 

 

 

 

你会发现在Array面板中有一个Weight Options的对话框(我知道这可能会让人很困惑,但你看了下面的内容就会明白)。

 

Calculate Weights的思想就是根据临近的行向量局部密度来权衡每一行(列也是同样的)。如果临近的行向量密度高,则会有低的权重,如果临近的行向量密度低,会有高的权重,我们用以下的公式来计算每一行的局部密度分值Li):

 

 

其中,k(阈值),n(迭代次数)是用户自己设置的参数(即是Weights Options中的参数设置)。每一行的权重为 。注意到L(i)的最小值是1,因为d(i,i)=0.L(i)增大时,权重就降低(因为权重是L的倒数)。大于1n值表示,随着d(i,j)的增加,L(i)的贡献呈指数级下降。

 

 

输出文件的排序

聚类的结果是一个树或是成对的树(一个是基因的结果,一个是阵列的结果)。但是,如果我们想要在TreeView中以图形化的方式查看结果,我们需要用这棵树来对最初的数据集的行或列进行重新排序。如果你简单的以下面的方式画出树中的所有节点时,出现的是自然排序的结果:

 

 

 

这样,每个树都可以生产一个排序,但是,对于每个树,它的排序都不是唯一的,如果某个树有N个节点的话,将会有2N-1次方个排序 如果有6个基因的话,每两个基因聚一类,就会聚成5类,每一类都有两种排序,所以共有25次方种ordering)。你可以翻转树中的任何一个点(改变底部和顶部的树枝),这样你就会得到一个新的排序。默认情况下,当Cluster聚类两个点时 ,它会随机的将它们放在树枝的底部和顶部。如果我们想要对某个给定的树,做最好的排序,就需要用到输入文件中的GORDER(基因排序)和EORDER(实验排序)这两个参数了,或者是在排序之前做自组织映射(下面会讲到)。默认情况下,Cluster设置每一行或列的排序参数为1,当产生一个新的点时,Cluster比较这两个聚类的点的排序参数,并把值小的那个点放在树的顶端,一个点的排序参数是这个点所包含的成员的排序参数的平均值。这样,如果你想要Cluster聚类后的基因排序结果与你的输入文件的排序尽可能的接近,你就要设置GORDER这一列,使这列中的每一行的值是递增的。注意排序参数并不需要一定是唯一的。

 

 

输出文件:

Cluster每次聚类后会得到三个输出文件,这三个文件的根目录名字都是你在Job Name这个对话框中所填的内容,当你导入一个文件时,Job Name就被设置到导入文件的根目录下。这三个输出文件的名字如下:

 

 

 

.cdt(聚类的数据表)文件包含基于聚类结果行列排序后的原始数据。它与输入文件的格式是相同的,但如果是根据基因或是阵列聚类的话,会相应的增加一列或一行。增加的这一列或一行是对每列或行的唯一的标识符,它与在.gtr.atr文件中树的结构的描述是相联系的。

 

.gtr(基因树).atr(阵列树)文件是以tab键为分隔符的文本文件,文件中记录了在基因或是阵列聚类过程中点的聚类的过程(注意到,只有是在相应轴线上的聚类,才有输出文件)。当聚类开始时,每个要聚类的条目都被赋予一个唯一的标识符(比如,GENE1X,ARRY42X),这些标识符被添加到.cdt文件中,当生成一个新的点时,也会有一个新的标识符(比如,NODE1X,NODE2X),每次聚合的过程会被存储在.gtr.atr文件的每一行中,包括新聚合的点的标识符和两个聚合元素的标识符,以及这两个元素的相似性分值,如下所示:

 

 

 

gtr或是atr文件记录了树的形成过程,第一行,GENE1XGENE4X两个基因的相似性分值为0.98,她们俩先聚类,形成一个NODE1X,第二次是GENE5XGENE2X聚类形成NODE2X,相似性是0.80,以此类推,形成的树就是右边的图形,这种文件可以被自动的读入到treeview中。)

 

 

当你打开相应的.cdt文件后,.gtr.atr文件会自动读入TreeView软件中。

 

 

 

 

 

TreeView

TreeViewCluster的结果进行图形化分析,这是非常直观的。 

 

Treeview在使用时经常出问题,要求用Winzip对软件进行解压。 无需安装,双击Win32 Treeview.bat即可。

 

PS:使用这两个软件之前一定要先安装最新的JAVA。

猜你喜欢

转载自blog.csdn.net/huyongfeijoe/article/details/51172830
今日推荐