匹配fasta文件中的标头并使用新名称命名

时间:2013-04-19 07:32:17

标签: perl header fasta

我有一个包含不同标题的fasta文件。

>Ar000001
>Ar000002
>Ar000003

等等..现在我想把名字改成像这样的东西

>Ar000001 => >Bra000001
>Ar000002 => >Bra000002
>Ar000003 => >Bra000003 

等等.. 我写了一个perl脚本来做到这一点,但它没有输出任何东西。我做错了吗。

open(INFILE, "test.fasta") or die "Error opening input file"; 
open(OUTFILE, ">", "test_out.fasta") or die "Error creating output file"; 

my $count = 1;
while (my @line = <INFILE>) 
{
    if (my $line[$count] =~ /^>/)
    {
        print OUTFILE ">Bra%.5d\n", $count;
        $count ++;
    }
}

除了更改fasta标题名称并输出到新文件之外,我如何在每个fasta标题下包含序列。 提前致谢.... 众议员

2 个答案:

答案 0 :(得分:1)

直接来自命令行

perl -pe's/^>Ar/>Bra/' test.fasta > test_out.fasta

答案 1 :(得分:0)

听起来这就是你真正需要做的事情:

open(my $INFILE, "<", "test.fasta") or die "Error opening input file: $!"; 
open(my $OUTFILE, ">", "test_out.fasta") or die "Error creating output file: $!"; 

while (my $line = <$INFILE>) 
{
    $line =~ s/^>Ar/>Bra/;
    print $OUTFILE $line;
}

即。将所有出现的“^&gt; Ar”替换为“&gt; Bra”,并将文件中的其他内容保持不变。