構造式をパソコンで描いてみたい!
高校の化学で学ぶ構造式を、Pythonのプログラミングを使って視覚化してみましょう!
今回は、化学構造の表現形式SMILES(スマイルス)と、化学構造の描画ライブラリRDKit(アールディーキット)を使って、構造式を簡単に描いてみます。
さらに、化合物名を入力するだけで構造式を描く方法も紹介するので、ぜひ最後までご覧ください💡
1. Pythonで構造式を描くには?
2. 分子を描くライブラリRDKit
3. 分子を文字列で表すSMILES
4. SMILESから分子を描いてみよう!
5. 化合物名からSMILESを取得する(PubChem連携)
6. まとめ
1. Pythonで構造式を描くには?
化合物の構造式は、Pythonを使ってかくことができます💡
…どうやって??
Pythonで扱える形式の化合物情報を渡して、構造式を描画できるライブラリを用いて、描きます!
📢 Pythonで扱える化合物情報の形式(入力)
⇒SMILES, InChI, SMARTS, Molfile / SDF など
📢Pythonの構造式を描画できるライブラリ(処理)
⇒RDkit, Open Babel, ASE, Indigo など
今回は、化合物情報の形式としてSMILES、構造式の描画ライブラリとしてRDKitを用いた例を紹介していきます。
💡 全体の流れ
① 分子の情報をSMILES(文字列)で表す
② その情報を RDKit に渡す
② RDKitが 構造式として描画してくれる!
2. 分子を描くライブラリRDKit
RDKit(アールディーキット)は、化学構造を“コンピュータで扱う”ためのPythonライブラリです💡※
※参考 RDKit https://rdkit.org/docs_jp/Getting_Started_with_RDKit_in_Python_jp.html
例えば、高校の化学では、紙に書いて覚えることが多い「構造式」や「化学反応」ですが、RDKitを使えば…
💻 パソコンの中で分子の形を描くことができる!
📏分子量や水素結合の数なども自動で計算!
AI×創薬の研究にも使われているツール!
RDKitは 無料で誰でも使えるし、Google Colabでも動くので、高校生やPython初学者の方でも簡単にスタートできます✨
3. 分子を文字列で表すSMILES
SMILES(Simplified Molecular Input Line Entry System スマイルス)とは、化学構造式を文字列(コード)で表す方法のことです。
紙に書くような構造式を、アルファベットや記号だけの文字列で表現できるのが特徴で、SMILESは創薬研究、化学物質データベース、機械学習による物性予測などでも広く使用されています。
SMILESでの化合物の表現方法について、たとえば…
化合物 | 化学式 | SMILES表記 |
エタノール | C₂H₅OH | CCO |
ベンゼン | C₆H₆ | C1=CC=CC=C1 |
アセトン | CH₃COCH₃ | CC(=O)C |
📢 SMILESの書き方のルール:
・原子は元素記号で表す
→ 例:C(炭素), O(酸素), N(窒素), Cl(塩素)など
・水素原子(H)は省略される
・単結合は何も書かない
→ CC と書けば、C–C の単結合を意味します
・二重結合や三重結合は記号であらわす
→ C=O:二重結合、C#N:三重結合
・分岐はかっこ()でかく
→ CC(=O)O:C に =O と –O が分岐した構造(酢酸)
・環状構造は切断した鎖状構造にして、切断箇所を同じ数字でつなぐ
→ C1=CC=CC=C1:ベンゼン(1番と1番でつながる) など
では、実際PythonでRDKitのライブラリを使って、SMILES情報から構造式を描いてみましょう!
今回はGoogle Colabでのコードを紹介します!
始め方は、以下に書いてますので、ご参考にされてください!

4. SMILESから分子を描いてみよう!
!pip install rdkit-pypi # RDKitのライブラリをインストール from rdkit import Chem # 化合物の構造データを扱うモジュールを読み込み from rdkit.Chem import Draw # 分子構造を描画するモジュールを読み込み smiles = "CCO" # エタノール mol = Chem.MolFromSmiles(smiles) Draw.MolToImage(mol)
Pythonで構造式を書くことができました!!
複数の構造式を並べたい時は、以下のようなコードでOKです。
mols = [Chem.MolFromSmiles(s) for s in ["CCO", "C1=CC=CC=C1", "CC(=O)O"]] #エタノール, ベンゼン, 酢酸 Draw.MolsToGridImage(mols, molsPerRow=3)
エタノール、ベンゼン、酢酸3つ並べて構造式を書くことができました!
といっても、SMILESの表記を検索したり、書くのに慣れるのは一苦労。。。💦
ということで、化合物名さえわかれば、Pythonに、化合物名入力⇒SMILES⇒構造式が描ける方法を次に紹介します💡
5. 化合物名からSMILESを取得する(PubChem連携)
化合物の名前を入力するだけで、構造式を自動で描きます💡
PubChemという化学データベースを使って、SMILESを自動取得できます!
化合物名は英語入力します!
例:カフェイン(caffeine, 化学式:C₈H₁₀N₄O₂)の構造式を描く
!pip install pubchempy # pubchempyのインストール(最初の1回のみ) import pubchempy as pcp # ライブラリを使えるように読み込み(pcp 短い別名を付けた) name = "caffeine" compound = pcp.get_compounds(name, 'name') if compound: smiles = compound[0].isomeric_smiles print("SMILES:", smiles) # RDKitで構造を描画 mol = Chem.MolFromSmiles(smiles) img = Draw.MolToImage(mol) # 画像として変数に格納 display(img) # 明示的に表示 else: print("物質が見つかりませんでした。")
# 実行結果 # SMILES: CN1C=NC2=C1C(=O)N(C(=O)N2C)C
カフェインのSMILESと構造式を入手できました💡
✅ 「アスピリン(aspirin)」「ニコチン(nicotine)」「ビタミンC(vitamin C, ascorbic acid)」なども入力して試してみよう!
6. まとめ
・SMILESは、化学構造を文字列で表す方法です
・RDKitを使えば、Pythonのプログラミングで分子を描くことができます
・PubChemと連携すれば、化合物名から自動で構造式を生成することも可能です!
Pythonで化学構造を扱う技術は、大学や研究現場でも活用されています。
高校でも「総合的な探究の時間」や「理数探究」などで、プログラミングを使った化学探究にチャレンジすることができます。
情報Ⅰで学ぶ基礎が、化学や創薬の世界への扉にもつながるかもしれません。
興味があれば、ぜひこのテーマを自分の探究にしてみてください!
本サイトは、使える「情報Ⅰ」を目指し、情報Ⅰの内容を毎週月曜日に新しい記事を発信予定です。
また、プログラミングの使い方は毎月2回(第2、4木曜日)配信予定です。



コメント