利益:
- 名前ではなく構造表現によって分子を識別する能力 (人間の場合は SMILES、データベースの場合は InChI/InChIKey)
- RDKitを使用した人工知能によって与えられた各SMILEを解析、検証、正規化することで、無効または不正確な構造を検出する機能
- 分子量や式などの決定論的な量は、言語モデルからではなく、ルールベースのツールから取得する必要があることを理解できること。
化学で AI を安全に使用するための最初の条件は、機械と人間の両方が理解できる言語で分子を記述することです。 「フェノール」と言うと、AI が正しく答えます。しかし、「酸」と一言で言っても、何千もの可能性があります。名前は曖昧です。構造表現が正確です。この単元では、分子をテキストに変換する 2 つの基本的な表記法 (SMILES および InChI) と、それらを決定論的に検証するツール (RDKit) を学習します。私たちの目標は、AIに誤解のない形で分子を与え、AIが作った構造をツールで確認することです。
スマイルズとは何ですか?
SMILES (Simplified Molecular-Input Line-Entry System) は、1 行のテキストに分子を記述する形式です。原子は文字で、結合は記号で、環は数字で表されます。例:
- エタノール: CCO (炭素 – 炭素 – 酸素; 水素は暗黙的に含まれます)。
- ベンゼン: c1ccccc1 (小文字の「c」は芳香族炭素を示し、1 は環の近くにあります)。
- アスピリン: CC(=O)Oc1ccccc1C(=O)O。
- カフェイン: Cn1cnc2c1c(=O)n(C)c(=O)n2C。
SMILES の利点は、リンク構造全体を 1 行で伝達できることです。その弱点は、同じ分子が複数の有効な SMILE を持つ可能性があることです (これを非標準性と呼びます)。これは RDKit を使用してすぐに解決します。
ヒント: 分子の「標準的な SMILES」は、その分子の単一の標準的な綴りです。 2 つの SMILE が同じ分子かどうかを確認するには、それらを正規化して比較します。これらは文字上同じである必要はありませんが、分子としては等しいはずです。
インチとは何ですか?
InChI (International Chemical Identifier) は、IUPAC によって開発された標準識別子です。 SMILES との違いは、同じ分子が常に同じ InChI を与えることです。つまり、本質的に正規です。長くて読みにくいですが、データベースの照合には最適です。検索には省略形の「InChIKey」(27 文字のダイジェスト)が使用されます。
- アスピリン InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N。
ルール: 人々は SMILES (読み) を話し、マシンとデータベースは InChI/InChIKey (正確) に一致します。 AIに笑顔を与えてください。 InChIKeyでデータベースで確認します。
RDKit: 決定論的検証エンジン
RDKit は、オープンソースのケモインフォマティクス ライブラリです。言語モデルとは異なり、これはルールベースです。SMILES を解析し、分子量を計算し、標準的な SMILES を生成し、InChI/InChIKey を返し、分子を描画します。つまり、RDKit は AI が「予測」するものを「計算」します。これがワークフローの中心です。AI が生成し、RDKit が検証します。
基本的な検証フロー:
from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("分子式:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("分子量:",round(Descriptors.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))
MolFromSmiles が None を返した場合、AI は無効な分子を与えたことになります。これだけでも非常に価値のある警告です。有効であれば、言語モデルに分子量を問い合わせる必要はなくなります。それは決定的にあなたの手の中にあります。
ステップバイステップ: AI + RDKit の相互運用
- 分子を特定する: AI に名前を付け、笑顔を求めます。たとえば、「パラセタモールの正規 SMILES を検証する」などです。
- 検証: 受信した SMILES を MolFromSmiles で解析します。なしの場合は拒否します。
- 正規化: MolToSmiles を使用して正規のスペルを取得します。これからはいつもこれを使います。
- 数値の計算: AI からではなく、RDKit から分子量、式、環の数、水素結合供与体/受容体の数などを取得します。
- ID の修正: InChIKey を生成し、データベース (PubChem) で検索し、分子が実際に必要な化合物であることを確認します。
コピー可能な 4 つのテンプレート
1) SMILES のリクエスト (名詞から構造まで):
タスク: 次の化合物の正規 SMILES を与えてください。化合物: パラセタモール (アセトアミノフェン)。ルール: SMILES 文字列と InChIKey のみを指定し、それ以上の説明は追加しないでください。よくわからない場合は、「わからない」と書き、作り話はしないでください。
2) SMILES 検証リクエスト (構造からコントロールまで):
以下の SMILES を調べてください: CC(=O)Nc1ccc(O)cc1質問:1) これは有効な SMILES ですか?2) それはどの化合物 (一般名) に対応しますか?3) 分子式は何ですか? 注: 正確な分子量は RDKit で計算します。構造の解釈を与えるだけです。
3) 2 つの表現を比較します。
私には 2 つの SMILES があります:A) OCCB) CCOTask: これらは同じ分子ですか、それとも異なる分子ですか?推論を書いてください。注: 回答を RDKit で正規化してクロスチェックします。
4) 構造の説明 (学習目的):
SMILES: Cn1cnc2c1c(=O)n(C)c(=O)n2CT課題: この SMILES を少しずつ読んで、それぞれの記号が何を意味するのか (原子、結合、環、芳香族性) を平易なトルコ語で説明してください。また、それがどの化合物であるかを教えてください。
弱いプロンプト / 強いプロンプト
弱い:
アセトアミノフェンの性質を教えてください。
「特徴」は曖昧です。 AI は分子量から融点までの乱数を生成しますが、そのうちのいくつかは間違っています。
強い:
化合物: アセトアミノフェン。1) Canonical SMILES および InChIKey ver.2) 分子式を与えてください。ルール: 分子量、融点などの数値は与えないでください。 RDKit/PubChem で取得します。ビルド ID を指定するだけです。
違い: 私たちは AI を、得意なこと (構造同一性) に向け、苦手なこと (実験数値) から遠ざけるように指示しました。
インプレッションの比較
特徴
笑顔
インチ / インチキー
可読性
高い(人に優しい)
低い(機械に優しい)
正統性
変更される可能性があります (正規化が必要です)
当然独身
使用法
ヒューマンコミュニケーション、描画、入力
データベースの一致、同一性
立体化学
サポート (@ 記号)
サポート(重ね着)
AIに与える
理想的な
確認用に最適
ミニケース
ケース 1 — 2 つの名前、1 つの分子。ある学生は、「N-アセチル-パラ-アミノフェノール」と「パラセタモール」は異なる化合物であると考え、2 つの別々の実験を計画しました。 RDKit で SMILE を正規化すると、両方とも CC(=O)Nc1ccc(O)cc1 であることが判明しました。それは同じ分子でした。失われた: 半日の計画。ゲイン: 2 分間の正規化チェックを行えば回避できたはずです。
ケース 2 — 無効な SMILES キャプチャ。 AI は、バリアント (括弧が閉じられていない) に対して CC(=O)Nc1ccc(O)cc1C( を返しました。学生が MolFromSmiles を実行すると、None が返され、すぐにエラーを確認し、修正された SMILES を要求しました。検証がなければ、欠陥のある構造はすべてのアカウントに広がっていたでしょう。
ケース 3 — 分子量が正しくありません。 YZ は、イブプロフェン (C13H18O2) について「分子量 214.3 g/mol」と述べました。 RDKit 計算では 206.28 g/mol が得られました。 0.1 mol の差: YZ では 21.43 g、実際には 20.63 g。この 3.9% の差により、化学量論と収率の計算が混乱します。それは決定論的な微積分をもたらしました。
よくある間違い
- 分子に名前を付ける。同義語/商品名が混同されています。必ず SMILES または InChI を含めてください。
- SMILESを正規化せずに比較します。 OCC と CCO は、文字としては異なりますが、分子としては同じです。
- 舌模型に分子量を尋ねます。これは決定論的な計算です。これは、RDKit から、または数式から手動で実行されます。
- 無効な SMILE に気づいていない。 MolFromSmiles None の戻りをチェックせず、間違った構造を継続します。
- 立体化学を無視します。 2 つの鏡像異性体 (鏡像異性体) は、異なる生物学的効果を示す可能性があります。 SMILES では @/@@ 記号を省略します。
注意: 同じ分子式は異なる分子を意味するわけではありません。 C2H6O はエタノール (CCO) とジメチルエーテル (COC) の両方です。式の等価性は同一性の等価性ではありません。識別には InChIKey を使用します。
要約すると
- 名前ではなく構造表記によって分子を識別します。SMILES はヒト、InChI/InChIKey はデータベースを使用します。
- RDKit は決定論的です。 AIが予測し、RDKitが計算して検証します。
- 各 AI SMILES を MolFromSmiles で解析し、None をチェックしてから正規化します。
- 分子量や式などの数値は、言語モデルからではなく RDKit から取得します。
- 式の同一性は分子の同一性を意味するものではありません。識別には InChIKey を使用します。
アプリケーションタスク
3 つの化合物 (カフェイン、イブプロフェン、グリシンなど) を選択します。それぞれの標準的なSMILESをAIに尋ねます。次に、RDKit スクリプトを作成し (上記のテンプレートを使用)、標準 SMILES、分子式、分子量、InChIKey を生成します。 AIが出したSMILEは何個が有効だったのでしょうか? YZ が分子量も指定している場合は、RDKit 値との差をパーセンテージとして計算します。調査結果を小さな表にプロットします。
チェックリスト
- [ ] SMILES と InChI/InChIKey が何であるか、またそれらをいつ使用するかを知っています。
- [ ] AIから与えられたすべてのSMILEをMolFromSmilesで検証します。
- [ ] SMILES を比較する前に正規化します。
- [ ] 言語モデルからではなく、RDKit から分子量と式を取得しています。
- [ ] InChIKey を使用してデータベース内の分子の同一性を確認します。
- [ ] 私は立体化学が重要な状況を知っています。