2022/02/18 (金) 【第11回】ゼロから始めるゲノム解析(Python編) 資料
【第11回】ゼロから始めるゲノム解析(Python編)Finding a Protein Motif@kimoton
View Slide
本勉強会の概要・目的書籍名対象者/目的Mastering Python for BioinformaticsPython・バイオインフォ知識ほぼゼロの人を対象に、正しいPythonのコーディング手法について学ぶ頻度 毎週〜隔週開催予定登壇者 募集中!
Rosalindとは● 問題解決を通じてバイオインフォマティクス、プログラミング、およびアルゴリズムを学習するためのプラットフォーム● 大学やハッカソン、就職の面接にも600回以上の採用実績あり参考:https://qiita.com/_kimoton/items/d534d0fa9b83dd7dc412概要
環境構築 - 必要パッケージ群のインストール# 公開されているレポジトリからファイル群を取得$ 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
本日のお題タンパク質モチーフ配列の位置を出力せよhttps://rosalind.info/problems/mprt/
● プログラムを用いてインターネットからデータをfetchする方法● 正規表現を用いてタンパク質のモチーフを探索する方法● マニュアルでタンパク質のモチーフを探索する方法本日学ぶこと
前提知識編
UniProtについてhttps://www.uniprot.org/SIB Swiss Institute of BioinformaticsとEuropean Bioinformatics Institute が運営するタンパク質のアミノ酸配列およびその機能情報を提供する代表的なデータベース。タンパク質に関連するさまざまな情報を横断的・網羅的に調べることができる世界で最も広範なタンパク質の情報カタログ
UniProtのURLhttp://www.uniprot.org/uniprot/{uniprot_id}UniProtでは、タンパク質にユニークなアクセッションIDが割り振られており、詳細ページのURL、及びFASTAファイルのURLは以下のように対応している。https://www.uniprot.org/uniprot/B5ZC00http://www.uniprot.org/uniprot/{uniprot_id}.fastahttps://www.uniprot.org/uniprot/B5ZC00.fasta
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.txthttp://www.uniprot.org/uniprot/A2Z669http://www.uniprot.org/uniprot/B5ZC00http://www.uniprot.org/uniprot/P07204_TRBM_HUMANhttp://www.uniprot.org/uniprot/P20840_SAG1_YEAST
FASTAファイルのダウンロード(bash)bashスクリプトによりファイルのダウンロードを自動化#!/usr/bin/env bashif [[ $# -ne 1 ]];then printf "usage: %s FILE\n" $(basename "$0")exit 1fiOUT_DIR="fasta"[[ ! -d "$OUT_DIR" ]] && mkdir -p "$OUT_DIR"while read -r PROT_ID; doecho "$PROT_ID"URL="https://www.uniprot.org/uniprot/${PROT_ID}"OUT_FILE="$OUT_DIR/${PROT_ID}.fasta"wget -q -o "$OUT_FILE" "$URL"done < $11 1PATH環境変数の通っている場所からbashを使用22引数の数「$#」が1でなければエラー終了33出力ディレクトリがなければ作成44ファイルの各行をPROT_IDとして格納5 5wgetコマンドでファイルをダウンロード
FASTAファイルのダウンロード(python)1241出力ディレクトリがなければ作成2 ファイルからIDを読み取り53requestsモジュールにより作成したURLにGETリクエストを投げる34ステータスコード200の場合、レスポンスをファイルに格納5200以外の場合、エラーメッセージを表示して継続
N-glycosylation モチーフの構造正規表現を用いて N [^P] [ST] [^P] で表されるP以外 P以外SorThttps://prosite.expasy.org/PDOC00001
正規表現で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]マッチしたポジションを出力
解法編
解法1正規表現を用いてモチーフ探索1ファイルに記載されているIDのFASTAファイルを取得12 正規表現を作成23FASTAファイルをSeqIOモジュールで読み込んでレコードがあればrecに格納34その配列に正規表現のマッチが存在すれば開始位置を出力4
解法2マニュアルでモチーフ探索121 モチーフがマッチしたインデックスを取得正規表現を使わず、条件式を用いて全てのkmerについて一致を確認2 インデックスを1始まりに修正3 IDとともに開始位置のリストをスペース区切りで出力