Bio.Cluster软件包

模块内容

聚类分析。

Bio.Cluster提供常用的聚类算法,并且在设计时考虑到了对基因表达数据的应用程序。但是,此模块还可以用于其他类型数据的聚类分析。

Bio.cluster和底层C聚类库在M.de Hoon等人中描述。(2004年)https://doi.org/10.1093/bioinformatics/bth078

class Bio.Cluster.Node

基类:Node

节点对象描述层次聚类树中的单个节点。整数属性“Left”和“Right”表示组成此节点的两个成员;浮点属性“Distance”包含此节点的两个成员之间的距离。

class Bio.Cluster.Tree

基类:Tree

层次聚类树。

树由节点组成。

sort(order=None)

对层次聚类树进行排序。

通过切换节点的左子节点和右子节点来对分层聚类树进行排序,使得树从左到右顺序中的元素倾向于具有递增的顺序值。

返回层次聚类树中从左到右顺序的元素的索引,这样具有索引的元素 [i] 出现在树状图中的位置i。

cut(nclusters=None)

通过剪切层次聚类树来创建聚类。

将层次聚类结果mytree中的元素分成簇,并返回一个数组,其中包含每个元素被分配到的簇的编号。

关键字参数:
  • ncluster:所需的簇数。

Bio.Cluster.kcluster(data, nclusters=2, mask=None, weight=None, transpose=False, npass=1, method='a', dist='e', initialid=None)

执行k均值聚类。

此函数对数据中的值执行k-Means聚类,并返回聚类分配、最佳k-Means聚类解决方案的簇内距离总和以及找到最优解的次数。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

  • ncluster:簇数(k-means中的‘k’)。

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i,j] ==0,然后是数据 [i,j] 失踪了。

  • 权重:计算距离时使用的权重

  • 转置:-If False:行聚集;-If True:列聚集。

  • npass:执行k-均值聚类算法的次数,每次使用不同的(随机)初始条件。

  • method:指定如何找到簇的中心:-method==‘a’:算术平均值;-method==‘m’:中值。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离;-dist==‘b’:城市挡路距离;-dist==‘c’:皮尔逊相关性;-dist==‘a’:相关性的绝对值;-dist==‘u’:未进入中心的相关性;-dist==‘x’:绝对未进入中心的相关性;-dist==‘s’:斯皮尔曼等级相关;-dist==‘k’:k

  • initialid:算法应该从其开始的初始集群。如果initialid为NONE,则例程执行EM算法的npass重复,每次从不同的随机初始聚类开始。如果给定了initialid,则例程仅执行一次EM算法,从给定的初始聚类开始,并且不会随机化项目被分配到聚类的顺序(即,使用与数据矩阵中相同的顺序)。在这种情况下,k-Means算法是完全确定的。

返回值:
  • clusterid:包含在npass运行中找到的最佳k-均值聚类解决方案中每个项目被分配到的群集的编号的数组;

  • 错误:返回的k-均值聚类解的簇内距离和;

  • nfind:找到此解决方案的次数。

Bio.Cluster.kmedoids(distance, nclusters=2, npass=1, initialid=None)

执行k-medoid聚类。

此函数执行k-medoid聚类,并返回簇分配、最佳k-medoid聚类解决方案的簇内距离和以及找到最优解的次数。

关键字参数:
  • 距离:项目之间的距离矩阵。有三种方式可以传递距离矩阵:1.2D数值Python数组(其中只访问数组的左下部分);2.包含连续距离的1维数值Python数组;3.包含距离矩阵的下三角部分的行列表。

    例如:

    >>> from numpy import array
    >>> # option 1:
    >>> distance = array([[0.0, 1.1, 2.3],
    ...                   [1.1, 0.0, 4.5],
    ...                   [2.3, 4.5, 0.0]])
    >>> # option 2:
    >>> distance = array([1.1, 2.3, 4.5])
    >>> # option 3:
    >>> distance = [array([]),
    ...             array([1.1]),
    ...             array([2.3, 4.5])]
    

    这三个对应于相同的距离矩阵。

  • ncluster:簇数(k-medoid中的‘k’)

  • npass:执行k-medoid聚类算法的次数,每次使用不同的(随机)初始条件。

  • initialid:算法应该从其开始的初始集群。如果未给出initialid,则例程执行EM算法的npass重复,每次从不同的随机初始聚类开始。如果给定了initialid,则例程仅执行一次EM算法,从initialid指定的初始聚类开始,并且不会将项目分配到聚类的顺序随机化(即,使用与数据矩阵中相同的顺序)。在这种情况下,k-medoid算法是完全确定的。

返回值:
  • clusterid:包含在npass运行中找到的最佳k-均值聚类解决方案中每个项目被分配到的群集的编号的数组;

  • 错误:返回的k-均值聚类解的簇内距离和;

  • nfind:找到此解决方案的次数。

Bio.Cluster.treecluster(data, mask=None, weight=None, transpose=False, method='m', dist='e', distancematrix=None)

执行层次聚类,并返回一个Tree对象。

此函数实现成对的单一、完全、质心和平均链接层次聚类方法。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i] [j] ==0,然后是数据 [i] [j] 失踪了。

  • 权重:计算距离时要使用的权重。

  • 转置:-如果为False,则聚集行;-如果为True,则聚集列。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

  • method:指定使用哪种链接方法:-method==‘s’:单个成对链接-method==‘m’:完全(最大)成对链接(默认值)-method==‘c’:质心链接-method==‘a’:平均成对链接

  • 距离矩阵:项目之间的距离矩阵。有三种方式可以传递距离矩阵:1.2D数值Python数组(其中只访问数组的左下部分);2.包含连续距离的1维数值Python数组;3.包含距离矩阵的下三角部分的行列表。

    例如:

    >>> from numpy import array
    >>> # option 1:
    >>> distance = array([[0.0, 1.1, 2.3],
    ...                   [1.1, 0.0, 4.5],
    ...                   [2.3, 4.5, 0.0]])
    >>> # option 2:
    >>> distance = array([1.1, 2.3, 4.5])
    >>> # option 3:
    >>> distance = [array([]),
    ...             array([1.1]),
    ...             array([2.3, 4.5])]
    

    这三个对应于相同的距离矩阵。

    请注意:由于treecluster例程可能会将距离矩阵中的值作为聚类算法的一部分进行混洗,因此如果以后需要,请确保在调用treecluster之前将此数组保存在不同的变量中。

Data或Distancemrix应为None。如果Distancematrix为NONE,则根据参数数据中存储的值计算分层聚类解决方案。如果DATA为NONE,则改为从距离矩阵计算分层聚类解决方案。只能从数据值而不能从距离矩阵执行成对质心-链接聚类。可以根据数据值或距离矩阵计算成对的单链接、最大链接和平均链接聚类。

返回值:treecluster返回描述层次聚类结果的Tree对象。有关更多信息,请参见Tree类的说明。

Bio.Cluster.somcluster(data, mask=None, weight=None, transpose=False, nxgrid=2, nygrid=1, inittau=0.02, niter=1, dist='e')

计算自组织映射。

此函数在矩形网格上实现自组织映射。

关键字参数:
  • 数据:包含数据值的n行x n列数组;

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i] [j] ==0,然后是数据 [i] [j] 失踪了。

  • 权重:计算距离时使用的权重

  • 转置:-If False:行聚集;-If True:列聚集。

  • nxgrid:矩形SOM映射的水平维度

  • nygrid:矩形SOM地图的垂直维度

  • inittau:tau(Neighbood函数)的初始值

  • Niter:迭代次数

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

返回值:

  • clusterid:两列数组,行数等于要聚集的项。数组中的每一行都包含项目分配到的矩形SOM网格中的单元格的x和y坐标。

  • cell data:具有维度的数组 [nxgrid,nygrid,列数] 如果正在聚集行,或者 [nxgrid、nygrid、行数)。每个元素[ix,iy] 此数组的一个一维矢量,其中包含SOM格网单元中带坐标的聚类质心的数据值 [ix,iy] 。

Bio.Cluster.clusterdistance(data, mask=None, weight=None, index1=None, index2=None, method='a', dist='e', transpose=False)

计算并返回两个簇之间的距离。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i, j] ==0,然后是数据 [i, j] 失踪了。

  • 权重:计算距离时使用的权重

  • index1:1D数组,标识哪些项目属于第一个群集。如果集群只包含一个项目,那么index1也可以作为单个整数写入。

  • index2:1D数组,标识哪些项目属于第二个群集。如果集群只包含一个项目,那么index2也可以写为单个整数。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

  • method:指定如何定义两个簇之间的距离:-method==‘a’:两个簇的算术平均值之间的距离-method==‘m’:两个簇的中线之间的距离-method==‘s’:两个簇的成员之间的最小成对距离-method=‘x’:两个簇的成员之间的最大成对距离-method=‘v’:两个簇的成员之间的成对距离的平均值

  • 转置:-If False:考虑行群集;-If True:考虑列群集。

Bio.Cluster.clustercentroids(data, mask=None, clusterid=None, method='a', transpose=False)

计算并返回每个簇的质心。

群集质心例程计算给定每个项目属于哪个群集的群集质心。质心被定义为每个维度的所有项目的平均值或中位数。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i, j] ==0,然后是数据 [i, j] 失踪了。

  • clusterid:包含每个项目的簇号的数组。群集编号应为非负数。

  • Method:指定质心是根据每个维度的算术平均值(Method==‘a’,默认值)还是中位数(Method==‘m’)计算的。

  • 转置:如果为False,则每行包含一个项目的数据;

    如果为True,则每列包含一项的数据。

返回值:
  • CDATA:包含簇质心的二维数组。如果transspose为false,则CDATA的维度为ncluster x ncolumn。如果transspose为True,则CDATA的维度为nrow x ncluster。

  • CDATA掩码:描述CDATA中缺少哪些项(如果有)的二维整数数组。

Bio.Cluster.distancematrix(data, mask=None, weight=None, transpose=False, dist='e')

根据数据计算并返回距离矩阵。

此函数返回根据数据计算的距离矩阵。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i, j] ==0,然后是数据 [i, j] 失踪了。

  • 权重:计算距离时要使用的权重。

  • TRANSPOSE:如果为FALSE:计算行之间的距离;

    如果为True:将计算列之间的距离。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

返回值:距离矩阵作为包含根据数据计算的距离矩阵的一维数组列表返回。eAC行中的列数等于行号。因此,第一行的长度为零。例如:

>>> from numpy import array
>>> from Bio.Cluster import distancematrix
>>> data = array([[0, 1,  2,  3],
...               [4, 5,  6,  7],
...               [8, 9, 10, 11],
...               [1, 2,  3,  4]])
>>> distances = distancematrix(data, dist='e')
>>> distances
[array([], dtype=float64), array([ 16.]), array([ 64.,  16.]), array([  1.,   9.,  49.])]
它可以重写为
距离= [数组([] ,dtype=float64),

数组( [ 16.] )、数组( [64、16。] )、数组( [1.9.49.] )]

这与距离矩阵相对应:

[ 0., 16., 64., 1.] [16., 0., 16., 9.] [64., 16., 0., 49.] [ 1., 9., 49., 0.]

Bio.Cluster.pca(data)

进行主成分分析。

关键字参数:
  • 数据:包含数据值的n行x n列数组。

返回值:此函数返回一个数组,该数组包含每列的平均值、nmin x ncolumn数组形式的主分量、沿主分量的数据坐标(nrow x nmin数组)以及相关的特征值。主分量、坐标和特征值按照特征值的大小排序,最大的特征值首先出现。这里,nmin是nrow和ncolumn中较小的一个。将列平均值与坐标和主分量的点积相加,将重新创建数据矩阵:

>>> from numpy import array, dot, amax, amin
>>> from Bio.Cluster import pca
>>> matrix = array([[ 0.,  0.,  0.],
...                 [ 1.,  0.,  0.],
...                 [ 7.,  3.,  0.],
...                 [ 4.,  2.,  6.]])
>>> columnmean, coordinates, pc, _ = pca(matrix)
>>> m = matrix - (columnmean + dot(coordinates, pc))
>>> amax(m) < 1e-12 and amin(m) > -1e-12
True
class Bio.Cluster.Record(handle=None)

基类:object

存储基因表达数据。

记录按照为Michael Eisen的Cluster/TreeView程序定义的文件格式存储数据文件中包含的基因表达数据和相关信息。

属性:
  • 数据:包含基因表达数据的矩阵

  • 掩码:只包含1和0的矩阵,表示存在(1)或缺少(0)的值。如果掩码的所有项都是一个(没有丢失数据),则将掩码设置为无。

  • GeneID:包含每个基因的唯一标识符的列表(例如,ORF名称)

  • 基因名称:包含每个基因的附加描述的列表(例如,基因名称)

  • Gweight:计算距离时每个基因要使用的权重

  • Gorder:指示输出文件中基因的首选顺序的实数数组

  • expid:包含每个样本的唯一标识符的列表。

  • eWeight:计算距离时用于每个样本的权重

  • eorder:指示输出文件中样本的首选顺序的实数数组

  • uniqid:输入文件中使用的字符串,而不是UNIQID。

__init__(handle=None)

从文件句柄读取基因表达数据并返回记录。

该文件应采用为Michael Eisen的Cluster/TreeView程序定义的格式。

treecluster(transpose=False, method='m', dist='e')

应用分层群集并返回树对象。

可以使用成对的单一、完全、质心和平均链接层次聚类方法。

关键字参数:
  • TRANSPOSE:如果为FALSE:行被聚集;

    如果为True:列将聚集。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

  • method:指定使用哪种链接方法:-method==‘s’:单个成对链接-method==‘m’:完全(最大)成对链接(默认值)-method==‘c’:质心链接-method==‘a’:平均成对链接

有关此方法返回的Tree对象的更多信息,请参见Tree类的说明。

kcluster(nclusters=2, transpose=False, npass=1, method='a', dist='e', initialid=None)

应用k均值或k中值聚类。

此方法返回一个元组(clusterid、error、nfind)。

关键字参数:
  • ncluster:簇数(k-means中的‘k’)

  • 转置:如果为假,则基因(行)聚集;

    如果为True,则聚集样本(列)。

  • npass:执行k-均值聚类算法的次数,每次使用不同的(随机)初始条件。

  • method:指定如何找到簇的中心:-method==‘a’:算术平均值-method==‘m’:中值

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

  • initialid:算法应该从其开始的初始集群。如果initialid为NONE,则例程执行EM算法的npass重复,每次从不同的随机初始聚类开始。如果给定了initialid,则例程仅执行一次EM算法,从给定的初始聚类开始,并且不会随机化项目被分配到聚类的顺序(即,使用与数据矩阵中相同的顺序)。在这种情况下,k-Means算法是完全确定的。

返回值:
  • clusterid:包含在npass运行中找到的最佳k-均值聚类解决方案中每个基因/样本被分配到的簇的编号的数组;

  • 错误:返回的k-均值聚类解的簇内距离和;

  • nfind:找到此解决方案的次数。

somcluster(transpose=False, nxgrid=2, nygrid=1, inittau=0.02, niter=1, dist='e')

在矩形网格上计算自组织映射。

Somcluster方法返回一个元组(clusterid,cell data)。

关键字参数:
  • 转置:如果为假,则基因(行)聚集;

    如果为True,则聚集样本(列)。

  • nxgrid:矩形SOM映射的水平维度

  • nygrid:矩形SOM地图的垂直维度

  • inittau:tau(Neighbood函数)的初始值

  • Niter:迭代次数

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

返回值:
  • clusterid:有两列的数组,而行数等于基因数或样本数,这取决于是否将基因或样本聚在一起。阵列中的每一行都包含基因或样本被分配到的矩形SOM网格中的细胞的x和y坐标。

  • cell data:如果对基因进行聚类,则为具有维数(nxgrid,nygrid,样本数)的数组;如果对样本进行聚类,则为(nxgrid,nygrid,of gene)数组。每件物品 [ix,iy] 该阵列的一个1D载体包含SOM网格单元中具有坐标的簇的质心的基因表达数据 [ix,iy] 。

clustercentroids(clusterid=None, method='a', transpose=False)

计算集群质心并返回元组(CDATA,CDASK)。

质心被定义为每个维度的所有项目的平均值或中位数。

关键字参数:
  • 数据:包含表达式数据的n行x n列数组

  • 掩码:n行x n列整数数组,显示缺少哪些数据。IF掩码 [i, j] ==0,然后是数据 [i, j] 失踪了。

  • 转置:如果为假,则考虑基因(行)簇;

    如果为True,则考虑样本(列)簇。

  • clusterid:包含每个基因或样本的簇号的数组。群集编号应为非负数。

  • method:指定质心的计算方式:-method==‘a’:每个维度的算术平均值。(默认值)-method==‘m’:每个尺寸的中位数。

返回值:
  • CDATA:包含簇质心的二维数组。如果transspose为false,则CDATA的维度为ncluster x ncolumn。如果transspose为True,则CDATA的维度为nrow x ncluster。

  • CDATA掩码:描述CDATA中缺少哪些项(如果有)的二维整数数组。

clusterdistance(index1=0, index2=0, method='a', dist='e', transpose=False)

计算两个簇之间的距离。

关键字参数:
  • 标识哪些基因/样本属于第一簇的index1:1D数组。如果簇只包含一个基因,那么index1也可以写成单个整数。

  • 标识哪些基因/样本属于第二簇的index2:1D阵列。如果簇只包含一个基因,那么index2也可以写成单个整数。

  • 转置:如果为假,则基因(行)聚集;

    如果为True,则聚集样本(列)。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

  • method:指定如何定义两个簇之间的距离:-method==‘a’:两个簇的算术平均值之间的距离-method==‘m’:两个簇的中线之间的距离-method==‘s’:两个簇的成员之间的最小成对距离-method=‘x’:两个簇的成员之间的最大成对距离-method=‘v’:两个簇的成员之间的成对距离的平均值

  • TRANSPOSE:如果为FALSE:考虑成簇的行;

    如果为True:则考虑列簇。

distancematrix(transpose=False, dist='e')

计算距离矩阵并将其作为数组列表返回。

关键字参数:
  • 转置:

    如果为False:计算基因(行)之间的距离;如果为True:计算样本(列)之间的距离。

  • dist:指定要使用的距离函数:-dist==‘e’:欧几里得距离-dist==‘b’:城市挡路距离-dist==‘c’:皮尔逊相关性-dist==‘a’:相关性的绝对值-dist==‘u’:未进入的相关性-dist==‘x’:绝对未进入的相关性-dist==‘s’:斯皮尔曼等级相关性-dist==‘k’:肯德尔的τ

返回值:

距离矩阵作为包含基因表达数据之间的距离矩阵的一维阵列列表返回。每行中的列数等于行号。因此,第一行的长度为零。返回值的示例如下:

矩阵= [[] ,

数组( [1.] )、数组( [7.、3.] )、数组( [4.2.6.] )]

这与距离矩阵相对应:

[0., 1., 7., 4.] [1., 0., 3., 2.] [7., 3., 0., 6.] [4., 2., 6., 0.]

save(jobname, geneclusters=None, expclusters=None)

保存群集结果。

保存的文件遵循Java TreeView程序的约定,因此可用于查看集群结果。

关键字参数:
  • jobname:要保存的文件的基本名称。用于分层群集的文件名为jobname.cdt、jobname.gtr和jobname.atr,以及jobname-K .cdt, jobname-K .kgg,jobname-k*.kag表示k均值聚类结果。

  • geneclusters:对于分层聚类结果,geneclusters是由treecluster方法返回的Tree对象。对于k-均值聚类结果,基因簇是包含n个基因整数的向量,描述给定基因属于哪个簇。此向量可由kcluster计算。

  • expClusters:对于分层聚类结果,expClusters是由treecluster方法返回的Tree对象。对于k-均值聚类结果,expcluster是包含nexps整数的向量,描述给定样本属于哪个聚类。此向量可由kcluster计算。

Bio.Cluster.read(handle)

从文件句柄读取基因表达数据并返回记录。

该文件应采用为Michael Eisen的Cluster/TreeView程序定义的文件格式。