Slide 1

Slide 1 text

【第14回】ゼロから始めるゲノム解析 (Python編) Finding Open Reading Frames @onouyek

Slide 2

Slide 2 text

本勉強会の概要・目的 書籍名 対象者/目的 Mastering Python for Bioinformatics Python・バイオインフォマティクス知識ほぼ ゼロの人を対象に、正しい Pythonのコー ディング手法について学ぶ 頻度 毎週〜隔週開催予定 登壇者 募集中!

Slide 3

Slide 3 text

Rosalindとは ● 問題解決を通じてバイオインフォマティク ス、プログラミング、およびアルゴリズムを 学習するためのプラットフォーム ● 大学やハッカソン、就職の面接にも 600回 以上の採用実績あり 参考:https://qiita.com/_kimoton/items/d534d0fa9b83dd7dc412 概要

Slide 4

Slide 4 text

環境構築 - 必要パッケージ群のインストール # 公開されているレポジトリからファイル群を取得 $ git clone https://github.com/kyclark/biofx_python $ cd biofx_python # requirements.txtに記載のパッケージをインストール $ pip3 install -r requirements.txt # pylintの設定ファイルをホームディレクトリに移動 $ cp pylintrc ~/.pylintrc # mypyの設定ファイルをホームディレクトリに移動 $ cp mypy.ini ~/.mypy.ini

Slide 5

Slide 5 text

本日のお題 https://rosalind.info/problems/orf/ DNA配列からORFから翻訳されうる異なる配列をすべて答えよ

Slide 6

Slide 6 text

前提知識編

Slide 7

Slide 7 text

第2回:正規表現モジュールreを用いたDNA→RNAへの変換 検索する文字列 入力文字列  ↓  ↓ re.sub('T', 'U', 'ACGT')  ↑ 置換する文字列

Slide 8

Slide 8 text

第3回:Bio.Seq.reverse_complementによる相補鎖の取得 $ python3 -m pip install biopython biopythonパッケージのインストール >>> from Bio import Seq Seqクラスをimport >>> Seq.reverse_complement('AAAACCCGG') 'CCGGGTTTT' Seq.reverse_complementメソッドを使用して変換

Slide 9

Slide 9 text

第7回:Bio.Seq.translateによるRNA→Proteinへの変換 $ python3 -m pip install biopython biopythonパッケージのインストール >>> from Bio import Seq Seqクラスをimport >>> Seq.translate('AAAACCCGG') 'KTR' Seq.translateメソッドを使用して変換

Slide 10

Slide 10 text

リーディングフレーム shift 0 shift 1 shift 2 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 3で割ったときの余り部分を取り除けばWarningは解消される >>> Seq.translate('AAAACCCGGU') BiopythonWarning: Partial codon, len(sequence) not a multiple of three. Explicitly trim the sequen ce or add trailing N before translation. This may become an error in future. Biopythonでは3の倍数でない長さの配列を翻訳しようとするとWarningがでる https://en.wikipedia.org/wiki/File:Reading_Frame.png 核酸分子内のヌクレオチド配列を重なり合わない連続したトリプレットに分割する方法

Slide 11

Slide 11 text

オープンリーディングフレーム(ORF) 開始コドン(通常はAUG)で始まりストップコドンで終わるコドンの連続した一続き M A M A P R * メチオニン(M)で始まりストップコドン(*)で終わるMAMAPR*とMAPR*の2パターンが考え られる

Slide 12

Slide 12 text

解法編

Slide 13

Slide 13 text

Solution 1: str.index()でMと*を見つける ①DNAからRNA配列に変換 ②RNAからタンパク質配列に変換 ③str.index()を使って開始位置と終了位置を見つけて orfsに追加してaa配列を更新 ① ② ③

Slide 14

Slide 14 text

Solution 2: str.partition()で*の前後に分割する ①ストップコドンとその前後の配列を取得 ②前半部分の配列からMを見つけてorfsに追加してlast を更新 ① ②

Slide 15

Slide 15 text

Solution 3: 正規表現(先読みアサーション)を使う ①先読みアサーション(?=())を使うことでオー バーラップする候補も見つけられる ②*以外にマッチする0個以上のパターン ① ②

Slide 16

Slide 16 text

ベンチマーキング hyperfine -L prg \ solution1_iterate_set.py,./solution2_str_partition.py,./solution3_regex.py \ '{prg} tests/inputs/1.fa' --prepare 'rm -rf __pycache__'

Slide 17

Slide 17 text

追加課題 複数ファイルを入力として、ユニークなORFsを指定した出力ファイルに書き出せるように してください。

Slide 18

Slide 18 text

本日学んだこと ● Bio.Seq.translate()する前のtruncate処理 ● str.find()を使った部分文字列の検索 ● str.partition()を使った部分文字列の検索 ● 正規表現と先読みアサーション