• rdkit 读取mol sdf 的名字和自定义属性字段


    首先 sdf格式  https://blog.csdn.net/u012325865/article/details/82383983

    第一行:一般作为分子名字,如 Levetiracetam

    第二行:注释,ChemDraw06111413562D

    第三行:一般是空行

    第四行:是原子个数 键的个数等的起始行。

    M  END所在行结束原子个数 键的个数等信息。

    属性1

    属性1值

    空行

    属性2

    属性2值

    空行

    (以四个美元符号结束一个分子的信息存储。)

    Levetiracetam
      ChemDraw06111413562D
     
     12 12  0  0  0  0  0  0  0  0999 V2000
       -1.4405   -0.4285    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
       -0.7260   -0.8410    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -0.0116   -0.4285    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        0.7029   -0.8410    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        1.4174   -0.4285    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -0.0116    0.3965    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
       -0.7260   -1.6660    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0
        0.6559    0.8814    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        0.4009    1.6660    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -0.4241    1.6660    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
       -0.6790    0.8814    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        1.4405    0.6265    0.0000 O   0  0  0  0  0  0  0  0  0  0  0  0
      1  2  2  0      
      2  3  1  0      
      3  4  1  1      
      4  5  1  0      
      3  6  1  0      
      2  7  1  0      
      6  8  1  0      
      8  9  1  0      
      9 10  1  0      
     10 11  1  0      
     11  6  1  0      
      8 12  2  0      
    M  END
    >  <Catalog Number> (1)
    A1198
     
    >  <Item Name> (1)
    Levetiracetam
     
    >  <Formula> (1)
    C8H14N2O2
     
    >  <MolWeight> (1)
    170.21
     
    >  <CAS Number> (1)
    102767-28-2
     
    >  <Target> (1)
    Cancer Biology
     
    $$$$

    原子坐标,键这些字段,都是直接就读到了,其他字段怎么读

    rdkit教程里说的不是太清楚 http://rdkit.chenzhaoqiang.com/basicManual.html#id3

    在github上读了一些源码  https://github.com/rdkit/rdkit/blob/master/rdkit/Chem/ChemUtils/SDFToCSV.py

    大概明白了 

        mols = Chem.SDMolSupplier(XXX.sdf')
        print(type(mols))
        for mol1 in mols:
            #名字
            name = mol1.GetProp('_Name')
            print(name)
            #其他非标准的属性
            propNames = list(mol1.GetPropNames())
            #['Temperature [K]', 'XXX ID', 'Field Strength [MHz]', 'Solvent']
            print(propNames)
            p_solvent = mol1.GetProp('Solvent')

    注意

    1  _Name 是隐藏的属性,默认就是rdkit parse出的第一行文本,如果sdf第一行是整个数据库的文字说明之类,那么第一个分子的_Name属性是就是这段说明,可能不能正确得到name

    2 注释部分,暂时不知道怎么读 似乎丢弃了

    3  GetPropNames 方法 可以parse到 全部

    >  <XXX>

    这样的属性,已经够用了

  • 相关阅读:
    按钮水波纹效果
    点击水波纹效果
    实现图片上传预览效果
    css 实现鼠标滑过流光效果
    插件地址参考
    移动前端经验
    移动端开发需要加的meta
    25款css动画库
    oracle 中的next_day函数
    Oracle replace函数
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/13678297.html
Copyright © 2020-2023  润新知