2012-08-06 4 views
1

Мой архив мульти-FASTA в этом формате:мне нужно найти шаблон в строке заголовка моего файла и присоединяет следующую строку с Perl

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

Я новичок в Perl, и мне нужно обыскивать equals '> lines' и объединить следующую строку, чтобы присоединиться к последовательности.

Я ожидаю, что следующий вывод для указанного выше файла:

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

Что такое лучший способ получить это сделать?

ответ

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 
+0

Большое спасибо! отличное решение. –