RDKit: Structural Alertsの検出

By | 2015年4月16日


今回は、RDKitのSmartsFilterを使ってStructural Alertsの検出を行ってみます。
まずは、以下のモジュールを読み込みます。

> python
>>> from rdkit import Chem
>>> from rdkit.VLib.Supply import SupplyNode
>>> from rdkit.VLib.NodeLib.SmartsMolFilter import SmartsFilter

分子の入力

ここでは、以下の3つの分子を読み込んでいます。

>>> mols = [mol for mol in Chem.SDMolSupplier('input.sdf') if mol is not None]
>>> suppl = SupplyNode(contents=mols)

comp

Structural Alertsの検出

例として、strAlertsリストに2つのStructural AlertsをSMARTSで格納しています。
SMARTSは、以下の文献のものを利用しました。

[J Chem Inf Comput Sci,1999,39,897]

>>> strAlerts = ['C(=O)OC=O','cN=[N+]=[N-]']
>>> filt = SmartsFilter(patterns=strAlerts)
>>> filt.AddParent(suppl)
>>> ms = [m for m in filt]
>>> smis = [Chem.MolToSmiles(m) for m in ms]
>>> print smis
['CC=CC(=O)OC(=O)C=CC', '[N-]=[N+]=Nc1ccncc1']

compAとcompBがStructural Alertsをもつ構造として検出されました。

逆に、Structural Alertsを持たない構造の検出もできます。

>>> filt.SetNegate(1)
>>> ms = [m for m in filt]
>>> smis = [Chem.MolToSmiles(m) for m in ms]
>>> print smis
['O=c1ccc2ccccc2o1']

compCがStructural Alertsを持たない構造として検出されました。


利用したソフトウェア:
RDKit_2014_09_2

APIの詳細:
SmartsFilter