領域の選択と接続
libbuilcule での,分子の部分構造を選択する方法,選択された部分構造を切り貼りする方法を紹介します.
この方法は,置換基接続やアミノ酸の変異に応用できます.
このページで紹介している方法で選択できる部分構造を,「領域」と表現しています.
分子をグラフアルゴリズムで処理するごく初歩的な実例だと思います.
分子をグラフ,原子を頂点(ノード),共有結合を辺(エッジ)と捉えるわけです.
libbuilcule では,各頂点は,辺を共有している頂点(共有結合している原子)の情報しか持っていません.
インフォメーション
関連ページ
このページで紹介している考え方は,分子モデリングソフト Builcule では以下の機能に利用しています.
部分構造の平行移動や回転
領域の編集:部分構造のコピー,カット,接続,および置換基の作成
ポイントミューテーションでの側鎖の接続
ホモロジーモデリングでの側鎖の接続
目次(ページ内リンク)
領域の選択の手順
領域の接続
領域の選択の手順
libbuilcule のデータ構造での手順を紹介します.
各原子は,共有結合している相手を記憶しているので,これを双方向リストとして使います.
図をモデル化合物と見てください.丸が原子で棒が共有結合です.
何らかの方法で 1,次いで 2 と指定できたとして,1,2,3,4,5 を,選択する方法を説明します.
ここでは下のオブジェクトを使います.
- 選択されたかどうかのチェック用配列:Check とします
- 選択操作の結果を格納する配列:Region とします
- 選択の対象となる原子を格納するキューまたはスタック:Queue とします
初期化
原子 1 は選択済みとみなします.
□ を未選択,■ を選択済みとすると,Check はこう表せます.
Check □■□□□□
Region には原子 1 を格納します.
Region | 1 |
Queue に 2 をプッシュします.
Queue | 2 |
初回の操作
Queue から選択の対象となる原子を 1 個取り出し,Region に格納します.
Queue からは,原子 2 が取り出され,Queue は空になります.
Queue |
Region には新たに 原子 2 が格納されます.
Region | 1 | 2 |
原子 2 を選択済みとします.Check はこう表せます.
Check □■■□□□
原子 2 に結合している原子(2 と 3)のうち,未選択の原子を Queue にプッシュします.未選択かどうかは Check を見れば判ります.
Queue はこうなります.
Queue | 3 |
2 回め以降の操作
初回と同じ操作を繰り返します.
各回の操作終了時点で Queue が空になったら終了です.
領域の接続
上で作成したゲストを分子に接続する手順を紹介します.
- 選択された領域は,接続用に「ゲスト」と表現しているデータ構造を作成して格納します.ゲストが接続される分子は「ホスト」と表現します
- アルゴリズムの木構造から「根」や「葉」という術語を転用しています.「領域」は「枝」ということになります
領域接続のモデル
ホストの,ゲスト接続部位の原子を図のように 2 か所選択します.
それぞれ,ホストの根,ホストの葉とします.
領域接続 1
まず,ホストの根とゲストの葉の座標が同一になるように,ゲストを平行移動します.
図は平行移動後のようすです.根や葉を区別できるよう,図では少しずらせています.
領域接続 2
次いで,ホストの根 → ホストの葉と,ゲストの葉 → ゲストの根の方向を一致させます.
すなわち,ホストの根(またはゲストの葉)を回転の中心として,ゲストを回転します.
回転軸は,(ホストの根 → ホストの葉)ベクトルと,(ゲストの葉 → ゲストの根)ベクトルの外積です.
図は回転後のようすです.
領域接続 3
以下のオブジェクトを削除します.
- ホストの葉
- ホストの根と葉の結合
- ゲストの葉
- ゲストの根と葉の結合
最後に,ホストの根とゲストの根の間に結合を作成します.
図は接続後のようすです.