2014-11-28 3 views
1

두 개의 문자가 첫 번째 시퀀스와 두 번째 품질을가집니다. 두 번째 품질은 첫 번째 시퀀스의 품질을 아래와 같이 보여줍니다. I는 다음과 같이 제 2 정보를 확장 그래서 Perl 문자열에 특정 문자를 삽입하십시오.

1. ACT-GACTG-ACTG 
2. KKKKKKKKKKKK 

이하 (공간)뿐

1. ACTGACTGACTG 
2. KKKKKKKKKKKK 

(정렬) 제 1 시퀀스를 처리 한 후 그것을

1. ACT-GACTG-ACTG 
2. KKK KKKKK KKKK 

이미 한 변경됩니다 for 루프를 사용하여 첫 번째 문자를 확인하고 두 번째 문자를위한 공간을 만듭니다.

쉽게 만들 수있는 방법은 무엇입니까?

감사합니다.

+1

어떻게 첫 번째 문자열로 대시를 추가 않았다을? – choroba

+0

그건 생물 정보학 알고리즘 정렬 된 시퀀스, 내가 정렬 할 수없는 두 번째 정보는 첫 번째 문자열을 따라야합니다. –

답변

3

사용 Positional Informationsubstr :

use strict; 
use warnings; 

my $str1 = 'ACT-GACTG-ACTG'; 
my $str2 = 'KKKKKKKKKKKK'; 

while ($str1 =~ /\W/g) { 
    substr $str2, $-[0], 0, ' '; 
} 

print "$str1\n"; 
print "$str2\n"; 

출력은 :

ACT-GACTG-ACTG 
KKK KKKKK KKKK 
+0

감사합니다! –

1

한 가지 방법은 품질에 당신이 순서에 대시를 추가 할 때마다 공백을 추가하는 것입니다.

또는 당신이 순서를 통해 루프 및 대시의 위치를 ​​확인하고, 그 기반으로 품질에 공백을 삽입 할 수 있습니다

#!/usr/bin/perl 
use strict; 
use warnings; 

my $sequence = 'ACT-GACTG-ACTG'; 
my $quality = 'KKKKKKKKKKKK'; 

my $pos = 0; 
while (0 <= ($pos = index $sequence, '-', $pos)) { 
    substr $quality, $pos++, 0, ' '; 
} 

print "$quality\n"; 
관련 문제