来源公众号:药研小木子
DrugBank数据库是阿尔伯塔大学提供的一个生物信息学和化学信息学数据库,是一种独特的生物信息学和化学信息学资源,它将详细的药物数据和全面的药物目标信息结合起来。最近发布的DrugBank包含超过50条和药物相关条目,其中包括2723种经批准的小分子药物、1540种经批准的生物技术(蛋白质/肽)药物、131种营养品和6451种实验药物。此外,5236个非冗余蛋白(即药物靶标/酶/转运体/载体)序列与这些药物条目相关联。每个DrugCard条目包含200多个数据字段,其中一半用于药物/化学数据,另一半用于药物靶标或蛋白质数据。

Drugbank
DrugBank最大的特色是它支持全面而复杂的搜索,结合DrugBank可视化软件,这些工具能让科学家们非常容易的检索到新的药物靶目标、比较药物结构、研究药物机制以及探索新型药物。
访问网址:https://go.drugbank.com/
1、检索药物信息
DrugBank可谓临床导向的药品百科全书。DrugBank能够提供关于药品,药品靶点和药物作用的生物或生理结果的详细、最新、定量分析或分子量的信息。快速检索:“Drugs(药品名)”、“Targets(靶点)”、“Pathways(作用途径)”、“Indications(适应症)”

自定义检索:可根据化学机构、分子量、药理学等项目进行自定义检索

如这里以拉帕提尼(lapatinib)为例,检索结果如下所示,包括但不限于:
1、识别信息(Identification):这部分包含对药物的名称、描述、类型、结构体同位素、化学式等内容描述,比如对lapatinib的描述为:

拉帕替尼是一种抗肿瘤药物和酪氨酸激酶抑制剂,用于治疗接受化疗的晚期或转移性HER阴性乳腺癌患者。
2、药理学信息(Pharmacology):对化合物适应症、并发症、药效学、作用机理、吸收性、分布量、蛋白质结合、代谢、消除途径、半衰期、清除率、毒性、通路、药物基因组效应等的描述信息。

3、药物互作信息(Integration):药物联用和互作等信息,从药品标签和科学出版物中提取的药物-药物相互作用。

4,临床信息Clinical Trials:包括临床进展、完成情况、涉及的适应症等新。

5、靶点信息(Target):该药物涉及的作用靶点,如这里的拉帕替尼可作用的靶点有EGFR和HER2两个激酶蛋白。

2、分类浏览药物信息
可据不同的标签浏览对应的药物信息,如批准(Approved),保健品(Nutraceutical),违禁药(Illicit),研究药物(Investigational),撤回药物(Withdrawm),实验药物(experimental)等。比如浏览被FDA批准小分子药物,可以查询2723个相关条目。

浏览生物制剂中批准的药物,可以查看1540个相关条目

3、数据下载和处理
DrugBank提供开放的数据访问接口,可以直接在Download页面进行数据获取,需要注册账号并且申请下载,获得批准后可以下载包括药物结构文件和蛋白质靶标信息等数据。

利用Python解析XML文件,提取DrugBank数据库小分子结构和活性数据等信息参考Python脚本:
#!/usr/bin/python3
import untangle
import pandas as pd
import numpy as np
import osDrugBank介绍与使用DrugBank介绍与使用文件名=”drugbank_all_full_database.xml”
obj=untangle.parse(文件名)#建立化学描述符
数据框 #DrugBank小分子类药物数据框
df_drugbank_sm=pd.DataFrame(columns=[“drugbank_id”,”name”,”cas”,”smiles”,”logP ALOGPS”, “logP ChemAxon”, “溶解度 ALOGPS”、“pKa(最强酸性)”、“pKa(最强碱性)”])
df_drugbank_smi=-1
#迭代药物条目以提取 obj.drugbank.drug 中药物
的信息:
drug_type= str(drug[“type”])# 选择小分子药物
if drug_type in [“small分子”, “Small Molecule”, “Small分子”]:
i=i+1#获取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,”名称”]=药物名称.cdata#Drug CAS
df_drugbank_sm.loc[i, “cas”]=drug.cas_number.cdata#Get SMILES、logP、Solubility
#跳过没有结构的药物。(“DB00386”、“DB00407”、“DB00702”、“DB00785”、“DB00840”、
#“DB00893”、“DB00930”、“DB00965”、“DB01109”、“DB01266”、
#“DB01323”、“DB01341” …)
if len(drug.calculated_properties.cdata)==0: #如果没有计算出的属性
continue
else:
for property in drug.calculated_properties.property:
if property.kind.cdata == “SMILES”:
df_drugbank_sm. loc[i, “smiles”]=property.value.cdataif 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.cdataif property.kind.cdata == “溶解性”:
df_drugbank_sm.loc[i, “solubility ALOGPS”]=property.value.cdataif property.kind.cdata == “pKa (最强酸性)”:
df_drugbank_sm.loc[i, “pKa (最强酸性)”]=property.value.cdataif property.kind.cdata == “pKa (最强基础)”:
df_drugbank_sm.loc[i, “pKa (strongest basic)”]=property.value.cdatadf_drugbank_sm.head(10)
打印 (df_drugbank_sm.shape)#从数据框中删除没有 SMILES 的药物
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()
#写入csv
df_drugbank_smiles.to_csv(“drugbank_smiles.csv”, encoding=’utf-8′,index=False)