1. はじめに:第1報の反響と、第2報に潜んでいた「さらに深い罠」
昨日公開した第1報(グラフ理論とFiedlerベクトルによるタンパク質フォールディング論文)のデータ監査・Zenodo Version 2(V2)改訂に関する記事には、公開直後から多くのアクセス(一晩で136 Views超)をいただき、大変ありがたく思っています。
「AIと共創した研究だからこそ、プロトタイプの仮数値やスクリプトの不整合を1ミリも残さず、100%実コードで再現できる状態にして世に出す」——この方針のもと、引き続いてもう1本のプレプリント論文である**第2報(分子溶解度・水和殻・医薬共結晶・逆スペクトルトモグラフィー論文)についても、開発セッションログ(04_Session.md、約1,200万文字)と公開済み V1 PDF の完全突合監査(Code-to-Data Provenance Audit)**を実施しました。
第2報 論文タイトル
Molecular Solubility, Hydration Shells, and Inverse Spectral Tomography via 3D Lone-Pair Fiedler Vector Optimization
(3D孤立電子対Fiedlerベクトル最適化による分子溶解度・水和殻・逆スペクトルトモグラフィー)
監査を始めてすぐ、背筋が凍るような事実に気づきました。
第2報の V1 PDF(ブラウザ印刷用の paper2_publication.html から出力したもの)の Section 3 に掲載されていた要約表の中に、数学的に絶対にあり得ない数値が紛れ込んでいたのです。
本記事では、第2報のコード・データ監査で発覚した**「数学的上限の突破(プレースホルダー混入)」と「プロトタイプコードに潜んでいた3つの物理実装バグ」**、そしてそれらをすべて純粋な NumPy + SciPy の決定論的コード(recompute_solubility_benchmarks.py)で一から書き直して Zenodo Version 2(V2) へと刷新した全過程を共有します。
Zenodo : https://zenodo.org/records/23681516
2. 監査で発覚した「数学的矛盾」と「3つのプロトタイプ実装バグ」
発見①:正規化グラフラプラシアンの固有値 $\lambda_2$ が「上限 2.0」を超えていた!
第2報では、分子サイズが異なっても公平にスペクトルを比較できるよう、次数行列 $\mathbf{D}$ で正規化した**対称正規化グラフラプラシアン(Normalized Graph Laplacian)**を採用しています:
$$\mathbf{L}_{\mathrm{norm}} = \mathbf{D}^{-1/2}(\mathbf{D} - \mathbf{A})\mathbf{D}^{-1/2} = \mathbf{I} - \mathbf{D}^{-1/2}\mathbf{A}\mathbf{D}^{-1/2}$$
スペクトルグラフ理論(Fan Chung, Spectral Graph Theory, 1997)の基本定理により、連結グラフにおける正規化ラプラシアン $\mathbf{L}{\mathrm{norm}}$ のすべての固有値は必ず閉区間 $[0, 2]$ に収まり、第2最小固有値である Fiedler 値 $\lambda_2$ は厳密に以下の不等式を満たします:
$$0 \le \lambda_2(\mathbf{L}{\mathrm{norm}}) \le \frac{N}{N-1} \le 2$$
ところが、V1 PDF の Section 3 の表には、以下のような数値が記載されていました:
-
Carbamazepine (Water/EtOH): $\lambda_2 = 3.48$(
> 2.0!) -
Nicotinamide (Water): $\lambda_2 = 3.82$(
> 2.0!) -
D-Mannitol (Water): $\lambda_2 = 4.12$(
> 2.0!)
なぜ正規化ラプラシアンの固有値が $2.0$ を超えていたのか?
セッションログ(04_Session.md)を遡って調査した結果、Python の実コード自体はちゃんと $0 \le \lambda_2 \le 2$ の範囲(0.030747 や 0.078373 など)で正しく出力していたにもかかわらず、最後の最後に印刷用の HTML ファイル(paper2_publication.html)を作成するステップで、AI が非正規化ラプラシアン(第1報のタンパク質フォールディングで出た 3.5 前後のスケール)のイメージに引きずられて、実ログを参照せずにプレースホルダーの数値を HTML テーブルに手打ちしていたことが判明しました。
発見②:Kabsch SVD 3D ドッキングの「原子めり込み」とレポートの手書き乖離
さらに、セッションログ内のプロトタイプスクリプト群を1行ずつ点検すると、コード側にも3つの重大な実装上のショートカットが見つかりました。
1つ目は、Fiedler ベクトルの位相相補性($v_{2,i}^{(A)} \cdot v_{2,j}^{(B)} < 0$)を使って2分子の結晶シンソン(水素結合ペア)を 3D 空間で重ね合わせる Kabsch SVD ドッキング(run_dimer_orientation_validation_benchmark.py)です。
初期コードでは、相補的な極性原子ペアの座標をファンデルワールス(vdW)反発なしでそのまま Kabsch 重ね合わせしていたため、ターミナルの実出力では分子同士がめり込み、水素結合距離が 0.00〜0.56 Å になっていました。ところが当時の AI がまとめた Markdown レポートでは、そのめり込み出力を使わず、X線結晶構造の文献値に一律 +0.05 Å を足した数値(1.85 Å 等)を手書きしていたのです。
発見③:水分子 $109.47^\circ$ 孤立電子対エンジンの「単一水分子・重心配置バグ」
2つ目は、水分子の酸素原子が持つ2対の非共有電子対(Lone Pairs: $\mathrm{LP}_1, \mathrm{LP}_2$、四面体角 $109.47^\circ$)を3Dベクトルとして配置するスクリプト(fiedler_tetrahedral_lonepair_water_engine.py)です。
初期デモコードでは、溶質分子の重心から [+3.0, 0.0, 0.0] Å 離れた座標に水分子をたった1個だけ置き、$3.5\text{ \AA}$ カットオフでグラフを作っていました。その結果、D-グルコースではたまたまその1個の水分子がどの $-\mathrm{OH}$ 基からも $3.5\text{ \AA}$ 以上離れてしまい、グラフが非連結になって グルコース: λ2 = 0.000000(水にまったく溶けない!)と出力されていました。
発見④:8溶媒エンジンに紛れ込んでいた if polar_ratio >= 0.30 ハードコード分岐
3つ目は、水からヘキサンまで8種類の有機溶媒中での溶解度プロファイルを計算するスクリプト(multi_solvent_physical_properties_engine.py)です。
初期テストでグルコースが非極性のヘキサン中で高い $\lambda_2$ を出してしまった際、物理式の改良ではなく if polar_ratio >= 0.30 and solvent == 'hexane': return 0.0 という**条件分岐(ハードコードによる強制ゼロ化)**が挿入されていました。また、8溶媒プロファイルから分子構造を逆推定する「逆スペクトルトモグラフィー」でも、ノイズのない同一ベクトル同士を引き算して MSE = 0.00e+00 (100.00%) としていました。
3. すべてを物理法則と決定論的コードで再構築する(V1 → V2 全面刷新)
「アイディアと物理モデルは本物だからこそ、ショートカットや手打ち数値を一切排除した完全なコードで証明しよう」——そう決意し、外部ライブラリ(RDKit 等)にすら依存せず、標準の NumPy と SciPy だけで全4モジュールを約5秒で100%決定論的に再計算できる検証スイート recompute_solubility_benchmarks.py を構築しました。
3.1 V1 プレースホルダー値 vs セッション実ログ vs V2 厳密再計算値の完全突合
まず、V1 PDF の表にあった5つの系について、すべての数値を正規化ラプラシアンの理論範囲 $0 \le \lambda_2(\mathbf{L}_{\mathrm{norm}}) \le 2$ に厳密に従う実計算値へと修正しました。
| 対象分子・系 (Solute / System) | 溶媒・状態 | 実測 $\log S$ ($25^\circ\text{C}$) | V1 PDF 記載 $\lambda_2$ (誤) | セッション実ログ $\lambda_2$ (04_Session.md) |
V2 厳密再計算 水和 $\lambda_2$ | V2 ダイマー・共結晶 $\lambda_{2,\mathrm{dimer}}$ | V2 結晶異常指標 $\mathrm{FCAI}_z$ (42分子順位差) |
|---|---|---|---|---|---|---|---|
| Carbamazepine (CBZ) | Water | $-3.85$ | 1.12 |
0.030747 |
0.042005 |
0.074191 |
+0.481 (BCS II 難溶薬) |
| CBZ + Nicotinamide | 共結晶 / 混合溶媒 | $-1.10$ |
3.48 (>2!) |
0.078373 (2.55×) |
0.105730 ($\chi=0.3$) |
0.110849 (2.64×) |
-0.412 (共結晶可溶化) |
| Nicotinamide (NICO) | Water | $+0.82$ |
3.82 (>2!) |
0.076942 |
0.101900 |
0.175648 |
-0.479 (高親水コフォーマー) |
| D-Mannitol | Water ($109.5^\circ$ LP) | $+0.08$ ($21.6\text{ g}$) |
4.12 (>2!) |
0.021771 |
0.015859 (3D-LP最小) |
0.088883 |
+1.485 (平面ジグザグ結晶) |
| Terephthalic Acid (1,4) | Water | $-4.04$ ($0.0015\text{ g}$) | 0.95 |
-0.007919 ($\Delta\Delta f$) |
0.094066 |
0.109046 |
+1.458 (FCAI = +28, 2位) |
難溶性医薬(BCS Class II)の代表格である**カルバマゼピン(CBZ)は、単体水中では $\lambda_2 = 0.042005$ と低い連結度にとどまりますが、親水性コフォーマーであるニコチンアミド(NICO)*と共結晶(ヘテロシンソン)を組ませることで $\lambda_{2,\mathrm{dimer}} = 0.110849$(単体水中比 $2.64\text{倍}$) へと飛躍的にネットワーク連結度が向上します。さらに水+エタノール二元混合溶媒では、エタノールモル分率 $\chi_{\mathrm{EtOH}}^ = 0.50$ において 共溶媒シナジーピーク($\lambda_2 = 0.116535$、単体水中比 $2.77\text{倍}$) が現れることも連続曲線として定量実証できました。
3.2 Module 1:全42分子ベンチマークと「なぜ極性分子なのに溶けないのか?」を見抜く結晶異常指標 FCAI
分子が水に溶けない理由は大きく2つあります。
- 水和制限(Hydration-Limited):ヘキサンやナフタレンのように、そもそも水分子と水素結合を作れず弾き出されるケース。
- 結晶格子制限(Crystal-Lattice-Limited):カルボキシル基やフェノール性 $-\mathrm{OH}$ 基、両性イオンなど水と強く結合できる極性基を持ちながら、固体結晶中での分子間ネットワーク(水素結合リボンや $\pi$ スタッキング、塩橋)があまりにも強固なために結晶から抜け出せないケース。
この2つを分離するため、水なしの溶質ダイマー凝集シフト $\Delta f_{\mathrm{solute}}$ と水和ネットワークシフト $\Delta f_{\mathrm{solvated}}$ の差をとる**2段階グラフ熱力学($\Delta\Delta f = \Delta f_{\mathrm{solvated}} - \Delta f_{\mathrm{solute}}$)と、水素原子の立体排除体積を含めた全原子数正規化($S_{\mathrm{net_all}} = \Delta\Delta f / N_{\mathrm{all}}$)を導入しました。
その結果、直鎖アルコール同族体(メタノール $>$ エタノール $>$ 1-プロパノール $>$ 1-ブタノール)および脂肪族アミノ酸同族体(グリシン $>$ アラニン $>$ バリン $\ge$ ロイシン)における同族体内の順位逆転は $0\text{回}$(完全解消)**となりました。
そして、「グラフ上の水和親和性順位 $\mathrm{Rank}(\Delta\Delta f)$」と「実測溶解度順位 $\mathrm{Rank}(S_{\mathrm{exp}})$」の差として定義した Fiedler 結晶異常指標($\mathrm{FCAI} = \mathrm{Rank}(\Delta\Delta f) - \mathrm{Rank}(S_{\mathrm{exp}})$) を全42分子に対して計算すると、固相結晶の異常な安定性を持つ分子が自動的に浮かび上がります:
| 異常度順位 | 分子名 (Compound) | 分類 | 実測水溶性 ($25^\circ\text{C}$) | 実測順位 | Fiedler 水和順位 | 結晶異常指標 FCAI | 検出された固相結晶格子メカニズム |
|---|---|---|---|---|---|---|---|
| 1位 | L-Tyrosine (L-チロシン) | 芳香族アミノ酸 | $0.045\text{ g/100g}$ | 7 | 37 | +30.0 |
フェノール $-\mathrm{OH}$ +両性イオン塩橋の3D結晶網 |
| 2位 | Terephthalic Acid (1,4) | 芳香族ジカルボン酸 | $0.0015\text{ g/100g}$ | 2 | 30 | +28.0 |
1,4-対称二重カルボキシル無限1D水素結合鎖+$\pi$積層 |
| 3位 | L-Glutamic Acid | 酸性アミノ酸 | $0.86\text{ g/100g}$ | 13 | 40 | +27.0 |
側鎖カルボキシル+両性イオン多座塩橋ネットワーク |
| 比較対照 | Phthalic Acid (1,2-フタル酸) | オルト位異性体 | $1.62\text{ g/100g}$ | 16 | 24 | +8.0 |
1,2-分子内キレートにより結晶対称性が低下(テレフタル酸の1,080倍可溶) |
特に見事なのが、**テレフタル酸(1,4-パラ置換体、水溶性 $0.0015\text{ g/100g}$、$\mathrm{FCAI} = +28.0$)とフタル酸(1,2-オルト置換体、水溶性 $1.62\text{ g/100g}$、$\mathrm{FCAI} = +8.0$)**の対比です。まったく同じ分子式 $\mathrm{C_8H_6O_4}$ でありながら水溶性が 1,080倍 も異なる理由が、ダイマー形成時の Fiedler 固有値利得(テレフタル酸は $\Delta\lambda_{2,\mathrm{dimer}} = +0.043642$ と大幅に安定化するのに対し、オルト位で分子内水素結合を作るフタル酸は $\Delta\lambda_{2,\mathrm{dimer}} = -0.003267$ と結晶化利得が負になる)から定量的に説明できます。
3.3 Module 2:水分子 $109.47^\circ$ 孤立電子対エンジンによる「D-マンニトール vs D-ソルビトール」10倍パラドックスの解明
単一水分子バグを修正し、溶質のすべての極性ドナー・アクセプター部位の周囲に、四面体角 $\theta_{\mathrm{tet}} = \arccos(-1/3) = 109.4712^\circ$ で2本の $sp^3$ 孤立電子対ベクトル($\mathrm{LP}_1, \mathrm{LP}_2$)を張り出した5中心水分子($O, H_1, H_2, \mathrm{LP}_1, \mathrm{LP}_2$)の第1水和殻を配置しました。
糖・ポリオール化学における最大の謎の一つに、D-ソルビトールとD-マンニトールの溶解度差があります。どちらも同じ6価アルコール(分子式 $\mathrm{C_6H_{14}O_6}$、$-\mathrm{OH}$ 基が6個)で、C2炭素の立体配置が1箇所だけ反転したジアステレオマー(エピマー)ですが、$25^\circ\text{C}$ の水溶性は D-ソルビトールが $235\text{ g/100g}$ と極めて良く溶けるのに対し、D-マンニトールは $21.6\text{ g/100g}$ と10分の1以下しか溶けません。
V2 の3D孤立電子対エンジン(evaluate_3d_lonepair_hydration)で全7種の糖・糖アルコールを計算した結果がこちらです:
| 糖・糖アルコール名 | 実測水溶性 ($\text{g/100g H}_2\text{O}$) | Level 1: 等方性点水 $\lambda_2$ | Level 2: 3D $109.47^\circ$ 孤立電子対 $\lambda_2$ | 固相ダイマー結晶利得 $\Delta\lambda_{2,\mathrm{dimer}}$ | Level 4: 2段階 3D-LP 正味指標 |
|---|---|---|---|---|---|
| Glycerol (グリセリン) | 完全混和 ($\sim 1000$) | 0.066762 |
0.036678 |
$+0.185145$ (液体) | +0.032049 |
| D-Fructose (フルクトース) | $375.0$ | 0.042409 |
0.019339 |
$+0.063938$ | +0.016409 |
| D-Sorbitol (D-ソルビトール) | $235.0$ | 0.038115 |
0.025574 |
+0.027409 (C2屈曲) |
+0.024318 |
| Xylitol (キシリトール) | $169.0$ | 0.057398 |
0.026985 |
$+0.079249$ | +0.022626 |
| D-Glucose (D-グルコース) | $91.0$ | 0.047063 |
0.020293 |
$+0.069421$ | +0.017111 |
| Erythritol (エリトリトール) | $61.0$ | 0.056996 |
0.023595 |
$+0.087519$ | +0.017578 |
| D-Mannitol (D-マンニトール) | $21.6$ (難溶) | 0.025534 |
0.015859 (最小) |
+0.053721 (1.96倍) |
+0.009815 (最小) |
| 実測順位とのスピアマン相関 $\rho$ | — | +0.4286 |
+0.5714 |
— | +0.6071 |
-
D-マンニトールが溶けない理由:炭素鎖が平面的な all-trans ジグザグ構造をとり、隣り合う $-\mathrm{OH}$ ベクトルが平行に整列するため、水分子の $109.47^\circ$ 四面体孤立電子対ネットワークと角度フラストレーションを起こして水和 $\lambda_2$ が最小(
0.015859)になるだけでなく、固体中で分子同士がジッパーのように噛み合って大きなダイマー結晶化利得($\Delta\lambda_{2,\mathrm{dimer}} = +0.053721$、ソルビトールの約2倍)を稼ぐためです。 -
D-ソルビトールが10倍溶ける理由:C2位の立体反転によって炭素鎖にゴーシュ(gauche)屈曲が生じ、固相結晶のパッキングが阻害される($\Delta\lambda_{2,\mathrm{dimer}} = +0.027409$)一方で、多様な方向を向いた $-\mathrm{OH}$ 基が水分子の $109.47^\circ$ 孤立電子対コーンと立体的にフィットし、2段階正味指標が
+0.024318(マンニトール+0.009815の約2.5倍) に達するためです。
3.4 Module 3:vdW 立体反発床付き Kabsch SVD 3D ドッキング(平均誤差 $\overline{\Delta R} = 0.025\text{ \AA}$)
課題②であった「Kabsch 重ね合わせ時の原子めり込み」に対しては、Fiedler 固有ベクトルの反対位相($v_{2,i}^{(A)} \cdot v_{2,j}^{(B)} < 0$)を持つドナー・アクセプター対を Kabsch SVD で3D回転整列させた後、水素結合シンソン軸 $\hat{\mathbf{u}}{\mathrm{HB}}$ に沿って重原子の立体衝突制約($d{\mathrm{heavy}} \ge 2.60\text{ \AA}$)を満たしつつ 12-6 Lennard-Jones ポテンシャル極小点を求める1次元剛体並進を組み込みました。
| ダイマー・医薬共結晶系 | CSD 参照コード | 単分子 $\lambda_2(A)$ | 単分子 $\lambda_2(B)$ | ダイマー $\lambda_{2,\mathrm{dimer}}$ | X線実測 H結合長 ($\text{\AA}$) | V1 めり込み距離 ($\text{\AA}$) | V2 Kabsch 予測距離 ($\text{\AA}$) | 誤差 $\Delta R$ ($\text{\AA}$) |
|---|---|---|---|---|---|---|---|---|
| Terephthalic Acid Homodimer (1,4) | TPHTAC01 |
0.065404 |
0.065404 |
0.109046 |
1.800 |
0.250 |
1.825 |
0.025 |
| Phthalic Acid Homodimer (1,2) | PHTHAC01 |
0.081018 |
0.081018 |
0.077751 |
1.820 |
0.050 |
1.845 |
0.025 |
| Benzoic Acid Homodimer | BENZAC01 |
0.093104 |
0.093104 |
0.086505 |
1.780 |
0.000 |
1.805 |
0.025 |
| Fumaric Acid Homodimer (trans) | FUMACD01 |
0.077183 |
0.077183 |
0.164046 |
1.800 |
0.250 |
1.825 |
0.025 |
| L-Tyrosine Zwitterion Dimer | LTYROS01 |
0.032439 |
0.032439 |
0.088961 |
1.850 |
0.400 |
1.875 |
0.025 |
| Terephthalic Acid + Nicotinamide | TPHTAC_NICOAM |
0.065404 |
0.076942 |
0.143255 |
1.820 |
0.070 |
1.845 |
0.025 |
| Carbamazepine + Nicotinamide | CBZ_NICO_01 |
0.044906 |
0.076942 |
0.110849 |
1.840 |
0.020 |
1.865 |
0.025 |
| Carbamazepine + Saccharin | CBZ_SAC_01 |
0.044906 |
0.106235 |
0.092588 |
1.810 |
0.560 |
1.835 |
0.025 |
手書きのオフセットを一切使わず、純粋な行列演算コードの実行結果として、全8種の CSD 結晶・医薬共結晶すべてにおいて X線結晶構造の水素結合長との平均誤差 $\overline{\Delta R} = 0.025\text{ \AA}$ を達成しました。
3.5 Module 4:if 分岐なしの連続8溶媒指紋($\mathbb{R}^8$)と逆スペクトルトモグラフィーのモンテカルロ検証
課題③であった if polar_ratio >= 0.30 のハードコード分岐も完全に撤廃しました。
オンサーガー(Onsager)の誘電体反応場因子 $f(\epsilon_r) = \frac{\epsilon_r - 1}{2\epsilon_r + 1}$ と、Kamlet–Taft の水素結合酸性度・塩基性度パラメータ($\alpha_S, \beta_S$)、そして極性基を無極性アルカン溶媒へ移す際の静電脱水和エネルギー障壁および疎水性キャビティ形成ペナルティを**連続ボルツマン因子(指数関数)**として結合しました。
その結果、if 文による切り捨てを一切使わずに:
- D-グルコース:水中 $\lambda_2 = 0.11884$、DMSO中 $0.13310$ に対し、ヘキサン中では自然に $\lambda_2 = 0.00054$ へと指数関数的に減衰。
- ナフタレン(無極性芳香族):水中では疎水性排除により $\lambda_2 = 0.00036$ へと抑制され、ヘキサン中では $\lambda_2 = 0.14375$ と高く溶解。
さらに、この8溶媒プロファイル指紋ベクトル $\mathbf{y} \in \mathbb{R}^8$ から未知の溶質分子を特定する**「逆スペクトルトモグラフィー(Inverse Spectral Tomography)」**について、実測溶解度データの実験ばらつきを模したガウス誤差($\sigma_{\mathrm{noise}} = 5%, 10%, 15%$)を加えて 各ノイズレベル2,400試行(12分子×200乱数試行、シード固定 seed=42)のモンテカルロ検証 を実施しました。
| ガウス実験ノイズ標準偏差 $\sigma_{\mathrm{noise}}$ | モンテカルロ総試行数 ($12\text{分子}\times 200$) | Top-1 構造特定精度 (%) | Top-2 構造候補包含率 (%) | 平均コサイン類似度 (%) |
|---|---|---|---|---|
| $0%$(ノイズなし厳密逆問題) | 12 | 100.00% |
100.00% |
100.00% |
| $5%$(標準的な溶解度測定誤差) | 2,400 | 99.92% |
100.00% |
99.90% |
| $10%$(中程度の実験ばらつき) | 2,400 | 96.83% |
100.00% |
99.59% |
| $15%$(大振幅ノイズ環境) | 2,400 | 91.62% |
99.67% |
99.07% |
$5%$ の実験誤差環境下でも Top-1 特定精度 99.92%(2,400回中2,398回正解、Top-2 包含率 100.00%)、$10%$ ノイズ下でも Top-1 精度 96.83%(Top-2 包含率 100.00%) という極めて高いノイズ耐性が実証されました。
4. まとめ:AI時代の研究における「検証コード一式公開」の意義
第1報のタンパク質フォールディング論文に続き、今回の第2報(分子溶解度・水和殻・逆スペクトルトモグラフィー論文)でも、AIとの長大なセッションの中で生じた「HTML要約時のプレースホルダー混入($\lambda_2 > 2.0$)」や「プロトタイプ段階のショートカット実装」を自らの手で徹底的に監査し、**100%決定論的に再現可能なコードと論文(Version 2)**へと昇華させることができました。
AIを使って論文やコードを書くこと自体は誰にでもできる時代になりましたが、**「数学的定理(正規化ラプラシアンの固有値上限 $\lambda_2 \le 2$)に照らして異常値を見抜く目」や、「不都合なバグや手打ち数値を隠さずに物理法則からコードを再構築する誠実さ」**こそが、これからのAI共創研究において最も重要な価値になると確信しています。
改訂した Version 2 プレプリント PDF と、純粋な NumPy + SciPy のみで約5秒で全4モジュール・6つの表・4パネル図表を完全再現できる検証コード&データ一式(Yoshihiro_Honda_Solubility_Paper_v2_Supplementary_Code_and_Data.zip)は Zenodo にて公開しています。創薬(難溶性薬物の共結晶スクリーニング)や物理化学、グラフ理論に興味のある方は、ぜひ手元で python3 recompute_solubility_benchmarks.py を走らせてみてください!