MolScript:反応スキームと巻き矢印の反応機構を書くテキスト言語
要点:MolScriptは、反応スキームと電子の押し出しによる反応機構を書くための小さなテキスト言語です。各化学種をSMILESで書き、+、->、<->、<=>でつなぎ、矢印が触れる原子に原子マップ番号を付け、巻き矢印1本につき1行のmove行を書きます。MolDrawが構造式、反応条件、非共有電子対、電荷、すべての矢印を描き、表示する前に各矢印を描画規則に照らしてチェックします。結果は通常の編集可能なキャンバスの内容で、画像やLaTeX用のchemfigコードとしてダウンロードできます。
MolScriptの概要
| 書くもの | SMILESで書いた化学種、その間の演算子、矢印の後の角かっこ内の反応条件、電子の動きを表すmove行。 |
|---|---|
| できること | レイアウトされたスキーム:構造式、プラス記号、反応・平衡・共鳴の矢印、反応条件、キャプション、非共有電子対、電荷、ラジカルの点、巻き矢印。 |
| 矢印の種類 | 2電子の巻き矢印(->)と1電子の片羽矢印(~>)。始点は非共有電子対、電荷、ラジカル、原子、結合で、終点は原子、結合、形成中の結合です。 |
| チェック | すべてのマップ番号は存在し、かつ一意でなければなりません。すべての矢印は電子のある場所から始まらなければなりません。描かれた矢印はすべて、隙間、向き、曲率、間隔について判定されます。問題は行番号付きで返されます。 |
| 出力 | 編集可能なMolDrawのキャンバスオブジェクト。LaTeX文書用のchemfig(.tex)を含む、MolDrawのすべてのエクスポート形式。 |
| 現在の使われ方 | MolDrawのAIチャットはMolScriptを書いて反応機構を描き、Templatesパネルの反応機構の図もMolScriptで作られています。 |
| 今後の予定 | キャンバスアプリ向けのオープンなフレームワークと、どのアシスタントでも読み込めるAIスキル。ロードマップをご覧ください。 |
最初のスクリプト:SN2
水酸化物イオンがブロモメタンを背面から攻撃し、同じ段階で臭化物イオンが脱離します。MolScriptではこれを4行で書けます。
title: SN2 of bromomethane [OH-:1] "hydroxide" + [CH3:2][Br:3] "bromomethane" ->[SN2][acetone] CO "methanol" + [Br-] move :1 -> 1..2 move 2-3 -> 3
1行ずつ見ていきましょう。
title:はスキームの上に見出しを置きます。- スキーム行には化学種を並べます。
[OH-:1]は酸素にマップ番号1が付いた水酸化物イオン、[CH3:2][Br:3]は炭素が2、臭素が3のブロモメタンです。"hydroxide"は構造式の下に描かれるキャプションです。->[SN2][acetone]は上下にテキストのある反応矢印です。 move :1 -> 1..2:原子1の非共有電子対(ここでは負電荷)が、1と2の間に形成される結合へ移動します。move 2-3 -> 3:既存のC–Br結合の電子が臭素へ移動します。
マップ番号は、あなたと矢印のためのラベルです。描かれることはなく、分子を変えることもありません。
言語
化学種と演算子
どんなSMILESも化学種になります。演算子は両側に空白を入れて書きます。
+ | 反応物どうし、または生成物どうしの間のプラス。+でつないだ化学種は常に同じ行に並びます。 |
|---|---|
-> | 反応矢印。 |
<=> | 平衡矢印(2本の片矢じりの矢印)。 |
<-> | 共鳴矢印(両矢じり)。1つの化学種の共鳴構造の間に使います。 |
=> | 逆合成矢印。 |
矢印の上下のテキストは、矢印に続けて角かっこで書きます:->[NaBH4][MeOH, 0 °C]。下だけにテキストを書くときは最初の組を空にします:->[][reflux]。化学種の後の二重引用符内のキャプションは、その化学種の下に描かれます:CC(=O)O "acetic acid"。
複数の段階
演算子で始まる行は、直前の化学種からスキームを続けます。そのため、反応機構は1行に1段階、その段階の矢印をすぐ下に書く形で読めます。
title: SN1 of tert-butyl bromide C[C:1](C)(C)[Br:2] ->[slow] C[C+:3](C)C + [Br-] move 1-2 -> 2 -> C[C+:4](C)C + [OH2:5] move :5 -> 5..4 ->[fast] CC(C)(C)[OH2+]
巻き矢印:move行
矢印が触れる原子にはすべて、SMILESの中でマップ番号を付けます:[OH-:1]、[CH3:2][Br:3]、ふつうの酸素なら[O:4]。番号はスクリプト全体で一意でなければなりません。そのうえで次のように書きます。
move <from> -> <to> two-electron curly arrow move <from> ~> <to> one-electron fish-hook
始点と終点は同じ書き方をします。
:n | 原子nの非共有電子対。陰イオンでは、化学者が描くのと同じように、矢印はマイナス記号から始まります。 |
|---|---|
n | 原子n。ラジカルの矢印はその点から始まります。 |
n-m | 原子nとmの間の既存の結合。始点の場合は電子が結合から離れ、終点の場合は電子がその結合を二重結合にします。 |
n..m | nとmの間に形成される結合(終点のみ)。矢じりは原子mの横、nに面した側で止まります。 |
1行に複数の矢印をセミコロンで区切って書けます:move :1 -> 1..4; 4-2 -> 2-3; 3-5 -> 5。移動する水素は[H:5][O:6]CCのように明示的に書くと、その結合から矢印を始められます。マップ番号を付けたラジカル中心は、点が残るように水素数を付けて書きます:CC(C)(C)[OH0:1]はtert-ブトキシルラジカルです。
矢印は自動で配置されます。特定の曲がり方にしたいときは、波かっこで上書き指定を加えます:move 2-3 -> 3 {bow=0.3 side=left}。
ディレクティブとコメント
title: … | スキームの上の見出し。 |
|---|---|
per-row: 2〜8 | スキームが折り返すまでの1行あたりの構造式の数(既定は4)。 |
layout: row、cycle、branch | スキームの形:左から右、触媒サイクル、または1つの反応物から複数の生成物。 |
# … | 行末までのコメント。SMILES内の#(三重結合)はコメントではありません。 |
エラー
問題は、その行の番号とわかりやすい言葉で返されるので、人でもAIアシスタントでもその行を直して描き直せます。
line 1: put +, -> or <-> between "[O:1]C" and "[O:1]C" line 3: no atom is tagged :9 in the SMILES (write it as [X:9]) line 4: n..m (a bond being formed) can only be the destination line 5: a move needs -> (curly arrow) or ~> (fish-hook) between its ends C (map 2) has no lone pair
入力を減らして描画を増やす:名前、ハイライト、番号
マップ番号が必要なのは、原子があいまいなときだけです。ある段階の反応物に1回しか出てこない元素は、それ自体で特定できます。また結合の端では、もう一方の端に結合している原子だけが対象になります。以下は、マップ番号を使わず、化合物と段階に番号を付け、行が行ったり来たりするSN1反応機構の全体です。
title: SN1 with element ends, numbered, snake rows number: both wrap: snake per-row: 3 CC(C)(C)Br ->[slow] C[C+](C)C + [Br-] move C-Br -> Br -> C[C+](C)C + O move :O -> O..C+ ->[fast] CC(C)(C)[OH2+]
C-Brは臭素に結合した唯一の炭素、C+は電荷でカチオンを選び、:Oはその段階で唯一の酸素の非共有電子対です。元素が2回出てくる場合は、MolScriptがそう伝えてマップ番号を求めます。
h2 | 原子2上の水素を自動で明示します:move :1 -> 1..h2; h2-2 -> 2-3。 |
|---|---|
let base = [OH-:1] "hydroxide" | 化学種を一度定義しておき、$baseと書きます。 |
[OH]~C([H])([H])([H])~[Br] {ts} | 遷移状態:~は部分(点線)結合で、{ts}は‡付きのかっこを描き、形成中と切断中の結合をまっすぐにします。 |
{δ+=2 δ-=3} | 原子の横の部分電荷。 |
{highlight=2/3-4:blue} | 原子2と3–4結合に蛍光ペン風の塗り。 |
{ox=1:II}、{dative=1-2} | 有機金属の段階のための酸化数と金属–配位子結合。 |
[Ph] [R1] [Nu-:1] | ラベルとして描かれる略号とR基。 |
->[{CC(=O)Cl}][AlCl3] | 矢印の上に構造式として描かれる試薬。 |
layout: cycle | 触媒サイクル。最初の化学種で終えるとループが閉じ、本物の円弧としてchemfigにエクスポートされます。 |
スクリプトが図になるまで
スクリプトは毎回同じ手順を通るので、同じスクリプトからは常に同じ図ができます。
- 読み込み。スクリプトをスキーム行、move行、ディレクティブに分けます。各化学種、演算子、キャプション、反応条件は行番号とともに記録されます。
- ラベルの確認。moveで使うマップ番号はちょうど1つの原子に付いていなければならず、
n-mはすべて実在する結合でなければならず、始点にはすべて与える電子(非共有電子対、電荷、ラジカル、結合)がなければなりません。 - 化学種の描画。各SMILESがきれいな結合角の2D構造式になります。矢印に必要な明示的な水素は原子として描かれ、電荷、非共有電子対、ラジカルの点はSMILESの指定どおりに加えられます。
- スキームのレイアウト。構造式、プラス記号、矢印は実際の幅に合わせて詰めて並べられ、行は反応矢印で折り返し、反応条件とキャプションはテキストが重ならないように間隔が取られます。
- 巻き矢印の配置。各矢印は化学者が描くのと同じ位置で始点を離れ、結合、ラベル、他の矢印を避けて曲がります(詳細は下記)。
- 化学のチェック。巻き矢印のある各段階を電子の上で再現します。各矢印は非共有電子対、ラジカル、結合から電子2個(片羽矢印なら1個)を取り、原子または結合に置きます。その結果の構造は、矢印の後に書かれた構造と一致しなければなりません。間違った生成物(原子と電荷の差分付き)、電子が10個ある炭素、電子が残っていない原子からの矢印、対になっていない片羽矢印、σ結合を切る共鳴矢印は、行番号付きで報告されます。
- すべての矢印の判定。配置された各矢印を規則に照らして測定します。混み合った場所で規則を満たせなかった矢印も描かれますが、警告として報告されます。
- 編集可能なオブジェクトとして引き渡し。結果は通常のキャンバスの内容です。構造式をドラッグすれば矢印もついてきますし、何でもスタイルを変えてエクスポートできます。
MolScriptが適用する矢印の規則:
| 矢尻(始点) | 非共有電子対かマイナス記号、ラジカルの点、または電子を与える結合の中央に置き、原子ラベルの上には決して置きません。 |
|---|---|
| 矢じり(終点) | 電子を受け取る原子の少し手前、または形成中の結合の隙間で、攻撃する原子に面した側に置きます。 |
| 曲線 | 構造の外側に向かって弧を描き、矢じりの角度は一定です。片羽矢印は、1本だけの返しを曲線の外側に保ちます。 |
| 間隔 | 結合、ラベル、電荷、点、他の矢印から離します。同じ対象を持つ矢印は重ならずに扇形に広がります。 |
| 長さ | 短すぎて読めない矢印や、長すぎてたどれない矢印は警告されます。 |
MolScriptのテストセットにあるすべての参照反応機構は、MolDrawが変更されるたびに描画され、これらの規則で判定されます。現在は41の反応機構と81本の巻き矢印があり、すべてが描画規則と電子の収支の両方に合格しています。さらにTemplatesの図もあります。すべてMolScriptギャラリーで見られます。
例題
E2脱離:1段階に3本の矢印
title: E2 elimination [OH-:1] + [H:4][CH2:2][CH:3](C)[Br:5] ->[E2] C=CC + O + [Br-] move :1 -> 1..4; 4-2 -> 2-3; 3-5 -> 5
マイケル付加:共役系を通る矢印の連鎖
title: Michael addition [CH2-:1]C(C)=O + [CH2:2]=[CH:3][C:4](C)=[O:5] ->[1,4-addition] CC(=O)CCC=C(C)[O-] move :1 -> 1..2; 2-3 -> 3-4; 4-5 -> 5
2-3 -> 3-4はC=Cのπ電子をC–C結合に移し、そこを二重結合にします。ディールス・アルダー反応:環状の矢印
title: Diels–Alder [CH2:1]=[CH:2][CH:3]=[CH2:4] + [CH2:5]=[CH2:6] ->[Δ] C1CC=CCC1 move 1-2 -> 2-3; 3-4 -> 4..5; 5-6 -> 6..1
ラジカル付加:片羽矢印
title: Radical addition of Br• to propene [Br:1] + [CH2:2]=[CH:3]C -> BrC[CH]C move 1 ~> 1..2 move 2-3 ~> 1..2 move 2-3 ~> 3
~>は片羽矢印を描きます。1..2で終わる2本は、新しい結合の中央で出会います。共鳴:エノラート
[CH2-:1][C:2](C)=[O:3] <-> C=C(C)[O-] move :1 -> 1-2 move 2-3 -> 3
<->は共鳴矢印で、巻き矢印は一方の構造がもう一方にどう変わるかを示します。MolScriptで作られたもの:図全体
MolDrawのTemplatesパネル(左ツールバーの下にあるボタン)の反応機構の図は、MolScriptで書かれています。フィッシャーエステル化、アルドール付加、グリニャール付加の各段階は短いスクリプトで、テンプレートがその周りにパネル、段階のラベル、強調の円、注記を加えています。段階がテキストなので、すべての図のすべての矢印が、上の例と同じ方法でチェックされます。
MolScriptとchemfig
chemfigは、多くの化学者が構造式や反応機構の組版に使うLaTeXパッケージです。本来の用途では非常に優れており、MolScriptはLaTeXの中でそれを置き換えるためのものではありません。両者は異なるものを記述します。
| chemfig | MolScript | |
| 記述するもの | 図そのもの:各結合の角度と長さ、さらに各矢印のアンカー、オフセット、曲がり方。 | 化学:SMILESで書いた化学種と、どの電子がどこへ動くか。 |
| レイアウト | 構造式ごと、スキームごとに手作業。 | 自動:構造式、行、反応条件、キャプション。 |
| 巻き矢印 | 名前を付けた点の間のTikZパス。位置はLaTeXの2回目の実行で確定します。 | マップ番号の間にmove行を1行。描画規則に照らして配置・判定されます。 |
| ミス | 見た目のおかしいPDFとして現れます。 | 行番号付きで報告されます:存在しないマップ番号、電子のない始点、存在しない結合など。 |
| 結果 | 文書内の組版出力。 | 編集可能なキャンバスオブジェクトと、画像、ベクター、chemfigでのエクスポート。 |
| 適した用途 | LaTeX文書内での細かな組版の制御。 | 手書きでもAIアシスタントからでも、正しくきれいな反応機構をすばやく得ること。 |
両者は組み合わせて使えます。MolScriptで描いてからDownload → chemfig (.tex)を選べば、文書用のchemfigコードが得られます。そのコードがどのようなものかはchemfigによる反応機構のサンプルで見られます。
なぜテキストなのか:MolScriptとAIアシスタント
MolScriptは、言語モデルが座標を一切扱わずに反応機構を描けるように設計されています。
- モデルはすでにSMILESを上手に書けるので、すべての化学種がモデルの知っている記法で書けます。
- 原子マップで矢印があいまいにならない。「原子1の非共有電子対から、1と2の間に形成される結合へ」は、「酸素から炭素への矢印」のように置き間違えられることがありません。
- エラーから次の行動がわかる。
line 3: no atom is tagged :9を受け取ったモデルは、3行目を直して再試行できます。 - 形状はモデルの仕事ではない。曲がり方、隙間、間隔はエンジンが決めてチェックします。そこはモデルが最も苦手とする部分です。
MolDrawのAIチャットはすでにこの方法で動いています。「アルドール付加の反応機構」を頼むと、裏でMolScriptを書きます。MolScriptはAIスキルとしてもパッケージ化されています。言語のリファレンス、ほとんどのミスを捕まえる規則、チェック済みの41例、小さな単体のチェッカーを1つのフォルダにまとめたものです。このスキルがアシスタントに教えるワークフローは、中間体を計画し、スクリプトを書き、チェッカーを実行し、報告された問題をすべて直してから回答する、というものです。そのため、反応機構は表示される前に電子1個単位でチェックされます。
その効果を測るために、41件の反応機構リクエスト(「tert-ブチルカチオンのE1脱プロトン化を示して」「酸化数付きのPdクロスカップリングのサイクルを描いて」など)からなる評価セットがあり、それぞれに参照スクリプトがあります。回答は4点満点で、コンパイルできる、電子の収支が合う、正しい生成物で終わる、すべての巻き矢印が描画規則に合格する、の各項目で1点ずつ得られます。参照スクリプトのスコアは100%です。
ロードマップ:MolDrawの機能からオープンなフレームワークへ
MolScript、そのコンパイラ、スキームと矢印のエンジンを、どのキャンバスアプリでも反応や反応機構を描くのに使えるオープンソースのフレームワークとして公開する計画です。プログラミング言語並みの信頼性、つまり文書化された仕様、安定した出力、対処できるエラーを備えたものにします。以下は、現在からその公開までに必要なことです。
言語
| 化学種、演算子、反応条件、キャプション、継続行 | 完了 |
|---|---|
| 非共有電子対、電荷、ラジカル、結合からの2電子の矢印と片羽矢印 | 完了 |
形式文法と適合性テストセットを備えた、バージョン付きの仕様(MolScript 1、molscript: 1) | 完了 |
再利用できる名前付きの化学種:let A = …と定義し、後の段階で$A | 完了 |
向きのヒント:{rotate=90}、{flip}、{align=3} | 完了 |
遷移状態({ts}、~による部分結合)、δ+ / δ−、かっこ | 完了 |
ハイライト({highlight=2/3-4:blue})、化合物と段階の番号(number: both) | 完了 |
| 矢印の上に構造式として描く試薬、略号(Ph、Ts、Boc)とR基 | 完了 |
| それ自体で閉じる触媒サイクル。すべての円弧に読みやすいラベル付き | 完了 |
サイクル内の巻き矢印、金属–配位子結合({dative=1-2})、酸化数({ox=1:II}) | 完了 |
正確性
| ラベルが存在し、始点に電子があり、描かれたすべての矢印が形状の規則に合格する | 完了 |
|---|---|
| 電子の収支:矢印が意味する生成物を求め、書かれた生成物と比較する | 完了 |
| 各段階の電荷と原子の収支、オクテット、対になっていない片羽矢印、共鳴(σ結合)のチェック | 完了 |
水素の手間を減らす:h2で原子2上の水素を指定 | 完了 |
マップ番号を減らす:段階内で一意な元素ならそれで十分(move C-Br -> Br) | 完了 |
レイアウト
| 実際の幅で詰めた行。反応条件とキャプションが重ならない | 完了 |
|---|---|
バランスの良い改行(4 + 1ではなく3 + 2)と幅による折り返し(width:) | 完了 |
行間のつなぎを短く:wrap: snakeで次の行を逆向きに走らせ、短い下向き矢印でつなぐ | 完了 |
グリッド配置(layout: grid)、行ごとに列を揃える | 完了 |
フレームワーク
| MolDrawアプリから独立した単体パッケージとしてのコンパイラとチェッカー | 完了 |
|---|---|
| コンパイラと任意のレンダラーの間の、安定した文書化済みのスキーム形式 | 完了 |
| キャンバス、SVG、PNGへの出力。chemfigとJSONのエクスポーター | 完了 |
| 本物の円弧による触媒サイクルのchemfigエクスポート(と再インポート) | 完了 |
| コマンドラインツール:スクリプトを入力すると、チェックレポート、画像、chemfigファイルを出力 | 完了 |
| バージョン付きのレイアウト。アップグレード後も同じスクリプトは同じように描かれる | 完了 |
| エディターのサポート:入力中のハイライトと問題の表示(TemplatesのMolScriptタブ) | 完了 |
| エディターでのマップ番号、オプション、キーワードの補完(Tabで最初の候補を採用) | 完了 |
| 公開された参照反応機構のギャラリー。それぞれ自動でチェック | 完了 |
| ギャラリーはチェック済みの反応機構41例。数百例まで増やす | 次の予定 |
| パッケージ、スキル、仕様をオープンソースとして公開する | 次の予定 |
AIスキル
| MolDrawのAIチャットで使用。行番号付きのエラーをモデルにフィードバック | 完了 |
|---|---|
| パッケージ化されたスキル:リファレンス、規則、例題、アシスタントが回答前に実行できるチェック手順 | 完了 |
| 化学の正しさと矢印のきれいさで採点される、41件の反応機構プロンプトからなる評価セット | 完了 |
| 主要なAIモデルの評価セットでのスコアを公開する | 次の予定 |
授業、論文執筆、化学ソフトの開発に携わっていて、この取り組みに意見を寄せたい方は、MolDrawのRequest featureからお知らせください。
試してみる
- MolDrawとAIチャットを開き、反応機構を頼んでみましょう。たとえば「2-ブロモプロパンと水酸化物イオンのE2反応機構を描いて」です。チャットがMolScriptを書いて描画します。
- または、左ツールバーの下にあるTemplatesを開いてフィッシャーエステル化、アルドール、グリニャールの図を追加するか、MolScriptタブで自分のスクリプトを書きます。スクリプトがハイライトされ、入力中に問題が表示され、キャンバスに描画されます。
- 結果は他の図と同じようにドラッグ、スタイル変更、拡張ができ、画像やchemfigとしてダウンロードできます。
質問と回答
MolScriptとは何ですか?
MolScriptは、反応スキームと巻き矢印の反応機構を書くための短いテキスト言語です。化学種はSMILESで書き、+、->、<->、<=>でつなぎ、巻き矢印は1本ずつ原子マップ番号の間のmove行で書きます。MolDrawが構造式、反応条件、非共有電子対、電荷、矢印を描き、結果はキャンバス上で編集可能なまま残ります。
MolScriptで巻き矢印を描くには?
SMILESの中で矢印が触れる原子に原子マップ番号を付けます(例:[OH-:1]と[CH3:2][Br:3])。次に、原子1の非共有電子対が原子2との結合を作ることを表すmove :1 -> 1..2と、C–Br結合が臭素側に切れることを表すmove 2-3 -> 3を書きます。
片羽矢印(1電子の矢印)を描くには?
->の代わりに~>を使います。move 1-2 ~> 1は、原子1と2の間の結合の電子1個を原子1に送ります。同じ形成中の結合(n..m)で終わる2本の片羽矢印は、その結合の中央で出会います。
MolScriptはchemfigより優れていますか?
両者は異なる問題を解決するもので、組み合わせて使えます。chemfigはLaTeXパッケージで、文書の中ですべての結合と矢印を自分で配置します。MolScriptは化学を記述し、レイアウトと矢印の形状はMolDrawに任せ、MolDrawがすべての矢印をチェックします。MolScriptで描いた図はすべて、LaTeX文書用のchemfigコードとしてダウンロードできます。
AIアシスタントはMolScriptを書けますか?
はい。MolDrawのAIチャットはMolScriptを書いて反応機構を描きます。言語モデルはSMILESを上手に書けますし、原子マップによって矢印の端があいまいになりません。エラーは行番号付きで返されるので、モデルが修正できます。他のアシスタントでも使えるよう、パッケージ化したAIスキルを計画しています。
MolScriptはオープンソースになりますか?
その予定です。言語、コンパイラ、スキームと矢印のエンジンを、他のキャンバスアプリが反応や反応機構を描くのに使えるオープンなフレームワークとして公開する計画です。その前にやるべきことはロードマップにまとめています。