RDKitのファーマコフォアの定義を眺める話
前回の記事で複数の共結晶構造に共通する相互作用をPLIPを使って探してみました。この情報をうまく使えばファーマコフォアが作れるはず・・・
ですがそもそもどうやってファーマコフォアを作っていけばわかりません。
ファーマコフォア?
日本薬学会 薬学用語解説の説明によると以下の通り
「ファーマコフォアとは、医薬品のターゲットとの相互作用に必要な特徴を持つ官能基群と、それらの相対的な立体配置も含めた(抽象的な)概念である・・・(略)・・・同じターゲットの同じ部位に結合する医薬品は活性発現に必須である共通の立体的・電子的特徴を持つ官能基群を持っており、これをファーマコフォアという。」
タンパク質の重要そうな残基と相互作用している、リガンド側の構造の(立体的・電子的)特徴を取り出し、
- 官能基の種類
- 相対的立体配置
をもとに抽象化(モデル化)すれば良いということみたいです。
なるほど!!!
しかし概念はわかりましたがどんな特徴を取り出せばよいかわからない・・・
RDKitを使った場合どのようになるのか調べてみました。参考にしたページは記事末尾に記載しています。*1 *2 *3 *4 *5 *6
RDKitにおけるファーマコフォアの特徴
RDKitでファーマコフォアを構成する特徴(特性基、フィーチャー)をみつけるには、
- 特性基の定義をあつめたフィーチャーファクトリーを作成
- それを用いて実際の分子から該当する特性基を探索
という手順をとるようです。どのような構造を特性基として認識するのでしょうか?
RDKitにおける特性基(化学的特徴/ Chemical Featrues)はSMARTSに基づいた言語で定義づけられています。Feature Definition(FDef)ファイルフォーマットという形式のファイルに、特性基の定義づけに必要な情報が記載されています。
基本となる「BaseFeatures.fdef」というファイルが用意されているのでこちらを利用したいと思います。
フィーチャーファクトリーの作成
ファーマコフォアの認識にFDefファイルの情報を利用するには、こちらを読み込んでフィーチャーファクトリーを作成すれば良いということです。
import os from rdkit import RDConfig from rdkit.Chem import AllChem from rdkit import Chem fdef = AllChem.BuildFeatureFactory(os.path.join(RDConfig.RDDataDir,'BaseFeatures.fdef')) print(fdef.GetNumFeatureDefs()) # 27
用意されているフィーチャーの定義は27個あるようです。
フィーチャーファミリー
フィーチャーをより一般化した分類としてフィーチャーファミリーが用意されており、ファーマコフォマ検索はファミリーを用いて行われます。
print(len(fdef.GetFeatureFamilies())) print(fdef.GetFeatureFamilies()) # 8 # ('Donor', 'Acceptor', 'NegIonizable', 'PosIonizable', 'ZnBinder', 'Aromatic', 'Hydrophobe', 'LumpedHydrophobe')
フィーチャーファミリーは全部で8個あり、水素結合ドナー(Donor)やアクセプター(Acceptor)といった名前から構造が推測できるものから、LumpedHydrophobeといった具体的な例がよくわからない(私だけ?)ものまであります。
フィーチャータイプ
より詳細な記述がされたフィーチャータイプを確認したいと思います。
fdef.GetFeatureDefs()) とすると、各フィーチャーの名前をKey、SMARTSによる定義をvalueとする辞書型で情報を書き出すことができます。
とりあえず名前だけ確認します。
print(fdef.GetFeatureDefs().keys()) # dict_keys(['Donor.SingleAtomDonor', 'Acceptor.SingleAtomAcceptor', 'NegIonizable.AcidicGroup', 'PosIonizable.BasicGroup', 'PosIonizable.PosN', 'PosIonizable.Imidazole', 'PosIonizable.Guanidine', 'ZnBinder.ZnBinder1', 'ZnBinder.ZnBinder2', 'ZnBinder.ZnBinder3', 'ZnBinder.ZnBinder4', 'ZnBinder.ZnBinder5', 'ZnBinder.ZnBinder6', 'Aromatic.Arom4', 'Aromatic.Arom5', 'Aromatic.Arom6', 'Aromatic.Arom7', 'Aromatic.Arom8', 'Hydrophobe.ThreeWayAttach', 'Hydrophobe.ChainTwoWayAttach', 'LumpedHydrophobe.Nitro2', 'LumpedHydrophobe.RH6_6', 'LumpedHydrophobe.RH5_5', 'LumpedHydrophobe.RH4_4', 'LumpedHydrophobe.RH3_3', 'LumpedHydrophobe.tButyl', 'LumpedHydrophobe.iPropyl'])
各フィーチャーは「ファミリー名.xxxx」という形式のようなのでファミリー名を紐づけてDataFrame化してみます。
import pandas as pd family_df = pd.DataFrame(columns=['family', 'definition']) family_names = fdef.GetFeatureFamilies() for k,v in fdef.GetFeatureDefs().items(): for fam in family_names: if fam in k: family_df.loc[k] = [fam, v] family_df.head()
SMARTSの定義の文字列がおかしな感じになっています。$などが文字としてそのまま出力されていないみたいです。
各ファミリーに含まれるフィーチャーの数を確認します。
family_df['family'].value_counts() # LumpedHydrophobe 7 # ZnBinder 6 # Aromatic 5 # PosIonizable 4 # Hydrophobe 2 # NegIonizable 1 # Acceptor 1 # Donor 1
名前だけではわかりづらい「LumpedHydrophobe」や「ZnBinder」の種類が多くなっています。まとまった定義づけが難しいのでしょうか?
SMARTSの解読に挑戦
以前の記事でSMARTS記法について、ちょっと勉強しました。折角なのでSMARTSによる定義を理解できるか、書き下してみたいと思います。
書き下した後でSMARTSviewerという便利すぎるサイトを見つけてしまったので、素人の適当解釈は不要!という方はすっ飛ばして下までスクロールしてください。
SMARTSの説明補足
SMARTSを読み始める前に、前回の記事の補足を少々・・・
- Recursive SMARTS
フィーチャーの定義ではRecursive SMARTSの形式が多く用いられていました。Daylight社のSMARTS記法の説明ページによると、「$(SMARTS)」という表記で注目している原子(atom)の置かれている環境を示す、とのことです。
- 「R<数字>」と「r<数字>」の違い
以前の記事では、無理やりSMARTSの説明を日本語化しようとした結果、逆にわかりづらくなっていたので、Rとrについて英語の説明をそのまま貼っておきます。
Symbol | Symbol name | Atomic property requirements | Default |
---|---|---|---|
R |
ring membership | in |
any ring atom |
r |
ring size | in smallest SSSR ring of size |
any ring atom |
「幾つのSSSR環に含まれているか?」と、「どんなサイズの環に含まれているか?」ということになりそうです。
ドナー
family | feature | 定義 SMARTS | 説明 | |
---|---|---|---|---|
Donor | Donor.SingleAtomDonor | [$([N&!H0&v3, | Hの数が0ではない、結合次数の総数3の脂肪族N | または |
N&!H0&+1&v4, | Hの数が0ではない、電荷+1で結合次数の総数4の脂肪族N | または | ||
n&H1&+0, | Hの数が1で、電荷0の芳香族N | または | ||
$([$([Nv3](-C)(-C)-C)]), | 脂肪族炭素が3つ結合した、結合次数の総数3の脂肪族N | または | ||
$([$(n[n;H1]), | 芳香族Nと、Hの数が1の芳香族Nが隣接する並び | または | ||
$(nc[n;H1])])]), | 芳香族N、芳香族Cと、Hの数が1の芳香族Nが隣接する並び | あるいは | ||
$([O,S;H1;+0])] | Hの数が1で、電荷0の脂肪族OまたはS |
アクセプター
family | feature | 定義 SMARTS | 説明 | |
---|---|---|---|---|
Acceptor | Acceptor.SingleAtomAcceptor | [$([O;H1;v2]), | Hの数が1で、結合次数の総数が2の脂肪族O | あるいは |
$([O;H0;v2;!$(O=N-*), | Hの数が0で、結合次数の総数が2の脂肪族Oのうち、 O=N-に連結するものではないもの |
または | ||
$([O;-;!$(*-N=O)]), | 負電荷(-1)を帯びた脂肪族Oのうち、 O=N-に連結するものではないもの |
または | ||
$([o;+0])]), | 電荷0の芳香族O | あるいは | ||
$([n;+0;!X3;!$([n;H1](cc)cc), | 電荷0の芳香族Nで、結合の総数3ではなく、また、 芳香族炭素Cが二つ直列した結合2本とHを1つもつ芳香族Nでもないもの |
または | ||
$([$[N;H0]#[C&v4])]), | Hの数が0の脂肪族Nと、結合次数の総数4の脂肪族Cが、 3重結合で結合したもの(シアノ基) |
または | ||
$([N&v3;H0;$(Nc)])]), | 結合次数の総数3で結合するHの数が0の脂肪族Nと、かつ、 芳香族Cに結合する脂肪族N |
あるいは | ||
$([F;$(F-[#6]);!$(FC[F,Cl,Br,I])])] | 炭素と結合するFで、 ハロゲン原子の結合した脂肪族炭素に結合するFではないもの |
イオン化可能なグループ
family | feature | 定義 SMARTS | 説明 | |
---|---|---|---|---|
NegIonizable | NegIonizable.AcidicGroup | [C,S](=[O,S,P])-[O;H1,H0&-1] | 「O、SまたはP」と二重結合する「CまたはS」に結合した、 OH、あるいはO-(H、0個で負電荷) |
|
PosIonizable | PosIonizable.BasicGroup | [$([$([N;H2&+0][$([C;!$(C=*)])])]), | 他の脂肪族Cと二重結合しているのではない脂肪族C、 およびH2つと結合する電荷0の脂肪族N |
または |
$([$([N;H1&+0]([$([C;!$(C=*)])])[$([C;!$(C=*)])])]), | 他の脂肪族Cと二重結合しているのではない脂肪族C2つ、 およびH1つと結合する、電荷0の脂肪族N |
または | ||
$([$([N;H0&+0]([$([C;!$(C=*)])])([$([C;!$(C=*)])])[$([C;!$(C=*)])])]) | 他の脂肪族Cと二重結合しているのではない脂肪族C3つと 結合する、電荷0の脂肪族N |
かつ | ||
;!$(N[a])] | 上記3つのNは芳香族原子と結合していないこと | |||
PosIonizable.PosN | [#7;+;!$([N+]-[O-])] | 「O-」に結合する「N+」ではない、電荷+1のN | ||
PosIonizable.Imidazole | c1ncnc1 | イミダゾール骨格 | ||
PosIonizable.Guanidine | NC(=N)N | グアニジン骨格 |
Zinc Binder
family | feature | 定義 SMARTS | 説明 |
---|---|---|---|
ZnBinder | ZnBinder.ZnBinder1 | [S;D1]-[#6] | Cと結合する1級S |
ZnBinder.ZnBinder2 | [#6]-C(=O)-C-[S;D1] | C-カルボニル-Cに結合する1級S | |
ZnBinder.ZnBinder3 | [#6]-C(=O)-C-C-[S;D1] | C-カルボニル-C-Cに結合する1級S | |
ZnBinder.ZnBinder4 | [#6]-C(=O)-N-[O;D1] | C-カルボニル-Nに結合する1級O | |
ZnBinder.ZnBinder5 | [#6]-C(=O)-[O;D1] | C-カルボニルに結合する1級O | |
ZnBinder.ZnBinder6 | [#6]-P(=O)(-O)-[C,O,N]-[C,H] | C-PO2に結合する「C or O or N」に「C or H」が結合 |
芳香族
family | feature | 定義 SMARTS | 説明(原子環境) | 結合の種類 |
---|---|---|---|---|
Aromatic | Aromatic.Arom4 | [$([a;r4,!R1&r3])]1: | 4員環(SSSR size4)の芳香族性原子、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
芳香属性結合(:) |
[$([a;r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r4,!R1&r3])]:1 | 同上 | 同上 | ||
1 | 4員環を閉じる | |||
Aromatic.Arom5 | [$([a;r5,!R1&r4,!R1&r3])]1: | 5員環(SSSR size5)の芳香族性原子、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
芳香属性結合(:) | |
[$([a;r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
1 | 5員環を閉じる | |||
Aromatic.Arom6 | [$([a;r6,!R1&r5,!R1&r4,!R1&r3])]1: | 6員環(SSSR size6)の芳香族性原子、または 5員環(size5)で、含まれるSSSR ringが1つではないもの、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
芳香属性結合(:) | |
[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
1 | 6員環を閉じる | |||
Aromatic.Arom7 | [$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]1: | 7員環(SSSR size7)の芳香族性原子、または 6員環(size6)で、含まれるSSSR ringが1つではないもの、または 5員環(size5)で、含まれるSSSR ringが1つではないもの、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
芳香属性結合(:) | |
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
1 | 7員環を閉じる | |||
Aromatic.Arom8 | [$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]1: | 8員環(SSSR size8)の芳香族性原子、または 7員環(size7)で、含まれるSSSR ringが1つではないもの、または 6員環(size6)で、含まれるSSSR ringが1つではないもの、または 5員環(size5)で、含まれるSSSR ringが1つではないもの、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
芳香属性結合(:) | |
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]: | 同上 | 同上 | ||
1 | 8員環を閉じる |
疎水性基
family | feature | 定義 SMARTS | 説明 |
---|---|---|---|
Hydrophobe | Hydrophobe.ThreeWayAttach | [D3,D4; $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])] |
3級、または4級の原子で、かつ 電荷0のCのうち 「N,O,F」のいずれかと結合したCではないもの |
Hydrophobe.ChainTwoWayAttach | [R0;D2;$([#6;+0; !$([#6;$([#6]~[#7,#8,#9])])])] |
環に含まれていない、2級の原子で 電荷0のCのうち 「N,O,F」のいずれかと結合したCではないもの |
疎水性基の塊?
family | feature | 定義 SMARTS | 説明 | 結合の種類 | |
---|---|---|---|---|---|
LumpedHydrophobe | LumpedHydrophobe.Nitro2 | [N;D3;+](=O)[O-] | 3級で電荷+1のNであり、Oと二重結合、電荷-1のOと単結合するもの | (ニトロ基) | |
LumpedHydrophobe.RH6_6 | [$([r6,!R1&r5,!R1&r4,!R1&r3]); | 6員環(SSSR size6)に含まれる、または 5員環(size5)で、含まれるSSSR ringが1つではないもの、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
かつ | ||
$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
環に含まれる原子で、かつ 「芳香属性C、芳香属性S、結合次数の総数2でHの数0の脂肪族S、Br、I、または 電荷0のCのうち「N,O,F」のいずれかと結合したCではないもの」 |
単結合or芳香属性結合 | |||
[$([r6,!R1&r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r6,!R1&r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r6,!R1&r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r6,!R1&r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r6,!R1&r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
同上 | 6員環を閉じる | |||
LumpedHydrophobe.RH5_5 | [$([r5,!R1&r4,!R1&r3]); | 5員環(SSSR size5)に含まれる、または 4員環(size4)で、含まれるSSSR ringが1つではないもの、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
かつ | ||
$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
環に含まれる原子で、かつ 「芳香属性C、芳香属性S、結合次数の総数2でHの数0の脂肪族S、Br、I、または 電荷0のCのうち「N,O,F」のいずれかと結合したCではないもの」 |
単結合 or 芳香属性結合 | |||
[$([r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r5,!R1&r4,!R1&r3]); $([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 5員環を閉じる | |||
LumpedHydrophobe.RH4_4 | [$([r4,!R1&r3]); | 4員環(SSSR size4)に含まれる、または 3員環(size3)で、含まれるSSSR ringが1つではないもの |
かつ | ||
$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
環に含まれる原子で、かつ 「芳香属性C、芳香属性S、結合次数の総数2でHの数0の脂肪族S、Br、I、または 電荷0のCのうち「N,O,F」のいずれかと結合したCではないもの」 |
単結合 or 芳香属性結合 | |||
[$([r4,!R1&r3]);$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r4,!R1&r3]);$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r4,!R1&r3]);$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
同上 | 4員環を閉じる | |||
LumpedHydrophobe.RH3_3 | [$([r3]); | 3員環(SSSR size3)に含まれるもの | かつ | ||
$([R; $([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
環に含まれる原子で、かつ 「芳香属性C、芳香属性S、結合次数の総数2でHの数0の脂肪族S、Br、I、または 電荷0のCのうち「N,O,F」のいずれかと結合したCではないもの」 |
単結合or芳香属性結合 | |||
[$([r3]);$([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])] |
同上 | 同上 | |||
[$([r3]);$([R;$([c,s,S&H0&v2,Br,I, $([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 |
同上 | 3員環を閉じる | |||
LumpedHydrophobe.tButyl | [C;!R](-[CH3])(-[CH3])-[CH3] | 環に含まれていないCで、メチル基3つが結合 | |||
LumpedHydrophobe.iPropyl | [CH;!R](-[CH3])-[CH3] | 環に含まれていないCで、メチル基2つとH1つが結合 |
SMARTSviewer
さて、つらつらと意味不明な日本語を垂れ流してしまいましたが、上に述べたようにSMARTSviewerという便利すぎるサイトを見つけてしまいました。
こちらは ハンブルク大学 バイオインフォマティクスセンター(Universität Hamburg ZBH-Center for Bioinformatics)が開発・公開しているソフトウェアで SMARTSをとてもわかりやすく可視化してくれます。
まずは見た目を・・・
使い方はとても簡単で、「Try your own SMARTS pattern」と書かれた部分にSMARTSを貼り付け、「Go!」をクリックするだけです。「Donwload」をクリックすればpng形式で綺麗な図が手に入ります。*7
それではフィチャーの中で気になったZnBinderで試してみます。
フィーチャー名「ZnBinder.ZnBinder6」 SMARTS「[#6]-P(=O)(-O)-[C,O,N]-[C,H]」の場合・・・
線形表記と比べて分岐構造の把握がしやすく、またカラフルなので原子の違いもわかりやすいです。
Optionで描画方法をデフォルト「Coplete Visualization」から「Element Symbols」にすると、より2次元構造式に近い見た目となります。
とてもいい感じです。インストール版もありアカデミックフリー、ノンアカデミックはライセンス費用が必要みたいです。SMARTSviewerの開発者はResearch Group for Computational Molecular Design (AMD、Prof. Matthias Rarey)グループで、AMD software serverには他にもSMARTSeditorなど面白そうなソフトウェアが多数ありました。*8
記事の最後にSMARTsviwerに投げ込みやすい形式でRDKitのフィーチャーを出力しておきます。文字書き下しのわかりづらさと図の見易さの違いを比較していただければと思います。
まとめ
以上、今回はファーマコフォア作成に向けた手始めとしてRDKitにおける特徴の定義を眺めてみました。・・・というよりSMARTSを読んだだけで力尽きました・・・
FDefファイルの中身(rdkit/Data/BaseFeatures.fdef)をテキストエディタで開いてみたり、RDKitのDocumentation Feature Definition File Formatを確認した方がわかりやすかったかもしれません。
SMARTSviewerを見つけたのが最大の収穫!!
色々と間違いがあると思いますのでご指摘いただければ幸いです。
SMARTS出力
テーブルでは分けたり、エスケープ記号を入れたりしてしまっているので、そのままのSMARTS出力も載せておきます。
for k, v in fdef.GetFeatureDefs().items(): print(k,':',v)
Donor.SingleAtomDonor : [$([N&!H0&v3,N&!H0&+1&v4,n&H1&+0,$([$([Nv3](-C)(-C)-C)]),$([$(n[n;H1]),$(nc[n;H1])])]),$([O,S;H1;+0])] Acceptor.SingleAtomAcceptor : [$([O;H1;v2]),$([O;H0;v2;!$(O=N-*),$([O;-;!$(*-N=O)]),$([o;+0])]),$([n;+0;!X3;!$([n;H1](cc)cc),$([$([N;H0]#[C&v4])]),$([N&v3;H0;$(Nc)])]),$([F;$(F-[#6]);!$(FC[F,Cl,Br,I])])] NegIonizable.AcidicGroup : [C,S](=[O,S,P])-[O;H1,H0&-1] PosIonizable.BasicGroup : [$([$([N;H2&+0][$([C;!$(C=*)])])]),$([$([N;H1&+0]([$([C;!$(C=*)])])[$([C;!$(C=*)])])]),$([$([N;H0&+0]([$([C;!$(C=*)])])([$([C;!$(C=*)])])[$([C;!$(C=*)])])]);!$(N[a])] PosIonizable.PosN : [#7;+;!$([N+]-[O-])] PosIonizable.Imidazole : c1ncnc1 PosIonizable.Guanidine : NC(=N)N ZnBinder.ZnBinder1 : [S;D1]-[#6] ZnBinder.ZnBinder2 : [#6]-C(=O)-C-[S;D1] ZnBinder.ZnBinder3 : [#6]-C(=O)-C-C-[S;D1] ZnBinder.ZnBinder4 : [#6]-C(=O)-N-[O;D1] ZnBinder.ZnBinder5 : [#6]-C(=O)-[O;D1] ZnBinder.ZnBinder6 : [#6]-P(=O)(-O)-[C,O,N]-[C,H] Aromatic.Arom4 : [$([a;r4,!R1&r3])]1:[$([a;r4,!R1&r3])]:[$([a;r4,!R1&r3])]:[$([a;r4,!R1&r3])]:1 Aromatic.Arom5 : [$([a;r5,!R1&r4,!R1&r3])]1:[$([a;r5,!R1&r4,!R1&r3])]:[$([a;r5,!R1&r4,!R1&r3])]:[$([a;r5,!R1&r4,!R1&r3])]:[$([a;r5,!R1&r4,!R1&r3])]:1 Aromatic.Arom6 : [$([a;r6,!R1&r5,!R1&r4,!R1&r3])]1:[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r6,!R1&r5,!R1&r4,!R1&r3])]:1 Aromatic.Arom7 : [$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]1:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:1 Aromatic.Arom8 : [$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]1:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:[$([a;r8,!R1&r7,!R1&r6,!R1&r5,!R1&r4,!R1&r3])]:1 Hydrophobe.ThreeWayAttach : [D3,D4;$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])] Hydrophobe.ChainTwoWayAttach : [R0;D2;$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])] LumpedHydrophobe.Nitro2 : [N;D3;+](=O)[O-] LumpedHydrophobe.RH6_6 : [$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1[$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r6,!R1&r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 LumpedHydrophobe.RH5_5 : [$([r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1[$([r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r5,!R1&r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 LumpedHydrophobe.RH4_4 : [$([r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1[$([r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r4,!R1&r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 LumpedHydrophobe.RH3_3 : [$([r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1[$([r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])][$([r3]);$([R;$([c,s,S&H0&v2,Br,I,$([#6;+0;!$([#6;$([#6]~[#7,#8,#9])])])])])]1 LumpedHydrophobe.tButyl : [C;!R](-[CH3])(-[CH3])-[CH3] LumpedHydrophobe.iPropyl : [CH;!R](-[CH3])-[CH3]
*2:RDKit Documentation
Chemical Featrues and Pharmacophore
Feature Definition File Format
*3:RDKit Python API rdkit.Chem.rdMolChemicalFeatures module
*4: RDKitブログ記事Using Feature Maps
*7:* Web版のHelepページに図は自由に利用してOKと書いてありました。
citatition:
- SMARTS viewer https://smartsview.zbh.uni-hamburg.de
- Schomburg, H.-C. Ehrlich, K. Stierand, M.Rarey; From Structure Diagrams to Visual Chemical Patterns, J. Chem. Inf. Model., 2010, 50 (9), pp 1529-1535
*8: Prof. RareyはBioSolveITという会社のファウンダーでもあるそうです。