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

Finding a Protein Motif: Fetching Data and Using Regular Expressions

nkimoto
February 18, 2022

Finding a Protein Motif: Fetching Data and Using Regular Expressions

2022/02/18 (金) 【第11回】ゼロから始めるゲノム解析(Python編) 資料

nkimoto

February 18, 2022
Tweet

More Decks by nkimoto

Other Decks in Programming

Transcript

  1. 【第11回】ゼロから始めるゲノム解析
    (Python編)
    Finding a Protein Motif
    @kimoton

    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/mprt/

    View Slide

  6. ● プログラムを用いてインターネットからデータをfetchする方法
    ● 正規表現を用いてタンパク質のモチーフを探索する方法
    ● マニュアルでタンパク質のモチーフを探索する方法
    本日学ぶこと

    View Slide

  7. 前提知識編

    View Slide

  8. UniProtについて
    https://www.uniprot.org/
    SIB Swiss Institute of BioinformaticsとEuropean Bioinformatics Institute が運営するタンパク質のアミノ酸配列お
    よびその機能情報を提供する代表的なデータベース。タンパク質に関連するさまざまな情報を横断的・網羅的に調
    べることができる世界で最も広範なタンパク質の情報カタログ

    View Slide

  9. UniProtのURL
    http://www.uniprot.org/uniprot/{uniprot_id}
    UniProtでは、タンパク質にユニークなアクセッションIDが割り振られており、
    詳細ページのURL、及びFASTAファイルのURLは以下のように対応している。
    https://www.uniprot.org/uniprot/B5ZC00
    http://www.uniprot.org/uniprot/{uniprot_id}.fasta
    https://www.uniprot.org/uniprot/B5ZC00.fasta

    View Slide

  10. IDを元にUniProtのURLを作成
    UniProtでは、タンパク質にユニークなアクセッションIDが割り振られており、
    URLも以下のように対応している。
    def main() -> None:
    args = get_args()
    for prot_id in map(str.rstrip, args.file):
    print(f'http://www.uniprot.org/uniprot/{prot_id}')
    $ ./mprt.py tests/inputs/1.txt
    http://www.uniprot.org/uniprot/A2Z669
    http://www.uniprot.org/uniprot/B5ZC00
    http://www.uniprot.org/uniprot/P07204_TRBM_HUMAN
    http://www.uniprot.org/uniprot/P20840_SAG1_YEAST

    View Slide

  11. FASTAファイルのダウンロード(bash)
    bashスクリプトによりファイルのダウンロードを自動化
    #!/usr/bin/env bash
    if [[ $# -ne 1 ]];
    then printf "usage: %s FILE\n" $(basename "$0")
    exit 1
    fi
    OUT_DIR="fasta"
    [[ ! -d "$OUT_DIR" ]] && mkdir -p "$OUT_DIR"
    while read -r PROT_ID; do
    echo "$PROT_ID"
    URL="https://www.uniprot.org/uniprot/${PROT_ID}"
    OUT_FILE="$OUT_DIR/${PROT_ID}.fasta"
    wget -q -o "$OUT_FILE" "$URL"
    done < $1
    1 1
    PATH環境変数の通っている
    場所からbashを使用
    2
    2
    引数の数「$#」が1でなければ
    エラー終了
    3
    3
    出力ディレクトリがなければ作

    4
    4
    ファイルの各行をPROT_IDと
    して格納
    5 5
    wgetコマンドでファイルをダウ
    ンロード

    View Slide

  12. FASTAファイルのダウンロード(python)
    1
    2
    4
    1
    出力ディレクトリがなければ作

    2 ファイルからIDを読み取り
    5
    3
    requestsモジュールにより作
    成したURLにGETリクエストを
    投げる
    3
    4
    ステータスコード200の場合、
    レスポンスをファイルに格納
    5
    200以外の場合、エラーメッ
    セージを表示して継続

    View Slide

  13. N-glycosylation モチーフの構造
    正規表現を用いて N [^P] [ST] [^P] で表される
    P以外 P以外
    SorT
    https://prosite.expasy.org/PDOC00001

    View Slide

  14. 正規表現でN-glycosylationモチーフを表現
    2つのN-glycosylationモチーフを持つ配列からN-glycosylationモチーフを取得
    >>> seq = 'NNTSYS'
    >>> regex = re.compile('(?=(N[^P][ST][^P]))')
    >>> regex.findall(seq)
    ['NNTS', 'NTSY']
    >>> [match.start() + 1 for match in regex.finditer(seq)]
    [1, 2]
    マッチしたポジションを出力

    View Slide

  15. 解法編

    View Slide

  16. 解法1正規表現を用いてモチーフ探索
    1
    ファイルに記載されているID
    のFASTAファイルを取得
    1
    2 正規表現を作成
    2
    3
    FASTAファイルをSeqIOモ
    ジュールで読み込んでレコード
    があればrecに格納
    3
    4
    その配列に正規表現のマッチ
    が存在すれば開始位置を出

    4

    View Slide

  17. 解法2マニュアルでモチーフ探索
    1
    2
    1 モチーフがマッチしたインデックスを
    取得
    正規表現を使わず、条件式を用いて全
    てのkmerについて一致を確認
    2 インデックスを1始まりに修正
    3 IDとともに開始位置のリストをス
    ペース区切りで出力

    View Slide