精华内容
下载资源
问答
  • 计算分子描述符 R3m 的函数。 该函数计算分子矩阵 (M)、几何矩阵 (G)、分子影响矩阵 (H) 和影响距离矩阵 (R)。 这是通过调用以下子函数来完成的:ImportSDF、MolecMatrix、EuclidDistance、MolecInfluenceMatrix ...
  • 分子描述符

    千次阅读 2021-05-11 11:59:38
    什么是分子描述符? 所谓分子描述符,是指分子在某一方面性质的度量,既可以是分子的物理化学性质,也可以是根据分子结构通过各种算法推导出来的数值指标 一般选择合适分子描述符的要求 (1)具有结构解释性;(2)...

    写的非常通俗易懂,good

    什么是分子描述符?

    所谓分子描述符,是指分子在某一方面性质的度量,既可以是分子的物理化学性质,也可以是根据分子结构通过各种算法推导出来的数值指标

    一般选择合适分子描述符的要求

    (1)具有结构解释性;(2)与至少一种性质具有良好的相关性;(3)具有区分异构体的优势;(4)能够应用于局部结构;(5)独立性好;(6)简洁;(7)不是基于实验性质;(8)与其他描述符不相关;(9)可以有效构建;(10)使用熟悉的结构概念,(11)具有正确的大小依赖性;( 12)随结构的改变而变化。
    在这里插入图片描述

    分子描述符计算工具

    当前已有许多用于计算分子描述符的商业和免费提供的软件。其中一些是专门为分子描述符的计算而开发的(如:BlueDesc、CDK Descriptor 、DRAGON、MODEL等),也有一些QSAR软件具有计算分子描述符的功能(如: CODESSA Pro, Discovery Studio, Sybyl, MOE),此外,还有一些开源库,例如JOELib、Chemistry Development Kit (CDK)也提供了计算分子描述符的功能。

    分子描述符的计算可以通过Dragon、PowerMV等专门的描述符计算软件实现,也可使用Sybyl、Cerius2等分子模拟软件包中有关描述符计算的模块。

    分子描述符计算软件比较多,这里不一一赘述,简单列举一下:

    Dragon、MoDEL、MolGen、Cerius2、Sarchitect、PreADMET、ADRIANA.Code、ADMET Predictor、MOE、Joelib、ADAPT、SYBYL、PowerMV、CODESSA、Pipeline Pilot、SARNavigator等等

    化合物的极性表面积(PSA)是分子表面极性部分的面积值的总和。极性部分通常在诸如氧或氮的杂元素周围
    范德华表面积
    官能团描述符 FGCD
    将键型列平方或三次方,增强反应诱导能力(反应性)的表达
    价电子指原子核外电子中对参与化学反应有重要意义的电子。

    化合价是原子间相互化合时:
    无机物化合——原子得失电子数
    有机物——共用电子对偏移的数目

    反应

    碰撞+静电吸引+自由基电子的结合

    展开全文
  • 一种基于分子结构的立体化学计算分子图描述符的算法,该算法基于我们先前引入的签名分子描述符。 该算法可以生成两种类型的描述符,一种符合Cahn-Ingold-Prelog优先级规则,而一种基于我们之前对有向无环图的定义...
  • 函数减少了描述符矩阵中自变量的数量,这些自变量对于描述符块具有恒定或接近恒定的值(即计算出用不同优化方法优化的分子结构)。 它还执行相关分析并根据临界相关值删除描述符
  • 本文针对计算机辅助药物设计 (CADD)中的分子生成方向进行一下总结,主要内容是根据模型生成的分子理化性质检验,包括多种性质的定义、计算公式、评价指标及实现代码。 计算机辅助药物设计 (CADD) 提高了药物发现的...

    一、背景介绍

            本文针对计算机辅助药物设计 (CADD)中的分子生成方向进行一下总结,主要内容是根据模型生成的分子理化性质检验,包括多种性质的定义、计算公式、评价指标及实现代码。

            计算机辅助药物设计 (CADD) 提高了药物发现的速度。在不同的方法中,DL方法一般通过神经网络训练大量的样本数据来学习样本的分子结构。不同于传统的相似配体(ligand)搜索,DL模型在训练过程中通过学习先验知识获取特征信息和一般规则。在深度学习领域,生成模型可以有效地生成具有所需特性的新化合物,这将降低药物发现的成本。深度学习在药物发现领域的应用带来了分子生成模型的发展和扩展,同时也带来了该领域的新挑战。从头分子生成的挑战之一是如何产生具有所需药理、理化化性质的新的合理分子。

            生成模型用于生成具有分子活性的结构特征相似的新分子,并通过使用无监督学习来学习数据的分布特征。生成模型通常使用基于ASCII字符的SMILES串和基于Graph的分子图来描述,通过深度学习算法学习分子特征,从而从头生成(de novo drug generation)新的、未被发现的药物分子SMILES,但生成分子后,需要进行多步筛选,以筛选出符合条件、易于合成、具有目标理化性质的有研究价值分子,这些药物分子还需要做进一步的生物化学实验,通过大量实验数据分析才有可能成为新药。下面将主要介绍(X)种常见的分子性质检验指标。

    二、配置环境

            化合物(compounds)药物是一种主要的药物类型,通常进行相关研究时通常需要对其结构进行操作,展示,及分子量、化学描述符等计算。这里需要用到一个开源工具RDkit

            RDKit是一个用于化学信息学的开源工具包,基于对化合物2D和3D分子操作,利用机器学习方法进行化合物描述符生成,fingerprint生成,化合物结构相似性计算,2D和3D分子展示等。基于python语言进行调取使用。

            首先安装RDkit,这里建议用conda进行安装,其余方法都容易出现不同程度的报错。这里默认已经安装conda。

    官方网站、pythonAPI、github链接如下:

    RDKithttp://www.rdkit.org/https://github.com/rdkit/rdkithttps://github.com/rdkit/rdkithttps://rdkit.org/docs/index.htmlhttps://rdkit.org/docs/index.htmlPython API Reference — The RDKit 2021.09.1 documentationhttp://www.rdkit.org/docs/api-docs.html

    先创建一个自己的虚拟环境,主要为避免不同项目之间包的冲突

    conda create -n my_env python=3.7 #'my_env'自己起名,python版本按需安装

    激活环境

    conda env list #查看环境 
    conda activate my_env #激活环境

      安装RDkit

    conda install -c conda-forge rdkit

    检验一下是否安装成功 

    import rdkit

    导入后续需要包

    import csv
    import os
    import pandas as pd
    import numpy as np
    from rdkit.Chem import Crippen
    from rdkit.Chem import rdMolDescriptors
    from rdkit.Chem import QED
    from rdkit import rdBase, Chem
    from rdkit.Chem import Draw, Descriptors
    from rdkit.Chem.Draw import rdMolDraw2D
    from rdkit import DataStructs

    三、分子性质检验指标

    1、合成可行性分数(SA SCORE)

    介绍:2009年诺华公司的研究员Ertl和Schuffenhauer在化学信息学杂志上发表了名为SAscore的Rdkit插件用于快速评估药物分子的合成难易程度。

    评价指标:其将小分子合成难易程度用1到10区间数值进行评价,越靠近1表明越容易合成,越靠近10表明合成越困难。

    计算公式:其计算权重为化合物的片段贡献减去复杂程度(SAscore =fragmentScore − complexityPenalty),其中片段贡献值根据PubChem数据库中上百万分子计算共性进行计算,复杂度则考虑分子中非标准结构特征的占比,例如大环、非标准环的合并、立体异构和分子量大小等方面。

    研究员将40个化合物给化学家进行经验性评估其合成难易程度,并与SAscore得分进行比较发现与化学家给出的合成难易程度评分的相关性R2高达0.89,表明其在识别可合成难易程度上的可靠性较高。

    代码:需要用到一个文件,在这里下载fpscores.pkl.gz,运行下面的脚本即可,主函数可以改成自己想要的分子SMILES

    rdkit/Contrib/SA_Score at master · rdkit/rdkit · GitHubThe official sources for the RDKit library. Contribute to rdkit/rdkit development by creating an account on GitHub.https://github.com/rdkit/rdkit/tree/master/Contrib/SA_Score

    import math
    import pickle
    from rdkit import Chem
    from rdkit.Chem import rdMolDescriptors
    import os
    import os.path as op
    
    #get_sa_score start
    _fscores = None
    
    
    def readFragmentScores(name='fpscores'):
        import gzip
        global _fscores
        # generate the full path filename:
        if name == "fpscores":
            name = op.join(os.getcwd(), name)
            # name = op.join(op.dirname(__file__), name)
        data = pickle.load(gzip.open('%s.pkl.gz' % name))
        outDict = {}
        for i in data:
            for j in range(1, len(i)):
                outDict[i[j]] = float(i[0])
        _fscores = outDict
    
    
    def numBridgeheadsAndSpiro(mol, ri=None):
        nSpiro = rdMolDescriptors.CalcNumSpiroAtoms(mol)
        nBridgehead = rdMolDescriptors.CalcNumBridgeheadAtoms(mol)
        return nBridgehead, nSpiro
    
    
    def calculateScore(m):
        if _fscores is None:
            readFragmentScores()
    
        # fragment score
        fp = rdMolDescriptors.GetMorganFingerprint(m,
                                                2)  # <- 2 is the *radius* of the circular fingerprint
        fps = fp.GetNonzeroElements()
        score1 = 0.
        nf = 0
        for bitId, v in fps.items():
            nf += v
            sfp = bitId
            score1 += _fscores.get(sfp, -4) * v
        score1 /= nf
    
        # features score
        nAtoms = m.GetNumAtoms()
        nChiralCenters = len(Chem.FindMolChiralCenters(m, includeUnassigned=True))
        ri = m.GetRingInfo()
        nBridgeheads, nSpiro = numBridgeheadsAndSpiro(m, ri)
        nMacrocycles = 0
        for x in ri.AtomRings():
            if len(x) > 8:
                nMacrocycles += 1
    
        sizePenalty = nAtoms**1.005 - nAtoms
        stereoPenalty = math.log10(nChiralCenters + 1)
        spiroPenalty = math.log10(nSpiro + 1)
        bridgePenalty = math.log10(nBridgeheads + 1)
        macrocyclePenalty = 0.
        # ---------------------------------------
        # This differs from the paper, which defines:
        # macrocyclePenalty = math.log10(nMacrocycles+1)
        # This form generates better results when 2 or more macrocycles are present
        if nMacrocycles > 0:
            macrocyclePenalty = math.log10(2)
    
        score2 = 0. - sizePenalty - stereoPenalty - spiroPenalty - bridgePenalty - macrocyclePenalty
    
        # correction for the fingerprint density
        # not in the original publication, added in version 1.1
        # to make highly symmetrical molecules easier to synthetise
        score3 = 0.
        if nAtoms > len(fps):
            score3 = math.log(float(nAtoms) / len(fps)) * .5
    
        sascore = score1 + score2 + score3
    
        # need to transform "raw" value into scale between 1 and 10
        min = -4.0
        max = 2.5
        sascore = 11. - (sascore - min + 1) / (max - min) * 9.
        # smooth the 10-end
        if sascore > 8.:
            sascore = 8. + math.log(sascore + 1. - 9.)
        if sascore > 10.:
            sascore = 10.0
        elif sascore < 1.:
            sascore = 1.0
    
        return sascore
    def my_score(mols:list):
        readFragmentScores("fpscores")
        print('smiles\tsa_score')
        for m in mols:
            s = calculateScore(m)
            smiles = Chem.MolToSmiles(m)
            print(smiles + "\t" + "\t%3f" % s)
        
    if __name__ == "__main__":
        a = Chem.MolFromSmiles('CN(C)CCC=C1C2=CC=CC=C2CCC2=CC=CC=C12')
        b = Chem.MolFromSmiles('[H][C@@]12CC3=CNC4=CC=CC(=C34)[C@@]1([H])C[C@H](CN2CC=C)C(=O)N(CCCN(C)C)C(=O)NCC')
        c = Chem.MolFromSmiles('CCOC1=NC(NC(=O)CC2=CC(OC)=C(Br)C=C2OC)=CC(N)=C1C#N')
        d = Chem.MolFromSmiles('OC(=O)C1=CC=CC=C1O')
        x = [a,b,c,d]
        sa_score=my_score(x)
        # print(sa_score)

    结果如下:

    smiles	sa_score
    CN(C)CCC=C1c2ccccc2CCc2ccccc21		2.174229
    C=CCN1C[C@H](C(=O)N(CCCN(C)C)C(=O)NCC)C[C@@H]2c3cccc4[nH]cc(c34)C[C@H]21		4.016443
    CCOc1nc(NC(=O)Cc2cc(OC)c(Br)cc2OC)cc(N)c1C#N		2.591358
    O=C(O)c1ccccc1O		1.425110
    

    2、QED

    QED(quantitative estimate of drug-likeness)是一种将药物相似性量化为介于0和1之间的数值的方法。是通过组合多个分子描述符来评估药物相似性的方法之一。

    药物相似性

    如Lippinski规则所示,获批药物的理化参数表明,这些化合物分布在狭窄的范围内。进入该化学空间的化合物称为“类药物 (drug-like)” 类药性不是化学结构的特征,而是由几个物理参数组合确定的指标。已经提出了几种评价药物毒性的指标,但最具影响力的是Ripinsky等人的Lippinski规则。

    【注】Lipinski总结的五规则后总结为:

    化合物的分子量小于500道尔顿;

    化合物结构中的氢键给体 (包括羟基、氨基等)的数量不超过5个;

    化合物中氢键受体的数量不超过10个;

    化合物的脂水分配系数的对数值 (logP)在-2到5之间;

    化合物中可旋转键的数量不超过10个。

    QED的主要包括一下八种:

    • 分子量(MW)

    • logP(ALOGP)

    • 氢键供体的数量(HBDs)

    • 氢键受体的数量(HBAs)

    • 极表面积(PSA)

    • 可旋转键数目(ROTBs)

    • 芳环数目(AROMs)

    • 警报结构数目(ALERTS)

    代码 

    导入包

    from rdkit.Chem import QED

    调用

    qed=QED.properties(Chem.MolFromSmiles('CN(C)CCC=C1C2=CC=CC=C2CCC2=CC=CC=C12'))
    score = QED.default(Chem.MolFromSmiles('CN(C)CCC=C1C2=CC=CC=C2CCC2=CC=CC=C12'))
    print(score)
    print(qed)
    
    qed1=QED.properties(Chem.MolFromSmiles('[H][C@@]12CC3=CNC4=CC=CC(=C34)[C@@]1([H])C[C@H](CN2CC=C)C(=O)N(CCCN(C)C)C(=O)NCC'))
    score1 = QED.default(Chem.MolFromSmiles('[H][C@@]12CC3=CNC4=CC=CC(=C34)[C@@]1([H])C[C@H](CN2CC=C)C(=O)N(CCCN(C)C)C(=O)NCC'))
    print(score1)
    print(qed1)

    结果

    0.8136783893547587
    QEDproperties(MW=277.411, ALOGP=4.168600000000003, HBA=1, HBD=0, PSA=3.24, ROTB=3, AROM=2, ALERTS=0)
    0.6049384423595515
    QEDproperties(MW=451.61500000000024, ALOGP=3.193900000000001, HBA=4, HBD=2, PSA=71.68, ROTB=8, AROM=2, ALERTS=1)
    

    关于logp和mw RDkit也提供了单独计算方法经过验证和QED结果相同

    from rdkit.Chem import Crippen
    from rdkit.Chem import Descriptors
    
    logp = Crippen.MolLogP(Chem.MolFromSmiles(mol))#计算LogP
    mw = Descriptors.MolWt(Chem.MolFromSmiles(smiles))#计算MW

     3、MOSES

    这是一个基准平台,分子集 (MOSES)用于支持机器学习用于药物发现的研究。MOSES 实现了几种流行的分子生成模型,并提供了一组指标来评估生成分子的质量和多样性。通过 MOSES,的目标是规范分子生成的研究,并促进新模型的共享和比较。

    除了标准的唯一性和有效性指标外,MOSES 还提供其他指标来访问生成分子的整体质量。片段相似度 (Frag) 和支架相似度 (Scaff) 是生成和测试集对应的片段或支架频率向量之间的余弦距离。最近邻相似度 (SNN) 是生成的分子与测试集中最近的分子的平均相似度。内部多样性 (IntDiv) 是生成分子的平均成对相似性。Fréchet ChemNet 距离 (FCD) 测量 ChemNet 最后一层激活分布的差异。新颖性是训练集中不存在的独特有效生成分子的一小部分。

    论文链接:

    https://arxiv.org/abs/1811.12823https://arxiv.org/abs/1811.12823github源码(有详细的安装使用教程)

    https://github.com/molecularsets/moseshttps://github.com/molecularsets/moses代码(简单以单个SMILES举例,建议至少对30000分子进行采样):

    import moses
    a = 'CN(C)CCC=C1C2=CC=CC=C2CCC2=CC=CC=C12'
    x = [a]
    metrics = moses.get_all_metrics(x)
    print(metrics)
    {'valid': 1.0, 'unique@1000': 1.0, 'unique@10000': 1.0, 'FCD/Test': nan, 'SNN/Test': 0.31111112236976624, 'Frag/Test': 0.013181090368167392, 'Scaf/Test': 0.0, 'FCD/TestSF': nan, 'SNN/TestSF': 0.2857142984867096, 'Frag/TestSF': 0.012627479673146369, 'Scaf/TestSF': 0.0, 'IntDiv': 0.0, 'IntDiv2': 0.0, 'Filters': 0.0, 'logP': 1.7326946315185685, 'SA': 0.39536464732487514, 'QED': 0.07334471126827363, 'weight': 34.70996032350039, 'Novelty': 1.0}
    

    4、分子所具有的自由基电子数、价电子数

    from rdkit.Chem import Descriptors
    re = Descriptors.NumRadicalElectrons(smiles)#分子所具有的自由基电子数   
    ve = Descriptors.NumValenceElectrons(smiles)#分子的价电子数

    5、拓扑极性表面积(TPSA)

    化合物的极性表面积(PSA)是分子表面极性部分的面积值的总和。极性部分通常在诸如氧或氮的杂元素周围,因此可以认为这些部分结构是加在一起的。PSA是描述分子的极性和脂溶性的描述符,例如辛醇/水分配比(logP)。在PSA和膜渗透性的实验数据之间发现了很好的相关性。

    考虑到单一构象,计算出世界药品索引中所列化合物的PSA。另外,选择了43个包含氧,氮,磷和硫的部分结构,并且通过最小二乘法对每个部分结构的重量进行参数化以用于计算的PSA。

    这样,将某个索引视为来自子结构的贡献之和的方法是一种在化学信息学中经常出现的概念。通过将每个原子分解成亚结构,也可以很容易地看到每个原子的贡献。

    TPSA中,仅从分子中原子的键合模式(拓扑)估算PSA,而无需考虑分子的三维结构,这是拓扑极性表面积的名称的起源。

    from rdkit.Chem import rdMolDescriptors
    TPSA=rdMolDescriptors.CalcTPSA(Chem.MolFromSmiles(mol))

    更多详细的信息可以关注“DrugAI”公众号,帮我了解了很多专有名词。

    展开全文
  • 分子描述符和分子相似性

    千次阅读 2020-11-02 17:08:13
    分子描述符 数字化的产物,数值指标 比如性别 必须要用1代表男,2代表女 分子结构不是数值也不是数值的集合 分子结构必须要变换成数字的形式才是分子描述符 定量构效关系 分子相似性

    分子描述符

    数字化的产物,数值指标
    比如性别 必须要用1代表男,2代表女
    分子结构不是数值也不是数值的集合 分子结构必须要变换成数字的形式才是分子描述符

    一、按种类分类:定量描述符和定性描述符

         唯一的一种定性描述符是分子指纹:是对分子的结构性质分子片段或子结构信息使用某种编码进行表示 有很多分子指纹
         除了分子指纹全部是定性描述符

    二、数据类型:

         布尔值、整数、实数、向量、标量场、向量场、张量
    所有的物理量都可以转化成张量

    三、按照需要的分子结构维数分类:

         一维(化学式)
         二维(苯环的数量,通过化学式得不到,几个氢键的受体)
         三维(分子的表面积 因为需要知道每一个原子的坐标)、

    四、按照物理意义分类

    只是列举、还有很多

    A 组成描述符

    表示分子组成或相对组成数量
    必不可少,单独使用不行,需要和更复杂的描述符结合到一起使用

    B 拓扑描述符

    通常是二维的分子描述符
    Wiener指数:距离矩阵 计算机存储 行和列分别代表5个原子 2号原子和三号原子通过一个化学键链接 1和4之间是通过三个化学键链接
    在这里插入图片描述
    另外一半是对称的 维纳指数看起来比较奇怪 物理意义不明确
    具体怎么用没考虑

    C 亲脂性、亲水性描述符

    油水分配剂
    在这里插入图片描述

    正辛醇
    化合物在油相和水相之中都会有溶解,测量浓度去对数得到油水分离系数
    亲脂性/疏水性的大小 logP的大小来反应

    常见的logP 计算方法

    除了实验以外还有很多

    其他的亲脂性亲水性描述符

    LogS
    LogD
    难度更大一些

    D 几何描述符

         根据分子的性状计算出来
         转动惯量
         回旋半径
         分子表面积
              范德华表面积
              溶剂及可及表面积
                   探针分子球心形成的表面积
              溶剂排除表面积
                   探针分子球面形成的表面积
    Es立体参数       表示立体效应 两个反应速率的差值
    取代基如果越大 空间位阻越大 越难形成中间产物 反应速率越慢 得到的Es值负值越大
    在这里插入图片描述

    E 电性描述符

    F 热力学参数

    G 构象描述符

    H 量子化学描述符

    有热力学参数 生成热

    I 分子场参数

    探针和分子相互作用
    标量场 每一个点有一个标量值

    J 受体相互作用描述符

    K

    L

    分子描述符计算软件
    Dragon软件可以计算5270+描述符
    优秀的分子描述符的要求:
    在这里插入图片描述

    优秀的分子描述符要求

    分子描述符和分子的取向,空间坐标无关

    定量构效关系

    分子相似性

    如何定义相似

    使用不同的指标可以得到不同相似性
    定义:两个分子在结构或性质上相似的程度
        要先给出指标和算法。

    结构上的相似性

    两个结构之间是否相同?
    在电脑上存储分子结构用数据结构来存储。计算机中用图这个数据结构,
    在这里插入图片描述原子之间可能有多条边相连 距离不重要 重要的是连接(拓扑)关系。
    图的同构问题是没有好的算法的,算法复杂度非常高,原子越多,所需要的时间呈指数增加。

    子结构搜索

    转化成计算机问题 子图的同构
    算法复杂度非常大 也是非常耗时 np问题
    基于回溯算法
    分子相似性 醛类化合物 如何比较结构?
    ①按骨架结构来分
    ②按官能团来分
    如何定义分子相似性?
    “最大公共子结构” 要先找到这两个结构当中最大的公共子结构.相似性定量化比较大小,
    Similarity=最大公共子结构化学键数量比上除了
    也可以用原子的数量 除总共原子数量

    几种方法都不太高效 使用分子描述符

    分子描述符分类 定量定性

    定性分子描述符 分子指纹
    分子指纹:是把分子的结构,性质,分子片断或子结构信息使用某种编码表示
    Fingerprint
    定义很小的结构片段 计算分子指纹很快 分支指纹可定义20种结构片段 是否含有 每一个结构片段对应一个二进制位
    这是一个有歧义的representation 不同的分子机构化学官能团是一样的 分子指纹就是一样的
    不适合用于存储分子结构,非常利于分子标记和分子搜索。
    有很多种分子指纹 eg:MACCS 有166个keys
    是否少于三个氧分子
    是否有二硫键?
    是否有四元环?
    是否还少有一个F Cl Br I?
    基于分子指纹的子结构搜索初筛。一个查询分子查找真个库。一个查询分子定义了一个分子指纹,每一个二进制位看是不是有,有的话就是1,没有的是0

    算出来了分子指纹 同样一种来计算两个化合物是
    几百个化合物都可以得出分子指纹
    查询分子中有一部分不一样 那么B就被筛掉了

    分子指纹

    相似性不用最大公约子结构了,直接计算分子相似性。
    Tamimoto coefficient谷本系数(Tc)=a/(a+b+c)
    有三个二进制位是一样的,看独有的结构有多少?
    知道了共有的也知道了独有的二进制位。
    用共有的二进制位/共有二进制位+独有的二进制位
    计算出来是0和1之间的 且与最大公共子结构的值算出来相似
    每年必考题目:
    首先比较 图形 按照颜色来判断
    考试会给二进制来判断 蓝色是1 白色是0 分【必考】
    A独有2 B独有2 A、B相等2
    共有二进制位数量2/所有的 答案是1/3 我们一般会给除尽的数
    在这里插入图片描述
    相似性搜索
    Tanimoto系数 定义一个阈值60%希望找出化合物中和它相似性是0.6以上的分子
    计算出相似性系数是100%说明这两个分子是一样的吗?
    不一定,有歧义,只能说明分子指纹一样,但是分子指纹是有歧义的。

    三维相似性:药效团

    是某一些基团 是我们自己定义的 比如氢键供体可以定义成药效团 氢键受体定义成药效团 芳香集团 疏水基团
    可以定义四种药效团 三个球心作为空间点 计算距离 接下来找分子是否相似?
    1.看药效团是否相似
    2.比较相同药效团之间距离
    相同 认为三维空间相同
    比较接近认为 三维结构相似
    应用于药物设计领域 因为有的药效团就是发挥作用的
    忽略了非药效团的结构

    相似性原理

    为什么要做相似性搜索呢?
    基于相似性原理:结构相似的分子往往具有相似的生物活性
    基于相似性的虚拟筛选
    基于受体的药物设计和基于配体的药物设计是不一样的 3D-QSAR是基于配体的 相似性搜索也是基于配体的 可以完全不知道受体的结构就进行虚拟筛选。
    药效团的设计就是为了做基于配体的药物设计的。
    如果用相似性搜索进行虚拟筛选,相对于分子对接而言算分子指纹是非常快的。
    实际上基于相似性搜索计算虚拟筛选用的并不多。原因是这是基于相似性原理的,相似性原理对不对?
    下面的图Z轴表示药效,xy表示结构 整个是构效关系图
    如果是第一幅图的话相似性搜索是适用的,因为比较平坦,结构稍微变化药效相似。
    但是图2 有些地方非常陡峭,这样一种化合物,对结构进行很小改变,从山顶直接到悬崖了。(活性悬崖)
    如果存在活性悬崖就不适用了,相似性原理不是在所有的地方都适用。
    在这里插入图片描述只是做了一点改变,亲和力直线下降。说明存在活性悬崖。

    基于分子性质的相似性

    之前都是基于结构 我们的比较相似性有很多指标与算法
    同样除了结构相似性外还有性质上的相似性 很多化合物物化性质
    其实这些性质都是分子描述符 可以转化成利用分子描述符(定量分子指纹)来比较相似性。
    利用分子描述符。利用多个分子描述符进行比较。
    某一个描述符当做空间的一个坐标轴。分子描述符被转化为多维空间当中的一个向量。计算点与点之间距离。可以用来表征分子之间相似性。是分子相似性的另外一种定义形式。距离近相似程度高,距离远相似程度低。

    在这里插入图片描述什么是空间当中的距离?
    欧氏距离【必考】
    每次都有人算错
    曼哈顿距离 曼哈顿【必考】
    是这两个点每一个坐标值差值的绝对值加和

    化合物文库的设计:多样性
    自己设计文库 不需要一整个化合物数据库 自己设计一个子库
    化合物之间有太多重叠 说明化合物之间有冗余 不太竞技
    还发现存在空白比较多 也就是子文库不能完全覆盖化学结构数据库整个化合物空间↓
    在这里插入图片描述
    一个比较好的文库 我们希望有限数量化合物完全代表整个化学结构数据库
    没有冗余和空白
    需要利用一个与相似性完全相反的概念 结构多样性
    空间中有了点 有了定义 可以做聚类 找到类中具有代表性的化合物 就可以作为文库了
    在这里插入图片描述可以算不同分子之间距离 距离越大 相似性越小 谷本系数是正相关的 越大相似性越大
    两大类方法 一个算系数 一个算距离 化合物筛选用相似性系数
    设计文库的时候用距离 因为要分类
    在这里插入图片描述相似性计算软件:
    分子相似性应用领域:
    在这里插入图片描述

    展开全文
  • 分子描述符计算

    2021-04-23 16:13:35
    分子描述符计算 通过.sml文件和.sdf文件计算分子描述符,并通过pandas将分子描述符、SMILES表达式、分子物化性质合并成一个csv文件。 1.通过sml文件计算描述符生成csv文件 数据文件是一个有4333个分子的熔点数据的...

    分子描述符计算

    通过.sml文件和.sdf文件计算分子描述符,并通过pandas将分子描述符、SMILES表达式、分子物化性质合并成一个csv文件。

    1.通过sml文件计算描述符生成csv文件

    数据文件是一个有4333个分子的熔点数据的csv文件。

    SMILESmelting_point
    sample_1O=C1Cc2ccccc2114.0
    sample_2Clc1ccc(cc1)C1c2c(OC(N)=C1C#N)[nH][nH0]c2C(F)(F)F20.5
    import pandas as pd
    from rdkit import Chem
    from rdkit.Chem import Descriptors
    from rdkit.ML.Descriptors import MoleculeDescriptors
    
    dataset = pd.read_csv('molecules_with_melting_point.csv', index_col = 0)
    
    smiles = dataset.iloc[:, 0] # 获取分子的 SMILES表达式
    y = dataset.iloc[:, 1] # 物性:meliting_point
    
    # get the name of calculated discriptors
    descriptor_names = []
    for descriptor_information in Descriptors.descList:
        descriptor_names.append(descriptor_information[0]) # 第一列列名
    print("The num of descriptors:", len(descriptor_names))
    
    # calculate
    descriptors = []
    descriptor_calculator = MoleculeDescriptors.MolecularDescriptorCalculator(descriptor_names)
    print("num of molcular:%d" % len(smiles))
    for index, smiles_i in enumerate(smiles):
        # print(index + 1, '/' ,len(smiles))
        molecule = Chem.MolFromSmiles(smiles_i)
        descriptors.append(descriptor_calculator.CalcDescriptors(molecule))
    descriptors = pd.DataFrame(descriptors, index = dataset.index, columns = descriptor_names)
    
    descriptors_with_y = pd.concat([y, descriptors], axis=1)  # 把 y和描述符结合起来
    descriptors_with_y.to_csv('descriptors_with_y.csv')
    

    2.通过.sdf文件

    .sdf文件格式:
    第一行:一般作为分子名字,如 Levetiracetam
    第二行:注释,ChemDraw06111413562D
    第三行:一般是空行
    第四行:是原子个数 键的个数等的起始行

    属性1
    属性1的值

    如:

         RDKit          2D
    
      9 10  0  0  0  0  0  0  0  0999 V2000
       -3.1404    0.7862    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
       -1.8315    0.0534    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -1.4242   -1.3902    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        0.0195   -0.9828    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        1.4734   -1.3519    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        2.5199   -0.2773    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        2.1125    1.1664    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        0.6586    1.5354    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -0.3879    0.4608    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      1  2  2  0
      2  3  1  0
      3  4  1  0
      4  5  2  0
      5  6  1  0
      6  7  2  0
      7  8  1  0
      8  9  2  0
      9  2  1  0
      9  4  1  0
    M  END
    >  <melting_point>  (1) 
    14.0
    
    $$$$
    
    import pandas as pd
    from rdkit import Chem
    from rdkit.Chem import Descriptors
    from rdkit.ML.Descriptors import MoleculeDescriptors
    
    y_name = 'melting_point'
    sdf = Chem.SDMolSupplier('melting_point.sdf')
    
    # get the name of calculated discriptors
    descriptor_names = []
    for descriptor_information in Descriptors.descList:
        descriptor_names.append(descriptor_information[0]) 
    print("The num of descriptors:", len(descriptor_names))
    
    descriptor_calculator = MoleculeDescriptors.MolecularDescriptorCalculator(descriptor_names)
    
    descriptors, y, smiles = [], [], []
    print("num of molecualr:%d" % len(sdf))
    for index,molecule in enumerate(sdf):
        y.append(float(molecule.GetProp(y_name)))
        descriptors.append(descriptor_calculator.CalcDescriptors(molecule))
        smiles.append(Chem.MolToSmiles(molecule))
    descriptors = pd.DataFrame(descriptors, index=smiles, columns = descriptor_names)
    y = pd.DataFrame(y, index=smiles, columns=[y_name])
    
    descriptors_with_y = pd.concat([y, descriptors], axis=1) 
    descriptors_with_y.to_csv('descriptors_with_y.csv') 
    
    
    展开全文
  • 计算分子描述符——使用E-Dragon

    千次阅读 2021-07-18 17:41:11
    计算分子描述符(又称理论分子描述符)不需借助于任何实验信息,只需要分子的结构信息就可以计算出来,例如分子的组成,拓扑结构以及量子化学描述符等等。其优点是对化合物结构的描述更全面细致,物理化学意义更明确...
  • 获取分子描述符的几种方法 主题 此篇博文主要笔者在获取分子描述符中所踩的坑,遇到的问题和一些解决方法,以及 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们...
  • 文章目录一、描述符计算模块1.rdkit.Chem.Lipinski模块2.rdkit.Chem.Descriptors模块3.rdkit.ML.Descriptors.MoleculeDescriptors模块二、原子描述符可视化1.原子partial charge可视化2.原子logP可视化一、描述符...
  • 通常,DFT方法能够相当准确地生成各种分离的分子描述符以及局部反应性描述符。 在这项工作中,基于基于DFT方法的量子化学描述子,使用B88-PW91 GGA能量函数和DZVP基集,对57个PCB的BCF进行了预测。 研究得出结论,...
  •     本文计算了四种类型的底物分子描述符并把他们当成 4 类特征表示用于机器学习建模,这 4 类特征包括:物化(Physiochemical, PC)特征描述符,mol2vec (M2V)描述符,扩展连接指纹(ECFP)和 Molecular ...
  • ChemDes是一种基于Web的基于Web的平台,用于计算分子描述符和指纹,它提供3679个分子描述符,分为61个逻辑块。 此外,它为药物分子提供了59种分子指纹系统,包括拓扑指纹、电质拓扑状态(E-ZEE)指纹,MACCS键,FP4...
  • 分子描述符+两篇文章

    千次阅读 2021-03-11 20:24:54
    分子描述符相关( Molecular Descriptor)
  • 分子描述符是确定分子性质的指标。 本文想看看描述分子特性中侧重于“化合物芳香度”的描述符。随着交叉偶联反应的发展,将芳环引入分子变得更加容易。另一方面,已知具有多个芳环的化合物的物理性质不是非常良好...
  • 描述符构建与筛选在药物分子致癌毒性预测中的应用,谈宁馨,杨国兵,为了预测结构多样性的药物分子的致癌活性,构建了表征分子组成、电荷、拓扑、几何结构及物理化学性质等特征的1559个描述符,通过�
  • 分子描述符(molecular descriptor) http://www.moleculardescriptors.eu/ 介绍分子描述符的网站比较全面 have some books about molecular descriptor and online softwares,just like corina, cdk.... ...
  • 基于分子描述符和机器学习方法预测和虚拟筛选乳腺癌靶向蛋白HEC1抑制剂.pdf
  • 此功能允许用户选择从Materials Studio导出的数据作为3D原子文件(.xsd文件格式),并计算每一帧中每个分子的R3m值。 然后将 R3m 值的分布绘制为直方图。 目标是确定由使用 Materials Studio 执行的分子​​动力学...
  • 基于分子描述符和机器学习方法预测和虚拟筛选MMP-13对MMP-1的选择性抑制剂.pdf
  • rdkit 分子性质描述符(Descriptors)

    千次阅读 2020-06-29 20:54:29
    RDKit中内置了大量的分子描述符的计算方法, 这些方法主要位于rdkit.Chem.Descriptors <https://www.rdkit.org/docs/source/rdkit.Chem.Descriptors.html#module-rdkit.Chem.Descriptors>_ 也有些常用的性质...
  • 这里有几点原因如下: 有关描述符的官方文档相当难懂,而且没有包含优秀的示例告诉你为什么需要编写描述符(我得为Raymond Hettinger辩护一下,他写的其他主题的Python文章和视频对我的帮助还是非常大的) 编写描述...
  • 已经提出了许多3D描述符,这次将介绍它们中经常使用的三个,Fsp3,PMI和PBF。 Fsp3是分子复杂性的指标 二甲基吡啶及其不饱和化合物二甲基哌啶中可以存在多少种异构体?答案是前者有5种,而后者有34种,包括旋光...
  • 主要介绍了解密Python中的描述符(descriptor),本文详细讲解了描述符(descriptor)的作用、访问描述符、对描述符赋值、删除描述符等内容,需要的朋友可以参考下
  • RDKit | 计算化合物描述符

    千次阅读 2019-09-29 12:23:55
    描述符 Descriptor:通过量化部分结构特征和物理化学性质来表达化合物的化学特征。 导入库 import rdkit import pandas as pd from rdkit import Chem from rdkit.Chem import Descriptors from rdkit.ML....
  • 基于卷积神经网络(CNN)预测分子特性 导入库 from rdkit import Chem from rdkit.Chem.Crippen import MolLogP import numpy as np import torch import time 载入数据 maxlen = 64 with open('smiles.txt') as f...
  • 更准确地说,实验确定的溶质描述符(或参数)已与简化分子拓扑的分子特征精确相关。 在本研究中,在溶剂方面达到了等效的结果。 在先前的气相色谱研究中,通过原始的乘法矩阵分析,同时获得了121种挥发性有机化合物...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,652
精华内容 2,260
关键字:

分子描述符

友情链接: baidu-index-scraper.zip