解析DrugBank数据库数据|Python
一、DrugBank 数据库简介
DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和计算预测,广泛应用于药物研发、精准医疗、生物信息学研究等领域。
二、下载公开的数据
DrugBank 提供了多种方式下载其数据库,包括 免费的开放数据 和 需要许可的完整数据库。如果需要完整的 DrugBank 数据(包括所有药物、靶点、相互作用等),则需要 注册账户并申请许可。申请页面:DrugBank Release Version 5.1.13 | DrugBank Online
申请步骤
- 创建 DrugBank 账户:注册页面
- 选择许可类型
- Academic License(学术许可,免费):用于非商业科研,如生物信息学研究、论文分析等。
- Commercial License(商业许可,收费):适用于制药公司、AI 药物研发等商业用途。
- 提交申请,等待 DrugBank 审核。
- 批准后,可下载完整数据库(通常为 XML、CSV、SQL 格式)
这里我们先把免费的开放的药物信息数据下载下来用Python解析。下载的SDF格式,我们需要用到Rdkit包来读取结构文件。

三、Python解析药物SDF文件
import pandas as pd
from rdkit import Chem
from rdkit.Chem.MolStandardize import rdMolStandardize
from rdkit import RDLogger
RDLogger.DisableLog('rdApp.*')def get_drug_info(drug_file, current_dir):drug_list = []drug_dict = {}supplier = Chem.SDMolSupplier(drug_file)for mol in supplier:if mol is not None:mol_id = mol.GetProp('DRUGBANK_ID')drug_name = mol.GetProp('COMMON_NAME')# smiles = Chem.MolToSmiles(mol, isomericSmiles=True, canonical=True)# smiles = standardize_smiles(smiles)smiles = Chem.MolToSmiles(mol)drug_list.append([mol_id, drug_name, smiles])drug_dict[mol_id] = smilesdrug_df = pd.DataFrame(drug_list, columns=['ID', 'Name', 'SMILES'])drug_df.to_csv(current_dir + '/drug_information.csv', index=False)return drug_dictcurrent_dir = './'
drug_info_file = current_dir + 'drugbank_structures_2025_02_14.sdf'
drug_id_smi_dic = get_drug_info(drug_info_file, current_dir)print('Done!')
处理好的文件可在这里drugbank_2025_02_14下载。
四、Python解析药物XML文件
import json
import os
import xmltodict
import pandas as pd"""
From xml file to extract drug and traget information.
"""current_dir = os.path.dirname(os.path.abspath(__file__))# 读取 XML 文件并转换为 JSON
xml = open(current_dir + "/full-database.xml", encoding="utf-8").read()
xml2json = xmltodict.parse(xml, encoding="utf-8")# 将数据保存为JSON文件,设置缩进为4个空格
with open("drugbank.json", 'w', encoding='utf-8') as file:json.dump(xml2json, file, ensure_ascii=False, indent=4)drugs = xml2json['drugbank']['drug']
results = []
for drug in drugs:try:drug_id = drug['drugbank-id'][0]['#text']except:drug_id = drug['drugbank-id']['#text']drug_name = drug['name']try:targets = drug['targets']['target']except:continuedrug_type = drug['@type']if isinstance(targets, dict):try:uniprot_id = targets['polypeptide']['@id']except:continuetarget_id = targets['id']target_name = targets['name']results.append([drug_id, drug_name, drug_type, uniprot_id, target_name])if isinstance(targets, list):for target in targets:try:uniprot_id = target['polypeptide']['@id']except:continuetarget_id = target['id']target_name = target['name']results.append([drug_id, drug_name, drug_type, uniprot_id, target_name])my_columns = ['DrugBank ID', 'Drug Name', 'Drug Type', 'UniProt ID', 'Target Name']
df = pd.DataFrame(results, columns=my_columns)df.to_csv(current_dir + '/drugbank.csv', index=False)相关文章:
解析DrugBank数据库数据|Python
一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和…...
CUDA Toolkit 历史版本 cuda安装
cuda安装 CUDA Toolkit 版本选择1. NVIDIA-SMI 525.60.11静默安装2. CUDA Toolkit 12.6.0 安装禁用 nouveau依赖安装下载安装 cuda显卡驱动安装成功设置环境变量 3. 安装失败切换到多用户文本模式 参考 CUDA Toolkit 版本选择 CUDA Toolkit 历史版本 1. NVIDIA-SMI 525.60.11 …...
Aseprite详细使用教程(12)——轮廓工具和多边形工具
一、轮廓工具 (1)核心功能 轮廓生成:给鼠标起点和终点的连线以及两点经过的路径形成的轮廓,可单独指定轮廓颜色。 (2) 使用方法 选择工具后,鼠标左键点击,按住不松手,拖动…...
macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能
macos sequoia默认ctrlenter会打开鼠标右键菜单,使得很多软件有冲突。关闭方法: end...
分布式架构与XXL-JOB
目录 先了解什么是任务调度? 什么是分布式任务调度? 了解XXL-JOB分布式任务调度平台 如何搭建XXL-JOB? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码,…...
leetcode day18 移除元素 26+283
26 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...
【HarmonyOS Next】鸿蒙监听手机按键
【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…...
用Deepseek查询快证API-物流查询-实名认证-企业实名认证
快证API可能是一个提供多种验证和查询服务的平台,包括但不限于企业实名认证、短链接生成、手机号归属地查询、IP地址查询等。以下是根据搜索结果整理的关于快证API的相关信息: 企业实名认证API: 功能:通过与企业相关数据库进行…...
一个简洁高效的Flask用户管理示例
Flask-Login 是 Flask 的用户管理扩展,提供 用户身份验证、会话管理、权限控制 等功能。 适用于: • 用户登录、登出 • 记住用户(“记住我” 功能) • 限制未登录用户访问某些页面 • 用户会话管理 1. 安装 Flask-Login pi…...
分布式之分布式ID
目录 需求 1. 全局唯一性 2. 高性能 3. 高可用性 4. 可扩展性 5. 有序性 6. 时间相关 7. 长度适中 8. 安全性 9. 分布式一致性 10. 易于集成 常见解决方案 选择依据 数据库号段模式 核心概念 工作流程 优点 缺点 实现示例 优化策略 适用场景 Snowflake雪…...
(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念
目录 前言与导论 碎碎念 所以,我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问,他非常好奇…...
边缘计算网关与 PLC:注塑机车间数据互联新变革
在当今数字化浪潮席卷而来的时代,制造业的智能化转型成为了提升竞争力的关键路径。对于注塑机车间而言,如何实现数据的高效采集与互联,进而优化生产流程、提高生产效率,是众多企业亟待解决的问题。而明达MBox20边缘计算网关与 PLC…...
LeetCode刷题---哈希表---347
前 K 个高频元素 347. 前 K 个高频元素 - 力扣(LeetCode) 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1…...
LED灯闪烁实验:实验介绍
文章目录 1 实验目标2 工具链2.1 硬件2.2 软件 3 实验流程 1 实验目标 本实验结合Matlab/Simulink工具链和STM工具链,实现STM32开发板上的LED灯闪烁功能。 2 工具链 2.1 硬件 STM32F103C8T6最小系统板 STM32F103C8T6最小系统板是基于STM32F103C8T6微控制器的开发…...
论文笔记(七十二)Reward Centering(一)
Reward Centering(一) 文章概括摘要1 奖励中心化理论 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…...
C#之上位机开发---------C#通信库及WPF的简单实践
〇、上位机,分层架构 界面层 要实现的功能: 展示数据 获取数据 发送数据 数据层 要实现的功能: 转换数据 打包数据 存取数据 通信层 要实现的功能: 打开连接 关闭连接 读取数据 写入数据 实体类 作用: 封装数据…...
使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频
如何使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频 声明 该播客仅提供实现思路,并非实际的方案记录,不要盲目照搬。 pjsua2库的安装会有较多问题,请参考本人之前的播客进行安装 pjsua2。 pjsua2 库具体的 api 说明请参考开源库内的 范例代码。 引言 在今天的…...
从函数到神经网络
所有一切的前提是,你要相信这个世界上的所有逻辑和知识,都可以用一个函数来表示。Functions describe the world ! 比如输入物体的质量和加速度,根据牛顿第二定律,就可以得到物体施加的力,这就是人工智能早期的思路&am…...
用自定义注解实现Excel数据导入中的枚举值校验
使用自定义注解实现Excel数据导入中的枚举值校验 在实际开发中,我们经常需要从Excel文件中导入数据,并且这些数据需要符合一定的规则,比如某些字段的值必须是预定义的枚举值。本文将介绍如何使用自定义注解来实现这一功能,以提高…...
网络安全技术pat实验 网络安全 实验
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络安全实验3 前言Kali 常用指令工具教程 ettercap 基本使用 一、口令破解 John the ripper 破解 linux 密码l0phtcrack7 破解 windows 密码John 破解 zip 压…...
【DOA估计】基于均匀圆阵相干信号二维doa估计Matlab实现
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
普通BO解映射为何不暂停队列
AMDGPU KFD 驱动中 SVM (Shared Virtual Memory) 范围 或 BO (Buffer Object) 在需要被驱逐 (evict) 或失效 (invalidate) 时,为何以及如何触发 进程级别 (per-process) 的用户队列 (user queue) 暂停 (quiesce) 与恢复 。那么“为什么一个普通的 BO 在 unmap 的时候…...
ARM架构CNTHVS_CTL_EL2寄存器详解与虚拟定时器应用
1. ARM架构中的CNTHVS_CTL_EL2寄存器解析在ARMv8-A架构中,系统寄存器扮演着处理器与操作系统间关键桥梁的角色。作为安全虚拟定时器的控制核心,CNTHVS_CTL_EL2寄存器在虚拟化环境中发挥着不可替代的作用。这个64位寄存器专为Secure EL2虚拟定时器设计&am…...
WVP-GB28181-Pro语音广播技术架构优化:海康设备媒体流传输稳定性深度解析
WVP-GB28181-Pro语音广播技术架构优化:海康设备媒体流传输稳定性深度解析 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的…...
在职 996 一战上岸 985MBA:我为什么劝你别自学,选墨石教育
32 岁,互联网公司中层,每天加班到八九点,下班还要兼顾家庭,毕业 10 年,数学英语早就还给了老师 —— 这是我去年决定备考 MBA 时,最真实的状态。和绝大多数在职备考的人一样,我一开始笃定 “自学…...
CL6291输出2A高效率升压DC/DC
概述 CL6291是一款微小型、高效率、升压型DC/DC调整器。电路由电流模PWM控制环路,误差放大器,斜波补偿电路,比较器和功率开关等模块组成。该芯片可在较宽负载范围内高效稳定的工作,可以从锂电池供电下直接输出高达12V的电压&#…...
从分子识别到信号放大:ELISA的核心逻辑与前沿突破
摘要:酶联免疫吸附测定技术作为现代生物医学研究的核心工具,在疾病诊断、药物分析和食品检测等领域发挥着不可替代的作用。本文系统阐述该技术的理论基础、方法学分类、关键影响因素及最新发展趋势,为相关领域的实验设计与结果分析提供参考框…...
KMS_VL_ALL_AIO:Windows和Office激活的终极智能解决方案
KMS_VL_ALL_AIO:Windows和Office激活的终极智能解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经因为Windows或Office的激活问题而感到困扰?面对复杂的…...
LiveAutoRecord技术深度解析:如何实现跨平台直播自动录制的模块化架构
LiveAutoRecord技术深度解析:如何实现跨平台直播自动录制的模块化架构 【免费下载链接】LiveAutoRecord 基于 Electron 的多平台直播自动录制软件 项目地址: https://gitcode.com/GitHub_Trending/li/LiveAutoRecord 在直播内容生态日益繁荣的今天࿰…...
OpCore Simplify:告别繁琐配置,5分钟打造完美黑苹果EFI
OpCore Simplify:告别繁琐配置,5分钟打造完美黑苹果EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为OpenCore配置的复…...
