60 塩基 (末尾に \n がある) の単一行の文字列で構成される genbank ファイルからシーケンスを抽出しました。perl を使用してシーケンスを変更し、bioperl ではなく正規表現を使用して各行に 120 塩基を出力する方法。元の形式:
1 agatggcggc gctgaggggt cttgggggct ctaggccggc cacctactgg tttgcagcgg
61 agacgacgca tggggcctgc gcaataggag tacgctgcct gggaggcgtg actagaagcg
121 gaagtagttg tgggcgcctt tgcaaccgcc tgggacgccg ccgagtggtc tgtgcaggtt
181 cgcgggtcgc tggcgggggt cgtgagggag tgcgccggga gcggagatat ggagggagat
241 ggttcagacc cagagcctcc agatgccggg gaggacagca agtccgagaa tggggagaat
301 gcgcccatct actgcatctg ccgcaaaccg gacatcaact gcttcatgat cgggtgtgac
361 aactgcaatg agtggttcca tggggactgc atccggatca ctgagaagat ggccaaggcc
421 atccgggagt ggtactgtcg ggagtgcaga gagaaagacc ccaagctaga gattcgctat
481 cggcacaaga agtcacggga gcgggatggc aatgagcggg acagcagtga gccccgggat
私はそれらを60文字の長さの文字列にすることしかできませんでした。それらを120文字の長さにする方法をまだ見つけようとしています。
my @lines= <$FH_IN>;
foreach my $line (@lines) {
if ($line=~ m/(^\s*\d+\s)[acgt]{10}\s/) {
$line=~ s/$1//;
$line=~ s/ //g;
print $line;
}
}
入力例:
agatggcggcgctgaggggtcttgggggctctaggccggccacctactggtttgcagcgg
agacgacgcatggggcctgcgcaataggagtacgctgcctgggaggcgtgactagaagcg
gaagtagttgtgggcgcctttgcaaccgcctgggacgccgccgagtggtctgtgcaggtt
cgcgggtcgctggcgggggtcgtgagggagtgcgccgggagcggagatatggagggagat
ggttcagacccagagcctccagatgccggggaggacagcaagtccgagaatggggagaat
gcgcccatctactgcatctgccgcaaaccggacatcaactgcttcatgatcgggtgtgac
aactgcaatgagtggttccatggggactgcatccggatcactgagaagatggccaaggcc
atccgggagtggtactgtcgggagtgcagagagaaagaccccaagctagagattcgctat
これは、1 つの線ストリングごとに 60 塩基を持ちます。
更新 (まだ 120 塩基長の seq 行を提供していません):
my @seq_60;
foreach my $line (@lines) {
if ($line=~ m/(^\s*\d+\s)[acgt]{10}\s/) {
$line=~ s/$1//;
$line=~ s/ //g;
push (@seq_60, $line);
}
}
my @output;
for (my $pos= 0; $pos< @seq_60; $pos+= 2) {
push (@output, $seq_60[$pos] . $seq_60[$pos+1]);
}
print @output;