進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2

Similar documents
11yama

PowerPoint Presentation

アルゴリズム入門

PowerPoint Presentation

アルゴリズム入門

A Constructive Approach to Gene Expression Dynamics

算法の設計と評価

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

生命情報学

PowerPoint プレゼンテーション

Taro-最大値探索法の開発(公開版

Microsoft PowerPoint - ppt-7.pptx

2014年度 名古屋大・理系数学



PowerPoint プレゼンテーション

コンピュータリテラシ 第 6 回表計算 2 このスライド 例題 /reidai6.xlsx /reidai6a.xlsx 課題 12 /reidai6b.xlsx /table12_13.xlsx

☆joshin_表_0524.ai


Microsoft Word - 3new.doc

Programming D 1/15

a g ggg a a a a a a a a a a a g g a a a a 268, , , ,000 a ggg gg g j g jj g a a s s g g gj jga a a ag j j jg a a a a a a g a a 255,0

スライド 1

Microsoft PowerPoint - ProD0107.ppt

a s d

a s d

所得税の確定申告の手引き

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

レコードとオブジェクト

Microsoft PowerPoint - mp13-07.pptx

PowerPoint Presentation

レコードとオブジェクト

2018年度 岡山大・理系数学

2

学習指導要領

EPSON PX-G920 基本操作ガイド

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

スタートアップガイド_応用編

Microsoft PowerPoint - H17-5時限(パターン認識).ppt

メソッドのまとめ

2

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

JavaScriptで プログラミング

学習指導要領

文庫●注文一覧表2016c(7月)/岩波文庫


PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

【知事入れ版】270804_鳥取県人口ビジョン素案

学習指導要領

テキスト処理第 12 回 ( ) 田中哲産業技術総合研究所情報技術研究部門 u.ac.jp /

Prog1_10th

< 中 3 分野例題付き公式集 > (1)2 の倍数の判定法は 1 の位が 0 又は偶数 ( 例題 )1~5 までの 5 つの数字を使って 3 ケタの数をつくるとき 2 の倍数は何通りできるか (2)5 の倍数の判定法は 1 の位が 0 又は 5 ( 例題 )1~9 までの 9 個の数字を使って 3

日本外傷歯学会認定医(平成24年11月30日付) H

09.pptx

スライド 1

プログラミング基礎

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

r1.dvi

「不動産リスト」を解く

橡68-honbun.PDF

program7app.ppt

構造化プログラミングと データ抽象

プレポスト【解説】

AC-2

エンジョイ北スポーツ

第4回バイオインフォマティクスアルゴリズム実習

ExcelVBA

PowerPoint Presentation

Microsoft PowerPoint - C_Programming(3).pptx

Taro-再帰関数Ⅲ(公開版).jtd

untitled

untitled


2016_H1-H4_コーフ<309A>き<3099>ふCSR報告書.indd


untitled

生命情報学

福沢論文

計算機プログラミング

学習指導要領

プログラミングA

12.pptx

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

数学の世界

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

PowerPoint プレゼンテーション

Microsoft PowerPoint - ruby_instruction.ppt

Prog1_3rd

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

2019年度 千葉大・理系数学

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

Microsoft PowerPoint - lec10.ppt

gengo1-8

TC316_A5_2面_web用PDF台紙.indd

untitled

Microsoft Word - 18環設演付録0508.doc

第12回 モナドパーサ

講習No.10

Transcription:

連立 1 次方程式の数値解法 小規模な連立 1 次方程式の解法 消去法 Gauss 消去法 Gauss-Jordan 法 ( 大規模な連立 1 次方程式の解法 ) ( 反復法 ) (Jacobi 法 ) 講義では扱わない 1

進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2

パターン認識入門

パターン認識 音や画像に中に隠れたパターンを認識する 音素 音節 単語 文 基本図形 文字 指紋 物体 人物 顔 パターン は唯一のデータではなく 似通ったデータの集まりを表している 多様性 ノイズ 等しい から 似ている へ ~ だ から ~ らしい へ

アラインメント アラインメント 2つ ( 複数 ) の文字列の比較 音声認識 文字認識 DNAやタンパクの比較 GACGGATTAG と GATCGGA ギャップ 不一致 GA-CGGATTAG GATCGGA

ぴったり同じでなくとも 似ているかどうかを判定 スコア 一致 +2 不一致 -1 ギャップ -2 足し合わせる à アラインメントの類似度 類似度が最大の アラインメント 最適化 アラインメント ( ギャップの入れ方 ) を求める

スコア アラインメントの例 一致 +2 不一致 -1 01234567890 GA CGGATTAG GATCGGA ギャップ -2 15 01234567890 GAC GGATTAG GAT CGGA 01234567890 GAC GG ATTAG GAT CGGA 12 9

def align_sub(s,t,i,j) if i==0 j==0 i*g() + j*g() else v0 = align_sub(s,t,i, j-1) + g() v1 = align_sub(s,t,i-1,j-1) + q(s[i-1],t[j-1]) v2 = align_sub(s,t,i-1,j) + g() max(v0,max(v1,v2)) アラインメントの計算 def align_rec(s,t) align_sub(s,t,s.length(),t.length()) align_rec.rb

アラインメントの計算 - 1 一方の文字がない 前の文字がない --- ギャップ-2が XXX 後の文字数分 後の文字がない XXXX ギャップ-2が ---- 前の文字数分 両方ともない - 0 -

def align_sub(s,t,i,j) if i==0 j==0 i*g() + j*g() else v0 = align_sub(s,t,i, j-1) + g() v1 = align_sub(s,t,i-1,j-1) + q(s[i-1],t[j-1]) v2 = align_sub(s,t,i-1,j) + g() max(v0,max(v1,v2)) アラインメントの計算 def align_rec(s,t) align_sub(s,t,s.length(),t.length()) align_rec.rb

アラインメントの計算 - 2 最後の 1 文字のスコア 一致 +2 XXXA 1 文字前へ XXXA 1 文字前へ 不一致 -1 XXXA 1 文字前へ XXXG 1 文字前へ ギャップ -2 XXX- 同じ位置 XXXA 1 文字前へ XXXA 1 文字前へ XXX- 同じ位置

def align_sub(s,t,i,j) if i==0 j==0 i*g() + j*g() else v0 = align_sub(s,t,i, j-1) + g() v1 = align_sub(s,t,i-1,j-1) + q(s[i-1],t[j-1]) v2 = align_sub(s,t,i-1,j) + g() max(v0,max(v1,v2)) アラインメントの計算 g : ギャップのペナルティ q(c, d) : c と d の類似度 def align_rec(s,t) align_sub(s,t,s.length(),t.length()) align_rec.rb

def g() -2 def q(c,d) if c == d 2 else -1 ギャップのペナルティ 文字 c と文字 d の類似度を返す 一致 不一致 align_rec.rb いわずもがな x と y の最大値 def max(x,y) if x>y x else y max.rb

練習 max.rb を用意する ( 教科書第 3 章 p.32) align_rec.rb をダウンロードし align_rec("aac","") を実行する 実行時間を計測する irb(main):002:0> align_rec("aac", "") => 1 irb(main):003:0> require( benchmark") => true irb(main):004:0> Benchmark.measure{ align_rec("gacgga", "GATCGGA") }.real => 0.06

進捗状況の確認 1. 実行時間が計測できた時点で投票してください 2. align_rec( AAC, ) は実行した 3. align_rec.rb が走らない

動的計画法 テーブルを用意して 再帰的な計算の重複を避ける テーブルの中身を順に埋めることにより 求める値を計算する 各種の最適化問題に適用 アラインメント DNA RNAのエネルギー最小化 構文解析

組合せ数の計算 パスカルの三角形 combination(n, k) = combination(n-1, k-1) + combination(n-1, k) n 個から k 個を選択する = n-1 個から k-1 個を選択して n 個目も選択 + n-1 個から k 個を選択して n 個目は選択せず 選択非選択 0 1 2 3 0 1 1 1 1 1 2 1 2 3 4 3 4 1 3 6 1 4 1

def combina,on(n,k) if k > n 0 else if k == 0 1 else 組合せ数の計算 combina,on(n- 1,k- 1) + combina,on(n- 1,k) combina,on.rb

配列と繰り返しを使った 組み合わせ数の計算

load ("./make2d.rb") def combina,on_loop(n,k) c = make2d(n+1,n+1) for i in 0..n c[i ][0] = 1 for j in 1..(i- 1) c[i][j] = c[i- 1][j- 1] + c[i- 1][j] c[i][i] = 1 c[n][k] combina,on_loop.rb

動的計画法 プロ野球日本シリーズでの優勝の確率 P(i, j): Aは残り i 勝 Bは残り j 勝という状況で 最終的にAが優勝する確率 P(i, j) = 1 i=0 かつ j>0 = 0 i>0 かつ j=0 = (P(i-1, j) + P(i, j-1))/2 i>0 かつ j>0 j 0 1 2 3 4 i 0 1 1 1 1 1 2 3 0 1/2 0 0 1/4 1/8 3/4 1/2 7/8 A と B は同じ強さと仮定

1. 1/16 2. 3/16 3. 5/16 4. 7/16 5. 9/16 j i 0 1 1 1 1 0 1 2 3 4 1 0 1/2 3/4 7/8 2 3 0 0 1/4 1/2 1/8 ここは?

アラインメントの動的計画法 二つの配列 s と t の間の類似度 a[i][j] : s の部分配列 s[0],...,s[i-1] と t の部分配列 t[0],...,t[j-1] の間の類似度 a[i][j] = max{ a[i][j-1] + g(), a[i-1][j-1] + q(s[i-1], t[j-1]), a[i-1][j] + g() } g() : ギャップのペナルティ ( 負の数 ) q(c, d) : c と d の類似度 c と d が等しければ適当なスコア ( 正 ) 似ていればそれなりのスコア似ていなければ不一致のペナルティ ( 負 )

境界条件 ( 初期条件 ) a[0][0] = 0 a[0][j] = a[0][j-1] + g() (j>0) a[i][0] = a[i-1][0] + g() (i>0) 例えば g() = -2 結局 a[0][j] = j*g() a[i][0] = i*g() となる 要するに ギャップばかり

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 A -4 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A C s 0-2 -4-6 -8 A -2 A -4 C -6 ここは? 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 2 A -4 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 t A T A C s 0-2 -4-6 -8 A -2 2 A -4 C -6 ここは? 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 2 0 A -4 0 C -6

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0

スコア : 一致 +2 不一致 -1 ギャップ -2 A-A ATA t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 AAC ATA ここは? A-A- 1. 1 2. 2 3. 3 4. 4 5. 0 6. -1 7. -2 8. -3 9. -4

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 A-A ATA A-A- AAC ATA

スコア : 一致 +2 不一致 -1 ギャップ -2 A-AC t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 A-A ATA A-A- AAC ATA A-AC

def align(s,t) m = s.length() n = t.length() a = make2d(m+1,n+1) a[0][0] = 0 for j in 1..n a[0][j] = a[0][j-1] + g() for i in 1..m a[i][0] = a[i-1][0] + g() for i in 1..m for j in 1..n # ここを埋めてみよう a 境界条件 align.rb

トレースバック 最大の類似度を与えるアラインメントを提示するために 配列の最後から それまでの選択を振り返る ( トレースバック ) ギャップの入った文字列を ( 配列にして ) 二つ返す

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC i t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 A-A ATA A-AC

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 A A A- AT j t A T A G A-AC s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

u の前に - を追加 v の前に t[j-1] を追加 def traceback(a,s,t) u = "" v = "" i = s.length() j = t.length() while i>0 j>0 if j>0 && a[i][j] == a[i][j-1] + g() u = "-" + u v = t[j-1.. j-1] + v j = j - 1 # go left else if i>0 && j>0 && a[i][j] == a[i-1][j-1] + q(s[i-1], t[j-1]) # ここを埋めてみよう else if i>0 && a[i][j] == a[i-1][j] + g() # ここを埋めてみよう [u,v] 条件 align.rb

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 G C

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 AG AC

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 -AG TAC

スコア : 一致 +2 不一致 -1 ギャップ -2 j A-AC t A T A G s 0-2 -4-6 -8 i A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 A-AG ATAC

スコア : 一致 +2 不一致 -1 ギャップ -2 アラインメントは? t A T A G s 0-2 -4-6 -8 A -2 2 0-2 -4 A -4 0 1 2 0 C -6-2 -1 0 1 1.-AAC 2.A-AC 3.AA-C 4.AAC-

スコア : 一致 +2 不一致 -1 ギャップ -2 アラインメントは? t A T A C s 0-2 -4-6 -8 A -2 T -4 C -6 1.-ATC ATAC 2.A-TC ATAC 3.AT-C ATAC 4.ATC- ATAC

スコア : 一致 +2 不一致 -1 ギャップ -2 j i t A T A s 0-2 -4-6 A -2 2 0-2 A -4 0 1 2 C -6-2 -1 0 A-AC ATA- AAC ATA 必ずしも 1 通りではない!

練習 align.rb をダウンロードする align を完成させて align("aac","") を実行する RNase_P.rb をダウンロードし align(seq0(),seq1()) を実行する traceback を完成させて align_dp("aac","") を実行する align_dp(seq0(),seq1()) を実行する 1. align_dp(seq0(),seq1()) が動いた時点で投票してください

進捗状況の確認 1. align_dp が正しく動いた 2. align_dp(traceback) が動かない 3. align は動いたが traceback がまだできていない 4. align はできたが うまく動かない 5. align がまだできていない