나는이 두 개의 동일한 길이의 문자열을 비교해야합니다. 오버랩베이스 (.)와 내부 갭 (*)을 찾고 싶습니다. 중복두 개의 문자열에서 기본 겹침 및 내부 갭 찾기
------ACTAAAAATACAAAAA--TTAGCCAGGCGTGGTGGCAC
-----TACTAAAAATACAAAAAAATTAGCCAGGTGTGGTGG---
................**.................
번호 = 내가 중복의 수를 찾는 아무런 문제가 없을 내부 격차 = 2
의 33 번호 : 아래는 예입니다. 하지만 문제가 내부 발견. 아래는 현재 가지고있는 코드입니다. 그것은 끔찍하게 느립니다. 원칙적으로 그러한 수백만 쌍을 계산해야합니다.
#!/usr/bin/perl -w
my $s1 = "------ACTAAAAATACAAAAA--TTAGCCAGGCGTGGTGGCAC";
my $s2 = "-----TACTAAAAATACAAAAAAATTAGCCAGGTGTGGTGG---";
print "$s1\n";
print "$s2\n";
my %base = ("A" => 1, "T" => 1, "C" => 1, "G" => 1);
my $ovlp_basecount = 0;
my $internal_gap = 0;
foreach my $si (0 .. length($s1) ) {
my $base1 = substr($s1,$si,1);
my $base2 = substr($s2,$si,1);
# Overlap
if ($base{$base1} && $base{$base2}) {
$ovlp_basecount++;
}
# Not sure how to compute internal gap
}
print "TOTAL OVERLAP BASE = $ovlp_basecount\n";
print "TOTAL Internal Gap \?\n";
효율적으로 내부 갭과 중복을 찾을 수있는 방법을 알려주십시오.
각 문자열의 34 번째 문자가 다릅니다 (C 및 T). 그게 신중한가요? – Mike
@Mike : 네, 고의적입니다. 불일치라고합니다. – neversaint