クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

スコアとギャップペナルティ

このレッスンのあとで: 点のつけ方を変えて、よい並べ方が変わることを確かめられる。

55分のレッスンコマンド1件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

ギャップの減点でアラインメントが変わる

ギャップペナルティとは、アラインメントでギャップに与える減点のことです。点のつけ方を変えると、いちばんよい並べ方が変わります。

このレッスンでは、点の決め方で並べ方がどう変わるかを調べ、全体を並べる方法と、似た部分だけを並べる方法を比べます。配列は作り話です。

このレッスンのゴール

メモ

点のつけ方を変えて、よい並べ方が変わることを確かめられる。

キーワード

ことばいみれい
ギャップペナルティギャップ1つにつける減点-2
スコアリング一致、不一致、ギャップの点の決め方
グローバルアラインメント配列の端から端まで並べる方法
ローカルアラインメント似ている部分だけを並べる方法
局所最高点途中で区切ったときの、最も高い合計点

学生が入力するセルは、このプレビューでは空白です。

ギャップの減点を変えると最良が変わる

次の2通りの並べ方を比べます。1つ目はギャップなしで、不一致が2つあります。2つ目はギャップが2つで、一致が3つあります。

ギャップの減点が軽いと、2つ目が有利です。重くすると、1つ目が有利になります。

例: ACGT と AGTT の2通り

並べ方上と下ギャップ -1ギャップ -2
1つ目ACGT と AGTT00
2つ目ACGT- と A-GTT1-1
よいほう2つ目1つ目

学生が入力するセルは、このプレビューでは空白です。

ギャップの点を変えて比べる

コマンド
docker exec jupyter python3 -c 'U="ACGT-"; L="A-GTT"; print([sum([1 if p == q else g if "-" in (p, q) else -1 for p, q in zip(U, L)]) for g in [-1, -2]])'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

ギャップの減点に、ただ1つの正しい値があると考えがちです。実際は、調べたいことに合わせて決めます。値を変えれば、よい並べ方も変わるので、使った値は必ず書いておきます。

ローカルは似た部分だけを並べる

グローバルアラインメントは、配列を端から端まで並べます。端が全然違うと、減点が増えます。

ローカルアラインメントは、似ている部分だけを選びます。合計がマイナスになったら 0 に戻し、そこまでの最高点を答えにします。

例: 列ごとの点と合計の動き

列点グローバルの合計ローカルの合計
1-1-10
2-1-20
31-11
4102
5113
6124
7-202

学生が入力するセルは、このプレビューでは空白です。

ローカルの最高点を求める

コード: python
# 列ごとの点を順に足し、マイナスになったら 0 に戻します。
column_points = [-1, -1, 1, 1, 1, 1, -2, 1, 1, -1, -1]
running = 0
best = 0
for point in column_points:
    running = running + point
    if running < 0:
        running = 0
    if running > best:
        best = running
print("全体の合計:", sum(column_points))
print("ローカルの最高点:", best)
# 最初の -1 を 3 に変えて、もう一度実行してください。
# 2つの値は、どう変わりますか。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。