私はperlと正規表現を使用して、を使用して最小サイズ45塩基のORF(オープンリーディングフレーム)を見つけています。基本的には、次のことを意味します。文字ATGC(スペースや新しい行は含まない)のみで構成される文字列のサブストリングを検索します。
- 「ATG」で始まる
- 「TAG」または「TAA」または「TGA」で終わる、
- 少なくとも39文字の長さです
- 3で割り切れる
私の最初のコードは次のとおりです。
$CDSString = "ATGCACACACACACACACACACACACACACACACACACACACACACACACACACACATGA";
if($CDSString =~ m/(ATG.{45,}(TAG|TAA|TGA))/)
{
my $CDSCurrent = $1;
if ((length($CDSCurrent) % 3) == 0)
{
# do something
}
}
これは問題なく動作しますが、もっと良い方法があるのではないかと思いました。だから私は試しました:
$CDSString = "ATGCACACACACACACACACACACACACACACACACACACACACACACACACACACATGA";
if ($CDSString =~ m/ATG(...){13,}(TAG|TAA|TGA)/ )
{
# do something
}
しかし、何らかの理由でその上の文字列と一致せず、その理由がわかりません。誰かがそれを理解できますか?前もって感謝します。