美文网首页代谢组学
Rdkit学习-No.4-化合物库的设计-基于BRICS

Rdkit学习-No.4-化合物库的设计-基于BRICS

作者: ZeroDesigner | 来源:发表于2019-05-07 17:43 被阅读46次

    BRICS 算法的实现

    环境:

    python35
    IPython

    解释:

    Rdkit提供的一种基于片段分子的键合成新化合物的方法。
    BRICS provides another method for fragmenting molecules along synthetically accessible bonds

    实现:

    首先BRICS会从分子中找到自身独特片段结构,其片段上的赝原子会会标记,显示适合某种反应。
    BRICS可以产生单个分子的独特片段,也支持产生一系列分子集合的独特片段。
    然后可以利用BRICS模块产生一系列的新原子。

    代码实现:

    ls
    show:test_500.smi
    #当下目录文件test_500.smi包含500个小分子的smi格式
    
    import rdkit
    from rdkit import Chem
    from rdkit.Chem import BRICS
    import random
    #导入rdkit,BRICS,random
    help(BRICS)
    #查看BRICS帮助文档
    smi=Chem.SmilesMolSupplier('test_500.smi')
    #读取smi文件
    
    len(smi)
    show: 499
    #列表第一位是0,刚好500个
    m1=smi[1]
    sorted(BRICS.BRICSDecompose(m1))
    show:['[12*]S(=O)(=O)c1ccc(N)cc1', '[14*]c1cncc(Cl)n1', '[5*]N[5*]']
    #将smi中的第2个分子文件赋值给m1,并且使用BRICS找到分子的独特片段
    allfrag=set()
    #创建一个集合,命名为allfrag
    for i in smi:
        single=BRICS.BRICSDecompose(i)
        allfrag.update(single)
    #在smi中的每一个分子,都将其分解,并且储存在allfrag中,由于集合为无序不重复,所以allfrag中没有重复的片段
    
    len(allfrag)
    show: 354
    #查看集合中元素个数
     sorted(allfrag)[:5]
    show:
    ['CN1CCN(C2=Nc3ccccc3Oc3ccc(Cl)cc32)CC1',
     'CN1C[C@@H]2c3ccccc3Oc3ccc(Cl)cc3[C@H]2C1',
     'COC1=C(OC)C(=O)C(CCCCCCCCCCO)=C(C)C1=O',
     'C[C@]12CC[C@H]3[C@@H](CC=C4C[C@@H](O)CC[C@@]43C)[C@@H]1CCC2=O',
     'C[C@]12CC[C@H]3[C@@H](CCC4=C(O)C(=O)CC[C@@]43C)[C@@H]1CCC2=O']
    #对集合allfrag进行转化,输出前5
    
    random.seed(100)
    #生成随机数种子
    fragms = [Chem.MolFromSmiles(x) for x in sorted(allfrag)]
    ms = BRICS.BRICSBuild(fragms)
    #ms为一个BRICS合成的object
    ms
    show:<generator object BRICSBuild at 0x...>
    
    new = [next(ms) for x in range(10)]
    #产生10个分子
    
    for i in new:
        new.UpdatePropertyCache(strict=False)
    #纠正不正确的化学键
    
    
    Chem.MolToSmiles(new[1],True)
    show: 'C=C[C@]1(C)C[C@@H](OCN2CNC3C(=O)NC(N)NC32)[C@]2(C)[C@H](C)CC[C@]3(CCC(=O)[C@H]32)[C@@H](C)[C@@H]1O'
    
    #查看生成的分子
    

    结果:

    生成了一个包含10个分子的化合物库

    相关文章

      网友评论

        本文标题:Rdkit学习-No.4-化合物库的设计-基于BRICS

        本文链接:https://www.haomeiwen.com/subject/mjlwnqtx.html