1

我的 multi-fasta 存档格式如下:

>miRNA65 dvex2345
CGATGCTAGATGCTATGACAACGATGCCTCG-G
>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG

我是 Perl 的新手,我需要搜索等号“> 行”并连接下一行以加入序列。

我期待上述文件的以下输出:

>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG.CGATGCTAGATGCTATGACAACGATGCCTCG-G

完成这项工作的最佳方法是什么?

4

1 回答 1

3
%hash;
while (<DATA>) {
        if (/^>(miRNA\d+)/) {
                $hash{$1}[0] = $_;
                chomp($n = <DATA>);
                unshift @{$hash{$1}[1]}, $n;
        }
}

for $k (sort keys %hash) {
        print $hash{$k}[0], join(',', @{$hash{$k}[1]}), "\n";
}
__DATA__
>miRNA65 dvex2345
CGATGCTAGATGCTATGACAACGATGCCTCG-G
>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
于 2012-08-06T03:40:13.710 回答