先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf ·...

145
先端医化学実験 バイオインフォマティクス 遺伝的アルゴリズムによるタンパク質立体構造の重ね合わせ 博幸 2016623-24

Upload: others

Post on 03-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

先端医化学実験バイオインフォマティクス

遺伝的アルゴリズムによるタンパク質立体構造の重ね合わせ

藤 博幸

2016年6月23-24日

Page 2: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 3: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 4: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

生物システムの情報科学への応用• ニューラルネットワーク• 遺伝的アルゴリズム• 進化プログラミング• 人工免疫システム• 粒子群 適化• 蟻コロニー 適化• 人工生命

Page 5: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

遺伝的アルゴリズム

菊川怜の卒論テーマ「遺伝的アルゴリズムを適用したコンクリートの要求性能型の調合設計に関する研究」

肖像権の問題があるので菊川怜さんの画像は削除しました、

(•ω<)

Page 6: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 7: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

遺伝的アルゴリズム

GeneAcAlgorithm(GA)1975年 JohnH.Hollandにより提案生物の遺伝の仕組みを模倣した 適化の手法たとえばナップザック問題、ハミルトン閉路問題、巡回セールスマン問題、施設配置問題などの 適化問題に適用できる

Page 8: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

突然変異(mutaAon)と置換(subsAtuAon)

突然変異は集団中の個体に生じる※ 進化に寄与するのは体細胞ではなく生殖系列   の細胞に生じる突然変異

Page 9: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

突然変異(mutaAon)と置換(subsAtuAon)

有害な突然変異は、集団から除去される(負の選択or純化淘汰)

Page 10: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

突然変異(mutaAon)と置換(subsAtuAon)

有利な突然変異は急速に集団中に広まり集団全体がその突然変異遺伝子で置き換えられる (正の選択)

Page 11: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

適応度 (fitness)

ある個体の子供の内の、繁殖年齢まで達したものの数

Page 12: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

遺伝的アルゴリズム

GeneAcAlgorithm(GA)1975年 JohnH.Hollandにより提案生物の遺伝の仕組みを模倣した 適化の手法たとえばナップザック問題、ハミルトン閉路問題、巡回セールスマン問題、施設配置問題などの 適化問題に適用できる巡回セールスマン問題を例として遺伝的アルゴリズムを学ぶ

Page 13: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

巡回セールスマン問題(travelingsalesmanproblem、TSP))

都市の集合と各2都市間の移動コスト(たとえば距離)が与えられたとき、全ての都市をちょうど一度ずつ巡り出発地に戻る巡回路の総移動コストが 小の順路を求める問題

Page 14: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

5つの都市を巡る問題を考える

1 2

34

hRp://www.slideshare.net/sandinist/ss-1617965を参考にした 

組み合わせは5!逆順の巡り方もあるのでその1/2で60通りの巡り方がありうる

Page 15: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

5つの都市を巡る問題を考える

1 2

34

hRp://www.slideshare.net/sandinist/ss-1617965の例に従い説明 

ここではコストは距離とする簡単のために都市間の距離は示さない1→2→5→4→3→1が 短経路とする

Page 16: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

遺伝的アルゴリズム

遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個体数を N, 大世代数を G と置く。① あらかじめ N 個の個体が入る集合を二つ用意する。以下、この二つの集合を「現世代」、「次世代」と呼ぶことにする。② 現世代に N 個の個体をランダムに生成する。③ 評価関数により、現世代の各個体の適応度をそれぞれ計算する。④ ある確率で次の3つの動作のどれかを行い、その結果を次世代に保存する。

–  個体を二つ選択(選択方法は後述)して交叉(後述)を行う。–  個体を一つ選択して突然変異(後述)を行う。–  個体を一つ選択してそのままコピーする。

⑤ 次世代の個体数が N 個になるまで上記の動作を繰り返す。⑥ 次世代の個体数が N 個になったら次世代の内容を全て現世代に移す。⑦ 3.以降の動作を 大世代数 G 回まで繰り返し、 終的に「現世代」の中で も適応度の高い個体を「解」として出力する。

hRp://ja.wikipedia.org/wiki/遺伝的アルゴリズム より

Page 17: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 18: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 19: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

集団サイズを3とする3個体を生成し、それぞれ次の順路に対応するとする個体1:①-②-③-④-⑤-①個体2:①-⑤-②-④-③-①個体3:①-②-⑤-④-⑤-①

Page 20: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

個体( Individual): 染色体(後で説明)によって   特徴づけられた自律的な個 集団( PopulaAon):個体の集まり 集団サイズ( PopolaAonSize):集団内の個体数

用語の説明

Page 21: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

経路を染色体として表現する

個体1:①-②-③-④-⑤-①個体2:①-⑤-②-④-③-①個体3:①-②-⑤-④-⑤-①

個体1 00000個体2 03010個体3 00200

Page 22: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

コード化の手順

個体2の場合について説明①-⑤-②-④-③-①の①-⑤-②-④-③部分のみを考える①-②-③-④-⑤という順番に対して①-⑤-②-④-③という順番で取り出すことを考える(1)①-②-③-④-⑤に 次のように数字をわりあてる0 1 2 3 4

Page 23: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

①-②-③-④-⑤0 1 2 3 4から①を取り出す(① - )

対応する0でコードし(0)、残る②-③-④-⑤を0123で表す

Page 24: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

②-③-④-⑤0 1 2 3から⑤を取り出す(① - ⑤ - )

対応する3でコードし(03)、残る②-③-④を012で表す

Page 25: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

②-③-④0 1 2 から②を取り出す(① - ⑤ - ② -)

対応する0でコードし(030)、残る③-④を01で表す

Page 26: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

③-④0 1 から④を取り出す(① - ⑤ - ② - ④ -)

対応する1でコードし(0301)、残る③を0で表す

Page 27: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

③0を取り出す(① - ⑤ - ② - ④ - ③)

対応する0でコードする(03010)

Page 28: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

コード化の意味

何故このような表現をとるのか?    後述の突然変異と交叉の処理が容易に    なるため※コード化の方法は一意に定まるものではない 同じ問題でも異なるコード化がありうる 問題に応じてコード化の工夫が必要

Page 29: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

用語の説明

• 遺伝子( Gene):個体の形質を規定する基本構成要素 個体2の場合 03010 の0,3,0,1,0のそれぞれが遺伝子• 染色体( Chromosome):複数の遺伝子の集まり 個体2の場合、03010の全体が染色体• 遺伝子座( Locus):染色体上の遺伝子の位置 • 対立遺伝子( Allele):遺伝子がとりうる値   遺伝子座2は、0,1,2,3の4つの値をとりうる。  ここの例では、個体1と3では0、個体2で3個体1 00000個体2 03010個体3 00200

Page 30: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

用語の説明

• 遺伝子型( Genotype):染色体の内部表現 • 表現型( Phenotype):染色体によって規定される形質の 外部的表現.巡回セールスマン問題の場合、巡路         表現型             遺伝子型個体1:①-②-③-④-⑤-① 00000個体2:①-⑤-②-④-③-① 03010個体3:①-②-⑤-④-⑤-① 00200• コード化( Coding):表現型から遺伝子型へ変換すること • デコード化( Decoding):遺伝子型から表現型変換すること

Page 31: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団完成

個体1 00000個体2 03010個体3 00200

Page 32: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 33: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

終了の判定

判定方法としていくつかのものが考えられる• 集団中の 大の適応度が,ある閾値より 大きくなった場合

• 集団全体の平均適応度が,ある閾値より 大きくなった場合

• 集団の適応度の増加率がある閾値以下 になる世代が一定期間続いた場合

• 世代交代の回数が規定の回数を超えた場合

Page 34: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 35: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

交叉

•  N個の親集団からランダムに2M個の個体を選択•  ペアごとに組替え処理•  N+2M個の個体が生成される今、M=1とし、乱数を利用して次の②個体が選択されたとする、個体2 03010個体3 00200

Page 36: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

交叉の方法

•  1点交叉法  染色体の切断箇所をランダムに 1カ所指定し,その箇所(下の例における赤線の部分)で遺伝子を交叉させる.01001|101 01001|110

01100|110 01100|101•  多点交叉法  染色体の切断箇所をランダムに複数カ所(下の例では,2カ所)指定し,それらの

箇所で遺伝子を交叉させる. 010|011|01 010|001|01011|001|10 011|011|10•  一様交叉法  染色体と同じ長さのマスクと呼ばれるビット列を,0に対しては確率 p,また,1に

対しては確率 (1-p)で発生させ,マスクの値が 1であるときは親Aの遺伝子を子 C(親 Bの遺伝子を子D)に,また,0であるときは親 Bの遺伝子を子 C(親 Aの遺伝子を子 D)に継承させる.

例えば,マスクが 00101011となった場合は,以下のようになる. A 01001101 C01000101

B 01100110 D01101110•    個体の遺伝子型が連続値を表すときには,2つの親の平均値を子の遺伝子とする,平均化交

叉等の方法も使用される.平均化交叉では,2つの親から 1つの子供が生成される.

hRp://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/opt/GA/GA.htm#4.3より転載

Page 37: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

一様交叉を選択された個体2と個体3に適用  マスクが01101とおく

01101個体203010 03000 個体300200 00210が得られる子集団に交叉で得られた集団(サイズ2)を加える。

Page 38: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 39: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

突然変異

ある与えられた確率 Pm(突然変異率)で,突然変異を起こさせる。突然変異率は通常小さな値(たとえば5%)に設定。一般的な方法として、各遺伝子をランダムに対立遺伝子に置き換える。今回の例の場合、親集団(サイズ3)の各遺伝子座(5個)について、0~1の一様乱数を発生させ、それが0.05より小さい場合、その遺伝子座の可能な対立遺伝子のいづれかに置換する。

個体1 00000個体2 03010個体3 00200

ここで乱数が0.05より小さかったとする

Page 40: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

個体3 00200遺伝子座2は、0,1,2,3を取りうる。この場合は1,2,3の3つから乱数で一つを選ぶと、2であったとし、0を2に変更          02200という個体を生成し、子集団に加える。

Page 41: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

子集団

交叉によって生じた03000  -----à①-⑤-②-③-④00210  -----à①-②-⑤-④-③突然変異によって生じた02200  ----à①-④-⑤-②-③の3個体が含まれている。

Page 42: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 43: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

各個体の評価

1 2

34

hRp://www.slideshare.net/sandinist/ss-1617965を参考にした 

各個体の順路の総距離が短いものが評価(適応度)が高い適応度として 適化問題の目的関数を使用するここでは、総距離の逆数を適応度とする。

Page 44: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

各個体の評価

1 2

34

hRp://www.slideshare.net/sandinist/ss-1617965を参考にした 

親集団個体1:①-②-③-④-⑤-① 115km個体2:①-⑤-②-④-③-① 105km個体3:①-②-⑤-③-④-① 110km

子集団

03000: ①-⑤-②-③-④-①   113km00210: ①-②-⑤-④-③-①118km02200:  ①-④-⑤-②-③-①   119km

個体2の総距離が 小

個体2の適応度が も高い

Page 45: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 46: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

選択

親集団(サイズN)+子集団(サイズM)から次世代の集団を構成するN個体を選ぶ

選択の方法は様々なものが考案されている(1)ルーレット方式(2)ランキング方式(3)定常状態選択(4)ボルツマン選択(5)トーナメント方式…

Page 47: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

適応度

個体1:①-②-③-④-⑤-① 1/115個体2:①-⑤-②-④-③-① 1/105個体3:①-②-⑤-③-④-① 1/11003000: ①-⑤-②-③-④-① 1/11300210: ①-②-⑤-④-③-① 1/11802200:  ①-④-⑤-②-③-①  1/119

S=1/115+1/105+1/110+1/113+1/118+1/119各個体をルーレット方式で選択する

個体1

個体2

個体3

1

2

3

4

5

6

03000

00210

02200

Page 48: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ランキング方式各個体を適応度によってランク付けして、「1位なら確率 p1,2位なら確率 p2,3位なら…」というふうにランクごとにあらかじめ確率を決めておく方式個体1:①-②-③-④-⑤-① 4位0.05個体2:①-⑤-②-④-③-① 1位 0.4個体3:①-②-⑤-③-④-① 2位 0.203000:①-⑤-②-③-④-① 3位 0.100210:①-②-⑤-④-③-① 5位 0.0302200:①-④-⑤-②-③-① 6位  0.02

ルーレット方式の場合(1)先の例の場合のように適応度にあまり差がつかない個体間に選択に関する差を導入(2) も適合度の高い個体がルーレットの90%を占める場合、他の個体は選ばれなくなる

1

2

3

4

5

6

個体1

個体2個体3

030000021002200

Page 49: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

エリート主義(eliAsm)

も高い適応度を示す個体あるいは複数の上位の適応度を示す個体を次世代に残し、残りをルーレット方式やランキング方式などで選択。見つかった中で も良いものを失わずにすむので、GAのパフォーマンスを向上させることができる

Page 50: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ここではランキング方式で、第二世代として以下が選択されたとする

個体2 03010個体3 00200個体2 03010

ここから終了判定移行し、終了と判定されなければ、第二世代について、交叉、突然変異、選択を実施し、第三世代を作成する。終了するまでこの操作を繰り返す。

Page 51: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

「モデリングシミュレーション入門」第13回2005/01/14 井庭 崇 より

組換え

突然変異

交叉によって、局所的な 適解に陥るのをふせぎ、大域的な 適解を探索できる。

Page 52: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

Page 53: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

終了時処理

終的に「現世代」の中で も適応度の高い個体を「解」として出力する。それまでの世代で生成された も適応度の高い個体を「解」として出力する方法もある。

Page 54: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

初期集団の生成

終了判定

突然変異

選択

交叉

適応度の評価

終了YES

NO

※ テキストによって処理の仕方は微妙に異なっている

Page 55: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

遺伝的アルゴリズムでブランコの漕ぎ方を学習させた。hRp://www.youtube.com/watch?v=8vzTCC-jbwM#t=14

Page 56: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

物理エンジン

物理エンジン:コンピュータ上の仮想的な3次元空間において重力、摩擦力などを自動計算して物体の動きをシミュレーションするソフトウェアChipmunkPhysicshRp://chipmunk-physics.net/PhysXhRp://developer.nvidia.com/object/physx_downloads.htmlBULLEThRp://code.google.com/p/bullet/downloads/listDynamohRp://home.iae.nl/users/starcat/dynamo/dynamo.zipSpringheadhRp://springhead.info/wiki/index.php?plugin=aRach&refer=Springhea...

Page 57: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 58: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 59: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Rとは 統計解析のためにデザインされたプログラミング言語 オープンソースのフリーソフトウェア (無料) マルチプラットフォーム  (Windows, Mac, UNIXなどのOSで同一の作業ができる) 世界各地のRユーザが開発したプログラム(パッケージ)が CRAN (The Comprehensive R Archive Network)を介して 配信されている。   ( 新の手法が無料で利用可能) 生物系、特にゲノムワイドなデータの解析のパッケージも 充実している  (Bioconductor)

Page 60: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

PubMedで、”R”、”package”, “Bioinformatics”, “2015”で検索 151 件 検出 (2015年9月10日) ほとんどは新規パッケージ開発の論文。2割弱がRのパッケージを利用した解析

Rは生命科学の分野でも広く利用されている

http://sci-tech.ksc.kwansei.ac.jp/~tohhiro/link.htmlよりダウンロード

Page 61: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

アイコンをクリック

Rの起動

Page 62: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

コンソール画面が立ち上がる

プロンプト(>)の後に入力

Page 63: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> 3 + 4![1] 7!> 2.3-2.1![1] 0.2!> 3.14*2.0![1] 6.28!> 3/4![1] 0.75!> 1.5^3![1] 3.375!> 3.2%%3![1] 0.2!> 9%/%4![1] 2!

プロンプトの後ろにコマンドを入力してEnterを押すと実行

加 減 乗 除 冪 剰余 切り捨て

Page 64: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

変数への値の代入と演算

> a <- 2!> a![1] 2!> print(a)![1] 2!> b <- 9.7!> b^a![1] 94.09!> c <- b^a + b/a!> c![1] 98.94!> b/a![1] 4.85!

変数名は、Rの関数名などとして予約 されているものでなければ、半角英数字 を使って自由に指定できる ただし、変数名を数字ではじめてはいけない 大文字、小文字は区別される

> a <- 2!> A <- 3!> print(a)![1] 2!> print(A)![1] 3!> ips <- 5!> a.Boss <- 3!> ips <- ips + a.Boss!> ips![1] 8!

Page 65: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> sqrt(2)![1] 1.414214!> exp(2)![1] 7.389056!> exp(1)![1] 2.718282!> 2.718282^2![1] 7.389057!> sqrt(exp(2))![1] 2.718282!

sqrt 平方根 exp 指数関数

関数の引数に関数をいれることも できる

Page 66: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> sin(pi/2)![1] 1!> cos(pi/2)![1] 6.123234e-17!> sin(pi)![1] 1.224647e-16!> cos(pi)![1] -1!> tan(0)![1] 0!> tan(pi/2)![1] 1.633124e+16!> sin(pi/2)/cos(pi/2)![1] 1.633124e+16!!

数値的に計算されるので 正確には0であるが、 非常に小さな値として表示

三角関数 sin, cos, tan

本来、無限大になるはず だが、数値的に計算され ているので大きな値として 表示

6.123234e-17=6.123234×10-17!!

Page 67: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

四捨五入 > pi![1] 3.141593!> round(pi)![1] 3!> round(pi,4)![1] 3.1416!> round(pi,3)![1] 3.142!> round(pi,2)![1] 3.14!

Page 68: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

切り捨て !trunc!大整数!floor!

切り上げ!ceiling!!> trunc(-5.678)![1] -5!> trunc(5.678)![1] 5!> floor(-5.678)![1] -6!> floor(5.678)![1] 5!> ceiling(-5.678)![1] -5!> ceiling(5.678)![1] 6!

Page 69: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Rではベクトルはc()で作成 > y <- c(9.02, 20.124, -0.998, 4.787)!> y![1] 9.020 20.124 -0.998 4.787!

大、 小 max, min!!> min(y)![1] -0.998!> max(y)![1] 20.124!

Page 70: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> x <- c(-pi, -pi*0.75, -pi*0.5, -pi*0.25, 0, pi*0.25, pi*0.5, !pi*0.75, pi)!> y <- sin(x)!> y![1] -1.224647e-16 -7.071068e-01 -1.000000e+00 -7.071068e-01 !0.000000e+00 7.071068e-01 1.000000e+00 7.071068e-01![9] 1.224647e-16!> plot(x, y)! 次ページ図 もっと、間隔を細かくとって、より滑らかな曲線を描きたい。 しかし、手作業で x 座標を書くのはめんどうくさい。 次の方法で解決 seq ある区間を、等しい間隔で区切ったベクトルを発生させる

Page 71: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 72: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> seq(1,5,0.5)![1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0!> seq(3,5,1)![1] 3 4 5!!seq(start, end, 間隔)!!!> x <- seq(-pi,pi,0.01)!> x! [1] -3.141592654 -3.131592654 -3.121592654 -3.111592654!…![628] 3.128407346 3.138407346!!> y <- sin(x)!> plot(x,y)!図は次ページ!!なめらかになったが、ドットで表示するのは見栄えがよくない。!点を打って線でつなぎたい。!!!

Page 73: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 74: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> plot(x,y,ty='l')

x軸のラベルをday、y軸のラベルをvariation, 全体のタイトルを SINE CURVEとする。

Page 75: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> plot(x, y, ty='l',xlab="day", ylab="variation", main="SINE CURVE")

Page 76: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

生成されたグラフィクスの保存 画像ファイルの形式を、pngあるいはepsで保存したい場合 グラフィクスコマンドを実行する前に png(ファイル名)、あるいはpostscript(ファイル名)を実行!!グラフィクスコマンド(plotやcurve)を実行した後に!!dev.off()を実行!Rを実行している作業ディレクトリ(後述)内に、画像ファイル!が作成される。

Page 77: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> png("test.png")!> plot(x, y, pch=23)!> dev.off()!quartz ! 2 !!スクリーン上にはグラフィクスは表示されない!!test.pngをクリックすると図が表示される。!

Page 78: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

関数quit()で終了

“保存しない”を押して 終了してから、再度 Rを起動

Page 79: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ベクトル(vector)

> 1:50! [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24![25] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48![49] 49 50> > rep(3, 12) # 3を12回繰り返す! [1] 3 3 3 3 3 3 3 3 3 3 3 3!> !> rep(c(5,7), 2) # 5と7を2回繰り返す![1] 5 7 5 7!>!> rep(3:5, 1:3) # 3を1回、4を2回、5を3回繰り返す![1] 3 4 4 5 5 5!> !> x <- 1:50!> x! [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41![42] 42 43 44 45 46 47 48 49 50!> x <- seq(1,50)!> x! [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41![42] 42 43 44 45 46 47 48 49 50!

c(),seq以外の方法

Page 80: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> x <- c(2,4.5,1.9,1.1,3.3)!> x![1] 2.0 4.5 1.9 1.1 3.3!> y <- c(4.1,5.5, 1,2.1,2.2)!> y![1] 4.1 5.5 1.0 2.1 2.2!> length(x)       ベクトルのサイズ![1] 5!> length(y)![1] 5!> z <- 5*x        ベクトルの実数倍!> z![1] 10.0 22.5 9.5 5.5 16.5!> x %*% y ベクトルの内積! [,1]![1,] 44.42!

Page 81: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> x[1] ベクトルxの要素1を参照![1] 2!> y[2]              ベクトルyの要素1を参照![1] 5.5!> x[1]*y[1]+x[2]*y[2]+x[3]*y[3]+x[4]*y[4]+x[5]*y[5]![1] 44.42!!> sum(x)![1] 12.8!> sum(y)![1] 14.9!

Page 82: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> x <- matrix(c(1,9,2,8,3,7,4,6), ncol=4)!> x! [,1] [,2] [,3] [,4]![1,] 1 2 3 4![2,] 9 8 7 6!> x <- matrix(c(1,9,2,8,3,7,4,6), ncol=4, byrow=TRUE)!> x! [,1] [,2] [,3] [,4]![1,] 1 9 2 8![2,] 3 7 4 6!

Page 83: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> Z <- matrix(1:6, ncol=3)!>!> dim(Z) # 行列のサイズ![1] 2 3!>!> ncol(Z) # 列の数![1] 3!>!> nrow(Z) # 行の数![1] 2!>!> Z[1,2] # 要素の取り出し![1] 3!>!> Z[1,] # 行の取り出し![1] 1 3 5!>!> Z[,2] # 列の取り出し![1] 3 4!> !> length(Z) # 全要素の数![1] 6!!

1 !3 !5!2 !4 !6

Page 84: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

繰り返し処理の書き方 (1) for ループ

for ( i in ベクトル ) {!! 繰り返し処理の内容!}!!制御変数 i はベクトルの要素の値を毎回とる!( 変数名は i である必要はない)!!ベクトルの次元数だけ処理が繰り返される!!通常 ベクトルの与え方は 1:10!などのようの i が1づつ増えるように書くことが多い。

Page 85: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

j <- 0!for (i in 1:5) {! j <- j + i!}!print(j)

1から5までの数字を 足す処理 for 文で iは1から5まで 変化し、各i について!{}内の処理が行われる。

  i 左辺のj 右辺のj i! i = 1 1 <- 0 + 1! i = 2 3 <- 1 + 2! i = 3 6 <- 3 + 3! i = 4 10 <- 6 + 4! i = 5 15 <- 10 + 5!           更新されたj 前のステップのj  

R上で 1+2+3+4+5 を実行して同じになるか確認しよう

Page 86: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Rには様々な関数が容易されているが自分のデータの処理には足りない場合がある。

自分のオリジナル関数を作成しよう

Page 87: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Rでは、自分の関数は次のように作成する。!!関数名 <- function(引数1, 引数2, …) {!! 括弧内の引数を使った処理を記述!!    return (戻り値)!}!!!例えば xとyの積を求める関数は次のように書ける。!!xy <- function(x, y) {! return (x*y)!}

※ 引数をx, yにする必然性はなく、他の変数名でも構わない!処理の記述部分には引数として与えられた変数名で記述

Page 88: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

プログラムのファイルは拡張子をRとしておく。!ドキュメントフォルダ(Zドライブ)におく。!!xy.Rをsourceで、実行中のコンソール画面から読み込むと!オリジナル関数xyを利用できるようになる。!> source("Z:xy.R")!> xy(4,5)![1] 20!> xy(1.41421356, 1.41421356)![1] 2!

Page 89: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

問題1!forループを使って、与えられた2つのベクトルの内積を!もとめるプログラムを作成してみる。!naiseki.Rを穴埋めする形で作成 naiseki <- function(a, b) {! len <-! j <- 0! for (i in 1:len) {! j <- j +! }! return (j)!}! 完成させたファイルをsource(“Z:¥nakseki.R”)でよみこんで!sampleR4.txt中のベクトルのペアをコピペで与えて内積を計算

Page 90: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ベクトルの形で与えられた数値データの 平均値を求めるプログラムを作成してみる。 forループを使用する。

heikin <- function(x) {! len <-!! j <- 0! for (i in ) {! j <- j +! }!! return (j/len)!}!

問題2

Page 91: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

行列は1種類の型のみで構成される表形式のデータ

> x <- matrix(c(1,5,9,2),ncol=2)!> typeof(x)![1] "double”!> x <- matrix(c("a","b","c","d","ef","gde"), ncol=3)!> typeof(x)![1] "character”!> x! [,1] [,2] [,3] ![1,] "a" "c" "ef" ![2,] "b" "d" "gde"!

Page 92: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

行列で数字と文字を混在させると、自動的に数字は文字型に される > x <- matrix(c("a","b","c","d",1,2), ncol=3)!> x! [,1] [,2] [,3]![1,] "a" "c" "1" ![2,] "b" "d" "2" !> typeof(x)![1] "character"! 行列は1種類のデータ型のみで構成される!! ------à 複数のデータ型を混在させることのできる表形式      のデータをRではデータフレームとよぶ

行列では文字型として 扱われる

Page 93: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

> x[1,]! V1 V2 V3!1 1.95 3.3 RED!> x[,3]! [1] RED YELLOW YELLOW RED RED YELLOW RED YELLOW YELLOW YELLOW![11] RED !Levels: RED YELLOW!> x[1,3]![1] RED!Levels: RED YELLOW!> x[3,2]![1] 2.2!

データフレームも行列と同様に添字で要素を指定して 参照できる

Page 94: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

!1.95 3.3 RED!1.55 2.1 YELLOW!1.45 2.2 YELLOW!2.01 3.4 RED!2.13 3.0 RED!1.54 1.9 YELLOW!1.98 2.9 RED!1.47 1.8 YELLOW!1.34 1.7 YELLOW!1.36 1.8 YELLOW!2.23 3.1 RED !

データフレーム x

x[,1] x[,2] x[,3]

それぞれ、xの1列、2列、3列をベクトルとして抽出

Page 95: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

!1.95 3.3 RED!1.55 2.1 YELLOW!1.45 2.2 YELLOW!2.01 3.4 RED!2.13 3.0 RED!1.54 1.9 YELLOW!1.98 2.9 RED!1.47 1.8 YELLOW!1.34 1.7 YELLOW!1.36 1.8 YELLOW!2.23 3.1 RED !

データフレーム x

x[1,]!!!!x[5,]!!!!!!x[11,]!

xの1行、5行、11行をベクトルとして抽出

Page 96: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

!1.95 3.3 RED!1.55 2.1 YELLOW!1.45 2.2 YELLOW!2.01 3.4 RED!2.13 3.0 RED!1.54 1.9 YELLOW!1.98 2.9 RED!1.47 1.8 YELLOW!1.34 1.7 YELLOW!1.36 1.8 YELLOW!2.23 3.1 RED !

データフレーム x

!!!x[5,3]!!!!!!

添字でxの要素を添字を指定して抽出

x[1,1]!

x[11,2]!

Page 97: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 98: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

http://thegrantlab.org/bio3d/index.php

Bio3DisanRpackagecontaininguAliAesfortheanalysisofproteinstructure,sequenceandtrajectorydata.

Page 99: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

bio3dパッケージのインストール

Page 100: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

bio3dパッケージによるタンパク質立体構造データの処理の基本

Page 101: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 102: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 103: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

•  網羅的に立体構造情報を収集しているもの

生体高分子の立体構造を扱ったデータベース

PDBj

ヨーロッパ欧州バイオインフォマティクス研究所(EBI)高分子構造データベース (MSD-EBI)

日本大阪大学蛋白質研究所

アメリカ構造バイオインフォマティクス研究共同体 (RCSB)

RSCB PDB PDBe

wwPDB

Page 104: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

PDBj

ヨーロッパ欧州バイオインフォマティクス研究所(EBI)高分子構造データベース (MSD-EBI)

日本大阪大学蛋白質研究所

アメリカ構造バイオインフォマティクス研究共同体 (RCSB)

RSCB PDB PDBe

wwPDB

► 網羅的に立体構造情報を収集しているもの

生体高分子の立体構造を扱ったデータベース

Page 105: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

•  PDBファイルの中身

生体高分子の立体構造を扱ったデータベース

HEADERTRANSFERASE30-AUG-041XBBTITLECRYSTALSTRUCTUREOFTHESYKTYROSINEKINASEDOMAINWITHTITLE2GLEEVECCOMPNDMOL_ID:1;COMPND2MOLECULE:TYROSINE-PROTEINKINASESYK;COMPND3CHAIN:A;COMPND4SYNONYM:SPLEENTYROSINEKINASE;COMPND5EC:2.7.1.112;COMPND6ENGINEERED:YESSOURCEMOL_ID:1;SOURCE2ORGANISM_SCIENTIFIC:HOMOSAPIENS;SOURCE3ORGANISM_COMMON:HUMAN;SOURCE4ORGANISM_TAXID:9606;SOURCE5GENE:SYK;SOURCE6EXPRESSION_SYSTEM:SPODOPTERAFRUGIPERDA;SOURCE7EXPRESSION_SYSTEM_COMMON:FALLARMYWORM;SOURCE8EXPRESSION_SYSTEM_TAXID:7108;SOURCE9EXPRESSION_SYSTEM_CELL_LINE:SF9;SOURCE10EXPRESSION_SYSTEM_VECTOR_TYPE:BACULOVIRUSKEYWDSGLEEVEC,STI-571,IMATINIB,SYK,SPLEENTYPROSINEKINASE,KEYWDS2ACTIVECONFORMATION,STRUCTURALGENOMICS,STRUCTURALKEYWDS3GENOMIX,TRANSFERASEEXPDTAX-RAYDIFFRACTIONAUTHORV.L.NIENABER,S.ATWELL,J.M.ADAMS,J.BADGER,M.D.BUCHANAN,AUTHOR2I.K.FEIL,K.J.FRONING,X.GAO,J.HENDLE,K.KEEGAN,B.C.LEON,AUTHOR3H.J.MULLER-DEICKMANN,B.W.NOLAND,K.POST,K.R.RAJASHANKAR,AUTHOR4A.RAMOS,M.RUSSELL,S.K.BURLEY,S.G.BUCHANAN(省略)

Page 106: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

HEADERTRANSFERASE30-AUG-041XBBTITLECRYSTALSTRUCTUREOFTHESYKTYROSINEKINASEDOMAINWITHTITLE2GLEEVECCOMPNDMOL_ID:1;COMPND2MOLECULE:TYROSINE-PROTEINKINASESYK;COMPND3CHAIN:A;COMPND4SYNONYM:SPLEENTYROSINEKINASE;COMPND5EC:2.7.1.112;COMPND6ENGINEERED:YESSOURCEMOL_ID:1;SOURCE2ORGANISM_SCIENTIFIC:HOMOSAPIENS;SOURCE3ORGANISM_COMMON:HUMAN;SOURCE4ORGANISM_TAXID:9606;SOURCE5GENE:SYK;SOURCE6EXPRESSION_SYSTEM:SPODOPTERAFRUGIPERDA;SOURCE7EXPRESSION_SYSTEM_COMMON:FALLARMYWORM;SOURCE8EXPRESSION_SYSTEM_TAXID:7108;SOURCE9EXPRESSION_SYSTEM_CELL_LINE:SF9;SOURCE10EXPRESSION_SYSTEM_VECTOR_TYPE:BACULOVIRUSKEYWDSGLEEVEC,STI-571,IMATINIB,SYK,SPLEENTYPROSINEKINASE,KEYWDS2ACTIVECONFORMATION,STRUCTURALGENOMICS,STRUCTURALKEYWDS3GENOMIX,TRANSFERASEEXPDTAX-RAYDIFFRACTIONAUTHORV.L.NIENABER,S.ATWELL,J.M.ADAMS,J.BADGER,M.D.BUCHANAN,AUTHOR2I.K.FEIL,K.J.FRONING,X.GAO,J.HENDLE,K.KEEGAN,B.C.LEON,AUTHOR3H.J.MULLER-DEICKMANN,B.W.NOLAND,K.POST,K.R.RAJASHANKAR,AUTHOR4A.RAMOS,M.RUSSELL,S.K.BURLEY,S.G.BUCHANAN(省略)

•  PDBファイルの中身

生体高分子の立体構造を扱ったデータベース

ヘッダー ボディHEADER 物質の分類名、日付、ファイル名COMPND タンパク質名SOURCE 物質が由来する生物名AUTHOR 座標を作成した著者名REVDAT データが登録された日JRNL 文献情報REMARK 実験条件などに関する情報SEQRES アミノ酸配列HET アミノ酸以外の原子HELIX αーヘリックスに関する情報SHEET βーシートに関する情報TURN βーターンに関する情報SSBOND ジスルフィド結合に関する情報ATOM 個々のアミノ酸の原子の座標HETATM アミノ酸以外の原子の座標CONTACT 原子の結合に関する情報END ファイルの終了

Page 107: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ATOM1NVALA36322.741-1.39711.7291.0033.32NATOM2CAVALA36321.557-0.83111.0241.0032.13CATOM3CVALA36320.954-1.7579.9431.0031.73CATOM4OVALA36319.737-1.9069.8451.0030.94OATOM5CBVALA36321.8830.55210.3911.0033.45CATOM6NTYRA36421.798-2.3899.1351.0029.77NATOM7CATYRA36421.310-3.0357.9281.0027.96CATOM8CTYRA36420.929-4.4858.1571.0026.43CATOM9OTYRA36421.735-5.2748.6501.0029.31OATOM10CBTYRA36422.349-2.9016.8081.0028.13CATOM11CGTYRA36422.619-1.4616.4421.0028.30CATOM12CD1TYRA36421.725-0.7515.6381.0030.33CATOM13CD2TYRA36423.772-0.8156.8931.0030.80CATOM14CE1TYRA36421.9590.5885.2851.0031.59CATOM15CE2TYRA36424.0190.5236.5411.0032.22CATOM16CZTYRA36423.1011.2085.7331.0032.48CATOM17OHTYRA36423.3302.5245.3891.0036.29O

生体高分子の立体構造を扱ったデータベース

•  座標データ

1残基

1残基

原子の名前

アミノ酸の名前

チェインの名前 アミノ酸残基番号

x座標

y座標

z座標

占有率

温度因子 原子

1原子

Page 108: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

座標データを見ていても何も情報が得られない。

立体構造の可視化ツールが必要

分子グラフィクスPyMol,jViewer,MolMoletc.

Page 109: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

http://osdn.jp/projects/sfnet_molmol/downloads/Installation%20Files/Windows/Windows-MolMol-V1.0.7.zip/

MolMolWindowsバージョンの入手

Page 110: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

実行ファイルのアイコンをクリックすると次のような画面が現れる

Page 111: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

PDBファイルの読み込み[File]→[ReadMol]→[PDB...]

Page 112: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

PDBファイルの読み込み[File]→[ReadMol]→[PDB...]

ここでファイルを指定

Page 113: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

うまく読み込めると立体構造が表示されるマウスでドラッグして動かすことができる左ボタン  :回転中ボタン  :移動左+中ボタン:ズーム

Page 114: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

リボン表示

リボンをクリック

Page 115: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Closeをクリック

Page 116: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 117: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

一つの画面に2つ以上のタンパク質立体構造を表示

この状態で、[File]→[ReadMol]→[PDB...]で別のpdbファイルを読み込む

Page 118: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 119: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ribbonをクリック

Page 120: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 121: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

分子の消去

[Edit]→[Molecule]→[Remove]

Page 122: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

OUTLINE

1.  遺伝的アルゴリズムとは2.  Rの基礎3.  bio3dの使い方4.  MolMolの使い方5.  演習に使用するプログラムとデータの説明  タンパク質立体構造の重ね合わせの説明

Page 123: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

RMSD

rmsd (root mean square distance) =

1n

(dist(A(i),B(i))2∑

残基間対応が最初に与えられていると計算は容易�

Page 124: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

構造比較の原点 -重ね合わせ(superposiAon)-

対応するCα原子間距離が最小になるように二つの鎖を重ね合わせる (平行移動と回転)�

McLachlan, A.D. (1972) Nature New Biol. 240, 83-85.

Page 125: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

Cαの幾何重心を求め、それぞれ幾何重心の位置を原点とする

Page 126: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

X軸

Y軸

Z軸

Page 127: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 128: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

strovga2.Rを完成させて、相同な立体構造の遺伝的アルゴリズムで重ね合わせを行う。1jl9.pdbと、それを平行移動と回転で変形した1jl9m.pdbを、アラインメント 1jl9.aln.fastaに従い重ね合わせ (xyzの各軸についてπ/4回転させ、x、y、zの 各方向に6.5Å, 4.3Å, 4.5Å平行移動) 1jl9.pdbと、それに相同な構造である3c9a.pdbを、アラインメントseq.aln.fasta に従って重ね合わせ --------------------------------------------------------------- Rのエディタでstrovga2.Rを開き、空欄になっているところを埋めて、プログラムを完成 strovga2.Rを保存する。 source(“strova2.R”)で遺伝的アルゴリズムによる重ねあわせプログラムを読み込む strovga(1000, 100, "1jl9m.pdb","1jl9.pdb","1jl9.aln.fasta", 1.0, 1.0, "test3.pdb", "test4.pdb", "plot1.png") strovga(1000, 100, "3c9a.pdb","1jl9.pdb","seq.aln.fasta", 1.0, 1.0, "test5.pdb", "test6.pdb", "plot2.png") strovga(集団サイズ, 世代数, pdbファイル1, pdbファイル2, アラインメントファイル, 突然変異率, 組換え率,   変換したpdnファイル1, 変換したファイル2, 各世代の 小rmsdのプロットのpngファイル)

Page 129: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

strovga <- function(popsize, genum, pdb1, pdb2, aln, mrate, rrate, out1, out2, out3) { print("-----> library bio3d is called") library(bio3d) print("-----> two pdb files and a fasta alignment file are read") p1 <- read.pdb(pdb1) p2 <- read.pdb(pdb2) align <- read.fasta(aln) print("-----> correspondece between alignment and pdb is made") size <- length(align$ali[1,]) pos <- matrix(rep(0, 2*size), ncol=size) for (i in 1:2) { site <- 1 for (j in 1:size) { if (align$ali[i, j] != '-') { pos[i, j] <- site site <- site + 1 } } } print(size) print(align$ali[1,]) print(pos[1,]) print(align$ali[2,]) print(pos[2,]) print("-----> CA coordinates are obtained from PDB data")

Page 130: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

ca1 <- p1$atom[p1$atom[,3]=='CA',] ca2 <- p2$atom[p2$atom[,3]=='CA',] for (i in 1:length(pos[1,])) { if (pos[1, i] != 0 && pos[2, i] != 0) { cat(ca1$resid[pos[1,i]],":",ca2$resid[pos[2,i]],"\n") } else if (pos[1, i] != 0 && pos[2, i] == 0) { cat(ca1$resid[pos[1,i]],":","-","\n") } else if (pos[1, i] == 0 && pos[2, i] != 0) { cat("-",":",ca2$resid[pos[2,i]],"\n") } } print("-----> coordinates of the first three CA atoms for two pdb files ") print(ca1[1:3,]) print(ca2[1:3,]) print("-----> Calculation of geometric center of 1st PDB file") ca1gx <- mean(ca1$x) ca1gy <- mean(ca1$y) ca1gz <- mean(ca1$z) print("-----> Calculation of geometric center of 2nd PDB file") ca2gx <- mean(ca2$x) ca2gy <- mean(ca2$y) ca2gz <- mean(ca2$z)

Page 131: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

print("-----> The geometric centers of the CA coordicates are set to the orign ") ca1$x <- ca1$x -ca1gx ca1$y <- ca1$y -ca1gy ca1$z <- ca1$z -ca1gz ca2$x <- ca2$x -ca2gx ca2$y <- ca2$y -ca2gy ca2$z <- ca2$z -ca2gz p1x <- p1 p1x$atom[,9] <- p1x$atom[,9] - ca1gx p1x$atom[,10] <- p1x$atom[,10] - ca1gy p1x$atom[,11] <- p1x$atom[,11] - ca1gz p2x <- p2 p2x$atom[,9] <- p2x$atom[,9] - ca2gx p2x$atom[,10] <- p2x$atom[,10] - ca2gy p2x$atom[,11] <- p2x$atom[,11] - ca2gz print("-----> Population is generated") population <- matrix(runif(popsize*3)*2*pi,ncol=3) recd <- rep(0, genum) cat("initial rmsd = ", (1/calcFitness(ca1, ca2, pos, size, c(0,0,0)))-0.01,"\n") count <- 0 rt <- 1.0

Page 132: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

for (i in 1:genum) { cat("-----> Generation:", i, "\n") cat("-----> Mutation: ") mx <- runif(popsize) my <- runif(popsize) mz <- runif(popsize) mut <- data.frame(mx, my, mz) msize <- length(mut[mut$mx < mrate | mut$my < mrate | mut$mz < mrate, 1]) mutants <- matrix(rep(0.0, 3*msize), ncol=3) cat("No of mutants = ", msize, "\n") k <- 1 for (j in 1:popsize) { if (mut$mx[j] > mrate && mut$my[j] > mrate && mut$my[j] > mrate) next else { mutants[k, 1] <- modAngle(mut$mx[j], mrate, population[j, 1], rt) mutants[k, 2] <- modAngle(mut$my[j], mrate, population[j, 2], rt) mutants[k, 3] <- modAngle(mut$mz[j], mrate, population[j, 3], rt) k <- k + 1 } } cat("-----> Recombination: ") setp <- rbind(population, mutants) popsize2 <- length(setp[,1]) q <- runif(popsize2) rsize <- length(q[q < rrate])

Page 133: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

cat("rsize = ", rsize, "\n") cat("No of Recombinants = ", rsize, "\n") mem1 <- ceiling(runif(rsize) * popsize2) mem2 <- ceiling(runif(rsize) * popsize2) rp <- ceiling(runif(rsize) *2 ) for (j in 1:rsize) recombinants <- matrix(runif(rsize*3), ncol=3) if (rsize != 0) { for (j in 1:rsize) { if (rp[j] == 1) { recombinants[j, 1] <- setp[mem1[j], 1] recombinants[j, 2] <- setp[mem2[j], 2] recombinants[j, 3] <- setp[mem2[j], 3] } else { recombinants[j, 1] <- setp[mem1[j], 1] recombinants[j, 2] <- setp[mem1[j], 2] recombinants[j, 3] <- setp[mem2[j], 3] } } } cat("-----> Calculation of Fitness\n") setp <- rbind(setp, recombinants) sizes <- length(setp[,1]) fitness <- runif(sizes) for (j in 1: sizes) { fitness[j] <- calcFitness(ca1, ca2, pos, size, setp[j,]) } ord <- order(fitness, decreasing=TRUE) # cat(sort(fitness, decreasing=TRUE))

Page 134: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

cat("-----> Sampling Next Generation\n") wheel <- rep(0, sizes) for (j in 1: sizes) { if (j == 1) wheel[1] <- fitness[ord[1]] else wheel[j] <- wheel[j-1] + fitness[ord[j]] } rnd <- runif(popsize)*wheel[sizes] rnd <- sort(rnd) mem <- rep(0, sizes) for (j in 1:sizes) { if (j == 1) { mem[1] = length(rnd[rnd < wheel[1]]) } else { mem[j] <- length(rnd[rnd< wheel[j]]) - length(rnd[rnd < wheel[j-1]]) } } cat("-----> Elite Selection\n") if (mem[1] == 0) { mem[1] = 1 for (j in 2:sizes) { if (mem[j] != 0) { mem[j] = mem[j] - 1 break } } } # cat("mem:",mem,"\n")

Page 135: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

cat("-----> Make Next Generation\n") l <- 1 for (j in 1:sizes) { if (mem[j] == 0) next else { for (k in 1:mem[j]) { population[l, 1] population[l, 2] population[l, 3] l <- l + 1 } } } recd[i] <- 1/(fitness[ord[1]]) - 0.01 if ( i > 1 && recd[i]==recd[i-1] ) { count <- count + 1 } if (count > 15) { count <- 0 rt <- rt * 0.5 } if (i > 1 && count != 0 && recd[i]!= recd[i-1]) { count <- 0 } cat("Min RMSD of Generation ",i," = ", recd[i],"\n") } png(out3) plot(1:genum, recd, type='l') dev.off() ax <- setp[ord[1], 1] ay <- setp[ord[1], 2] az <- setp[ord[1], 3] # cat(ax, ay, az)

Page 136: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

rmtx <- rx(ax) rmtx <- rmtx %*% ry(ay) rmtx <- rmtx %*% rz(az) for (i in 1:length(p1x$atom[,1])) { cc <- rmtx %*% c(p1x$atom[i,9], p1x$atom[i,10], p1x$atom[i,11]) p1x$atom[i, 9] <- cc[1] p1x$atom[i, 10] <- cc[2] p1x$atom[i, 11] <- cc[3] } xx <- c() for (i in 1:length(p1x$atom[,1])) { xx <- c(xx, p1x$atom[i, 9:11]) } xx <- round(as.numeric(xx), 3) write.pdb(p1x, xyz = xx, file=out1) xx <- c() for (i in 1:length(p2x$atom[,1])) { xx <- c(xx, p2x$atom[i, 9:11]) } xx <- round(as.numeric(xx), 3) write.pdb(p2x, xyz = xx, file=out2) }

Page 137: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

calcFitness <- function(ca1, ca2, pos, size, carts) { nst <- 0 rmsd <- 0.0 rmtx <- rx(carts[1]) rmtx <- rmtx %*% ry(carts[2]) rmtx <- rmtx %*% rz(carts[3])

for (i in 1:size ) { if (pos[1,i] != 0 && pos[2,i] != 0 ) { cc <- rmtx %*% c(ca1$x[pos[1,i]], ca1$y[pos[1,i]], ca1$z[pos[1,i]]) # dr <- 0.0 rmsd <- rmsd + (cc[1] - ca2$x[pos[2,i]])^2 rmsd <- rmsd + (cc[2] - ca2$y[pos[2,i]])^2 rmsd <- rmsd + (cc[3] - ca2$z[pos[2,i]])^2 # dr <- dr + (cc[1] - ca2$x[pos[2,i]])^2 # dr <- dr + (cc[2] - ca2$y[pos[2,i]])^2 # dr <- dr + (cc[3] - ca2$z[pos[2,i]])^2 # cat(ca1$resid[pos[1, i]], " ", ca2$resid[pos[2, i]], ":", sqrt(dr),"\n")

nst <- nst + 1 } } rmsd <- sqrt(rmsd/nst) return (1/(rmsd + 0.01)) } rx <- function(theta) { return (matrix(c(1, 0, 0, 0, cos(theta), sin(theta), 0, -sin(theta), cos(theta)), ncol=3)) } ry <- function(theta) { return (matrix(c(cos(theta), 0, -sin(theta), 0, 1, 0, sin(theta), 0, cos(theta)), ncol=3)) }

Page 138: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

rx <- function(theta) { return (matrix(c(1, 0, 0, 0, cos(theta), sin(theta), 0, -sin(theta), cos(theta)), ncol=3)) } ry <- function(theta) { return (matrix(c(cos(theta), 0, -sin(theta), 0, 1, 0, sin(theta), 0, cos(theta)), ncol=3)) } rz <- function(theta) { return (matrix(c(cos(theta), sin(theta), 0, -sin(theta), cos(theta), 0, 0, 0, 1), ncol=3)) } modAngle <- function(rnd, mrate, theta, rt) { # delta <- 0.5 delta <- 2*pi*runif(1)*rt if (rnd > mrate) x <- theta else { if (runif(1) > 0.5) { x <- theta + delta if (x > 2*pi) x <- x - 2*pi } else { x <- theta -delta if (x < 0) x <- 2*pi + x } } return (x) }

Page 139: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

rx, ry, rz は、それぞれx軸、y軸、z軸の周りで、引数として与えられた角度だけ回転させる回転行列を作成し、それを返り値とする関数

Page 140: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 141: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 142: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 143: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個
Page 144: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

課題(1)プログラムstrovga2.Rには2箇所空白がある。 空白を埋め、プログラムを完成させなさい(2)集団を1000個体、世代数を100、突然変異率を1.0,組換え率を1.0として、重ね合わせを実行し、結果得られるpdb形式のファイルをMolMolで表示しなさい。また、重ね合わせ前のpdbファイルをMolMolで表示し、重ねあわせがうまくいっていることを確認しなさい。次の課題のため、100世代目の 小RMSDを記録しなさい。(3)集団サイズを10個体として、計算を行い、その結果を(2)の計算結果と比較し、その違いが何故生まれたかを考察しなさい。他の設定は、(2)と同じとする。(4)突然変異率を1.0,組換え率を1.0、他の設定は(2)と同じとして、計算を実行し、その結果を(2)と比較して、その違いが何故生まれたかを考察しなさい。(5)次の2つ質問のいづれかについて解答しなさい(5-1)今回、重ね合わせをする前処理として、全てのα炭素について幾何重心をもとめた。より重ね合わせの精度をあげる工夫として、幾何重心の計算に使用するα炭素に制限を設けることが考えられる。どのようなα炭素だけを使用すれば良いか考えなさい。  (次ページに続く)

Page 145: 先端医化学実験 - 関西学院大学sci-tech.ksc.kwansei.ac.jp/~tohhiro/data/file.pdf · 遺伝的アルゴリズム 遺伝的アルゴリズムは一般に以下の流れで実装される。なお、下記では個

(5-2)赤字で示されている部分は、何のためにif文以下の処理をしているのか?0.5を変数redxにして、関数strovgaの引数としてユーザが自由に変更できるように実装し,redxが1.0の場合、0.1の場合、それぞれで結果がどのように変化するかを観察し、その理由について考察しなさい。