2

Perl を使用して、ヌクレオチドのストリング (AGCT) を検索して、少なくとも 7 回連続して繰り返される 3 つ以下のヌクレオチドのパターンを探します。ファイルへの出力と合計数のために、その組み合わせも保存する必要があります。

これらの 3 つのヌクレオチドのパターンは、可能な組み合わせは 64 しかありませんが、どれが繰り返しの組み合わせになるかがわからないという意味で不明です。

これをどのように行うかについて、頭の中で2つの考えがあります。

可能な組み合わせのリストを作成し、カウントを生成しながらそれをチェックします。3 つのヌクレオチドごとに一致が生成されるため、これは実行可能ではないようです。それでも、連続マッチングの問題は解決しません。

または最初の 3 つのヌクレオチドを次の 3 つと照合し、一致する場合は次の 3 つをチェックします。一致しない場合は、リーディング フレームを文字列の 2 番目のヌクレオチドにシフトし、検索を再試行します。

4

1 に答える 1

3

この正規表現はトリックを行う必要があります:

/( ([ACGT]{3}) \2{6,} )/x

ACGTの3文字を一致させてから、キャプチャ$2を少なくともさらに6回繰り返します。一致した文字列全体が含まれ$1、実際のグループの3倍の長さになります$n = length($1)/3

テスト:

my $regex = qr/( ([ACGT]{3}) \2{6,} )/x;
"TACGACGACGACGACGACGACGACGT" =~ $regex;
printf "Matched %s exactly %d times\n", $2, length($1)/3;

出力:

Matched ACG exactly 8 times

いいね。

于 2013-02-21T20:11:56.387 に答える