ClusterandTreeView中文翻译版LindaHarbinmedicaluniversity2010-10-3介绍:Cluster和TreeView是分析并可视化DNA芯片数据或是其它基因组数据集的软件程序,Cluster(很快就有一个新的名字)用多种不同的方式组织分析数据,TreeView则将这些组织好的数据可视化,这个软件的下一个版本会将这两个软件合成为一个应用程序。这个说明书是使用这个软件的一个参考,而不是对软件中所用方法的全面分析。很多方法都是从标准的统计聚类中得到的,对于聚类分析的那些非常好的教科书,我们会在最后的参考书目中给列出,参考书目中还包括最新的生物科学的论文,尤其是那些所用的方法与我们的非常相似的论文。Cluster导入数据:用Cluster的第一步就是导入数据,当前版本的Cluster只接受以tab键为分隔符的数据格式,比如Excel,通过点FileFormatHelp可以得到输入格式的说明。依照惯例,在输入表格中,行代表基因,列代表样本或是不同的观察,下面的例子就是一个时间过程的输入文件:第一列中的每一行(基因)一般都代表标识符(绿色的字符),第一行中每一列代表样本的标签(蓝色的字符),此时的标签表示时间进程,红色字符代表的是每一行基因的种类是什么,本文件的YORF代表酵母开放阅读框,这个地方可以是任意的字母或数字的值,在TreeView中,应用它可以将每一行的基因连接到外部的网站中。剩下的数据就是每个基因在不同样本中的表达值,2行4列的“5.8”表示基因YAL001C在2小时观察到的数据为5.8。空数据是允许的,就用空值表示(里面什么都没有),如,YAL005C在2小时的数据就是空的。我们很可能要对输入数据额外的添加一些信息,最大的Cluster的输入文件如下所示:黄色的区域是可有可无的,默认情况下,TreeView用第一列的ID号作为每个基因的标签,NAME那一列是对每个基因的进一步描述性标签,从而与第一列的标签相区别,关于GWEIGHT和GORDER这两列和EWEIGHT和EORDER这两行的内容会晚一些再解释。示例数据:可在这个网站中得到,这个数据时酵母基因表达谱数据,下载后并导入到Cluster中。Cluster会呈现如下的导入信息:调整过滤数据:可以通过FilterData和AdjustData这两项对数据进行调整和过滤。调整数据:LogTransformData:将每个数值取对数代替原来的数值,即x=log2(x)。NormalizeGenesand/orArrays:将每一行每一列的所有数值都乘以一个标度因子S,使每一行每一列的数值的平方和为1.0(每行/列的S是不同的)MeanCenterGenesand/orArrays:将每一行或列的所有值减去这一行或列的平均值,使这一行或列的平均值为0。MedianCenterGeneand/orArrays:将每一行或列的所有值减去这一行或列的中位数,使这一行或列的中位数为0。以上的每项调整不是连在一起的,每项的先后顺序是很重要的,在进行之前要仔细的考虑好。操作的顺序为:LogtransformallvaluesMeancenterrowsMediancenterrowsNormalizerows在什么情况下,我们需要对数据进行调整呢?Logtransformation:许多DNA微阵列实验的结果是荧光比值,基本上都需要进行对数化处理。比如一个不同时间点的基因表达值,并将结果与时间点0的值相比较,假设在时间点1,这个基因表达没有改变,在时间点2,它表达上调两倍,在时间点3,它表达下调两倍(与时间点0相比)。则在这三个时间点上,最初的比值为:1,2,0.5。但在多数情况下,我们认为2倍上调和2倍下调的变化幅度应该是一样的,只不过是方向不同,一个上调,一个下调,但在我们的数据中,时间点1和2的变化为1(2-1),时间点1和3的变化为-0.5(0.5-1)。这样的话,上调两倍的变化幅度就是下调两倍变化幅度的2倍,通常情况下,我们并不想要这样的结果,如果我们将所得到的最初数据都取对数,则每个时间点的表达值变为0,1,-1,这样的话,上调2倍和下调两倍对于时间点0的变化幅度就一样了,都是1。在大多数的应用中,都推荐将数据对数化。Mean/MedianCentering:假设这样的一个实验:你观察一下大量的肿瘤样本与同一个参考样本相比较的情况,这个同一个参考样本来自于细胞系的集合。对于每个基因,你会得到一系列的比值,这个比值与这个基因在参考样本中的表达水平相关,由于参考样本与你的实验室毫无关联的,你希望你的分析与参考样本中的基因总数是相互独立的。这个要求可以通过调整能够代表每个基因的变化的特性值而得到,比如平均值或是中位数,这也就是Mean/mediancentering的功能。Centering能够降低参考样本在实验中的作用,比如在许多的时间进程的实验。中心化数据还可以消除某种程度的偏差。多数的双色荧光杂交实验的结果都没有对系统误差进行校正,这个误差来源于RNA总量的差异,标记为效率和图像采集参数。这个偏差带来的影响是将所有基因的比值都乘以标量,通过将对数化数据进行Mean或mediancentering处理可以校正这个偏差,最后基因的平均数期望得到1。大体上,比起Meancentering,我推荐mediancentering。标准化:标准化设置一行或一列的幅度(值的平方和)向量为1。Cluster中使用的度量距离的大多数方法都用标准化数据向量,但数据的输出格式则还是最初的输入的格式,如果你想输出这种标准化向量格式,你需要选中这个选项。一个原始的数据样本可以做如下的调整:1.对数据进行对数化2.Mediancenter基因和阵列重复第二步5-10次3.标准化基因和阵列重复第三步5-10次。这样做后的结果是,数据将会被对数化,优化了中位数(也就是所有行或列的中位数的值接近0),标准化了数据集(也就是所有的行和列的幅度接近于1)。做完以上的调整后,你要保存一下数据集。过滤数据:过滤数据的作用就是移除那些不满足某些特性的数据。现有的可供筛选的特性有如下几个:%Present=X.它的作用是,如果某列的缺失值大于百分之(100-x),则把这列移除,如上图中,x=80,则如果某列的缺失值大于20%,则剔除这一列。SD(GeneVector)=X.移除那些标准误小于X的所有基因。AtleastXObservationsabs(Val)=Y.它的作用是,对于某个确定值Y,如果某个基因没有至少X个绝对值大于Y的观察值,则这个基因将被移除。如图中,某个基因不会被移除,那么它的观察值中至少有一个绝对值大于2。MaxVal-MinVal=X.移除那些最大值与最小值之差小于X的所有基因。当数据通过过滤器时,并不会立即应用,软件会先提示你过滤器的结果,如果你愿意接受这个结果,则点击Accept,否则将不会有改变的。等级聚类等级聚类即是可以对你的数据进行等级聚类。这是一个非常强大,有用的方法,可以分析各种类型的大基因组数据集。我们在最后的文献引用中列出了关于应用等级聚类分析的论文。我们通过聚类分析得到的是二元的,凝聚的,有等级的聚类。基本的思想就是将一系列的条目(基因或阵列)组成一个树,如果两个条目非常相似,则它们会由一个短树枝相连,当相似性不断下降时,树枝的长度也会相应变长。相似性/距离:我们首先应该解决的问题是“相似性”是如何定义的,计算两串数字的相似性的方法有很多,Cluster提供了少量的选项。对于两串数字(两个向量)X={X1,X2,…Xn}和Y={Y1,Y2,…Yn}的皮尔森相关系数定义为其中是X的平均值,为标准差。对于相关系数概念的理解有很多种,如果你以X,Y为横纵轴做一个散点图,(即是让X1,Y1为一个点,X2,Y2为一个点,以此类推)那么相关系数r就代表用一条直线来适应这些值的可行性有多大。如果你把X,Y看成N维空间内通过原点的两个向量,那么相关系数r就表示X,Y向量的角度有多大。最简单的理解相关性系数的方法就是把X,Y画成曲线,r就代表这两个曲线形状的相似程度。皮尔森相关系数的范围是-1到1之间,1表示两个向量完全相同,0表示二者完全相互独立,-1表示二者数值相同,但方向相反,如果两个向量的标量值发生改变(比如将Y中的所有值都乘以2),X,Y的相关系数是不变的,因为不管长度如何变化,两个曲线的形状还是相同的,相关系数还是1,只不过幅度不同。以上对皮尔森相关系数的表述是教科书中所讲的,如果你想用这种方法的话,直接在SimilarityMetric目录下选择Correlation(centered)即可,但实际上,除了这种方法,Cluster还用用另外三种形式的皮尔森相关系数。Correlation(uncentered)用的是下面经过修改的后的等式。它与之前的皮尔森相关系数是一样的,只不过它设想平均值是0,尽管没有。二者的区别在于,如果两个向量X,Y是相同形状,但他们通过一个固定的值代偿性相关,则在centeredcorrelation中,他们的相关系数是1,但在uncensoredcorrelation中不是1,。Cluster提供了两种相似性度量,即是这两个相关性函数的绝对值,对于两个具有相反表达模式的相关性条目,相反基因的标准的相关性系数是很远的。另外两种度量方法是皮尔森相关系数的非参数形式,如要了解,请参考以下的网页:当X或Y有缺失值时,相似性的计算只取决于那些X,Y都不缺失的条目。Cluster选好以上任意一种相关性的度量方法,就可以进行聚类了,第一步是计算要聚类的(比如当前数据集中的基因集)所有条目配对的距离(距离=1-相似性)。这是非常耗时的,计算所有的程序需要我们的机器有较大的内存。当我们计算好距离矩阵时,就可以开始聚类了,聚类过程是成团的等级聚类过程,即是反复的进行这样的循环:用树中的一个点或是支连接两个最近的条目(就是最短距离的两个),支的长度由两个条目的距离所决定。当一个新的支代替了原来两个聚类的点时,这两个点就被移除了,新产出的支再与其它的点进行聚类,直到最后聚成一类为止。当聚类开始时,我们要处理的有两种类型的条目,一种是真实的条目(比如单个基因),一种是包含许多真实条目的假条目,我们有很多方法来处理假的条目,Cluster提供了三种选择。如果你点击AverageLinkageClustering,我们将用向量来定义每一个假条目,这个向量就是它所包含的所有真实的条目(比如基因)的平均向量。并计算这个向量与剩下所有条目的距离,计算的方法也之前用的相似性度量的方法一样。这样,如果我们将一个包含5个条目的支与一个条目聚成一类形成一个新的支,则这个新的向量是它所包含的六个向量的平均值,而不是聚类的两个向量的平均值(注意,在计算平均值时是不用缺失值的,一个假的条目时可以有缺失值的,如果它所包含的所有条目在某一个行/列上都有缺失值)。对于熟悉聚类算法的读者可知,这与真正的平均聚类是有差别的,两个条目X和Y的距离是X和Y所包含的所有条目的配对距离的平均值。在SingleLinkageClustering中,两个条目X和Y的距离是X和Y中所包含的所有条目的配对距离的最小值。在CompleteLinkageClustering中,两个条目X和Y的距离是X和Y中所包含的所有条目的配对距离的最小值。(与SingleLinkageClustering的说明一样?)加权默认情况下,所有的条目都是平等的计算的,但有些情况下,你希望给一些值多一些权重,例如,在阵列中,有一个基因有两个副本,当计算距离时,你希望每一个副本的权重都变的小一些,你可以通过在输入文件中使用GWEIGHT(基因加权)和EWEIGHT(实验