DrugBank:小分子数据信息挖掘-阿里云开发者社区

开发者社区> DrugAI> 正文

DrugBank:小分子数据信息挖掘

简介: DrugBank:小分子数据信息挖掘
+关注继续查看

DrugBank数据库简介

DrugBank数据库是唯一将详细的药品数据(即化学,药理学和制药)与综合药物靶点信息(即序列,结构和作用通路)相结合的“生物信息学和化学信息学”资源.DrugBank由加拿大卫生研究院,亚伯达省创新 - 健康解决方案和代谢组学创新中心(TMIC)提供支持,该中心是国家资助的研究以及支持广泛的尖端技术代谢组学研究的核心.DrugBank数据库查询包含以下信息:药品类型,药品简介,化学结构,药品成分,临床试验,药物靶点,酶,转运体,载体,药品图片,批准情况,批准的处方药,国外上市商品名,药物相互作用,制造商,包装商等。


image.png

DrugBank数据库功能

开发DrugBank数据库旨在缩小临床药品资源和化学药品数据库之间“深度与广度”的差距.DrugBank于2006年年首次发布,作为全面并完全可搜索的计算机药物资源,将药物分子(包括生物技术药物)的序列,结构和机制数据与其药物靶点的序列,结构和机制数据连接。作为临床导向的药品百科全书,DrugBank能够提供关于药品,药品靶点和药物作用的生物或生理结果的详细,最新,定量分析或分子量的信息。作为化学导向的药品数据库,DrugBank能够提供许多内置的工具,用于查看,排序,搜索和提取文本,图

像,序列或结构数据。自数据库首次发布信息起,DrugBank已被广泛应用于计算机检索药物,药物“复原”,计算机检索药物结构数据,药物对接或筛选,药物代谢预测,药物靶点预测和一般制药教育。


DrugBank数据库小分子信息的解析,药物结构提取:

下载XML文件

https://www.drugbank.ca/releases/latest

image.png

基于Python3从含有药物信息的XML文件解析数据

# In[1]:
#!/usr/bin/python3
 
import untangle
import pandas as pd
import numpy as np
import os
 
# In[2]:
 
filename="drugbank_all_full_database.xml" 
obj=untangle.parse(filename)
 
# In[3]:
#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
 
# In[4]:
 
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
            
 
 
# In[5]:
df_drugbank_sm.head(10)
 
# In[6]:
 
print (df_drugbank_sm.shape)
 
# In[7]:
 
#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)
 
# In[8]:
 
df_drugbank_smiles.head()
 
# In[9]:
 
#write to csv
df_drugbank_smiles.to_csv("drugbank_smiles.csv", encoding='utf-8',index=False)
 

image.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》
在实际的开发场景中,我们希望将大量的业务以及用户行为数据存储起来用于分析处理,但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用,往往数据库都采用分库分表设计,那么将这些分散的数据通过binlog汇总到一个统一的文件系统就显得非常有必要。
20 0
SQL 中删除超出时间限制的数据,并返回删除数据信息(Mybatis+postgresql)
前言 前一阵子,接到一个活,主要内容是这样的,数据库中存在一些过期的日志(可能是一天前的数据,或者是一个月前的数据,等等),将这些数据删除掉,并且返回这些数据的信息(就是说我得知道自己到底删了哪些数据呀?)。
1431 0
PowerDesigner PDM表数据信息用表格展现
原文http://www.cnblogs.com/whitewolf/archive/2010/05/04/1726992.html       在前些日子,同事问我能不能把PowerDesigner的PDM 表信息表格来展现出来,如下面格式, 字段名 ...
643 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13882 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11888 0
DrugBank:小分子数据信息挖掘
DrugBank:小分子数据信息挖掘
18 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
497
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载