Ich habe diese zwei Strings von gleicher Länge, die ich vergleichen muss. Ich möchte Überlappungsbasis (.) Und interne Lücke (*) finden. Nachfolgend finden Sie das Beispiel:Finden von Base Overlap Counts und internen Lücken in zwei Strängen
------ACTAAAAATACAAAAA--TTAGCCAGGCGTGGTGGCAC
-----TACTAAAAATACAAAAAAATTAGCCAGGTGTGGTGG---
................**.................
Anzahl der Überlappung = 33. Anzahl interner gap = 2.
ich kein Problem haben, die Anzahl der Überlappung zu finden. Aber ich habe das Problem, interne Lücke zu finden. Unten ist der aktuelle Code, den ich habe. Es ist schrecklich langsam. Im Prinzip muss ich Millionen solcher Paare berechnen.
#!/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";
Bitte beraten wie ich interne Lücke und Überlappung effizient finden kann.
Das 34. Zeichen in jeder Ihrer Zeichenfolgen ist unterschiedlich (C & T). Ist das Absicht? – Mike
@Mike: Ja, absichtlich. Es heißt Mismatch. – neversaint