G-B8ZBWWKGWV
PR

Morganアルゴリズムとは? 分子内の原子の優先順位をつけるアルゴリズム

Morganアルゴリズム 化学とAI
スポンサーリンク

Morganアルゴリズムとは?

Morganアルゴリズムは、分子内の原子の優先順位をつけるためのアルゴリズムです。SMILES表記を一意に決めるためのcanonical SMILESにも利用されています。

Morganアルゴリズムのルール

以下のルールで分子内の原子の優先順位をつけます。

  1. 各重原子に結合している重原子数を「結合原子数」として登録します。(重原子は水素以外の原子)
  2. 異なる結合原子数を持つ重原子の種類を求め n とします。
  3. 各重原子に結合している重原子の結合原子数の合計を、次の結合原子数として更新します。
  4. 異なる結合原子数を持つ重原子の種類を求め、nとします。
  5. nが増えなくなるまで 3~4 のステップを繰り返します。nが同じの場合は後の世代を採用、nが減少した場合はひとつ前のnが大きい世代を採用します。
  6. 最大の結合原子数の重原子の番号を1とします。
  7. 番号付けされた重原子に隣接する重原子の中で最も大きいものに、続く番号をつけます。
  8. 隣接する重原子にすべて番号付けを終えたら、番号の若い順に (7) のステップを繰り返します。すべての重原子に番号を付けたら終了です。

これを読むだけでは理解しにくいと思いますので、下の項目で具体例を使ってわかりやすく説明します。

Morganアルゴリズムの具体例

文章の説明だけではわかりにくいので、安息香酸メチルを使って具体例を示します。

まず、見た目をシンプルにするために、安息香酸メチルを重原子のグラフ表現にしました。

Morganアルゴリズム1_化学構造のグラフ表現

次に、各重原子に結合している重原子数を「結合原子数」として登録します。これを第1世代とします。第1世代の異なる結合原子数を持つ重原子は3種類(1,2,3)なので、n = 3です。

各重原子に結合している重原子の結合原子数の合計を、第2世代の結合原子数として更新します。第2世代の異なる結合原子数を持つ重原子は6種類(2,3,4,5,6,7)なので、n = 6です。

これを繰り返すと、第3世代と第4世代がそれぞれn = 7になります。そのためここで結合原子数の更新は終了で、第4世代を採用します。

Morganアルゴリズム2_各重原子に結合原子数を登録

採用した第4世代の結合原子数は36が最大でした。この原子を優先順位1番とします。36のまわりには、30、25、25の3原子がありますので、30を優先順位2番目、ふたつの25をそれぞれ3番目と4番目にします。

優先順位1番のまわりの重原子はすべて優先順位をつけ終わったので、次は優先順位2番を見ます。2番のまわりには優先順位をつけていない重原子がありますので、下都合原子数の大きい順に、5番、6番をつけます。

次は優先順位3番のまわりの重原子に番号をつける・・・ということを繰り返して、下の説明図にあるように最後の10番まで優先順位をつけることができます。

Morganアルゴリズム3_優先順位を決定

まとめ

Morganアルゴリズムは、分子内の原子の優先順位をつけるためのアルゴリズムです。Morganアルゴリズムについて、ルールと具体例を使ってわかりやすく説明しました。

タイトルとURLをコピーしました