Drugbank的医药数据XML解析

pyhon解析drugbank数据库。代码[原文地址]

#!/usr/bin/python3

import untangle
import pandas as pd
import numpy as np
import os

 
filename="drugbank_all_full_database.xml"
obj=untangle.parse(filename)

#Building dataframe of chemical descriptors
#Data Frame of DrugBank Small Molecule Type Drugs
df_drugbank_sm=pd.DataFrame(columns=["drugbank_id","name","cas","smiles","logP ALOGPS", "logP ChemAxon", "solubility ALOGPS", "pKa (strongest acidic)", "pKa (strongest basic)"])
df_drugbank_sm 
 
i=-1
#iterate over drug entries to extract information
for drug in obj.drugbank.drug:
    drug_type= str(drug["type"])

# select for small molecule drugs
if drug_type in ["small molecule", "Small Molecule", "Small molecule"]:
        i=i+1

#Get drugbank_id
for id in drug.drugbank_id:
if str(id["primary"])=="true":
                df_drugbank_sm.loc[i, "drugbank_id"]=id.cdata
#Drug name
        df_drugbank_sm.loc[i,"name"]=drug.name.cdata

#Drug CAS
        df_drugbank_sm.loc[i, "cas"]=drug.cas_number.cdata

#Get SMILES, logP, Solubility
#Skip drugs with no structure. ("DB00386","DB00407","DB00702","DB00785","DB00840",
#                                            "DB00893","DB00930","DB00965", "DB01109","DB01266",
#                                           "DB01323", "DB01341"...)
if len(drug.calculated_properties.cdata)==0: #If there is no calculated properties
continue
else:
for property in drug.calculated_properties.property:
if property.kind.cdata == "SMILES":
                    df_drugbank_sm.loc[i, "smiles"]=property.value.cdata

if property.kind.cdata == "logP":
if property.source.cdata == "ALOGPS":
                        df_drugbank_sm.loc[i, "logP ALOGPS"]=property.value.cdata
if property.source.cdata == "ChemAxon":
                        df_drugbank_sm.loc[i, "logP ChemAxon"]=property.value.cdata

if property.kind.cdata == "Water Solubility":
                    df_drugbank_sm.loc[i, "solubility ALOGPS"]=property.value.cdata

if property.kind.cdata == "pKa (strongest acidic)":
                    df_drugbank_sm.loc[i, "pKa (strongest acidic)"]=property.value.cdata

if property.kind.cdata == "pKa (strongest basic)":
                    df_drugbank_sm.loc[i, "pKa (strongest basic)"]=property.value.cdata
          
df_drugbank_sm.head(10)
print (df_drugbank_sm.shape) 
 
#Drop drugs without SMILES from the dataframe
df_drugbank_smiles = df_drugbank_sm.dropna()
df_drugbank_smiles= df_drugbank_smiles.reset_index(drop=True)
print(df_drugbank_smiles.shape) 
 
df_drugbank_smiles.head() 
 
#write to csv
df_drugbank_smiles.to_csv("drugbank_smiles.csv", encoding='utf-8',index=False)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
DrugBank是一个广泛使用的药物数据库,提供了关于药物的详细信息和相应的科学数据。在使用DrugBank之前,我们需要下载它并安装在我们的计算机上。 首先,我们需要在DrugBank的官方网站上找到下载页面。通常,下载页面会提供不同的选项和链接,以适应不同的操作系统和需求。我们可以根据自己的操作系统(如Windows、Mac或Linux)选择适合我们的版本。 在选择了适合的版本后,我们可以点击下载链接,将DrugBank的安装文件保存到我们的计算机上。下载过程可能需要一些时间,具体取决于我们的网络连接速度和文件大小。 一旦下载完成,我们可以通过点击安装文件来开始安装过程。接下来,我们将按照安装程序的指示进行操作。这可能包括接受许可协议、选择安装位置和完成其他必要的设置。 在安装完成后,我们可以从我们的计算机上启动DrugBank。通常,DrugBank会提供一个用户界面,允许我们浏览和搜索药物信息。我们可以使用相应的功能和搜索栏来查找特定的药物,并获得有关药物的详细信息、化学结构、药理学特性等。 总的来说,DrugBank的下载过程相对简单。我们只需访问官方网站,选择适合我们操作系统的版本,下载安装文件并按照安装程序的指示进行操作。安装完成后,我们就可以开始使用DrugBank提供的丰富药物信息了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值