magattacaのブログ

日付以外誤報

Chemical Transformations 〜RDKit 直訳 Day10〜

(12/30追記)試訳をまとめたテストサイトを作成しました。よろしければご参照ください。

こちらはRDKit直訳 Advent Calendar 2018 - Adventar 10日目の記事です。基本的な進め方は1日目の記事をご覧ください。

本日の訳出に困った用語
core: 骨格
sidechain: 側鎖
scaffold : 骨格
Murcko Decomposition : Murcko型分解
Murcko-type Decomposition : Murcko型分解
framework: 骨格

以下、訳

化学変換(Chemical Transformations)

[Link] https://www.rdkit.org/docs/GettingStartedInPython.html#chemical-transformations

RDKitには分子に修正を加える多数の関数があります。これらの変換用の関数は、分子に単純な修正を加えるのに簡単な方法を提供することを目的として作られていることに注意してください。より複雑な変換を行うにはChemical Reactions機能を使用してください。

[link] Chemical Reactions

部分構造ベースの変換(Substructure-based transformations)

[Link] https://www.rdkit.org/docs/GettingStartedInPython.html#substructure-based-transformations

RDKitの部分構造一致検索機能には分子の変換を素早く行うための様々な関数があります。利用可能な変換の例を挙げていくと、部分構造の削除:

>>> m = Chem.MolFromSmiles('CC(=O)O')
>>> patt = Chem.MolFromSmarts('C(=O)[OH]')
>>> rm = AllChem.DeleteSubstructs(m,patt)
>>> Chem.MolToSmiles(rm)
'C'

部分構造の置換:

>>> repl = Chem.MolFromSmiles('OC')
>>> patt = Chem.MolFromSmarts('[$(NC(=O))]')
>>> m = Chem.MolFromSmiles('CC(=O)N')
>>> rms = AllChem.ReplaceSubstructs(m,patt,repl)
>>> rms
(<rdkit.Chem.rdchem.Mol object at 0x...>,)
>>> Chem.MolToSmiles(rms[0])
'COC(C)=O'

また、側鎖を取り除くといった簡単なSARテーブルの変換や:

>>> m1 = Chem.MolFromSmiles('BrCCc1cncnc1C(=O)O')
>>> core = Chem.MolFromSmiles('c1cncnc1')
>>> tmp = Chem.ReplaceSidechains(m1,core)
>>> Chem.MolToSmiles(tmp)
'[1*]c1cncnc1[2*]'

骨格の削除も可能です:

>>> tmp = Chem.ReplaceCore(m1,core)
>>> Chem.MolToSmiles(tmp)
'[1*]CCBr.[2*]C(=O)O'

デフォルトでは側鎖は見つかった順番にラベルがつけられます。側鎖が結合した、骨格の原子の番号に従ってラベルをつけることも可能です。

>>> m1 = Chem.MolFromSmiles('c1c(CCO)ncnc1C(=O)O')
>>> tmp=Chem.ReplaceCore(m1,core,labelByIndex=True)
>>> Chem.MolToSmiles(tmp)
'[1*]CCO.[5*]C(=O)O'

rdkit.Chem.rdmolops.ReplaceCore() は一つの分子の側鎖を返します。これはrdkit.Chem.rdmolops.GetMolFrags() を使って別々の分子に分割することができます。

[link] rdkit.Chem.rdmolops.ReplaceCore()   [link] rdkit.Chem.rdmolops.GetMolFrags()

>>> rs = Chem.GetMolFrags(tmp,asMols=True)
>>> len(rs)
2
>>> Chem.MolToSmiles(rs[0])
'[1*]CCO'
>>> Chem.MolToSmiles(rs[1])
'[5*]C(=O)O'

Murcko型分解(Murcko Decomposition)

[Link] https://www.rdkit.org/docs/GettingStartedInPython.html#murcko-decomposition

RDKitでは標準的なMrucko型分解[脚注7]により分子を骨格に分割できます:

[脚注7] Bemis, G. W.; Murcko, M. A. “The Properties of Known Drugs. 1. Molecular Frameworks.” J. Med. Chem. 39:2887-93 (1996).

>>> from rdkit.Chem.Scaffolds import MurckoScaffold
>>> cdk2mols = Chem.SDMolSupplier('data/cdk2.sdf')
>>> m1 = cdk2mols[0]
>>> core = MurckoScaffold.GetScaffoldForMol(m1)
>>> Chem.MolToSmiles(core)
'c1ncc2nc[nH]c2n1'

また、一般的な骨格にも分解できます:

>>> fw = MurckoScaffold.MakeScaffoldGeneric(core)
>>> Chem.MolToSmiles(fw)
'C1CCC2CCCC2C1'

12/10/2018

このブログ記事のライセンス

以上はRDKit Documentationの試訳です。
ライセンスはCC BY-SA 4.0で、Greg Landrum氏の功績の元に作成しています。
Creative Commons — Attribution-ShareAlike 4.0 International — CC BY-SA 4.0