シーケンスのグループから編集距離のパーセンテージを取得しようとしています。今のところ、これは私が持っているものです。配列からの編集距離の割合
#!/usr/bin/perl -w
use strict;
use Text::Levenshtein qw(distance);
my @sequence = qw(CA--------W----------------------EKDRRTEAF---F------
CA--------W----------------------EKDRRTEAF---F------
CA--------S-------------------SLVFGQGDNIQY---F------
RA--------S-------------------SLIYSP----LH---F------);
foreach my $list (@sequence){
my @distance = distance($list, @sequence);
my @length = $list =~ tr/[A-Z]///;
}
私は@length
との手紙をもとに、@distance
および各シーケンスの長さに編集距離を取得することができています。印刷された場合には結果は以下の通りである:2つの行を比較するとき
@distance
0 0 13 14
0 0 13 14
13 13 0 11
14 14 11 0
@length
13
13
16
12
@length
の各行は@sequence
の各行に相当するように、私がしたいですパーセンテージを得るには最大の@length
を使用してください。したがって、2番目と3番目のシーケンスの間に編集距離がある場合は、パーセンテージを得るために13ではなく16の長さを使用します。私が考えているのは、@length
配列の2つの要素だけを呼び出し、大きい方を選んでパーセンテージに入れて、おそらくif
ステートメントを使用することです。
私はこのコードが間違っている知っているが、それは一般的に私はつもりだアイデアです:
foreach my $list (@sequence){
my @distance = distance($list, @sequence);
my @length = $list =~ tr/[A-Z]//; #/syntax hilite fix
foreach my $item(@distance){
foreach @length {
my $num1 = if $length[0] >= $length[1];
print "$item/$num1\n";
else my $num2 = $length[1] >= $length[0];
print "$item/$num2\n";
}
}
}
答えは下のものと同様になっているはずです。
0 0 .8125 1.0769 0 0 .8125 1.0769 .8125 .8125 0 .6875 1.0769 1.0769 .6875 0
ニースの仕事。 Btw、regexの行に '#/'のようなコメントを追加すると、残りの投稿の構文強調が間違っています。正規表現の中にあるものに応じて、それを演奏しなければならないことがあります。ここでは '#/'がそれをやると思います。おかげさまで、 – zdim
[like like](http://meta.stackexchange.com/questions/184108/what-is-syntax-highlighting-and-how-does-it-work)stackexchange.comは、[Googleのcode-prettify](https: //github.com/google/code-prettify)。もしあなたが好きなら、私たちはPerlの構文を使っていくつかの問題を修正しようとすることができます(私たちはJavascriptでパッチを書く必要があるようです:))ノルウェーの素敵なクリスマスをお過ごしください。 –
よろしくお願い致します。私はオレゴン山脈でノルウェーを垣間見ることができたかもしれません。足元には雪が降り、日差しがたくさんあります。 (でも、20Fはあまりにも暖かいと思っていたと思っています)。 – zdim