私はこれと同じ長さの2つの文字列を比較する必要があります。 オーバーラップベース(。)と内部ギャップ(*)を探したい。オーバーラップの2つの文字列でのベースオーバーラップ数と内部ギャップの検出
------ACTAAAAATACAAAAA--TTAGCCAGGCGTGGTGGCAC
-----TACTAAAAATACAAAAAAATTAGCCAGGTGTGGTGG---
................**.................
数= Iがオーバーラップの数を求める問題はない内部ギャップ= 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