【drug】获取化合物的3D结构

如何从化合物的SMILES字符串获取化合物的3D结构?以下几种方法供参考:

1,借助pubchem的py查询接口进行查询

        首先需要安装pubchempy(conda install pubchempy)

 sdf = pubchempy.get_sdf(canonical_smi,'smiles')
          if(sdf != None):
              cid = sdf.split('\n')[0]
              if canonical_smi in smiles:
                  if cid != smiles[canonical_smi]:
                      print("Waining: different cids(%s,%s) for smiles:%s; ori_smiles:%s" %(cid, smiles[canonical_smi],canonical_smi,l))
                  else:
                      continue
          #pubchempy.download("SDF",output_base + canonical_smi + '.sdf',canonical_smi,"smiles")
              #pubchempy.download("SDF",out,canonical_smi,"smiles")
              pubchempy.download("SDF",output_base + cid + '.sdf',sdf,"sdf")
              smiles[canonical_smi] = cid
          else:
              not_found.add(l)

然后通过 get_sdf函数,获取当前SMILES的sdf结构,通过download函数,下载sdf文件

2,通过openbabel 查询

        首先安装openbabel,然后通过以下命令进行查询

obabel -i smi "ccccc" -o mol2 --gen3D

3,通过pybel进行查询

        首先通过conda安装openbabel,然后通过make3D或者localopt函数进行生成化合物的3D结构即可,最后通过write函数写入到文件

from openbabel import pybel
mol = pybel.readstring("smi", e)
#mol.make3D()
mol.localopt()
mol.write("mol2","./generateMol2/" + fname + ".mol2", True)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值