解析DrugBank數據庫數據|Python

一、DrugBank 數據庫簡介

DrugBank?是一個綜合性的生物信息學和化學信息學數據庫,專門收錄藥物和靶點的詳細信息。它由加拿大阿爾伯塔大學的 Wishart 研究組 維護,提供化學、藥理學、相互作用、代謝、靶點等多方面的藥物數據。DrugBank 結合了實驗數據和計算預測,廣泛應用于藥物研發、精準醫療、生物信息學研究等領域。

二、下載公開的數據

DrugBank 提供了多種方式下載其數據庫,包括 免費的開放數據需要許可的完整數據庫。如果需要完整的 DrugBank 數據(包括所有藥物、靶點、相互作用等),則需要 注冊賬戶并申請許可申請頁面:DrugBank Release Version 5.1.13 | DrugBank Online

申請步驟

  1. 創建 DrugBank 賬戶:注冊頁面
  2. 選擇許可類型
    • Academic License(學術許可,免費):用于非商業科研,如生物信息學研究、論文分析等。
    • Commercial License(商業許可,收費):適用于制藥公司、AI 藥物研發等商業用途。
  3. 提交申請,等待 DrugBank 審核。
  4. 批準后,可下載完整數據庫(通常為 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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71415.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71415.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLOv11-ultralytics-8.3.67部分代碼閱讀筆記-dataset.py

dataset.py ultralytics\data\dataset.py 目錄 dataset.py 1.所需的庫和模塊 2.class YOLODataset(BaseDataset): 3.class YOLOMultiModalDataset(YOLODataset): 4.class GroundingDataset(YOLODataset): 5.class YOLOConcatDataset(ConcatDataset): 6.class Sema…

LeetCode - 18 四數之和

題目來源 18. 四數之和 - 力扣(LeetCode) 題目描述 給你一個由 n 個整數組成的數組 nums ,和一個目標值 target 。請你找出并返回滿足下述全部條件且不重復的四元組 [nums[a], nums[b], nums[c], nums[d]] (若兩個四元組元素一一…

pt100 2線和3線的區別?

3線比2線更穩定一些; 在電路中,b和c是不連接在一起的; 測試的時候,b和c是接在一起的,也就是說pt100中b和c是連接在一起的 3線比2線多一個反饋; 平時測試的時候,測試一下ab或者ac 都是一樣的…

使用QT讀取文件,生成json文件

前言: 最近我遇到了一個需要讀取本地文件生成json文件的問題,在這里分享下如何在qt中寫一個生成json的程序當然也可以使用一些可視化的工具來寫json文件(比如:notepad–,還有一些ide都可以),但未免太過于麻煩本文會以一個以qmake…

國產編輯器EverEdit -告別東找西找!一鍵打開當前文件所在目錄!

1 文件操作 2 應用場景 在文件編輯過程中,有時需要對文件進行一些操作,比如:在命令窗口輸入文件路徑、文件名,進入到文件目錄,對文件進行壓縮等,如果沒有直達命令,用戶需要通過文件管理器找到目…

【Docker】百度網盤:基于VNC的Web訪問及后臺下載

本教程通過 Docker Compose 部署百度網盤的 VNC 版本,實現24小時不間斷下載、雙模式訪問、數據持久化、自動重啟和安全加密控制等核心功能。 目錄結構規劃 建議使用以下目錄結構(可根據實際情況調整): ~/baidunetdisk/├── d…

立創實戰派ESP32-S3燒錄小智AI指南

小智 AI 聊天機器人-開源項目介紹 本項目是一個開源項目,主要用于教學目的。我們希望通過這個項目,能夠幫助更多人入門 AI 硬件開發,了解如何將當下飛速發展的大語言模型應用到實際的硬件設備中。無論你是對 AI 感興趣的學生,還是…

【設計模式】【創建型模式】原型模式(Prototype)

👋hi,我不是一名外包公司的員工,也不會偷吃茶水間的零食,我的夢想是能寫高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 歡迎點贊、收藏、關注,跟上我的更新節奏 🎵 當你的天空突…

Weblogic 反序列化漏洞深度剖析與復現

目錄 一、引言 二、Weblogic 反序列化漏洞原理 (一)什么是反序列化 (二)Weblogic 反序列化漏洞產生機制 三、Weblogic 反序列化漏洞危害 四、Weblogic 反序列化漏洞復現 (一)復現環境準備 &#xff…

2025年02月19日Github流行趨勢

項目名稱:OmniParser 項目地址url:https://github.com/microsoft/OmniParser 項目語言:Jupyter Notebook 歷史star數:12878 今日star數:2153 項目維護者:yadong-lu, ThomasDh-C, aliencaocao, nmstoker, kr…

深入解析 iOS 視頻錄制(三):完整錄制流程的實現與整合

深入解析 iOS 視頻錄制(一):錄制管理核心MWRecordingController 類的設計與實現 深入解析iOS視頻錄制(二):自定義UI的實現??????? 深入解析 iOS 視頻錄制(三):完…

基于豆瓣2025電影數據可視化分析系統的設計與實現

??本項目旨在通過對豆瓣電影數據進行綜合分析與可視化展示,構建一個基于Python的大數據可視化系統。通過數據爬取收集、清洗、分析豆瓣電影數據,我們提供了一個全面的電影信息平臺,為用戶提供深入了解電影產業趨勢、影片評價與演員表現的工…

tcp協議連接,和傳輸數據

1、連接 這個是通用的 2、傳送數據 當連接建立后,客戶端和服務器都可以主動發送數據,分別如下 1》客戶端先發送數據 這里是單向的,服務器沒有對客戶端的數據內容進行應答,只是單純的對報文應答ack 2》服務器先發送數據

2024年國賽高教杯數學建模C題農作物的種植策略解題全過程文檔及程序

2024年國賽高教杯數學建模 C題 農作物的種植策略 原題再現 根據鄉村的實際情況,充分利用有限的耕地資源,因地制宜,發展有機種植產業,對鄉村經濟的可持續發展具有重要的現實意義。選擇適宜的農作物,優化種植策略&…

鴻蒙開發:V2版本裝飾器之@Monitor裝飾器

前言 本文代碼案例基于Api13。 隨著官方的迭代,在新的Api中,對于新的應用開發,官方已經建議直接使用V2所屬的裝飾器進行開發了,所以,能上手V2的盡量上手V2吧,畢竟,V2是V1的增強版本,…

國產編輯器EverEdit - 獨門暗器:自動監視剪貼板內容

1 監視剪貼板 1.1 應用場景 如果需要對剪貼板的所有歷史進行記錄,并進行分析和回顧,則可以使用監視剪貼板功能,不僅在EverEdit中的復制會記錄,在其他應用的復制也會記錄。 1.2 使用方法 新建一個空文檔(重要:防止擾亂…

pdf轉換成word在線 簡單好用 支持批量轉換 效率高 100%還原

pdf轉換成word在線 簡單好用 支持批量轉換 效率高 100%還原 在數字化辦公的浪潮中,文檔格式轉換常常讓人頭疼不已,尤其是 PDF 轉 Word 的需求極為常見。PDF 格式雖然方便閱讀和傳輸,但難以編輯,而 Word 格式卻能靈活地進行內容修…

深入探索C語言中的字符串處理函數:strstr與strtok

在C語言的字符串處理領域, strstr 和 strtok 是兩個非常重要的函數,它們各自承擔著獨特的功能,為開發者處理字符串提供了強大的支持。 一、strstr函數:字符串查找的利器 strstr 函數用于在一個字符串中查找另一個字符串的首次出現…

AIGC(生成式AI)試用 21 -- Python調用deepseek API

1. 安裝openai pip3 install openai########################## Collecting openaiUsing cached openai-1.61.1-py3-none-any.whl.metadata (27 kB) Collecting anyio<5,>3.5.0 (from openai)Using cached anyio-4.8.0-py3-none-any.whl.metadata (4.6 kB) Collecting d…

關于使用雪花算法生成唯一ID,返回給前端ID不一致的問題

問題 在某個項目中,使用雪花算法生成的唯一ID,從數據庫查詢到數據后返回給前端,但是前端接受到的數據ID和數據庫原先生成的不一致 但是前端展示的數據: 原因 原因是后端使用Long類型來存儲雪花算法生成的ID,但是這個數值已經超過前端數值類型的范圍,導致前端在存儲這個數值…