2017-07-12 13 views
0

私はパターンを検索したいと思う曖昧な塩基のコンセンサス配列を持っています。位置は3あいまいな塩基でコンセンサス配列を検索する

Seq="ATGARTTTTTT" -- R is A or G 
Pattern="AGT" 

する必要があります起動し、私はそれを行うことができますSeqUtilsにnt_searchと呼ばれるツールを見つけましたが、シナリオ#2に示すように、それは私の試合の座標を与えるものではありません。以下にその問題を示すためのテストをいくつか示します。

シナリオ#1:いいえあいまいな塩基

from Bio import SeqUtils 
pattern="TAA" 
Seq="ATGTAAAGGAGG" 
m=SeqUtils.nt_search(Seq,pattern) 
print m 
['ACG', 3] 

シナリオ#2:配列における曖昧塩基

pattern="AGT" 
Seq="ATGARTTTTTT" 
m=SeqUtils.nt_search(Seq,pattern) 
print m 
['AGT'] 

はシナリオ#3:パターン

pattern="ART" 
Seq="ATGAGTTTTTT" 
m=SeqUtils.nt_search(Seq,pattern) 
print m 
['A[AG]T', 3] 

におけるあいまい塩基ソースnt_searchのコードはhereです。この例では、開始位置を取得するためにそれを微調整する方法がわかりません。

答えて

1

nt_searchのヘルプテキストはもっとはっきりしていますが、使用される正規表現と位置どんな試合でも例えばだから、

>>> from Bio.SeqUtils import nt_search 
>>> print(nt_search("ATGAGTTTTTT", "ART")) 
['A[AG]T', 3] 
>>> print(nt_search("ATGAGTTTTTTAGT", "ART")) 
['A[AG]T', 3, 11] 
>>> print(nt_search("ATGAGTTTTTTAGTTTTAAT", "ART")) 
['A[AG]T', 3, 11, 17] 

あなたが唯一の整数として最初の試合をしたい場合、あなたはリストから要素1を引き出す必要があります。

>>> from Bio.SeqUtils import nt_search 
>>> print(nt_search("ATGAGTTTTTTAGT", "ART")[0]) 
A[AG]T 
>>> print(nt_search("ATGAGTTTTTTAGT", "ART")[1]) 
3 

要素ゼロを使用する正規表現になります。

更新:あいまいなシーケンスに対する検索は(現在)サポートされていません(問題のシナリオ2)。一部では分かりやすい実装を定義するのが難しいと思います。例えば"NNN"のように、"AAA""ART""NNN"などの任意の3文字のクエリを使用すると、一致すると見なされます。

+0

多くの方にお返事いただきありがとうございます。そのシナリオでは、完全に動作します。しかし、探しているパターンにあいまいな塩基が含まれているかどうかにかかわらず、私たちが検索している配列にあいまいな塩基が含まれている場合は、機能しません。私の質問でシナリオ#2に示されています。もう一度ありがとう:) –

+0

正しいですが、 '' nt_search''関数はあいまいなシーケンスに対する検索を(現在)サポートしていません。 – peterjc

+1

Biopython(またはPython)でこれを行う方法について、より一般的な質問をしてください。おそらく、Biopythonのモチーフモジュールが適切でしょう。 – peterjc

関連する問題