Bio.集群包

模块内容

聚类分析

Bio.集群提供常用的集群算法,并在设计时考虑到了基因表达数据的应用。但是,该模块也可以用于其他类型数据的聚类分析。

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

class Bio.Cluster.Node

基类:Node

节点对象描述分层集群树中的单个节点。integer属性“left”和“right”表示组成此节点的两个成员;浮点属性“distance”包含此节点的两个成员之间的距离。

__firstlineno__ = 48
__static_attributes__ = ()
class Bio.Cluster.Tree

基类:Tree

分层集群树。

树由节点组成。

sort(order=None)

对分层集群树进行排序。

通过切换节点的左右子节点对分层集群树进行排序,以便树从左到右顺序的元素往往具有增加的顺序值。

按分层集群树中从左到右顺序返回元素的索引,使得具有索引索引的元素 [i] 发生在谱系图中的位置i。

cut(nclusters=None)

通过切割分层集群树来创建集群。

将分层集群结果mytree中的元素划分为集群,并返回一个包含每个元素被分配到的集群号的数组。

关键词论点:
  • nclusters:所需的集群数量。

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

执行k均值集群。

该函数对数据中的值执行k均值集群,并返回集群分配、最佳k均值集群解决方案的集群内距离和以及找到最佳解决方案的次数。

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

  • nclusters:聚类数(k-means中的“k”)。

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i,j] ==0,然后是数据 [i,j] 失踪了

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

  • 转置:-如果False:行已聚集; -如果True:列已聚集。

  • nPass:执行k均值集群算法的次数,每次都使用不同的(随机)初始条件。

  • method:指定如何找到聚类的中心:- method == 'a':算术平均值; - method == 'm ':中位数。

  • 地址:指定要使用的距离函数:- dist ==' e ':欧几里得距离;-dist ==':城市街区距离; -dist ==' c ':Pearson相关性;-dist ==' a ':相关性的绝对值; -dist =':绝对非中心相关性; - dist =' s ':Spearman的等级相关性;- dist ==' k ':肯德尔的tau。

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

返回值:
  • 丛生:数组,包含在npass运行中找到的最佳k均值聚类解决方案中每个项目被分配到的聚类的索引;

  • 错误:返回的k均值集群解决方案的群内距离和;

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

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

执行k-medoids集群。

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

关键词论点:
  • 距离:物品之间的距离矩阵。传递距离矩阵的方法有三种:1. 2D NumPy数组(其中仅访问数组的左下部分); 2.连续包含距离的1D NumPy数组; 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])]
    

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

  • nclusters:集群的数量(k-medoids中的“k”)

  • nbass:执行k-medoids集群算法的次数,每次使用不同的(随机)初始条件。

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

返回值:
  • 丛生:包含在nPass运行中找到的最佳k-medoids集群解决方案中将每个项分配到的集群索引的数组;请注意,集群的索引是作为集群的medoid的项的索引;

  • 错误:返回的k-medoids集群解决方案的群内距离和;

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

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

执行分层集群,并返回Tree对象。

该功能实现成对单个、完整、重心和平均链接分层聚集方法。

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i] [j] ==0,然后是数据 [i] [j] 失踪了

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

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

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

  • 方法:指定使用哪种联动方法:-方法==“s”:单个成对联动-方法==“m”:完整(最大)成对联动(默认)-方法==“c”:重心联动-方法==“a”:平均成对联动

  • 距离矩阵:项目之间的距离矩阵。传递距离矩阵的方法有三种:1. 2D NumPy数组(其中仅访问数组的左下部分); 2.连续包含距离的1D NumPy数组; 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之前将此数组保存在不同的变量中。

数据或距离矩阵都应该是无。如果Distancematrix为无,则根据参数数据中存储的值计算分层集群解决方案。如果数据为无,则根据距离矩阵计算分层集群解决方案。只能根据数据值而不能根据距离矩阵执行成对中心联动集群。成对单一、最大和平均链接聚集可以根据数据值或距离矩阵计算。

返回值:Treecluster返回一个描述分层集群结果的Tree对象。有关更多信息,请参阅Tree类的描述。

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

计算自组织地图。

该函数在矩形网格上实现自组织地图。

关键词论点:
  • 数据:包含数据值的nrows x nlines数组;

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i] [j] ==0,然后是数据 [i] [j] 失踪了

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

  • 转置:-如果False:行已聚集; -如果True:列已聚集。

  • nxgrid:矩形SOM地图的水平维度

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

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

  • niter:迭代次数

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

返回值:

  • clusterid:具有两列的数组,行数等于被聚类的项。阵列中的每一行都包含矩形SOM网格中项目指定到的单元格的x和y坐标。

  • celldata:具有维度的数组 [nxgrid, nygrid, number of columns] 如果行正在群集,或者 [nxgrid, nygrid, number of rows) if columns are being clustered. Each element [ix, iy] 该数组的1D载体包含SOM网格单元中具有坐标的集群重心的数据值 [ix, iy] .

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

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

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i, j] ==0,然后是数据 [i, j] 失踪了

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

  • index 1:1D数组,标识哪些项目属于第一个集群。如果集群仅包含一项,则index 1也可以被写为单个整数。

  • index 2:1D数组,标识哪些项目属于第二个集群。如果集群仅包含一项,则index 2也可以被写为单个整数。

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

  • 方法:指定如何定义两个集群之间的距离:-方法==' a ':两个集群的算术平均值之间的距离-方法==':两个集群的中位数之间的距离-方法=' s ':两个集群成员之间的最小成对距离-方法=':两个集群成员之间的最大成对距离-方法==' v ':两个集群成员之间成对距离的平均值

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

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

计算并返回每个集群的重心。

clustertcentroids例程计算集群中心,给出每个项目所属的集群。重心定义为每个维度所有项目的平均值或中位数。

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i, j] ==0,然后是数据 [i, j] 失踪了

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

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

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

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

返回值:
  • cdata:包含集群重心的2D阵列。如果转置为False,则cdata的维度为nclusters x n列。如果转置为True,则cdata的维度为nrows x nclusters。

  • cmarch:2D integers数组,描述cdata中缺少哪些项(如果有的话)。

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

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

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

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i, j] ==0,然后是数据 [i, j] 失踪了

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

  • 转置:如果为假:计算行之间的距离;

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

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

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

>>> 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.])]

它可以重写为::

distances = [array([], dtype=float64),
             array([ 16.]),
             array([ 64.,  16.]),
             array([  1.,   9.,  49.])]

这对应于距离矩阵::

[ 0., 16., 64.,  1.]
[16.,  0., 16.,  9.]
[64., 16.,  0., 49.]
[ 1.,  9., 49.,  0.]
Bio.Cluster.pca(data)

进行主成分分析。

关键词论点:
  • 数据:nrows x nlines数组,包含数据值。

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

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

基类:object

存储基因表达数据。

记录将基因表达数据和相关信息存储在数据文件中,遵循为Michael Thomen的集群/TreeView程序定义的文件格式。

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

  • 屏蔽:仅包含1和0的矩阵,表示哪些值存在(1)或缺失(0)。如果屏蔽的所有项都是一项(没有丢失数据),则屏蔽设置为无。

  • 基因ID:包含每个基因的唯一标识符的列表(例如,开放阅读器名称)

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

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

  • gorder:一个表示输出文件中基因的首选顺序的小数数组

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

  • eweight:计算距离时每个样本使用的权重

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

  • uniqid:在输入文件中代替UNiqID使用的字符串。

__init__(handle=None)

从文件手柄读取基因表达数据并返回Record。

该文件应采用为Michael Thomen的集群/TreeView程序定义的格式。

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

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

可用成对的单一、完整、重心和平均链接分层聚集方法。

关键词论点:
  • 转置:如果为假:行已聚集;

    if True:列被聚集。

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

  • 方法:指定使用哪种联动方法:-方法==“s”:单个成对联动-方法==“m”:完整(最大)成对联动(默认)-方法==“c”:重心联动-方法==“a”:平均成对联动

有关此方法返回的Tree对象的更多信息,请参阅Tree类的描述。

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

应用k均值或k中位数集群。

此方法返回一个tuple(clusterid,错误,nfound)。

关键词论点:
  • nclusters:集群数量(k均值中的“k”)

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

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

  • nPass:执行k均值集群算法的次数,每次都使用不同的(随机)初始条件。

  • 方法:指定如何找到集群的中心:-方法==' a ':算术平均值-方法=' m ':中位数

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

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

返回值:
  • 丛生:数组,包含在npass运行中发现的最佳k均值聚类解决方案中每个基因/样品被分配到的聚类的编号;

  • 错误:返回的k均值集群解决方案的群内距离和;

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

__firstlineno__ = 624
__static_attributes__ = ('data', 'eorder', 'eweight', 'expid', 'geneid', 'genename', 'gorder', 'gweight', 'mask', 'uniqid')
somcluster(transpose=False, nxgrid=2, nygrid=1, inittau=0.02, niter=1, dist='e')

在矩形网格上计算自组织地图。

somclock方法返回一个tuple(clusterid,celldata)。

关键词论点:
  • 转置:如果为假,则基因(行)被聚集;

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

  • nxgrid:矩形SOM地图的水平维度

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

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

  • niter:迭代次数

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

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

  • 细胞数据:如果基因正在聚集,则为维度(nxgrid、nygrid、样本数量)的数组,或者如果样本正在聚集,则为维度(nxgrid、nygrid、基因数量)的数组。每个项目 [ix, iy] 该阵列的1D载体包含SOM网格单元中具有坐标的集群重心的基因表达数据 [ix, iy] .

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

计算集群重心并返回一个tuple(cdata,cmass)。

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

关键词论点:
  • data:包含表达式数据的nrows x ncolumns数组

  • 屏蔽:nrows x nlines的整组数组,显示缺失哪些数据。如果屏蔽 [i, j] ==0,然后是数据 [i, j] 失踪了

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

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

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

  • 方法:指定如何计算重心:-方法==' a ':每个维度的算术平均值。(默认)-方法==“m”:每个维度的中位数。

返回值:
  • cdata:包含集群重心的2D阵列。如果转置为False,则cdata的维度为nclusters x n列。如果转置为True,则cdata的维度为nrows x nclusters。

  • cmarch:2D integers数组,描述cdata中缺少哪些项(如果有的话)。

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

计算两个集群之间的距离。

关键词论点:
  • index 1:识别哪些基因/样品属于第一聚类的1D阵列。如果簇只包含一个基因,那么index 1也可以写成一个整数。

  • index 2:识别哪些基因/样本属于第二个集群的1D阵列。如果该集群仅包含一个基因,那么index 2也可以写成单个整数。

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

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

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

  • 方法:指定如何定义两个集群之间的距离:-方法==' a ':两个集群的算术平均值之间的距离-方法==':两个集群的中位数之间的距离-方法=' s ':两个集群成员之间的最小成对距离-方法=':两个集群成员之间的最大成对距离-方法==' v ':两个集群成员之间成对距离的平均值

  • 转置:如果为假:考虑行集群;

    如果为True:考虑列集群。

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

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

关键词论点:
  • 调换:

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

  • 地址:指定要使用的距离函数:- dist ==':欧几里得距离- dist ==':城市街区距离- dist ==' c ':皮尔逊相关性-dist ==' a ':相关性的绝对值- dist =' u ':非中心相关性-dist =':绝对非中心相关性- dist =' s ':Spearman的等级相关性- dist ==' k ':肯德尔的tau

返回值:

距离矩阵作为包含基因表达数据之间距离矩阵的1D数组列表返回。各行中的列数等于行号。因此,第一行的长度为零。返回值的一个示例是:

矩阵= [[] ,

数组( [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均值集群结果,基因集群是一个包含ngenes整值的载体,描述给定基因属于哪个集群。该载体可以通过k集群计算。

  • expclusters:对于分层集群结果,expclusters是Treecluster方法返回的Tree对象。对于k均值集群结果,expclusters是一个包含nepps integer的载体,描述给定样本属于哪个集群。该载体可以通过k集群计算。

Bio.Cluster.read(handle)

从文件手柄读取基因表达数据并返回Record。

该文件应采用为Michael Thomen的集群/TreeView程序定义的文件格式。