我从一个 genbank 文件中提取了一个序列,该文件由具有 60 个碱基的单行字符串组成(末尾有一个 \n)。如何使用 perl 修改序列,以便使用 regex 而不是 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
每个单行字符串有 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;