使用汉明距离将DNA序列列表分组为相似的序列(Python)?

时间:2018-02-22 18:14:25

标签: python string string-matching levenshtein-distance hamming-distance

我从FASTQ文件中提取了一系列DNA序列,目前它已存储在列表中。

sequences = ['ATCT','ATTT','ACGG','ACCG','ACGT','AGGT','ATGC','ATCC','AGTT']

我想将序列聚类到元组列表中,以便元组中的每个序列彼此相似。

我最初考虑使用汉明距离(下面显示的代码)将类似的序列聚类在一起,但如果我正确理解汉明距离,我将不得不使用其中一个序列作为参考,将汉明距离与另一个序列进行比较并依赖于我的参考序列是什么,我最终会得到不同的聚类(例如:如果我使用'ACGG'作为我的参考序列并将其与列表中的其他序列进行比较,'ACCG'和'ACGT'将与'ACGG'聚类如果我选择汉明距离为1作为我的标准。相反,如果我使用'ACCG'作为我的参考序列,'ACGG'会聚集在它而不是'ACGT',因为'ACGT'的汉明距离为2用'ACCG'。)

def hamming_dist(sequence1, sequence2):
assert len(sequence1) == len(sequence2)
return sum(sequence1 !=sequence2 for sequence1,sequence2 in itertools.izip(sequence1,sequence2))

由于使用汉明距离的缺点,我考虑使用Levenshtein比率(来自Levenshtein模块)或Fuzzywuzzy比率(来自Fuzzywuzzy模块)来聚类序列。

每种方法的优点/缺点是什么?如何设置我的代码以将相似的序列聚类在一起?

0 个答案:

没有答案