最終更新:2026-01-17
概要
本記事では、自作ライブラリ(MultiOptPy)で、Grignard反応の素過程の遷移状態構造を算出してみる。計算レベルは、Meta社のFAIR Chemistryが開発したニューラルネットワークポテンシャル(NNP)であるUMA(Meta’s Universal Model for Atoms)とした。
MultiOptPyは電子状態計算ソフトウェアを用いた分子構造最適化手法の勉強を目的として作成したpythonライブラリである。
MultiOptPyのレポジトリ:https://github.com/ss0832/MultiOptPy
今回使用したニューラルネットワークポテンシャルについて:
- https://ai.meta.com/blog/meta-fair-science-new-open-source-releases/ (UMAの公開に関する記事)
- https://github.com/facebookresearch/fairchem (FAIR Chemistryの提供するGitHubのレポジトリ)
- https://fair-chem.github.io/ (同上のレポジトリの内容に関して説明したサイト)
- https://huggingface.co/facebook/UMA (NNPの配布サイト, Hugging Faceへのアカウント登録と配布元の使用許諾が必要である。)
- arXiv preprint arXiv:2505.08762 (2025). (プレプリント)
使用した自作ライブラリMultiOptPyのバージョン
v1.20.4
Video Demo
https://www.youtube.com/watch?v=AE61iY2HZ8Y
環境
Windows 11
※Windows 11環境下でAnaconda PowerShell Promptを使用した。
Source codeのダウンロード(Unixコマンド)
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.20.4.zip
unzip v1.20.4.zip
cd MultiOptPy-1.20.4
https://github.com/ss0832/MultiOptPy/releases/tag/v1.20.4 にアクセスしてzipファイルをダウンロードする。Unixコマンドの場合とはディレクトリ名が異なるので都度読み替えていただけると良い。
移動先のディレクトリでrequirements.txtを参照することで、本ソースコードで必要なモジュールを把握することが出来る。導入方法は各自の状況に合わせて適宜LLMとの対話などで調べると良い。
次に述べる環境構築手順を使用する場合は、環境構築が終わった後、pip install -r requirements.txtで本自作モジュールが動作させるために最低限必要なモジュールを導入することが可能である。
環境構築手順
今回は、Windows 11のPower Shellを使用した。初めに、NNPを使用できる環境が整ったAnaconda PowerShell Promptを用意する手順を説明する。
1, https://repo.anaconda.com/archive/ より、Anaconda3-2025.06-1-Windows-x86_64.exeでAnacondaをインストールする。
2, 検索機能を使い、スタートからAnaconda PowerShell Promptを開く。
3, 以下のコマンドを実行し、仮想環境を作成する。
conda create -n (任意の仮想環境名) python=3.12.7
4, 先ほど作成した仮想環境をconda activate (仮想環境名)で起動させる。
5, 以下のコマンドを実行し、必要なライブラリを導入する。
pip install ase==3.26.0 fairchem-core==2.7.1 torch==2.6.0
- fairchem-coreは、FAIR Chemistryが管理しているNNPを動作させるために必要なライブラリである。
- aseはNNPに電子エネルギーを算出したい分子構造を渡すために必要なインターフェイスの役割を果たすために必要なライブラリである。
- torchはPyTorchライブラリを指す。これはニューラルネットワークなどの機械学習を行ったり、学習結果を扱ったりするために必須なライブラリである。
これで、Anaconda PowerShell Promptから仮想環境を立ち上げることで、NNPを使用する準備が整えることが出来る。
次に、NNPを使用するために必要なModelの情報が保存されている.ptファイルのダウンロードおよびNNPの自作ライブラリへの導入方法について説明する。
UMAを使用可能にするための手順
1, 以下のサイトにアクセスして、uma-s-1p1.ptをダウンロードする。(使用許諾が下りていれば可能である。)
https://huggingface.co/facebook/UMA
2, ダウンロード後、MultiOptPy-1.20.4ディレクトリ内に存在するsoftware_path.confに対して、uma-s-1p1.ptの絶対パスを用いて以下を追記する。
uma-s-1p1::(uma-s-1p1.ptの絶対パス)
これで、MultiOptPy-1.20.4がNNPuma-s-1p1を使用できるようになる。
※Linuxの場合
すでにAnacondaの導入が終わっている前提で、環境の構築手段について述べる。以下を実行すると可能である。
## 1. Download and install MultiOptPy:
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.20.4.zip
unzip v1.20.4.zip
cd MultiOptPy-1.20.4
## 2. Create and activate a conda environment:
conda env create -f environment.yml
conda activate test_mop
## 3. Copy the test configuration file and run the AutoTS workflow(任意で行う):
cp test/config_autots_run_xtb_test.json .
python run_autots.py aldol_rxn.xyz -cfg config_autots_run_xtb_test.json
#### Installation via pip (Linux)
conda create -n <env-name> python=3.12 pip
conda activate <env-name>
pip install git+https://github.com/ss0832/[email protected]
# or pip install multioptpy
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.20.4.zip
unzip v1.20.4.zip
cd MultiOptPy-1.20.4
あとは、「UMAを使用可能にするための手順」と同じように進めれば問題なく導入可能である。
使用するNNPに関する具体的な説明
今回使用するNNPについて具体的に説明する。
- UMAのModel Checkpointは
uma-s-1p1を使用した。 - 小分子系のトレーニングセットである
Omol25(omol)を使用して学習したニューラルネットワークポテンシャルを使用する。
※自作ライブラリでの具体的な使用の仕方に関しては、ase_calculation_tools.py を参照すると良い。omol以外のモデルを使用したい場合は、現バージョンでは、multioptpy/Calculator/ase_tools/firechem.py内の、self.task_nameを編集することで対応可能である。
手順
1. 初期構造の準備
モデル反応系として、以下の構造を用意した。今回はファイルの名前をgrignard_rxn.xyzとした。
初期構造は以下のものを使用した。
58
OptimizedStructure
C 1.454948261173 -3.306321851228 -0.088161834604
C 2.733376810533 -2.484277870649 -0.145478638177
C 2.453359191511 -0.979317061486 -0.130458166065
C 1.405052900646 -0.559502695314 0.853018465186
C 0.359264384230 -1.518914450454 1.328181516102
C 0.728758270240 -2.998616167202 1.211370892724
H 3.392837927908 -0.456356167162 0.059707524778
H 3.355907269267 -2.744420094894 0.716268011316
H 3.315525790301 -2.720369741929 -1.037622699946
H 0.815414952773 -3.068454419603 -0.943520503981
H 1.684717752692 -4.371703552476 -0.146289492591
H 0.076722580241 -1.314067372027 2.362784615651
H -0.573097913138 -1.340986160117 0.759873263971
H 1.377444839584 -3.270210758892 2.049538044929
H -0.182126364654 -3.592708817706 1.305190817889
H 2.145544513931 -0.670730295338 -1.142524588882
C 0.359736306158 1.204129161307 2.159034736782
C 2.275852523336 1.703070844866 0.736958761189
C 0.030022648751 2.683528840130 2.248852261648
H 1.006911829182 0.910646661589 2.996441816557
H -0.559002429082 0.628065382735 2.222425478950
C 2.026687642494 3.195987670792 0.894687467239
H 3.005166933882 1.363857150603 1.484581369615
H 2.700042990969 1.521227814944 -0.249132154804
C 1.294065654876 3.525550870145 2.185062803782
H -0.520205706599 2.849037045718 3.176926295661
H -0.645314726610 2.969673713891 1.433507333390
H 3.000863658753 3.687927023587 0.855073526175
H 1.451302124434 3.565510622564 0.045306219170
H 1.055275012028 4.589145218990 2.224824077430
H 1.925031479959 3.300822859873 3.051836665472
N 1.056972402103 0.847146457610 0.888449441759
C -0.143731580172 3.100658596763 -1.782707941099
C 0.820960462585 3.279153160731 -2.785465241505
C 1.061903669282 4.511238574039 -3.383244860952
C 0.328180597737 5.623764543210 -2.996406627209
C -0.647440619607 5.487310185529 -2.019081314912
C -0.871090728138 4.247547682506 -1.430623467920
H 1.412806218707 2.431848800564 -3.125602278571
H 1.820090587358 4.603816566124 -4.152252953917
H 0.509995842275 6.586647230408 -3.457437489615
H -1.234010015555 6.347002360539 -1.716316503285
H -1.646349375345 4.184936413564 -0.669605841004
Mg -0.395248254809 1.272896477713 -0.800751993762
Br -0.487895292952 -0.771177759011 -2.396170440211
Mg -2.439101293597 -1.391491896159 -0.955870472073
Br -2.724824177174 0.785635955543 0.262138498109
C -3.140519361630 -3.301459717630 -0.558330756053
C -2.602012217042 -4.408536181774 -1.230135294797
C -4.068635645207 -3.583430301413 0.454444446070
C -2.966045973887 -5.713762831329 -0.919464204665
H -1.872781282719 -4.261432271762 -2.022769748274
C -4.441767954255 -4.882764922727 0.776603654722
H -4.521163076052 -2.771793445235 1.017093715359
C -3.889244294789 -5.953277405892 0.087914285928
H -2.529320972883 -6.543326201889 -1.462754363336
H -5.163050677003 -5.060621303852 1.565359418190
H -4.176764096998 -6.967752171423 0.334724446468
2. 遷移状態構造最適化
run_autots.pyを適切に使用することで、自動的に遷移状態構造が得られる。以下にその手順を説明していく。
初期構造をMultiOptPy-1.20.4ディレクトリ内にgrignard_rxn.xyzとして保存する。その後、同じディレクトリ内で、config_grignard_rxn.jsonを作成し、以下のように記述する。
config_grignard_rxn.json
{
"work_dir": "grignard_rxn",
"top_n_candidates": 3,
"step1_settings": {
"othersoft": "uma-s-1p1",
"opt_method": ["rsirfo_block_fsb"],
"use_model_hessian": "fischerd3",
"spin_multiplicity": 1,
"electronic_charge": 1,
"manual_AFIR": ["300", "4", "48", "-100", "48", "7,12,13,16"]
},
"step2_settings": {
"othersoft": "uma-s-1p1",
"NSTEP": 20,
"use_model_hessian": "fischerd3",
"save_pict": true,
"node_distance": 0.5,
"align_distances": 9999,
"align_distances_energy_predicted": 2,
"spin_multiplicity": 1,
"electronic_charge": 1
},
"step3_settings": {
"othersoft": "uma-s-1p1",
"opt_method": ["rsirfo_block_bofill"],
"calc_exact_hess": 5,
"tight_convergence_criteria": true,
"max_trust_radius": 0.2,
"frequency_analysis": true,
"spin_multiplicity": 1,
"electronic_charge": 1
},
"step4_settings": {
"othersoft": "uma-s-1p1",
"opt_method": ["rsirfo_block_bofill"],
"spin_multiplicity": 1,
"electronic_charge": 1,
"calc_exact_hess": 10,
"tight_convergence_criteria": true,
"frequency_analysis": true,
"intrinsic_reaction_coordinates": ["0.5", "200", "lqa"],
"step4b_opt_method": ["rsirfo_block_fsb"]
}
}
その後、以下のコマンドを実行する。
python run_autots.py grignard_rxn.xyz -cfg config_grignard_rxn.json
これにより、これまでの似た内容の記事で行ってきたコマンドの操作をまとめ、遷移状態構造を求める処理を自動的に行う。
具体的な処理の流れは、
Step1. バイアスポテンシャルによるNEB法のための初期経路の作成
Step2. NEB法による経路の緩和
Step3. NEB法により得られた経路のエネルギー極大値を示す構造のうち、エネルギー値が上位の最大で3個
(`run_autots.py`にて、`--top_n X`で最大値を変更可能)の構造を初期構造とした遷移状態構造の算出
(Step4.得られた遷移状態構造に対するIRC計算とIRC経路の末端に存在する構造に対する構造最適化。
こちらは`--run_step4`をコマンドで追記しなければ行わない。)
となっている。
run_autots.pyのオプションの説明:
-cfg YYY.jsonは、workflowを実行するためのオプションが記されたJSONファイルの読み込み先を指定する。
これらの一連の結果は、(jsonファイルの"work_dir"にて指定した名前)のディレクトリの中に存在するファイルを開いて確認できる。
以下にすべてのstepで共通のオプションに関する説明を載せる。
"opt_method": ["rsirfo_block_fsb"]は準ニュートン法であるRS-I-RFO法を構造最適化に使用することを示す。初期のへシアンに関しては、特にオプションで指定しない限り、単位行列が使われる。(以前のHessian更新法とは細かな点で異なる方法を使用している。具体的には、複数の座標変位や勾配変位を用いてHessianの更新を行う。)"spin_multiplicity": Zはスピン多重度の指定である。PySCFを使用するときは目的とするスピン多重度に1を引いた値を指定する。(デフォルトでは1が指定される。)"electronic_charge": 0は形式電荷をMとすることを示す。(デフォルトでは0が指定される。)"othersoft": "uma-s-1p1"は今回使用するNNPを指定している。これを使用する際にASEライブラリが必要である。"use_model_hessian": "fischerd3"は、計算コストが非常に低い数式を使用して、近似したHessianを生成する機能を呼び出すオプションである。デフォルトではこの機能は使用されない。
※オプションの説明はMultiOptPy-v1.20.4/OPTION_README.mdにて示されている。
Step 1
Step1では、omolのデータセットを使用したuma-s-1p1モデルのNNPで得たエネルギーに対して、指定した人工力ポテンシャルを加えた上で初期構造を構造最適化を行っている。
以下のJSON内で記述したバイアスポテンシャルで、次の経路緩和アルゴリズムの初期経路として用いるトラジェクトリーを生成する。
"manual_AFIR": ["yyy", "a", "b]:yyykJ/molの活性化障壁を超えうるペア同士を近づける力を原子のラベル番号aとbのペアに構造最適化時に加えることを示す。"shape_conditions": ["yyy", "lt", "a,b"]: 構造最適化中に、ラベル番号aの原子とラベル番号bの原子の間の距離yyy(Å)よりも大きくなった時に構造最適化を途中で打ち切る。“lt”を”gt”にすると、yyy(Å)よりも小さくなった時に途中で打ち切る。"shape_conditions": ["yyy", "lt", "a,b,c"]: 構造最適化中に、角度の中心がラベル番号bの原子で、ラベル番号aの原子とラベル番号cで作る角度yyy(degrees)よりも大きくなった時に構造最適化を途中で打ち切る。“lt”を”gt”にすると、yyy(degrees)よりも小さくなった時に途中で打ち切る。"shape_conditions": ["yyy", "lt", "a,b,c,d"]: 構造最適化中に、ラベル番号bとラベル番号cを軸とした、ラベル番号aの原子とラベル番号dの原子がなす二面角yyy(degrees)よりも大きくなった時に構造最適化を途中で打ち切る。“lt”を”gt”にすると、yyy(degrees)よりも小さくなった時に途中で打ち切る。"keep_pot": ["c", "d", "a,b"]:力の定数ca.u.で、平行距離dÅの調和ポテンシャルをa番とb番の原子ペアにかける。初期経路生成時に開裂を防ぎたい結合を保持するとき等に使用する。
Step1が正常終了していれば作成されたwork_dirディレクトリ中に、grignard_rxn_step1_traj.xyzが存在する。必要に応じて確認し、目的に沿った初期経路が得られているか確認する。もし想定とは異なる場合は、プロセスをkillして再度設定を見直してやり直す。
grignard_rxn_step1_traj.xyzは構造最適化の過程をAvogadro(公式ページ:https://avogadro.cc/ )等で可視化して確認できるようにしている。このgrignard_rxn_step1_traj.xyzはStep2のNEB計算に使用している。
※grignard_rxn_step1_traj.xyzをアニメーションとして表示したい場合は、[https://github.com/ss0832/molecule_movie] を使うと良い。
Step 2
Step2では、NEB法を用いることで、先ほど得られたgrignard_rxn_step1_traj.xyz全体のエネルギーを下げることができる。これにより、パスのエネルギー極大値を持つ構造を遷移状態構造に近づける。(この時点ではまだ正確な遷移状態構造は求められていない。)
Step2固有のオプションについて以下に示す。
-
"NSTEP": nはn回分NEB法による経路の緩和を行うことを示す。 -
"save_pict": trueは緩和中のパスのエネルギープロファイルや各ノードの勾配のRMS値をmatplotlibで可視化するオプションである。 -
"node_distance": yyy: 入力された経路を経路座標上でyyy(Å)間隔で線形補間により構造を再配置して初期経路とする。 -
"align_distances_energy_predicted": a:経路緩和a回に1回、経路座標上で等間隔に線形補間により構造を置きなおす。エネルギー極大値を示す構造に対しては前後のノードの情報を使って経路座標を変数とした多項式を作り、真のエネルギー極大値の場所を連続最適化により推定し、再配置する。
MultiOptPy-v1.20.4/"work_dir"と同じディレクトリ内に、NEBという名前を含むディレクトリが生成されている。
そのディレクトリ内のenergy_plot.csvを確認し、緩和後のパスのエネルギー極大値を示す構造を確認する。
経路の緩和後の各ノードのエネルギー一覧(単位
※bias_force_rms.csvにて、各Iterationごとのすべてのノードの勾配のRMS値を確認できる。
経路緩和の結果、以下の構造がstep3の初期構造として自動的に用いられた。“work_dir”内のgrignard_rxn_step3_TS_Opt_Inputs内に保存されたgrignard_rxn_ts_guess_X.xyzにて確認が可能である。ts_guessの番号が小さい順にエネルギー値が高い構造を示すようになっている。
※こちら[https://ss0832.github.io/molecule_viewer/] を使うことでも可視化は可能である。
grignard_rxn_ts_guess_1.xyz
58
1 1
C 1.343486327605 -4.119603379372 0.529787892773
C 2.303723000059 -3.067229420324 0.017415016008
C 1.639752502637 -1.704271467061 -0.239783518836
C 0.536728502814 -1.296711570215 0.736362601416
C 0.619250852344 -2.133367557099 1.999405073735
C 0.637470257550 -3.654571868491 1.812272566428
H 2.431574661516 -0.975122915503 -0.066946934680
H 3.109893331066 -2.927462223515 0.743432316839
H 2.787814263797 -3.395728421428 -0.903325900581
H 0.616803655297 -4.323965010435 -0.248284784961
H 1.864320394922 -5.059465173488 0.707632971212
H 1.607717060024 -1.812172033411 2.366122956902
H -0.078069476972 -1.835972692114 2.782037526115
H 1.141393587577 -4.077946744895 2.682708628563
H -0.382380915248 -4.038171947329 1.832156809734
H 1.363746621137 -1.542975282462 -1.283839678311
C -0.246312127160 0.550467478494 2.132511450867
C 1.417003105422 0.979042721963 0.301250449886
C -0.468755539636 2.057484749995 2.194294157411
H 0.393035343741 0.285810370548 2.982897157662
H -1.194664167517 0.028172920538 2.257043892488
C 1.270997551107 2.482993409373 0.553015034991
H 2.381040676952 0.699393105643 0.741849093813
H 1.486213532620 0.812472474128 -0.773324541727
C 0.836307908714 2.801020345232 1.969889719705
H -0.902059826420 2.283843326712 3.169770806732
H -1.191703384590 2.377643381072 1.438808024687
H 2.249277078630 2.914349125113 0.326974399487
H 0.571965911457 2.941610260628 -0.147629725054
H 0.710065907878 3.876979038470 2.096392445580
H 1.588497819015 2.480364795048 2.699019665611
N 0.380728354396 0.066712444405 0.883192251001
C -0.474843087962 3.764447925265 -2.341998561604
C 0.647630839751 3.846154428054 -3.177128513099
C 1.239802347088 5.063987401832 -3.486119346196
C 0.713332852461 6.239164445201 -2.968080297973
C -0.379749855747 6.188561364876 -2.114513340737
C -0.960418751849 4.965389543846 -1.808486225441
H 1.076156249069 2.945006877807 -3.609597012939
H 2.096303336795 5.097852040132 -4.147599499719
H 1.147340001841 7.193029320389 -3.237626927344
H -0.791708700697 7.101847070652 -1.704384287731
H -1.815941581908 4.957586891871 -1.137959646188
Mg -1.577899856276 2.059968086864 -2.258096064833
Br -0.777746970745 -0.133008333990 -3.314352830941
Mg -1.952717814877 -0.916429195250 -1.292249957978
Br -3.191184306813 1.086956186822 -0.565475710240
C -1.318353838552 -2.386125504356 0.048373387433
C -1.298154927589 -3.402632131295 -0.943125284944
C -2.350667362152 -2.549177333066 1.007960480753
C -2.094279293712 -4.551302817993 -0.885472776124
H -0.596502042499 -3.344150573037 -1.773734954978
C -3.158913556015 -3.678306758229 1.067812997581
H -2.523051585489 -1.787908372942 1.762979871582
C -3.001324521997 -4.710575948929 0.147081860540
H -1.983781813917 -5.329968492331 -1.631682433225
H -3.912337181172 -3.771113971909 1.841067585411
H -3.585851347773 -5.622874390503 0.229299663437
Step 3
step3のオプションで、追加での説明を要するものを以下に示す。
"opt_method": ["rsirfo_block_bofill"]は遷移状態構造の最適化向けのoptimizerを指定することを意味する。準ニュートン法であるRS-I-RFO法を使用する。今回は-fcで正確なHessianを計算するようにしているので、初期Hessianは正確なHessianを使用するようになっている。(Bofill法によるHessianの更新法を細かい点で変更している。具体的には、複数の座標変位や勾配変位を用いてHessianの更新を行う。)"saddle_order": 1は一次の鞍点を求めることを指定する。(step3のデフォルトでは一次の鞍点を指定する。それ以外の値の指定は、プログラムの使用目的上想定していないので、行わないことを勧める。)"calc_exact_hess": 5は5回の反復回数当たり1回正確なHessianを計算することを指定する。"frequency_analysis": trueは収束条件を満たした後に基準振動解析を行うことを示す。(自前で実装しているため、あくまで目安として使用することを推奨する。各振動モードをvibration_animation内のxyzファイルで可視化できる。)UMAモデルから算出されるHessianは数値微分により求めているため、原子数Zが多いとZの二乗オーダーで計算コストが急増する。"tight_convergence_criteria": trueは収束条件を厳しくすることを示す。(Gaussianのtightと同等)"max_trust_radius": Dは一回の反復計算ごとの計算されるステップ幅の最大値をDÅ以下にすることを示す。デフォルトでは、"saddle_order": 1を指定すると0.1Åが指定される。"detect_negative_eigenvalues": trueは、初めの計算時(ITR. 0)に、任意の次数の鞍点(遷移状態構造等)を求める際に、正確なへシアンから算出した固有値に1つも負の固有値がない場合、計算を打ち切るオプションである。
実行して得られた正確な遷移状態構造と思われる構造を以下に示す。
(実行して得られた正確な遷移状態構造は計算開始時に、MultiOptPy-1.20.4/"work_dir"ディレクトリ内に生成された新規ディレクトリ内のgrignard_rxn_ts_final_X.xyzとして保存されている。)
grignard_rxn_ts_final_1.xyz
58
OptimizedStructure
C 1.513342983861 -4.282027645193 0.806912450688
C 2.428324726684 -3.206889725739 0.245713687068
C 1.621602881771 -2.031694721388 -0.315404356890
C 0.707968045543 -1.414567363600 0.718180860799
C 0.592817019650 -2.189516491139 1.994140671858
C 0.582412550016 -3.715926434220 1.891026045757
H 2.300181973580 -1.288130596095 -0.721226111914
H 3.119187201014 -2.845040145792 1.012561142323
H 3.044837310331 -3.605073270813 -0.560185013216
H 0.918615737446 -4.695675485290 -0.009047700141
H 2.105881640689 -5.104184409503 1.206718800360
H 1.509697461218 -1.862104254219 2.518135861238
H -0.231938293641 -1.862615746746 2.616955927527
H 0.869101016860 -4.092108799553 2.873648122745
H -0.441357874717 -4.046574817111 1.722132099298
H 1.018809273849 -2.380432188898 -1.157291149765
C -0.038478262442 0.524542180226 1.985734115012
C 1.538333841354 0.834549418623 0.066975864075
C -0.451599044932 1.982904939726 1.865164258500
H 0.715194127439 0.413869153131 2.772551576503
H -0.904240182539 -0.071641063642 2.268175861451
C 1.076174071739 2.274345720715 -0.036323338765
H 2.459958394412 0.769797192135 0.655286178639
H 1.734608150036 0.463072335855 -0.932655862555
C 0.663235885946 2.849137593254 1.305252864538
H -0.754742880830 2.310336409639 2.860715597738
H -1.333708474968 2.068514639984 1.226068399980
H 1.882001078573 2.847625675529 -0.497199455532
H 0.233331307772 2.345907161475 -0.731694655053
H 0.325542760978 3.878117488502 1.184672197202
H 1.517056059511 2.863612199152 1.989826312519
N 0.521918719818 -0.054222660908 0.729713030274
C -0.631828122365 4.018276640525 -2.741337488306
C 0.563874167621 4.350814322660 -3.393726686545
C 1.252478948019 5.524612196173 -3.111696298958
C 0.761064003576 6.405665378280 -2.158392016090
C -0.420377949105 6.108057184790 -1.494366558160
C -1.099894143957 4.929948990483 -1.783833089643
H 0.980791319091 3.687144937917 -4.145508553414
H 2.170240467813 5.754968608098 -3.638607205455
H 1.292125101032 7.323297767274 -1.940280654846
H -0.815535998453 6.796227047746 -0.756981034088
H -2.020501287014 4.729851565812 -1.241141007779
Mg -1.519651882155 2.165974786806 -2.868434775736
Br -0.181253489243 -0.020745836014 -3.070238033548
Mg -1.248650807826 -0.409870244073 -0.834288365504
Br -3.028691098721 1.331943185257 -0.984756802431
C -1.505932894866 -2.323511027819 -0.006854972458
C -1.404393799224 -3.451007095715 -0.831802835118
C -2.451475405396 -2.391753849897 1.033021848412
C -2.179573509149 -4.585989807684 -0.628778820651
H -0.712254385708 -3.458725995255 -1.670576474980
C -3.233770135330 -3.516103471229 1.245686798264
H -2.601133251267 -1.545915224306 1.701425442721
C -3.088765790394 -4.622616283957 0.417394022692
H -2.075907000961 -5.438781384793 -1.287668309301
H -3.955467400648 -3.532668229795 2.052331521846
H -3.689584861390 -5.507000449381 0.584176066817
85回の反復計算により、停留点に収束した構造が得られた。"frequency_analysis": trueオプションにより生成されたnormal_modes.txtやvibration_animationディレクトリ内の振動モードのアニメーションを確認した。
以下に"frequency_analysis": trueオプションで生成されたnormal_modes.txtの一部を示す。
Mode 0 1 2
Freq [cm^-1] -249.3350 11.2939 17.3218
Reduced mass [au] 6.8816 4.9565 5.8768
Force const [Dyne/A] -0.2521 0.0004 0.0010
Char temp [K] 0.0000 16.2494 24.9222
Normal mode x y z x y z x y z
C 0.00138 -0.00453 0.00847 -0.02487 -0.00704 0.04674 -0.02837 -0.02938 0.00789
C -0.02072 0.00628 -0.00422 -0.01156 -0.02482 0.03442 -0.01500 -0.03643 0.01643
C -0.04377 -0.01719 -0.02161 0.00354 -0.02472 0.01286 0.00052 -0.02584 0.01627
C -0.12570 -0.04754 -0.05519 0.00412 -0.00046 -0.00115 -0.00218 -0.02222 0.01201
C 0.00120 -0.00203 -0.00337 -0.01106 0.02023 0.00984 -0.01507 -0.02432 0.00970
C 0.01194 -0.00374 0.01816 -0.02446 0.01867 0.03366 -0.02684 -0.02417 0.00632
H -0.04251 0.01397 0.03906 0.01383 -0.03757 0.00659 0.01192 -0.02979 0.02778
H -0.03120 0.02795 -0.00534 -0.01151 -0.02009 0.03218 -0.01565 -0.04609 0.02160
H -0.00888 0.01022 0.00251 -0.01170 -0.04343 0.04351 -0.01441 -0.03958 0.01843
H -0.00238 -0.01718 0.01749 -0.02504 -0.01397 0.05043 -0.02913 -0.02008 0.00380
H 0.01457 0.00395 0.00655 -0.03472 -0.00657 0.06231 -0.03843 -0.03700 0.00714
H 0.02350 0.02071 -0.06402 -0.01119 0.01989 0.01037 -0.01558 -0.03297 0.01586
H 0.02807 -0.00825 0.03618 -0.01181 0.03791 -0.00035 -0.01613 -0.01940 0.00573
H 0.03240 0.00877 0.01702 -0.03230 0.03146 0.04085 -0.03252 -0.02845 0.00635
H 0.01297 -0.01947 0.04046 -0.02667 0.02531 0.03423 -0.02894 -0.01578 0.00272
H 0.03472 -0.01691 -0.07525 0.00461 -0.03010 0.01424 0.00504 -0.01418 0.00815
C -0.01411 -0.00440 -0.01894 0.01517 0.02604 -0.03516 0.01083 -0.01782 0.01413
C -0.02020 -0.02418 0.01477 0.03202 -0.02092 -0.03065 0.01007 -0.02661 0.01197
C -0.00415 0.00054 0.00310 0.03765 0.03061 -0.05726 0.01984 -0.01513 0.01498
H 0.02253 -0.01264 -0.05460 0.00698 0.02553 -0.02743 0.01045 -0.02330 0.01373
H -0.00874 0.00933 0.02559 0.00428 0.04180 -0.03452 0.00686 -0.01184 0.01429
C 0.01023 -0.01183 0.00746 0.05558 -0.01481 -0.04856 0.01675 -0.02435 0.01042
H -0.04572 -0.05064 0.05373 0.02956 -0.02894 -0.02770 0.01027 -0.02899 0.01136
H 0.01669 -0.00699 0.01552 0.02841 -0.03534 -0.02604 0.00815 -0.02924 0.01256
C -0.00049 -0.00425 0.00112 0.05559 0.00686 -0.05797 0.02263 -0.02122 0.01100
H 0.00824 -0.00267 0.00804 0.03325 0.04733 -0.06409 0.02543 -0.01301 0.01597
H -0.00884 0.01188 0.01076 0.04486 0.03602 -0.06651 0.01808 -0.01009 0.01828
H 0.02556 -0.02301 0.02027 0.06860 -0.03310 -0.04859 0.01928 -0.02928 0.00883
H 0.02144 -0.00106 -0.00549 0.06200 -0.00793 -0.05537 0.01549 -0.02069 0.01194
H 0.00299 -0.00358 -0.00486 0.07234 0.01062 -0.07285 0.02724 -0.01964 0.01158
H -0.00429 -0.00378 0.00570 0.05060 0.00106 -0.05160 0.02480 -0.02480 0.00831
N -0.09440 0.00407 -0.05913 0.01708 0.00137 -0.02310 0.00707 -0.02121 0.01394
C -0.00097 0.00121 -0.00107 -0.01681 0.00125 0.02173 -0.00423 0.01913 -0.00950
C -0.00059 0.00044 -0.00060 -0.02261 0.03210 0.02687 -0.03085 0.05318 -0.04085
C -0.00020 0.00004 -0.00015 -0.03512 0.03237 0.05595 -0.06750 0.08218 -0.07266
C -0.00010 -0.00001 -0.00010 -0.04225 0.00184 0.08065 -0.07846 0.07800 -0.07447
C -0.00014 0.00023 -0.00018 -0.03717 -0.02871 0.07586 -0.05204 0.04399 -0.04297
C -0.00060 0.00064 -0.00054 -0.02449 -0.02900 0.04687 -0.01556 0.01514 -0.01118
H -0.00027 0.00005 -0.00005 -0.01729 0.05656 0.00832 -0.02408 0.05835 -0.04157
H 0.00032 -0.00051 0.00054 -0.03919 0.05659 0.05945 -0.08755 0.10805 -0.09624
H 0.00046 -0.00049 0.00054 -0.05194 0.00210 0.10318 -0.10707 0.10052 -0.09965
H 0.00055 -0.00026 0.00064 -0.04329 -0.05230 0.09462 -0.06029 0.03967 -0.04342
H -0.00011 0.00040 0.00016 -0.02072 -0.05361 0.04428 0.00337 -0.01032 0.01168
Mg 0.00314 -0.00113 0.00197 -0.00169 -0.00409 -0.01002 0.02660 0.00315 0.01294
Br -0.00265 -0.00237 0.00133 0.00721 0.00076 -0.01940 0.01918 -0.00099 0.00956
Mg 0.03292 0.02387 0.02655 0.01355 -0.00473 -0.01812 0.01074 -0.00755 0.00446
Br -0.00004 -0.00447 0.00021 0.00272 -0.01577 -0.01323 0.02553 0.00643 0.01473
C 0.11342 -0.01904 0.06061 -0.00067 0.00529 -0.00044 -0.00283 -0.00854 -0.00409
C 0.05699 0.00255 0.02055 -0.00435 -0.00678 0.01576 -0.00739 -0.00662 -0.00719
C 0.06493 0.00864 0.02544 -0.00722 0.02673 -0.00496 -0.01058 -0.00315 -0.01081
C 0.00351 0.03117 -0.01613 -0.01401 0.00180 0.02697 -0.01924 -0.00013 -0.01622
H 0.08108 -0.01494 0.04217 0.00036 -0.02360 0.01982 -0.00147 -0.01008 -0.00227
C 0.01014 0.03743 -0.01859 -0.01669 0.03545 0.00624 -0.02259 0.00344 -0.02003
H 0.10010 -0.00782 0.05249 -0.00506 0.03729 -0.01781 -0.00708 -0.00391 -0.00898
C -0.00513 0.03909 -0.02414 -0.02019 0.02293 0.02233 -0.02701 0.00492 -0.02277
H -0.01541 0.04096 -0.03131 -0.01669 -0.00800 0.03924 -0.02252 0.00102 -0.01823
H -0.00658 0.05407 -0.03353 -0.02140 0.05195 0.00237 -0.02839 0.00740 -0.02513
H -0.02630 0.05091 -0.03767 -0.02772 0.02970 0.03108 -0.03644 0.00996 -0.03000
(...snip...)
その結果、虚振動が1つであることが確認できた。つまりこの構造は遷移状態構造である。
次に、vibration_animation内の虚振動を示す分子振動が示されたxyzファイル(mode_1_XXXi_wave_number.xyz)をAvogadroで確認すると、求められた遷移状態構造の中に、想定される反応系と生成系をつなぐ方向に振動している構造が存在することを確認できた。Grignard反応の遷移状態構造は6員環構造であることが提唱されているが、今回求められたのは4員環構造の遷移状態構造であった。6員環構造があれば算出し、活性化障壁を算出して比較することがどちらが速度論支配的かを検討することが望ましい。ただしUMAのNNPを使った場合の考察であって、これが現実と合っているかどうかはわからない。
終わりに
自作ライブラリで、UMAモデルのニューラルネットワークポテンシャル(NNP, uma-s-1p1)を用いて、Grignard反応の反応のある1つの遷移状態構造を算出する手順を説明した。
参考
- https://github.com/ss0832/MultiOptPy (自作ライブラリMultiOptPyのレポジトリ)
- https://avogadro.cc/ (Avogadro、分子構造可視化ツール)
- https://ai.meta.com/blog/meta-fair-science-new-open-source-releases/ (UMAの公開に関する記事)
- https://github.com/facebookresearch/fairchem (FAIR Chemistryの提供するGitHubのレポジトリ)
- https://fair-chem.github.io/ (同上のレポジトリの内容に関して説明したサイト)
- https://huggingface.co/facebook/UMA (NNPの配布サイト, Hugging Faceへのアカウント登録と配布元の使用許諾が必要である。)
- arXiv preprint arXiv:2505.08762 (2025). (プレプリント)
- The Journal of Chemical Physics 2010, 132, 241102.
- The Journal of Chemical Physics 1991, 94, 751–760.
- In Classical and Quantum Dynamics in Condensed Phase Simulations; WORLD SCIENTIFIC: LERICI, Villa Marigola, 1998; pp 385–404.
- The Journal of Chemical Physics, 2020, 153, 024109.
- The Journal of Chemical Physics, 2022, 144, 214108.
補足: 今回取り上げたGrignard反応について(生成AIに説明させている)
フェンシクリジン誘導体合成における反応機構:-アミノニトリルのアルキル化
本稿では、文献『Synthesis and Determination of Chronic and Acute Thermal and Chemical Pain Activities of a New Derivative of Phencyclidine in Rats』で記述された合成ルートにおいて、中間体 1-Piperidinotetralylcarbonitrile(化合物V)から最終生成物 PCP-OCH-tetralyl(化合物III)が生成する反応機構について解説する。
この反応は、一般に**Bruylants反応(Bruylants reaction)**として知られる、-アミノニトリルに対するグリニャール試薬の求核置換反応に分類される。
1. 反応の概要
- 基質: 1-Piperidinotetralylcarbonitrile(化合物V)
- シクロヘキサン環(テトラリン骨格)の同一炭素上に、ピペリジン環(アミン)とニトリル基()が結合した-アミノニトリル構造を持つ。
- 試薬: (3-methoxyphenyl)magnesium bromide(グリニャール試薬)
- 3-ブロモアニソールとマグネシウムから調製された有機金属試薬。
- 反応形式: ニトリル基()のアリール基(芳香族基)による求核置換。
2. 詳細な反応機構及びクエンチ方法
本反応は以下の段階を経て進行すると考えられる。
第1段階:イミニウムイオン中間体の形成(脱シアン化)
-アミノニトリル(化合物V)において、ニトリル基()は脱離能を有している。反応系内において、アミン窒素の孤立電子対(ローンペア)からの電子供与により、シアニドイオン()が脱離し、求電子性の高い**イミニウムイオン(Iminium ion)**中間体が形成される。 (補足:化合物Vは典型的なα-アミノニトリルであり、反応条件下ではニトリル炭素と隣接するアミン窒素の相互作用により、イミニウム様中間体への可逆的変換が可能である。この過程では、C–CN 結合が形式的に開裂し、シアニド成分は溶媒中で金属塩(Mg²⁺)と会合すると考えられる。)
この平衡は、グリニャール試薬に含まれるマグネシウム(ルイス酸として作用)がニトリル基に配位することで促進される場合がある。
第2段階:グリニャール試薬による求核攻撃
生成したイミニウムイオンの炭素原子は強い求電子性(プラスの電荷を帯びやすい性質)を持つ。ここに、強い求核剤(Nucleophile)であるグリニャール試薬のカルバニオン部分(:ここでは3-methoxyphenyl基)が攻撃する。
本研究において、この求核攻撃により、テトラリン環の1位に3-メトキシフェニル基が導入される。
(補足:第1段階で生成したイミニウム炭素は強い求電子性を示し、ここに (3-methoxyphenyl)magnesium bromide に由来するアリール求核種が付加する。 この段階で新たな C–C 結合が形成され、テトラリン環1位に 3-メトキシフェニル基が導入される。本反応が進行しにくい理由は、このイミニウム炭素がテトラリン骨格およびピペリジン環により強く遮蔽されているためと解釈できる。)
第3段階:加水分解(クエンチ)(反応機構の説明から突然実験操作に関する説明に移行している点に注意)
反応終了後、氷冷塩化アンモニウム水溶液()へ反応液を注ぐことで、未反応のグリニャール試薬およびマグネシウム塩を分解・除去し、最終的な遊離アミン(化合物III)を得る。
3. 反応の立体障害と反応性に関する考察
本研究の記述には、反応機構に関連する重要な実験的観察が含まれている。
- 反応の遅延と不完全性: 著者らは、グリニャール試薬とカルボニトリルの反応が「遅く、不完全(slow and incomplete)」であったと報告している。
- 構造的要因: この反応性の低さは、化合物Vが持つテトラリン骨格(1-tetralone由来)とピペリジン環による大きな立体障害(Steric hindrance)に起因すると考えられる。嵩高い置換基が反応中心(イミニウム炭素)へのグリニャール試薬の接近を阻害している。
- 解決策: この立体的な障壁を克服し、化学平衡を生成物側へ移動させるため、著者らはカルボニトリルに対するグリニャール試薬のモル比を通常よりも増加させる手法を採用した。
4. 結論
本反応は、単純な直接置換ではなく、-アミノニトリルからの脱離とそれに続くイミニウム塩への付加という機構を経由する。本研究では、メトキシ基の電子供与効果やテトラリン骨格の剛直性が期待されたが、同時にそれらの構造的特徴が合成反応における立体障害となり、過剰量の試薬を必要とする要因となったことが示唆される。
補足: Grignard反応の応用例について
注記:本内容は生成AIによって、アップロードされた学術論文(Seyferth 2009, Ahmadi et al. 2010)およびOrganic Synthesesの記事(Vol. 76)に基づき、これまでの議論を統合して自動生成された解説文です。**
1. 要約
グリニャール試薬(RMgX)は、発見から1世紀以上を経た現在でも有機合成の中心的ツールであるが、その真価を引き出すには「溶液構造の理解」「添加剤による反応性変調」「合成条件の最適化」が不可欠である。溶液中ではシュレンク平衡による複雑な動的挙動を示し、そのままでは塩基性が高く副反応を招きやすい 。しかし、セリウム塩()の添加による求核性の選択的向上 や、鉄(Fe)・マンガン(Mn)触媒を用いたクロスカップリング 、さらには医薬品合成における過剰量試薬と温度制御による反応促進 など、目的に応じた適切な制御手法を用いることで、現代の精密合成においても強力なソリューションを提供する。
2. 基礎理論:溶液内での動的構造(シュレンク平衡)
グリニャール試薬を「RMgX」という単一の化学種として扱うことは、合成化学的な便宜上の簡略化に過ぎない。Seyferth(2009)が詳述するように、溶液中では以下の**シュレンク平衡(Schlenk Equilibrium)**が支配的である。
- 会合状態の複雑性: ジエチルエーテル中では、ハロゲン架橋()を介して二量体や多量体が形成されやすく、その構造は濃度やハロゲンの種類(Cl < Br < I で会合しやすい)に強く依存する。
- 溶媒による制御: THFのような強いルイス塩基性溶媒中では、マグネシウムへの配位が優先し、単量体に近い種が多くなる傾向がある 。反応溶媒の選択は、単なる溶解性の問題ではなく、活性種の構造そのものを制御するパラメータである 。
3. 反応制御 I:添加剤による化学選択性のチューニング
グリニャール試薬単独では制御困難な反応も、適切な「パートナー」を選ぶことで劇的に改善される。
3.1 有機セリウム種による塩基性の抑制
グリニャール試薬は強力な求核剤であると同時に強い塩基でもあるため、エノール化可能なケトンに対しては望まないプロトン引き抜き(エノール化)を起こしやすい 。 これに対し、Takeda & Imamoto (1999) は、無水塩化セリウム()を添加して有機セリウム試薬とすることで、塩基性を抑制しつつ求核性を維持できることを示した。これにより、通常は低収率となる-テトラロン等への付加反応を高収率で進行させることが可能となる。
3.2 遷移金属触媒(Fe/Mn)によるクロスカップリング
炭素-炭素結合形成において、パラジウムやニッケル触媒が主流となる以前から、鉄(Fe)やマンガン(Mn)触媒の有効性が知られていた 。
- 鉄触媒: 安価で低毒性なやは、NMPなどの添加剤存在下で、アルキルハライドとアリールグリニャール試薬のクロスカップリングを効率的に進行させる [cite: 367-368]。これは-水素脱離を起こしやすいアルキル基質において特に有用である 。
- マンガン触媒: ホモカップリングの抑制や、特定の官能基を持つ基質に対して高い選択性を示す 。
4. 実践的応用:医薬品骨格構築における最適化戦略
実際の医薬品合成においては、理論的な反応性だけでなく、基質の立体障害や反応速度の問題を物理的に解決する必要がある。Ahmadiら(2010)によるフェンサイクリジン(PCP)新規誘導体の合成研究は、その実践的なケーススタディを提供する 。
4.1 ケーススタディ:PCP誘導体の合成(Bruylants反応)
Ahmadiらは、NMDA受容体拮抗作用を持つ化合物の探索において、立体的に嵩高い-アミノニトリル(1-piperidinotetralylcarbonitrile)に対し、グリニャール試薬(3-methoxyphenylmagnesium bromide)を作用させ、ニトリル基を置換する反応(Bruylants反応)を用いた 。
4.2 立体障害の克服:化学量論と温度効果
この反応における最大の障壁は、反応点がテトラリン環とピペリジン環に挟まれた第四級炭素であり、極めて立体障害が大きいことであった 。通常の条件では反応は遅く、未完結に終わる 。 この課題に対し、以下の物理的最適化が行われた。
- 過剰量の試薬: グリニャール試薬のモル比を大幅に高めることで、化学平衡と反応速度を生成系へ押し進めた 。
- 温度制御(加熱還流): 通常の室温反応ではなく、THF共存下で65-67℃まで加熱還流し、さらに長時間(5時間還流+一晩撹拌)反応させることで、活性化エネルギーの壁を越えた 。
この結果、医薬品候補化合物(III)の合成に成功し、鎮痛活性評価へと繋げることができた 。
5. 結論
グリニャール反応を使いこなす鍵は、以下の3層構造の理解にある。
- ミクロな視点: シュレンク平衡による溶液内活性種のダイナミクス(Seyferth)。
- 反応性の視点: やFe/Mn触媒による、塩基性・求核性・カップリング能の変調(Imamoto, Seyferth)。
- マクロな視点: 立体障害や反応速度といった物理的障壁を、過剰量試薬や温度制御で乗り越えるプロセス化学的アプローチ(Ahmadi)。
これら全ての知見を統合することで、グリニャール試薬は100年前の発見時と変わらぬ輝きを保ちつつ、現代の複雑な分子構築に応え続けている。
6. 参考文献
- Seyferth, D. “The Grignard Reagents”, Organometallics 2009, 28, 1598–1605.
- Ahmadi, A., Khalili, M., Hajikhani, R., Barghi, L., & Mihandoust, F. “Synthesis and Determination of Chronic and Acute Thermal and Chemical Pain Activities of a New Derivative of Phencyclidine in Rats”, Iranian Journal of Pharmaceutical Research 2010, 9 (4), 379-385.
- Takeda, N. & Imamoto, T. “Use of Cerium(III) Chloride in the Reactions of Carbonyl Compounds with Organolithiums or Grignard Reagents”, Org. Synth. 1999, 76, 228.
フェンシクリジン(PCP)および関連物質に関する法的・倫理的注意
1. 法的規制(日本国内)
フェンシクリジン(PCP)は、日本の**「麻薬及び向精神薬取締法」において「麻薬」**に指定されています。 厚生労働大臣の免許を受けた麻薬研究者などが、業務や研究の目的で取り扱う場合を除き、以下の行為は法律で厳しく禁止されています。違反した場合は、懲役刑を含む重い刑罰が科されます。
- 製造(合成)
- 所持
- 使用(施用)
- 譲渡および譲受
- 輸出入