2
大規模な50 MBのDNA配列と15文字程度の小さなものを与えたPythonプログラムを書く必要があります。これは15文字すべての配列のリストを返します。 1つは与えられただけでなく、大きなもののどこにあるのか。Pythonで文字列検索を最適化する
私の現在のアプローチは、最初にすべてのサブシーケンスを取得することです。その後、
def get_subsequences_of_size(size, data):
sequences = {}
i = 0
while(i+size <= len(data)):
sequence = data[i:i+size]
if sequence not in sequences:
sequences[sequence] = data.count(sequence)
i += 1
return sequences
と(私はポジションを得るために忘れてしまった)問題が尋ねた内容に従って辞書のリストにそれらをパック:
def find_similar_sequences(seq, data):
similar_sequences = {}
sequences = get_subsequences_of_size(len(seq), data)
for sequence in sequences.keys():
diffs, muts = calculate_similarity(seq,sequence)
if diffs not in similar_sequences:
similar_sequences[diffs] = [{"Sequence": sequence, "Mutations": muts}]
else:
similar_sequences[diffs].append({"Sequence": sequence, "Mutations": muts})
#similar_sequences[sequence] = {"Similarity": (len(sequence)-diffs), "Differences": diffs, "Mutatations": muts}
return similar_sequences
私の問題は、この実行方法が遅すぎることです。 50MBの入力では、処理を終了するのに30分以上かかります。
あなたの問題は何か説明してください。 –
男、私はそれを何度も編集しなければならなかったので、私はそれを忘れてしまったに違いありません。ごめんなさい! 私はそれを追加するために投稿を編集しましたが、問題はそれが私にとっては遅すぎるということです。 50MBの入力では、実行には30分以上かかります。 – user8623714
おそらく、あなたの科学的な質問を言い換えてみてください.15人のk-mersをすべて探すのではなく、完璧なヒット、1つの突然変異、2つの突然変異などを探してみてください。http://khmer.readthedocs.io /en/v0.6.1-0/ktable.html –