私の入力ファイルには、この方法で次の情報が含まれています
>V063O:34:49 length=314
GAGATGACTCCCAGGGGGGGGGGATGAAACCCAGACCTGGCACCATGGGATCAGCCATTC
CATCTTGACCAAAGGGGGGGGGGAAAGAAAGTGTAATTAATAAAGTACAGTGGCAGAGAG
AGTTCAAATAGTTGCGAGTCTACTCTGGAGGTTGCTGTTGTGCTAAGCTTCAGGTTATAC
CTTGACCCTACCATACCCCCCAAACCAGGACAATTCCAAGCCCAAATCCGTAAAAGAAAC
ACCTAAGGCAATATATAAGATTCTACAGGTCATACATCTAGACTACTTACTAACAATCCG
TAACAACCTCAGAT
>V063O:35:44 length=104
GCTCTTTTTTTTTTTAGCAAAAACCGTTAGCCAATCCCTACCCAACCCCTGGCACCTGGG
GGGGGGTGCCCGAGCGCCGGTGGGAGAACGGAGGAAACGCACTC
シーケンス (ID および length= の下のデータの文字列) は、次の正規表現の対象となります
#Search sequence for a combination of 2 values of ACGT that are repeated at least 10 times
my $regex1 = qr/( ([ACGT]{2}) \2{9,} )/x;
#Search sequence for a combination of 3 values of ACGT that are repeated at least 7 times
my $regex2 = qr/( ([ACGT]{3}) \2{6,} )/x;
#Search sequence for a combination of 4 values of ACGT that are repeated at least 7 times
my $regex3 = qr/( ([ACGT]{4}) \2{6,} )/x;
for my $regex ($regex1, $regex2, $regex3) {
next unless $seq1 =~ $regex;
printf "Matched %s exactly %d times\n", $2, length($1)/length($2);
printf "Length of sequence: $number \n";
}
これは現在、単一のシーケンスのみを含むサンプル テキスト ファイルの結果をコマンド ラインに返します。
ファイル内にある次の要素と上記の正規表現を、テキスト ファイル内のシーケンスごとに 1 つのファイルに出力できるようにする必要があります (したがって、テキスト ファイル内にあるすべてのシーケンスに対して 1 つのファイル)。
ID (example: V0630:34:49) , The elements that are repeating (example; GCT), the number of repeats (example; 13), and the length of the entire sequence.
条件は、BioPerl がオプションではないこと (ユーザーは Perl に精通していないため、モジュールをダウンロードせずにエンド ユーザーができるだけ簡単に使用できるようにするためのものです)、および入力ファイルが本質的に非常に大きい (300MB 以上) ことです。 )。
この問題を処理する最善の方法は何でしょうか?