私は、例えばATCGATCGのようなDNA配列を持っています。次のように私はまた、フォーマットされたDNA配列のデータベースを持っている:Perl:文字列の最高一致率を返す
>Name of sequence1
SEQUENCEONEEXAMPLEGATCGATC
>Name of sequence2
SEQUENCETWOEXAMPLEGATCGATC
(だから、奇数行は名前が含まれ、偶数行が配列を含む) は現在、私は私のシーケンスとの間の完全な一致を検索します以下のデータベース内のシーケンスは、(すべての変数が宣言されていると仮定):
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;
私は、エントリとの間であり、最も高い割合マッチしたシーケンスの名前だけでなく、パーセント一致を返すためにどのような方法がありますデータベース内のシーケンス?
データベースのサイズはどれくらいですか? – Zaid
['String :: Approx'](https://metacpan.org/pod/String::Approx)があなたを助けてくれるかどうか不明です。 – Zaid
文字列を分割して、charでcharにすることができます。例えば、それは['this post'](http://stackoverflow.com/questions/9106978/perl-partial-match)で行われています。より良い、モジュールを見つける - たとえば、['Text :: Fuzzy'](http://search.cpan.org/~bkb/Text-Fuzzy-0.24/lib/Text/Fuzzy.pod)はそれを行うべきです。 – zdim