Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Location Restriction Sites: Using, Testing, and...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nkimoto
March 04, 2022
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Location Restriction Sites: Using, Testing, and Sharing Code
2022/03/04 (金) 【第13回】ゼロから始めるゲノム解析(Python編) 資料
nkimoto
March 04, 2022
Transcript
20 slides
【第13回】ゼロから始めるゲノム解析 (Python編) Location Restriction Sites: Using, Testing, and Sharing Code
@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
本日のお題 4~12の長さを持つすべての回文配列の位置と長さを出力せよ https://rosalind.info/problems/revp/
• 回文配列を見つける方法 • 汎用的な関数をシェアするためのモジュールの作成方法 • PYTHONPATH環境変数について 本日学ぶこと
前提知識編
回文配列 https://en.wikipedia.org/wiki/Palindromic_sequence 回文配列とは、二本鎖DNA分子またはRNA分子内の核酸配列であり、片方の一本鎖における特定の方向での塩 基配列の読み取りが、もう片方の相補鎖における同じ方向での読み取りと一致する配列 AGATTCGAATCT TCTAAGCTTAGA 1. Complement 2. Reverse
Complement 5’ 3’ 3’ 5’ >>> from Bio import Seq >>> seq = 'GCATGC' >>> Seq.reverse_complement(seq) == seq True
回文配列は制限酵素の認識領域 https://en.wikipedia.org/wiki/Palindromic_sequence 制限酵素は制限部位として知られるDNAの特定の回文配列を認識し、その中で切断することが知られている 制限酵素はもともとバクテリアが ファージなどの感染から自身を 守るために外来DNAを切断する 役割
問題のIN/OUT TCAATGCATGCGGGTCTATATGCAT $ ./revp.py tests/inputs/1.fa 5 4 7 4 17
4 18 4 21 4 4 6 6 6 20 6 与えられた配列に含まれている回文配列の位置と長さを出力することが求められている
(振り返り)k-merの抽出 配列から全てのk-mer(k文字の部分配列)を抽出する関数は以下のように書ける >>> def find_kmers(seq, k): ... n = len(seq)
- k + 1 ... return [] if n < 1 else [seq[i:i + k] for i in range(n)] ...
部分配列を抽出 find_kmers関数を使うと、指定したkの範囲それぞれについて部分配列を抽出できる # k=4~k=12のkmerがいくつ含まれているか出力 >>> for k in range(4, 13):
... print(k, len(find_kmers(seq, k))) ... 4 22 5 21 6 20 7 19 8 18 9 17 10 16 11 15 12 14
部分配列の逆相補鎖配列を抽出 取得した部分配列に対してreverse_complementメソッドを適用することで逆相補鎖配列を抽出する # find_kmersは文字列のリストで返す >>> kmers = find_kmers(seq, 12) >>>
kmers ['TCAATGCATGCG', 'CAATGCATGCGG', 'AATGCATGCGGG', 'ATGCATGCGGGT', 'TGCATGCGGGTC', 'GCATGCGGGTCT', 'CATGCGGGTCTA', 'ATGCGGGTCTAT', 'TGCGGGTCTATA', 'GCGGGTCTATAT', 'CGGGTCTATATG', 'GGGTCTATATGC', 'GGTCTATATGCA', 'GTCTATATGCAT'] # map関数で全ての要素に関数を適用 >>> revc = list(map(Seq.reverse_complement, kmers))
モジュールの活用 再利用可能な処理に関しては、関数化して分離しておく。 使用する際は 「from ファイル名 import 関数名」のように使う >>> from common
import find_kmers >>> kmers = find_kmers(seq, 12) >>> kmers ['TCAATGCATGCG', 'CAATGCATGCGG', 'AATGCATGCGGG', 'ATGCATGCGGGT', 'TGCATGCGGGTC', 'GCATGCGGGTCT', 'CATGCGGGTCTA', 'ATGCGGGTCTAT', 'TGCGGGTCTATA', 'GCGGGTCTATAT', 'CGGGTCTATATG', 'GGGTCTATATGC', 'GGTCTATATGCA', 'GTCTATATGCAT'] common.py
モジュールの呼び先 - PYTHONPATH 環境変数PYTHONPATHに検索対象のパスを指定することで、デフォルトの検索パスに加えて指定したパスを検索 するように変更することができる # 例:$HOME/.local/binを追加 (bash) $ export
PYTHONPATH="$HOME/.local/bin:$PYTHONPATH" https://docs.python.org/ja/3/using/cmdline.html#envvar-PYTHONPATH
解法編
解法1zip()関数とenumerate()関数を使用 1 指定した範囲の部分配列を抽出 1 2 部分配列を逆相補鎖に変換 2 3 部分配列とその逆相補鎖が一致して いれば出力
3
解法 2 .eq()関数を使用 1 指定した範囲の部分配列を抽出 1 2 部分配列を逆相補鎖に変換 2 3
部分配列とその逆相補鎖が一致して いれば出力 3
解法 3 revp()関数を作成する 1 与えられた文字列からk文字の回文配 列を抽出する関数を作成 2 指定したkの範囲で回文配列の検索を 行い出力 2
1
追加課題 プログラムを拡張して探索する回文配列の長さ( k)をコマンドラインパラメータとして渡せるようにし て下さい。
More Decks by nkimoto
See All by nkimoto
Finding a Protein Motif: Fetching Data and Using Regular Expressions
nkimoto
0
370
Overlap Graphs: Sequence Assembly Using Shared K-mers
nkimoto
0
250
Computing GC Content: Parsing FASTA and Analyzing Sequences
nkimoto
0
340
【第5回】ゼロから始めるゲノム解析(Python編)
nkimoto
0
780
【第3回】ゼロから始めるゲノム解析(Python編)
nkimoto
0
490
【第1回】ゼロから始めるゲノム解析(Python編).pdf
nkimoto
0
960
【第7回】ゼロから始めるゲノム解析.pdf
nkimoto
0
500
【第5回】ゼロから始めるゲノム解析(R編)
nkimoto
0
600
【第3回】ゼロから始めるゲノム解析(R編)
nkimoto
0
1.6k
Other Decks in Programming
See All in Programming
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
220
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
170
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
260
Getting Started with Vibe Coding
miccheng
0
200
Railsバージョンを4倍にした話
optim
0
1k
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
370
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
830
Performance Optimization With LLMs
xleitix
0
250
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
170
protojson における文字化けの扱い
kazuki1023
0
350
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
740
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.4k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.7k
Amusing Abliteration
ianozsvald
1
390
The browser strikes back
jonoalderson
0
1.9k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
620
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Design in an AI World
tapps
1
390
Optimising Largest Contentful Paint
csswizardry
37
4k
Designing for humans not robots
tammielis
254
26k
Designing for Performance
lara
612
70k