0

Python 2.7 と正規表現モジュールを使用しています。この式を使用して、長い DNA シーケンス内の短いシーケンスを見つけます。

output = regex.findall(r'(?:'+probe+'){s<'+str(int(mismatches)+1)+'}', sequence, regex.BESTMATCH)

パラメータは次のとおりです。

  • プローブ : ゲノムで探す短い文字列
  • ゲノム: 長い文字列
  • ミスマッチ : ゲノムからのプローブ/スニペット間で許可する差異の数。

ゲノム内の正規表現に一致するすべてのシーケンスの位置を取得する方法はありますか? このスクリプトは重複する一致を見つけますか? それはかなりうまくいきますが、それから私は試してみることにしました:

probe = "TTGACAT" 
genome = "TTGACATTGACATATAAT" 
mismatches = 0

私が得た:

['TTGACAT']

パラメータは同じだが不一致 = 10

私が得た:

['TTGACAT','GACATAT']

したがって、スクリプトが 'TTGACAT' を 2 回目の発生と重複するために 1 回だけ検出するのか、それとも実際に 'TTGACAT' を 2 回検出して結果を 1 回だけ表示するのかはわかりません...

ありがとう

4

1 に答える 1

1

これは、2 番目の発生と重複するためです。

すべての重複する結果が必要な場合は、重複フラグを使用して同じパターンを使用する必要があります。

output = regex.findall(r'(?:'+probe+'){s<'+str(int(mismatches)+1)+'}', sequence, regex.BESTMATCH, overlapped=True)

シーケンス位置を知りたい場合:

for m in regex.finditer(r'(?:'+probe+'){s<'+str(mismatches+1)+'}', sequence, regex.BESTMATCH, overlapped=True):
    print '%d: %s' % (m.start(), m.group())

余談ですが、結果が重なる限界

これらの 3 つのパラメーターを使用する場合:

probe = "ACTG.*ACTG"
sequence = "ACTGTTGACATTGAACTGCATATAATACTG"
mismatches = 0

3 つではなく、 2 つの結果しか見つかりません['ACTGTTGACATTGAACTGCATATAATACTG', 'ACTGCATATAATACTG']。2 つの結果が文字列内の同じ位置から開始できないためです。

于 2014-03-01T16:07:11.960 に答える