批量计算sdf格式分子的五倍率描述符,并生成表格

一个脚本就能批量得到sdf化合物分子文件的五倍率描述符,生成一个excel表格!

首先,找个文件夹,将脚本放进文件夹中。然后创建一个名为linpinski_description_task的文件夹,把化合物分子放入linpinski_description_task文件夹中。然后执行脚本就得到csv表格了!

(注意sdf的文件不能有中文符号)  

美中不足的是,当前的版本批量处理得到的描述符文件是这个样子的:

每个分子的具体信息上方都会出现列名。要解决这个问题很简单,使用excel的“数据”、“清楚重复项”,即可:

取消“数据包含标题”

 具体代码:

from rdkit import Chem
from rdkit.Chem import Descriptors , AllChem
from rdkit.Chem import Lipinski
#lipinski五倍率规则
import xlwt
import pandas as pd
import os
def linpinski(file_dir):
    for root,dirs,files in os.walk(file_dir): 
        for file in files:
            if os.path.splitext(file)[1] == '.sdf':
                
                sdf_name = str(file[:-4])
                file_input = 'linpinski_description_task/' + sdf_name + '.sdf'
                sdffile = Chem.SDMolSupplier(file_input)
                mold = [i for i in sdffile]
                table = [] #最后会变成字典

                for i,mol in enumerate(mold):
                    smi=Chem.MolToSmiles(mol)
                    mw = Descriptors.ExactMolWt(mol)
                    logp = Descriptors.MolLogP(mol)
                    HBA = Lipinski.NumHAcceptors(mol)
                    HBD = Lipinski.NumHDonors(mol)
                    array={'name':'','smiles':'','mw':'','logP':'','HBA':'','HBD':''}
                    array['name']=sdf_name
                    array['smiles']=smi
                    array['mw']=mw
                    array['logP']=logp
                    array['HBA']=HBA
                    array['HBD']=HBD
                    table.append(array)
                    pf = pd.DataFrame(list(table))
                    order = ['name','smiles','mw','logP','HBA','HBD']
                    pf = pf[order]
                    print(pf)
                    pf.to_csv('五倍率描述符.csv',mode = 'a', encoding = 'utf-8')
                    #mode='a'将数据插入到已有表格中,而不是覆盖 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRJ-jonas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值