2011-10-05 9 views
2

特定の制約でパターン検索を検索しようとしています:ゲノム配列のファストファイルから特定のパターンを検索

入力パターンをstdから入力します。入力

R、WとYはパターン内のどこにでもあり、検索する前に以下の値に置き換えなければならないので、パターンに対して可能なすべての組み合わせを順番に検索します。

R = C又はG

W = AまたはT

Y = A又はG

[例えば、パターンはAWTYCRであってもよく、配列がATCGATGAT ....であってもよい]

開始位置を見つける必要があります

また、1つの不一致が許されます。

つまり、パターンの1文字がシーケンスと一致していても一致していなくてもかまいません。

出力:

は、表形式でファイルに書き込まれるべきである:

例えば、配列ATCGATにATCR(R上述のように= C又はG)を求める

をもたらします

S.no位置

1 ATCG the_matched_pa​​ttern

2 1 ATCC

一致と不一致が

+0

が得? – Bruce

+0

"one mismatch is allowed"という制約は、それ自身では正規表現には難しいでしょう。一連の正規表現を生成することができます。正規表現のそれぞれには、文字のいずれかが許可されています。 – frezik

答えて

1

次の簡単なコードでは、出発点である(同じ位置または異なる位置に、すなわち)任意の位置に来るかもしれません。ファイルからパターンを読み込み、Fastaファイルからシーケンスを読み込むことは簡単に一般化できます。ユニークな結果など

sub trans_pat { 
    my $pat=shift; 
    $pat=~s/R/\[CG\]/g; 
    $pat=~s/W/\[AT\]/g; 
    $pat=~s/Y/\[AG\]/g; 
    return $pat; 
} 
sub find_pat { 
    my ($pat,$seq) = (@_); 
    print "Looking for pattern $pat\n"; 
    while ($seq=~m/$pat/g) { 
     print "... match at $-[0]: $&\n"; 
    }; 
} 

my $read_pat="ATCR"; 
my $seq="ATCGATATCGAT"; 

# Looking for a perfect match 
find_pat (trans_pat($read_pat),$seq); 

# Allowing for a single mismatch 
foreach $i (1..length $read_pat) { 
    my $mis_pat = $read_pat; 
    substr($mis_pat,$i-1,1) = "."; 
    find_pat (trans_pat($mis_pat),$seq); 
} 

サンプル実装:

perl -e 'sub trans {$pat=shift;$pat=~s/R/\[CG\]/g;return $pat};$read_pat="ATCR";$seq="ATCGATATCGAT";$pat=trans($read_pat);print "Looking for pattern $pat\n";while ($seq=~m/$pat/g) {print "... match at $-[0]: $&\n"};foreach $i (1..length $read_pat) {$mis_pat = $read_pat;substr($mis_pat,$i-1,1)=".";$pat=trans($mis_pat);print "Looking for pattern $pat\n"; while ($seq=~m/$pat/g) {print "... match at $-[0]: $&\n"}}' 

は、あなたがこれまでに試みられてきた何

Looking for pattern ATC[CG] 
... match at 0: ATCG 
... match at 6: ATCG 
Looking for pattern .TC[CG] 
... match at 0: ATCG 
... match at 6: ATCG 
Looking for pattern A.C[CG] 
... match at 0: ATCG 
... match at 6: ATCG 
Looking for pattern AT.[CG] 
... match at 0: ATCG 
... match at 6: ATCG 
Looking for pattern ATC. 
... match at 0: ATCG 
... match at 6: ATCG 
関連する問題