RDkitのGetSSSRについて

smallest set of simple rings(SSSR)

GetSSR (Get Smallest Set of Smallest Rings) は、分子に対して最小の単純な環の集合を取得する関数です。RDKit の rdkit.Chem.rdmolops モジュールに含まれています。

引数:

  • mol: 使用する分子。
  • includeDativeBonds: 結合の探索にデイティブ結合(dative bonds)を含めるかどうか。

戻り値: 見つかった環を原子IDで表現したシーケンスのシーケンス。この長さは、単一のフラグメント分子に対して NumBonds-NumAtoms+1 と等しくなります。

この関数は、分子構造内の環構造を識別し、それらを原子IDを用いて表現します。環構造の識別は、化学情報学や薬物設計などの分野で重要なタスクです。

デイティブ結合(dative bonds)とは、原子から別の原子への電子対の共有を表す結合のことです。デイティブ結合では、電子対を提供する原子(供与体)と、それを受け取る原子(受容体)があります。デイティブ結合は、広義の共有結合の一種ですが、電子対が一方の原子から完全に寄与される点が異なります。

GetSSRは、環状ペプチドのような大きな環も見つけることができます。ただし、環のサイズが非常に大きい場合や、構造が複雑である場合は、計算時間が長くなる可能性があります。

GetSSRで得られた環についての情報を確認するには、以下のような手順を踏みます:

  1. GetSSR関数を実行して、環の情報を取得します。
  2. 戻り値は、原子IDで表現された環のシーケンスのシーケンスです。これをループ処理して、各環の情報を取得します。
  3. 各環の原子IDを使用して、分子オブジェクトから原子や結合の情報を取得できます。
from rdkit import Chem
from rdkit.Chem import rdmolops

mol = Chem.MolFromSmiles('C1CCC2CCCCC2C1')  # 分子をSMILESで読み込む
ssr = rdmolops.GetSSSR(mol)  # GetSSR関数で環の情報を取得

for ring in ssr:  # 環のシーケンスをループ処理
    print("Ring atoms:")
    for atom_id in ring:
        atom = mol.GetAtomWithIdx(atom_id)
        print(f"Atom ID: {atom_id}, Element: {atom.GetSymbol()}")
    print()

このコードは、各環に含まれる原子のIDと元素記号を表示します。

from rdkit import Chem
from rdkit.Chem import rdmolops
from rdkit.Chem import Draw

mol = Chem.MolFromSmiles('C1CCC2CCCCC2C1')  # 分子をSMILESで読み込む
ssr = rdmolops.GetSSSR(mol)  # GetSSR関数で環の情報を取得

# 環の原子IDをフラットなリストに格納
ring_atoms = [atom_id for ring in ssr for atom_id in ring]

# 分子構造を描画し、環構造をハイライト
img = Draw.MolToImage(mol, highlightAtoms=ring_atoms)
img.save("molecule_with_highlighted_rings.png")

コメント