有機分子記述法開発 04
前回の続き、欲しい機能を書いていきます。
反応全体を一度に記述できる
前回は、分子の書き方の案について考えていました。これだけでもだいぶ自分は嬉しいのですが、 せっかく分子が書けるなら、反応系全体をコードで書きたいと思うのは自然だと思います。例えば、2-メチル-2-ペンタノールを原料に、 E1脱離による脱水反応によって2-メチル-2-ペンテンができる反応は次のように記述できたらよさそうです。
<mol id="reactant">
<atoms>
1:C
2:C
2,1:C
2,2:OH
3:C
4:C
5:C
</atoms>
<bond>
1-2-3-4-5
2-2,1
2-2,2
</bond>
</mol>
<reaction>
condition:H_{2}SO_{4},up;
condition:80°C,up;
leave:H_{2}O,down;
</reaction>
<mol id="product">
<atoms>
1:C
2:C
2,1:C
3:C
3,1:H
4:C
5:C
</atoms>
<bond>
1-2--3-4-5
2-2,1
3-3,1
</bond>
</mol>
これは、次のようなイメージを表しています。
fig.1 E1による2-メチル-2-ペンタノールの脱水反応
ポイントは、反応の矢印について、一般的な有機化学の書き方を使うことができるようになるという点です。
従来、コンピューターによって描画される矢印は、utf-8の「→」など、有機化学ではそもそも長さが足りない、小さいという問題を抱えてきました。
また、Latexなどで書かれる長い矢印(/longrightarrow)などであってもやはり短いものでした。
加えて、平衡反応において、大きく傾いている矢印(上が長い/下が長い)などについても、専用のものを用意しないとかなり書きにくいものでした。
これについて、この記述法では、<reaction>に属性を追加することで、矢印を記述しやすくできると考えました。例えば次のようなイメージです。
<reaction>
shift:left;
shift:right;
number:3;
</reaction>
最後の「number」は、反応回数を表す例です。三段階でこれができる、といったことを表すイメージです。
<reaction>では、脱水反応でのコードにあるように、conditionを設定できます。こうすることで、矢印の長さを最適に保ちつつ、 反応条件を属性として付与できます。こうしておくことで、ただ長い矢印の上にテキストボックスを乗せるのと違い、反応に意味を持たせ、 どんな条件で反応させているのか明確化できます。また、「up」「down」などを付けることで、矢印の上下どちらに書くかなども制御できる ようになると考えました。
また、<reaction>内で、再び<mol>が現れた場合、矢印の上にさらに分子が書けるみたいな仕組みも作れるはずです。
こうすると、アセトンとか、THFとか、ジエチレングリコールなんかも書きやすそうです。
少し短いですが、次回が少し長くなりそうなので、今回はここで終わりにしようと思います。
前回:有機分子記述法開発 03 前回:有機分子記述法開発 05