0
入力k =ある数とDNA = dnaの断片のリストを出力すると、出力はk-merを与えるはずです文字列の配列における最小ハミング距離を持つサイズkの文字列です。 3つの関数があります:1. k-merとフラグメントdnaの異なるウィンドウ間のハミング距離を計算し、最も低いスコアを持つウィンドウのハミング距離を返します。2.すべての可能なk-mersのサイズを生成する関数k、および3.サイズkのすべてのウィンドウおよび可能なすべてのk-merについて繰り返すもの。残念ながら、私のプログラムは出力AAAを与えていますが、これは間違っています。論理エラーは、私が正しい結果を得るために以前に使ったので、組み合わせ(k)やhammingDistanceにないことが分かります。dnaのリストのハミング距離が最小となるk-merを見つける
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