在dn列表中寻找导致最小汉明距离的kmer

2024-09-26 18:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,给定一个输入k=some number和DNA=DNA片段列表,输出应该给出一个大小为k的k-mer,它在字符串数组中具有最小的汉明距离。我有三个功能,1。计算k-mer和片段dna的不同窗口之间的汉明距离,并返回得分最低的窗口的汉明距离,2。一个产生所有可能的k-mers大小为k,和3。遍历所有大小为k的窗口和每个可能的k-mer的窗口。不幸的是,我的程序给我的输出AAA,这是不正确的。我知道我的逻辑错误不在组合(k)中,也不在汉明距离中,因为我以前用过它们来得到正确的结果。你知道吗

import itertools
def combination(k):
    bases=['A','T','G','C']
    combo=[''.join(p) for p in itertools.product(bases, repeat=k)]
    return combo

def hammingDistance(pattern, seq):
        if pattern == seq:
               return 0
        else:
                dist=0
                for i in range(len(seq)):
                        if pattern[i] != seq[i]:
                                dist += 1
        return dist

def median_string(k, DNA):
    k_mers = combination(k)
    distance = 0 
    temp = 1000000000000000000
    for string in DNA:
        hamming = 1000000000000000000
        c = 0
        for k_mer in k_mers:
            for subset in string[c: len(string) - k]:
                if hamming > hammingDistance(k_mer, string[c : c+k]):
                    hamming = hammingDistance(k_mer, string[c : c+k])
                c += 1
            distance += hamming
            if distance < temp:
                temp = distance
                best_pattern = k_mer
            distance = 0
    return best_pattern

Tags: in距离forstringreturnifdefseq
1条回答
网友
1楼 · 发布于 2024-09-26 18:20:45

结果只是最后一个条件中的缩进错误。你知道吗

def median_string(k, DNA):
    k_mers = combination(k)
    distance = 0
    temp = 1000000000000000000
    for k_mer in k_mers:
        for string in DNA:
            hamming = 1000000000000000000
            c = 0
            for subset in string[c: len(string) - k]:
                if hamming > hammingDistance(k_mer, string[c : c+k]):
                    hamming = hammingDistance(k_mer, string[c : c+k])
                c += 1
            distance += hamming
        if distance < temp:
                temp = distance
                best_pattern=k_mer
        distance=0
    return best_pattern

相关问题 更多 >

    热门问题