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
Location Restriction Sites: Using, Testing, and...
Search
nkimoto
March 04, 2022
Programming
0
330
Location Restriction Sites: Using, Testing, and Sharing Code
2022/03/04 (金) 【第13回】ゼロから始めるゲノム解析(Python編) 資料
nkimoto
March 04, 2022
Tweet
Share
More Decks by nkimoto
See All by nkimoto
Finding a Protein Motif: Fetching Data and Using Regular Expressions
nkimoto
0
300
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
Swift Updates - Learn Languages 2025
koher
2
460
Ruby Parser progress report 2025
yui_knk
1
410
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
270
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
110
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
1
510
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
200
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
21
11k
testingを眺める
matumoto
1
140
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
20
5.4k
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
210
Kiroで始めるAI-DLC
kaonash
2
580
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Being A Developer After 40
akosma
90
590k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Practical Orchestrator
shlominoach
190
11k
Visualization
eitanlees
148
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
How GitHub (no longer) Works
holman
315
140k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Transcript
【第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)をコマンドラインパラメータとして渡せるようにし て下さい。