Ich habe eine DNA-Sequenz, wie zum Beispiel ATCGATCG. Ich habe auch eine Datenbank von DNA-Sequenzen wie folgt formatiert:Perl: Höchste Prozentzahl für Strings
>Name of sequence1
SEQUENCEONEEXAMPLEGATCGATC
>Name of sequence2
SEQUENCETWOEXAMPLEGATCGATC
(also die ungeraden Zeilen enthalten einen Namen, und die geraden Linien enthalten eine Sequenz) Derzeit suche ich nach perfekten Übereinstimmungen zwischen meiner Sequenz und wie (übernehmen alle Variablen deklarieren) folgt Sequenzen in der Datenbank:
my $name;
my $seq;
my $returnval = "The sequence does not match any in database";
open (my $database, "<", $db1) or die "Can't find db1";
until (eof $database){
chomp ($name = <$database>);
chomp ($seq = <$database>);
if (
index($seq, $entry) != -1
|| index($entry, $seq) != -1
) {
$returnval = "The sequence matches: ". $name;
last;
}
}
close $database;
gibt es eine Möglichkeit für mich, den Namen der höchsten Prozentsatz angepasst Sequenz zurückzukehren sowie Prozent Übereinstimmung zwischen dem Eintrag und der Reihenfolge in der Datenbank?
Wie groß ist die Datenbank? – Zaid
Nicht sicher, ob [String :: Approx] (https://metacpan.org/pod/String::Approx) hier helfen würde. – Zaid
Sie können Ihre Saite zerlegen und Char durch Char gehen, auch wenn es wählerisch ist. Etwas wie es zum Beispiel in ['this post'] (http://stackoverflow.com/questions/9106978/perl-partial-match) gemacht wurde. Besser, finde ein Modul - zum Beispiel sollte ['Text :: Fuzzy'] (http://search.cpan.org/~bkb/Text-Fuzzy-0.24/lib/Text/Fuzzy.pod) es tun. – zdim