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

無料レッスン

FASTAファイルの読み方

このレッスンのあとで: FASTA形式の文字列から、配列の名前と配列を取り出せる。

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

FASTA形式は名前つきの配列

FASTA(ファスタ)形式とは、配列に名前をつけて保存する、テキストファイルの書き方です。配列データの多くはこの形で配られるので、読み込めると自分のデータを Python で扱えます。

このレッスンでは、FASTAの文字列を読み、名前と配列に分けます。例の配列はすべて作り話です。

このレッスンのゴール

メモ

FASTA形式の文字列から、配列の名前と配列を取り出せる。

キーワード

ことばいみれい
FASTA形式名前と配列を交互に書くテキスト
ヘッダー行">" で始まり、配列の名前を書く行>seqA
レコード名前と配列の1組
折り返し長い配列を、次の行に続けて書くこと
パース文字列を決まりに沿って読み、使える形にすること

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

ヘッダー行と配列の行でできている

FASTAファイルは、行でできています。">" で始まる行がヘッダー行で、その後ろに配列の名前を書きます。

配列は、次のヘッダー行まで続く行です。名前と配列の1組をレコードと呼びます。1つのファイルに、レコードをいくつでも書けます。

例: 5行のFASTAファイル

行内容役目
1>seqA 作り話の配列ヘッダー行: ">" で始まり、名前を書く
2ATGCGT配列の行: 1行目の続き
3ACGGA配列の行: 折り返された続き
4>seqBヘッダー行: 次のレコードの始まり
5TTGACC配列の行: seqB の配列

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

ヘッダー行だけを取り出す

コマンド
docker exec jupyter python3 -c 'T=">s1 first\nATGC\nGGA\n>s2\nTT\n"; print([L[1:] for L in T.split("\n") if L.startswith(">")])'

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

折り返された行は、つなげて読む

長い配列は、60文字や80文字ごとに次の行へ折り返されます。1本の配列が、何行にもなるのです。

配列を取り出すときは、ヘッダー行のあとの行を、順に1本の文字列につなぎます。つないでから、長さを数えます。

行をつなぐコード

コード: python
# 折り返された配列を、1本の文字列につなぎます。
text = ">seqA 作り話\nATGC\nGGA\nTT\n"
lines = text.split("\n")
print("先頭の行:", lines[0])

joined = ""
for line in lines[1:]:
    joined = joined + line
print("つないだ配列:", joined)
print("長さ:", len(joined))
# text の中の TT を消して、もう一度実行してください。
# 長さはいくつになりますか。

配列の長さを、レコードごとに数える

コマンド
docker exec jupyter python3 -c 'T=">s1\nATGC\nGGA\n>s2\nTT\n"; R=T.split(">")[1:]; print([len("".join(r.split("\n")[1:])) for r in R])'

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

よくある間違い

注意

ヘッダー行も、配列の長さに数えてしまう間違いがよくあります。ヘッダー行は名前で、配列ではありません。長さを数える前に、">" で始まる行を除いてください。

空の行と行末の文字を取り除く

ファイルの終わりには、空の行がついていることがよくあります。コンピューターによっては、行末に見えない文字が入ります。

strip を使うと、前後の空白と行末の文字が消えます。空の行は、何もせずに読み飛ばします。

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

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