Matlab 関数 'multialign' でマルチアライメントした一連の文字があります。結果は、マルチアラインされたシーケンスを含む char 行列です。
たとえば、3 つのシーケンスのみを使用します。
----GC
AT--GC
ATGCGC
次に、配列間の類似性に基づいて、アラインメントのすべての列にスコアを付けます。前の例では、最初の列では「A」が最も頻繁に表示される記号で、3 回中 2 回表示されるため、スコアは 2/3 であり、最後の列では文字「C」が毎回表示されるため、スコアを付けます。 1 などです。最終スコアは、単一スコアの平均です。
ここで本当の質問: しきい値を使用して char を追加するかどうかを決定する関数を使用してこれらのシーケンスを作成するので、シーケンスを短くしたり長くしたりできます。これは、同じ方法でスコアリングする別のしきい値の別の例です。
-----ATATGGCGC
AT-ATGCA-G-C--
ATG-TGC--G-C--
fminsearch を使用して最適なしきい値を検索したかったのですが、私の問題は、しきい値を少しだけ変更してもスコアが変わらないため、fminsearch で使用されるアルゴリズムが機能しないことです (たとえば、選択した値が 10 から開始した場合)。次のステップは 9.75 のようなものです...)。
これは、私が行っている疑似 Matlab コードです。
[bestthr, bestscore] = fminsearch(@(x) fcnthr(data,x),[10]);
function score = fcnthr(data,thr)
sequences = generateSequencesFromData(data,thr);
multialignmatrix = multialign(sequences);
score = scorealignments(multialignmatrix);
score = 1/score; %I want to find the maximum score so fminsearch searches the minimum of 1/score.
end
誰かが私を助けることができますか?