補足データリンク検索方法:限りhttps://pan.baidu.com/s/1sllFLAdが 私は、ゲノムの文字列を所有し、効率的に同じ部分
各文字列の長さは、23です:
- 候補:https://pan.baidu.com/s/1nvGWbrV
- Bg_dbをデータは大きすぎるので、私は1theの5分の1を渡すだけで、コードを貼り付けることができる速く、兄がそれを読んでいただき、ありがとう!
ここで正式な質問です:
私は今、2つの文字列の配列を持って、暫定的に
Candidates
とBg_db
と呼ばれるが、それらのすべては、長さ20の短い文字列で、各文字列は次の4つの中の文字が含まれています:A、T 、C、G(!右のゲノム配列です!):Candidates = [ 'GGGAGCAGGCAAGGACTCTG', 'GCTCGGGCTTGTCCACAGGA', '...', # Be you see, these fragments of human genes in fact ] Bg_db = [ 'CTGCTGACGGGTGACACCCA', 'AGGAACTGGTGCTTGATGGC', '...', # This more, there are about one billion ]
私の仕事は、例えば、レコード内のすべての以下
をあなたはすぐに見つけた場合Bg_db
4違い、見つけるために、各候補の候補にある:私の問題は、次のとおりです。すべてのレコードの以下の4の違いと
Bg_db
内のすべての候補者、もし一例として、そして暴力的トラバーサル、パイソンの使用:def align (candidate, record_from_bg_db): Mismatches = 0 For i in range (20): If candidate [i]! = Record_from_bg_db [i]: Mismatches + = 1 If mismatches> = 4: Return False Return True Candidate = 'GGGAGCAGGCAAGGACTCTG' Record_from_bg_db = 'CTGCTGACGGGTGACACCCA' Align(candidate, record_from_bg_db) # 1.24 microseconds or so # total time: 10000000 * 1000000000 * 1.24/1000/1000/60/60/24/365 # = 393 # 1 million candidates, 1 billion bg_db records # Takes about 393 years # Completely unbearable ah
私の考えは、
Bg_db
は非常に順序付けられた文字列(各文字の長さはわずか4かもしれません)であり、候補者がアドバイスを求めるBg_db
をすばやく比較できるアルゴリズムはありません。
大文字が間違っていて、いくつかのタイプミスがある場合は、コードを入力してください。しかし、私は現在の 'align'のアプローチが概念的にうまくいっていると思います。スピードを上げたい場合は、Pythonから出発する必要があるかもしれません。 –
あなたの答えに心から感謝します。私は試してみます。 – luyishisi