【話題のAI】Antigravity を使って 分子シミュレータが作れてしまった話
こんにちは!最近話題のGoogle DeepMindが開発したエージェント型AI 「Antigravity(アンチグラビティ)」 を実際に使ってみました。
プログラミングやAIには興味があるものの、物理化学や計算科学の専門家ではない「一般人」の私(有機化学専攻)が、Antigravityとペアプログラミングで会話しながら試行錯誤したところ、本来ならスパコンが必要な「有機化合物の水溶性予測」や「タンパク質の立体折り畳み」を、数学(グラフ理論)だけで一瞬で計算する超軽量シミュレータが完成してしまいました……!
「Antigravityって実際どれくらい凄いの?」「AIペアプログラミングで何ができるの?」という体験談として、開発のノリや実験結果をまとめてみます!
🚀 1. そもそもAntigravityで何をやってみたかったのか?
以前、グラフニューラルネットワーク(GNN)で溶解度を計算するプログラムを勉強したのですが、あまりピンときませんでした。「もっと簡単なルールで、ディープラーニングなどの学習を行わずに、グラフ構造をうまく利用して溶解度が予測できないだろうか?」——これが最初の動機です。
アルコール(1-ブタノール、tert-ブタノール)やエーテルなどの分子が「どれくらい水に溶けるか」や、タンパク質がどう折り畳まれるかをコンピュータで計算するには、通常**スーパーコンピュータを使った膨大な「分子動力学(MD)シミュレーション」**が必要です。
ふと、「こんな重い計算、力学ポテンシャルを使わずにグラフの繋がりやすさを表す数学(Fiedler値)だけでサクッと解けないかな?」と思い立ち、Antigravityにそのまま投げてみました。
🤖 2. Antigravityとの神連携:会話していたら爆速でコードを書いてくれた
私:「Fiedler値を使って分子と水分子のグラフを作って、最適化シミュレータ作れる?」
Antigravity:「いいですね!NetworkXとRDKitを組み合わせて、ラプラシアン行列の第2固有値(Fiedler値)を追跡するシミュレータを書きましょう!」
と、提案したアイデアに対して数秒で完璧なPythonコードと数学的定式化を返してくれました。
💥 3. 途中でハマった壁と、Antigravityとの試行錯誤
開発を進める中でいくつか物理・数学の壁にぶつかりましたが、Antigravityとの対話で次々とブレイクスルーが生まれました。
😱 ハマりポイント 1: ジエチルエーテルが溶けやすい判定になってしまう問題
ジエチルエーテル(C-C-O-C-C)を計算させると、酸素が分子の中央にあるせいで「数学的にグラフの中心性が高くなり、アルコールより不当に高く評価される」という問題が発生しました。
- 私: 「これ、中心性バイアスがかかってない?初期値からの差分にした方が良くない?」
- Antigravity: 「素晴らしい着眼点です!初期値 $f_{\text{init}}$ を背景ノイズとして差し引く実効変化量 $\Delta f_{\text{final}} = f_{\text{final}} - f_{\text{init}}$ を算出しましょう!」
これで幾何学バイアスが完璧に消去され、物理的な水和応答だけが取り出せるようになりました!
😱 ハマりポイント 2: 原子のめり込み(衝突)問題
原子同士が空間上で重なってしまう問題に対し、Antigravityが 「無次元空間に適応させた衝突回避ステップ(重原子 0.065、水素 0.045)」 をコードに組み込んでくれ、めり込みが完全ゼロ(0)になりました。
📊 4. びっくりした実験結果:検証した異性体の水溶性順序と見事に一致!
完成したシミュレータ(fiedler_sim_hbond_offset_clash_free.py)で、テストした有機化合物の水溶性データを計算させた結果がこちらです。
| 分子名 | 構造(SMILES) | シミュレータの評価値 $\Delta f_{\text{final}}$ | 実際の水溶性データ | 結果 |
|---|---|---|---|---|
| tert-ブタノール | CC(C)(C)O |
-0.098508 (最高) |
完全混和 | 混和性と綺麗に一致! |
| 2-ブタノール | CCC(O)C |
-0.104441 |
29.0 g/100mL | 検証した範囲内で |
| イソブタノール | CC(C)CO |
-0.113764 |
8.5 g/100mL | 相対的な水溶性順序が |
| 1-ブタノール | CCCCO |
-0.112343 |
7.3 g/100mL | 見事に一致! |
| ジエチルエーテル | CCOCC |
-0.098653 (低水和) |
6.9 g/100mL (最低) | エーテルの難溶性を再現 |
| グリセリン | OCC(O)CO |
-0.056757 (圧倒的高値) |
完全混和 | 3つの-OHによる強固な水和を再現 |
スパコンで数時間かかる計算と同等以上の傾向が、普通のノートPCで1秒で叩き出せて感動しました……!
🌌 5. 魅惑の物理現象:「水網からの疎水性排斥」と「フラクタル構造」
このシミュレータの最も面白いところは、水と馴染まない疎水性部分(炭素鎖)が、水分子ネットワークの自己組織化に伴って「外側(真空の方向)」へ自律的に弾き出されるダイナミクスが見られる点です!
さらに、水分子同士が形成するネットワークにパワーロー(べき乗則)結合を加えると、**パーコレーション現象による「自己相似なフラクタル水網構造($d_f \approx 2.5$)」**が自律的に成長することも確認できました。
🧬 6. タンパク質(シグノリン)を入れてみたら勝手に折り畳まれた
同じアルゴリズムを、タンパク質(シグノリン 10残基: YYDPETGTWY)に入力してみたところ、N末端とC末端の疎水性アミノ酸が自然に引き寄せ合い、**自然界と全く同じ綺麗な $\beta$-ヘアピン構造($\beta$-Hairpin)が自律創発(Emergence)**しました。
💻 7. サンプルコード
Antigravityが書いてくれた核となるコードの呼び出し例です。
import sys
import fiedler_sim_hbond_offset_clash_free as fsim
# tert-ブタノールの水和シミュレーション
G_init, w_os = fsim.create_integrated_system(["CC(C)(C)O"], water_per_atom=3, is_loop=True)
f_history, frames_data, delta_f_final, _ = fsim.run_fiedler_opt_sim(G_init, w_os, steps=100)
print(f"実効水和変化量 (Δf_final): {delta_f_final:.6f}")
📝 8. 使ってみた感想・まとめ
専門外の人間が「こんなアイデアどうかな?」と問いかけるだけで、Antigravityが物理化学の定式化、エラー回避、グラフ理論のコード実装、3D可視化まで一気通貫で伴走してくれました。
-
Antigravityの凄かったところ:
- 物理的・数学的な意図を汲み取って爆速で高度なコードを生成してくれる
- ハマりどころ(原子のめり込みや幾何バイアス)を指摘すると、即座にエレガントな補正数式を提案してくれる
- 専門外でも「思考のスピード」で研究・開発が進む
AIとペアプログラミングをする時代、アイデアさえあれば個人でもここまで面白い物理シミュレータが作れるんだと実感した体験でした。
プログラムコードや3DファイルはすべてGitHubで公開していますので、興味のある方はぜひ触ってみてください!
👉 GitHub リポジトリ:
https://github.com/blackredfoxcrow7/fiedler-water-folding-sim