Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finding a Protein Motif: Fetching Data and Usin...
Search
nkimoto
February 18, 2022
Programming
0
300
Finding a Protein Motif: Fetching Data and Using Regular Expressions
2022/02/18 (金) 【第11回】ゼロから始めるゲノム解析(Python編) 資料
nkimoto
February 18, 2022
Tweet
Share
More Decks by nkimoto
See All by nkimoto
Location Restriction Sites: Using, Testing, and Sharing Code
nkimoto
0
330
Overlap Graphs: Sequence Assembly Using Shared K-mers
nkimoto
0
190
Computing GC Content: Parsing FASTA and Analyzing Sequences
nkimoto
0
280
【第5回】ゼロから始めるゲノム解析(Python編)
nkimoto
0
670
【第3回】ゼロから始めるゲノム解析(Python編)
nkimoto
0
430
【第1回】ゼロから始めるゲノム解析(Python編).pdf
nkimoto
0
850
【第7回】ゼロから始めるゲノム解析.pdf
nkimoto
0
460
【第5回】ゼロから始めるゲノム解析(R編)
nkimoto
0
560
【第3回】ゼロから始めるゲノム解析(R編)
nkimoto
0
1.6k
Other Decks in Programming
See All in Programming
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
2
810
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
810
クラシルを支える技術と組織
rakutek
0
200
Devoxx BE - Local Development in the AI Era
kdubois
0
120
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
240
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
500
All About Angular's New Signal Forms
manfredsteyer
PRO
0
110
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
180
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
970
株式会社 Sun terras カンパニーデック
sunterras
0
270
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
450
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Thoughts on Productivity
jonyablonski
70
4.9k
Six Lessons from altMBA
skipperchong
28
4k
We Have a Design System, Now What?
morganepeng
53
7.8k
Writing Fast Ruby
sferik
629
62k
The Cult of Friendly URLs
andyhume
79
6.6k
Docker and Python
trallard
46
3.6k
Designing Experiences People Love
moore
142
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Transcript
【第11回】ゼロから始めるゲノム解析 (Python編) Finding a Protein Motif @kimoton
本勉強会の概要・目的 書籍名 対象者/目的 Mastering Python for Bioinformatics Python・バイオインフォ知識ほぼゼロの人 を対象に、正しい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の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
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
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コマンドでファイルをダウ ンロード
FASTAファイルのダウンロード(python) 1 2 4 1 出力ディレクトリがなければ作 成 2 ファイルからIDを読み取り 5
3 requestsモジュールにより作 成したURLにGETリクエストを 投げる 3 4 ステータスコード200の場合、 レスポンスをファイルに格納 5 200以外の場合、エラーメッ セージを表示して継続
N-glycosylation モチーフの構造 正規表現を用いて N [^P] [ST] [^P] で表される P以外 P以外
SorT https://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ファイルを取得 1 2 正規表現を作成 2 3 FASTAファイルをSeqIOモ
ジュールで読み込んでレコード があればrecに格納 3 4 その配列に正規表現のマッチ が存在すれば開始位置を出 力 4
解法2マニュアルでモチーフ探索 1 2 1 モチーフがマッチしたインデックスを 取得 正規表現を使わず、条件式を用いて全 てのkmerについて一致を確認 2 インデックスを1始まりに修正
3 IDとともに開始位置のリストをス ペース区切りで出力