biopython聚类的简单例子
Simple example of biopython clustering
我想对如何使用 biopython 进行基因聚类有一些基本的了解。
假设我有我想要分组的基因。如何将它们提供给算法,以及如何给出集群大小和数量所依赖的截止点?
我尝试过直接的方法:
from Bio.Cluster import kcluster
list1 = [
'ADHAMKCAIROSURBANDJVUGLOBALIZATIONANDURBANFANTASIESPLA',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB'
]
list2 = [Seq(gen, IUPAC.extended_protein) for gen in list1]
clusterid, error, nfound = kcluster(list2)
但它给我带来了一个错误:
Traceback (most recent call last):
File "./test.py", line 9, in <module>
clusterid, error, nfound = kcluster(list2)
TypeError: data cannot be converted to needed array.
kcluster
function takes a data matrix as input and not Seq
个实例。
您需要将序列转换为矩阵并将其提供给 kcluster
函数。
将数据转换为仅包含数字元素的矩阵的一种方法是使用 numpy.fromstring
函数。它基本上将序列中的每个字母翻译成对应的 ASCII 码。
这会创建一个编码序列的二维数组,kcluster
函数可以识别该序列并将其用于对序列进行聚类。
>>> from Bio.Cluster import kcluster
>>> import numpy as np
>>> sequences = [
... 'ADHAMKCAIROSURBANDJVUGLOBALIZATIONANDURBANFANTASIESPLA',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB'
... ]
>>> matrix = np.asarray([np.fromstring(s, dtype=np.uint8) for s in sequences])
>>> clusterid, error, nfound = kcluster(matrix)
>>> print(clusterid)
[1, 0, 0, 0]
我想对如何使用 biopython 进行基因聚类有一些基本的了解。
假设我有我想要分组的基因。如何将它们提供给算法,以及如何给出集群大小和数量所依赖的截止点?
我尝试过直接的方法:
from Bio.Cluster import kcluster
list1 = [
'ADHAMKCAIROSURBANDJVUGLOBALIZATIONANDURBANFANTASIESPLA',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB'
]
list2 = [Seq(gen, IUPAC.extended_protein) for gen in list1]
clusterid, error, nfound = kcluster(list2)
但它给我带来了一个错误:
Traceback (most recent call last):
File "./test.py", line 9, in <module>
clusterid, error, nfound = kcluster(list2)
TypeError: data cannot be converted to needed array.
kcluster
function takes a data matrix as input and not Seq
个实例。
您需要将序列转换为矩阵并将其提供给 kcluster
函数。
将数据转换为仅包含数字元素的矩阵的一种方法是使用 numpy.fromstring
函数。它基本上将序列中的每个字母翻译成对应的 ASCII 码。
这会创建一个编码序列的二维数组,kcluster
函数可以识别该序列并将其用于对序列进行聚类。
>>> from Bio.Cluster import kcluster
>>> import numpy as np
>>> sequences = [
... 'ADHAMKCAIROSURBANDJVUGLOBALIZATIONANDURBANFANTASIESPLA',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB',
... 'AGGESTAMKTHEARABSTATEANDNEOLIBERALGLOBALIZATIONTHEARAB'
... ]
>>> matrix = np.asarray([np.fromstring(s, dtype=np.uint8) for s in sequences])
>>> clusterid, error, nfound = kcluster(matrix)
>>> print(clusterid)
[1, 0, 0, 0]