$30 off During Our Annual Pro Sale. View Details »

Finding Open Reading Frames

onouyek
March 18, 2022

Finding Open Reading Frames

onouyek

March 18, 2022
Tweet

More Decks by onouyek

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 環境構築 - 必要パッケージ群のインストール
    # 公開されているレポジトリからファイル群を取得
    $ 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

    View Slide

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

    View Slide

  6. 前提知識編

    View Slide

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

    View Slide

  8. 第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メソッドを使用して変換

    View Slide

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

    View Slide

  10. リーディングフレーム
    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
    核酸分子内のヌクレオチド配列を重なり合わない連続したトリプレットに分割する方法

    View Slide

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

    View Slide

  12. 解法編

    View Slide

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



    View Slide

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


    View Slide

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


    View Slide

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

    View Slide

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

    View Slide

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

    View Slide