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

無料レッスン

配列からモチーフを見つける

このレッスンのあとで: 配列から k-mer を取り出して数え、モチーフの出現位置を探せる。

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

モチーフは配列に何度も出る並び

モチーフとは、配列の中に何度も現れる、短い塩基の並びのことです。長さ k の部分配列を k-mer(ケーマー)と呼び、これを数えると、よく出る並びが分かります。

このレッスンでは、配列をずらしながら k-mer を取り出し、数え、位置を調べます。配列は作り話です。

このレッスンのゴール

メモ

配列から k-mer を取り出して数え、モチーフの出現位置を探せる。

キーワード

ことばいみれい
モチーフ配列に何度も出る短い並びTGA
k-mer長さ k の部分配列3-mer の ATG
部分配列配列から連続して取り出した一部
出現位置モチーフが始まる場所の番号0 から数える
頻度ある並びが出る回数

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

k-mer は窓をずらして取り出す

配列の左端から k 文字を取り出し、1文字ずつ右にずらしながら、同じことをくり返します。取り出した1つ1つが k-mer です。

長さ n の配列からは、n - k + 1 個の k-mer が取り出せます。Python では、seq[i:i + k] で i 番目から k 文字を取り出します。

例: ATGATGATC の3-mer

始まる位置取り出した3文字
0ATG
1TGA
2GAT
3ATG
4TGA
5GAT
6ATC

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

3-mer を全部取り出す

コマンド
docker exec jupyter python3 -c 'S="ATGATGATC"; print([S[i:i+3] for i in range(len(S) - 2)])'

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

k-mer を数えて頻度を調べる

取り出した k-mer を、種類ごとに数えます。出る回数が頻度です。多く出る k-mer は、モチーフの候補です。

数えるには、辞書を使います。k-mer がすでにあれば1を足し、なければ1を入れます。

例: 数えた結果

3-mer回数始まる位置
ATG20 と 3
TGA21 と 4
GAT22 と 5
ATC16

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

多い3-mer を2つ調べる

コマンド
docker exec jupyter python3 -c 'from collections import Counter; S="ATGATGATC"; print(Counter([S[i:i+3] for i in range(len(S) - 2)]).most_common(2))'

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

モチーフの出現位置を探す

同じ窓のずらし方で、モチーフと同じ並びを探すと、始まる位置が分かります。位置は 0 から数えます。

配列が長いほど、手では探せません。位置を並べたリストを作れば、どこに集まっているかも見えます。

モチーフの位置を探すコード

コード: python
# 配列の中で、モチーフが始まる位置をすべて探します。
dna = "TTGATTGACTTGA"
motif = "TGA"
starts = []
for position in range(len(dna) - len(motif) + 1):
    piece = dna[position:position + len(motif)]
    if piece == motif:
        starts.append(position)
print("始まる位置:", starts)
print("回数:", len(starts))
# motif を TT に変えて、もう一度実行してください。
# 位置はいくつ見つかりますか。

文字列の count は重なりを数えない

コマンド
docker exec jupyter python3 -c 'print("AAAA".count("AA"))'

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

よくある間違い

注意

count で、モチーフの出現がすべて数えられると考えがちです。count は重なりを数えません。AAAA の中の AA は、位置 0、1、2 の3か所ですが、count は 2 を返します。重なりも数えるには、1文字ずつずらして調べます。

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

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