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]