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程序定义的文件格式。