2016-05-27 2 views
3

Проверить расстояние между $barcode и двумя строками, первая строка имеет одинаковые 12 символов спереди, а другая полностью другая, но обе дают одинаковое расстояние?perl: Text :: Fuzzy, другая строка, дающая то же расстояние редактирования?

#!/usr/bin/perl 
use warnings; 
use strict; 
use Text::Fuzzy; 
my $barcode = "TCCCTTGTCTCC"; 

foreach my $line1 (<DATA>) { 
    print "New string\n"; 
    print "Barcode length:", length $barcode, "\nSequence length:", 
    length $line1, "\n"; 
    my $tf = Text::Fuzzy->new($barcode); 
    my $ed = $tf->distance($line1); 
    print "Edit distance: ", $ed ,"\n\n"; 
} 

__DATA__ 
TCCCTTGTCTCCCCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGAACAGACCTGACTACCTGGA 
GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGCAGACCTGACTACCTGGA 

Выходы:

New string 
Barcode length:12 
Sequence length:93 
Edit distance: 81 

New string 
Barcode length:12 
Sequence length:93 
Edit distance: 81 

ответ

2

Это кажется правильным, так как все персонажи подпоследовательности присутствуют в более длинной последовательности и будет иметь тот же Левенштейна редактировать расстояние. Это так, потому что все, что нужно было бы это делеция для преобразования дольше короткую последовательности

Пример:

artic => arc редактировать расстояние 2, т.е. делеции 2 arche => arc будет иметь то же расстояние редактирования 2 т.е. делеции 2

+0

В любом случае, чтобы получить разницу в случае с заменами? – SSh

+1

Я думаю, что вы ищете [самая длинная общая подстрока] (http://search.cpan.org/~dyacob/String-LCSS-0.12/lib/String/LCSS.pm) – keety

2

Несомненно. В первом случае все символы в $barcode появляются вместе в начале строки, поэтому для добавления всех остальных символов в конце требуется 81 (93 - 12) редактирование.

Во втором случае все символы в $barcode по-прежнему отображаются в порядке, просто с кучей вещей между ними. Поскольку они это делают, никакие удаления или замены не нужны, а расстояние до сих пор составляет 81, символы просто добавляются в разных местах. Для иллюстрации:

GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTC ... 
________T___C_CCT_______TGT______CT___C__C ... 

 Смежные вопросы

  • Нет связанных вопросов^_^