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で得られた環についての情報を確認するには、以下のような手順を踏みます:
- GetSSR関数を実行して、環の情報を取得します。
- 戻り値は、原子IDで表現された環のシーケンスのシーケンスです。これをループ処理して、各環の情報を取得します。
- 各環の原子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")
コメント