用perl修改序列名,但保留序列信息并输出。

>HWI-ST667:190:C0TPFACXX:1:1101:2885:1985 1:N:0:GATCAG
TCGGATAGAGCTCCAAATCTATCT
>HWI-ST667:190:C0TPFACXX:1:1101:3058:1999 1:N:0:GATCAG
CAATATCAACTGCTGCAACTCTCT
>HWI-ST667:190:C0TPFACXX:1:1101:3372:1992 1:N:0:GATCAG
TCAAAGGTTGAAGAGAATGAAATTTCT
>HWI-ST667:190:C0TPFACXX:1:1101:7190:1996 1:N:0:GATCAG
AAAAGGGATGCGAGTTTTGAAACTTCT
>HWI-ST667:190:C0TPFACXX:1:1101:7768:1991 1:N:0:GATCAG
GATGGTGAACTATCT
如何利用perl编程将上面多个序列(每个序列有两行,第一行是序列名称,第二行是序列本身)改成如下格式?也就是把序列名按顺序编号?谢谢!
>seq_1
TCGGATAGAGCTCCAAATCTATCT
>seq_2
CAATATCAACTGCTGCAACTCTCT
>seq_3
TCAAAGGTTGAAGAGAATGAAATTTCT
>seq_4
AAAAGGGATGCGAGTTTTGAAACTTCT
>seq_5
GATGGTGAACTATCT

#!/usr/bin/perl -w
use strict;
die "perl $0 <Input fa>\n" unless(@ARGV == 1);
open IN,$ARGV[0];
open OUT,">Output.fa";
my $count = 1;
while(<IN>){
if($_=~/^>/){
print ">seq_$count\n";
print OUT ">seq_$count\n";
$count++;
}
else
{
print $_;
print OUT $_;
}
}
close IN;
close OUT;

将上面的脚本存为run.pl 假设你的输入序列文件为a.fa, 运行的时候在命令行输入:
perl run.pl a.fa 即可。
输出的结果存放在Output.fa中,并且同时在屏幕回显出来。

希望我的回答已经解决了你的问题。
温馨提示:答案为网友推荐,仅供参考
相似回答