Bohrium
robot
新建

空间站广场

科学导航
Notebooks
比赛
课程
Apps
镜像市场
实验室
Uni-Lab
我的主页
我的Notebooks
我的知识库
我的足迹

我的工作空间

任务
节点
镜像
文件
数据集
项目
数据库
公开
药物相互作用预测--数据加载
Machine Learning
化学信息学
Machine Learning化学信息学
zzh
更新于 2025-01-09
推荐镜像 :Basic Image:ubuntu22.04-py3.10-irkernel-r4.4.1
推荐机型 :c2_m4_cpu
赞 1
DrugBank 数据集的下载方式
Tox21数据集的下载方式
使用 ECFP 特征化方法加载并划分数据

本场景场景案例采用DrugBank数据集和Tox21数据集。

代码
文本

DrugBank 数据集的下载方式

您可以通过以下步骤获取 DrugBank 数据集:

  1. 访问 DrugBank 官方网站:前往 DrugBank 数据库 的官方网站。

  2. 创建账户:在网站上注册一个免费账户。注册完成后,登录您的账户。

  3. 申请学术许可:如果您是学术研究人员,DrugBank 提供免费的学术许可。在登录后,前往 数据包页面,选择适合您的数据包,并按照页面提示申请学术许可。申请可能需要一些时间进行审核。

  4. 下载数据集:获得许可后,您可以在上述页面下载所需的 DrugBank 数据集。数据通常以 XML 或 TSV 格式提供,包含详细的药物信息、分子特性和相互作用数据。

  5. 解析数据:下载的数据可能需要使用特定的工具进行解析。例如,您可以使用 Python 的 ElementTree 模块来解析 XML 文件,并提取所需的信息。

请注意,DrugBank 数据的使用受其许可协议的约束。在使用数据之前,务必阅读并遵守相关的使用条款和条件。

此外,DrugBank 数据库是一个综合性的生物信息学和化学信息学资源,结合了详细的药物数据和全面的药物靶标信息。最新版本的 DrugBank 包含超过 13,000 个药物条目,包括经批准的小分子药物、生物技术药物、营养品和实验药物。每个条目包含丰富的化学、药理学和药物靶标数据,可用于药物发现和开发研究。

代码
文本
[7]
# DrugBank 分子结构数据集下载
import os
import zipfile
import requests
from rdkit import Chem

# 设置下载链接和认证信息
url = "https://go.drugbank.com/releases/5-1-13/downloads/all-structures"
username = "youremail" # 替换为你在DrugBank网站上的注册账号
password = "your password" # 替换为实际密码
output_zip = "drugbank_all_structures.sdf.zip"
output_sdf = "structures.sdf"

# 下载文件
print("Downloading file from DrugBank...")
response = requests.get(url, auth=(username, password), stream=True)

if response.status_code == 200:
with open(output_zip, "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"File downloaded successfully: {output_zip}")
else:
print(f"Failed to download file. Status code: {response.status_code}")
response.raise_for_status()

# 解压文件
print("Extracting the SDF file...")
try:
with zipfile.ZipFile(output_zip, "r") as zip_ref:
zip_ref.extractall(".")
print("Extraction completed.")
except zipfile.BadZipFile:
print("Error: The downloaded file is not a valid zip archive.")
exit()

# 加载解压的 SDF 文件并显示前五个分子
if os.path.exists(output_sdf):
print("Loading and displaying the first five molecules from the SDF file...\n")
supplier = Chem.SDMolSupplier(output_sdf)
for i, mol in enumerate(supplier):
if mol is None:
print(f"Molecule {i + 1}: Failed to parse.\n")
continue
print(f"Molecule {i + 1}:")
print(f" - Name: {mol.GetProp('_Name')}")
print(f" - Number of Atoms: {mol.GetNumAtoms()}")
print(f" - SMILES: {Chem.MolToSmiles(mol)}\n")
if i == 4: # 只显示前五个分子
break
else:
print(f"Error: Extracted SDF file not found: {output_sdf}")

Downloading file from DrugBank...
File downloaded successfully: drugbank_all_structures.sdf.zip
Extracting the SDF file...
Extraction completed.
Loading and displaying the first five molecules from the SDF file...

Molecule 1:
  - Name: 
  - Number of Atoms: 155
  - SMILES: CC[C@H](C)[C@H](NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(=O)O)NC(=O)CNC(=O)[C@H](CC(N)=O)NC(=O)CNC(=O)CNC(=O)CNC(=O)CNC(=O)[C@@H]1CCCN1C(=O)[C@H](CCCNC(=N)N)NC(=O)[C@@H]1CCCN1C(=O)[C@H](N)Cc1ccccc1)C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CC(C)C)C(=O)O

Molecule 2:
  - Name: [NO NAME]
  - Number of Atoms: 91
  - SMILES: CC(C)C[C@H](NC(=O)[C@@H](COC(C)(C)C)NC(=O)[C@H](Cc1ccc(O)cc1)NC(=O)[C@H](CO)NC(=O)[C@H](Cc1c[nH]c2ccccc12)NC(=O)[C@H](Cc1cnc[nH]1)NC(=O)[C@@H]1CCC(=O)N1)C(=O)N[C@@H](CCCN=C(N)N)C(=O)N1CCC[C@H]1C(=O)NNC(N)=O

Molecule 3:
  - Name: 
  - Number of Atoms: 131
  - SMILES: CC(C)C[C@@H](NC(=O)CNC(=O)[C@@H](NC=O)C(C)C)C(=O)N[C@@H](C)C(=O)N[C@@H](C(=O)N[C@H](C(=O)N[C@@H](C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)N[C@H](CC(C)C)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)N[C@H](CC(C)C)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)N[C@H](CC(C)C)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)NCCO)C(C)C)C(C)C)C(C)C

Molecule 4:
  - Name: 
  - Number of Atoms: 74
  - SMILES: N=C(N)NCCC[C@@H](NC(=O)[C@@H]1CCCN1C(=O)[C@@H]1CSSCCC(=O)N[C@@H](Cc2ccc(O)cc2)C(=O)N[C@@H](Cc2ccccc2)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CC(N)=O)C(=O)N1)C(=O)NCC(N)=O

Molecule 5:
  - Name: 
  - Number of Atoms: 102
  - SMILES: CC(=O)N[C@H](Cc1ccc2ccccc2c1)C(=O)N[C@H](Cc1ccc(Cl)cc1)C(=O)N[C@H](Cc1cccnc1)C(=O)N[C@@H](CO)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@H](CCCNC(N)=O)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N1CCC[C@H]1C(=O)N[C@H](C)C(N)=O

代码
文本

Tox21数据集的下载方式

代码
文本
[3]
pip install deepchem torch tensorflow jax
已隐藏输出
代码
文本
[ ]
import pandas as pd

# Tox21 数据集的原始 CSV 文件地址
tox21_url = "https://deepchemdata.s3-us-west-1.amazonaws.com/datasets/tox21.csv.gz"

# 加载数据集
tox21_data = pd.read_csv(tox21_url)

# 查看数据集的前五行
print("Tox21 Dataset (first 5 rows):")
print(tox21_data.head())
print(tox21_data.info)
代码
文本
[15]
print("Column names in the Tox21 dataset:")
print(tox21_data.columns.tolist())
Column names in the Tox21 dataset:
['NR-AR', 'NR-AR-LBD', 'NR-AhR', 'NR-Aromatase', 'NR-ER', 'NR-ER-LBD', 'NR-PPAR-gamma', 'SR-ARE', 'SR-ATAD5', 'SR-HSE', 'SR-MMP', 'SR-p53', 'mol_id', 'smiles']
代码
文本

以下是 Tox21 数据集中各列的说明:

核受体(Nuclear Receptor, NR)列 这些列描述核受体(NR)相关的毒性任务结果,测定化合物对特定核受体的活性影响。

  1. NR-AR:

    • Androgen Receptor (雄激素受体) 的活性测试结果。
    • 用于评估化合物是否对雄激素受体有干扰。
  2. NR-AR-LBD:

    • Androgen Receptor Ligand Binding Domain (雄激素受体配体结合域) 的测试结果。
    • 测定化合物与该受体结合的能力。
  3. NR-AhR:

    • Aryl Hydrocarbon Receptor (芳香族烃受体) 的测试结果。
    • 主要与毒性和肝脏代谢相关。
  4. NR-Aromatase:

    • Aromatase (芳香化酶) 的测试结果。
    • 测定化合物是否干扰芳香化酶(与激素代谢相关)。
  5. NR-ER:

    • Estrogen Receptor (雌激素受体) 的测试结果。
    • 用于评估化合物是否与雌激素受体相互作用。
  6. NR-ER-LBD:

    • Estrogen Receptor Ligand Binding Domain (雌激素受体配体结合域) 的测试结果。
    • 测定化合物是否能与雌激素受体结合。
  7. NR-PPAR-gamma:

    • Peroxisome Proliferator-Activated Receptor Gamma (过氧化物酶体增殖激活受体伽马) 的测试结果。
    • 该受体与代谢调节、脂质代谢等有关。

应激反应(Stress Response, SR)列 这些列描述应激反应(SR)相关的毒性任务结果,测定化合物对细胞生物学过程的影响。

  1. SR-ARE:

    • Antioxidant Response Element (抗氧化应答元件) 的测试结果。
    • 测定化合物是否触发细胞的抗氧化应答。
  2. SR-ATAD5:

    • ATAD5 (DNA 修复相关基因) 的测试结果。
    • 用于评估化合物是否引发 DNA 损伤修复反应。
  3. SR-HSE:

    • Heat Shock Element (热冲击元件) 的测试结果。
    • 测定化合物是否触发细胞热冲击蛋白的表达。
  4. SR-MMP:

    • Mitochondrial Membrane Potential (线粒体膜电位) 的测试结果。
    • 测定化合物是否对线粒体功能造成影响。
  5. SR-p53:

    • p53 (肿瘤抑制因子) 的测试结果。
    • 测定化合物是否影响 p53 基因的激活,与细胞周期和癌症相关。

其他列 13. mol_id: - 分子的唯一标识符(ID)。 - 用于区分不同的化合物。

  1. smiles:
    • 分子结构的 SMILES 表示(Simplified Molecular Input Line Entry System)。
    • 用于描述分子的化学结构。

标签说明

  • 1.0: 表示阳性结果(化合物对目标有显著影响)。
  • 0.0: 表示阴性结果(化合物对目标无显著影响)。
  • NaN: 表示未测定或数据缺失。

代码
文本

使用 ECFP 特征化方法加载并划分数据

参考网址https://deepchem.readthedocs.io/en/latest/api_reference/moleculenet.html

代码
文本
[12]
import deepchem as dc

# 加载 Tox21 数据集
tasks, datasets, transformers = dc.molnet.load_tox21(
featurizer="ECFP", # 使用 ECFP 特征化方法
splitter="scaffold", # 使用分子骨架分割方式
transformers=["balancing"], # 应用平衡变换器
reload=True, # 如果有缓存则重载数据
)

# 拆分数据集
train_dataset, val_dataset, test_dataset = datasets

# 打印数据集基本信息
print(f"Number of tasks: {len(tasks)}")
print(f"Number of training samples: {len(train_dataset)}")
print(f"Number of validation samples: {len(val_dataset)}")
print(f"Number of test samples: {len(test_dataset)}")

# 示例:访问特征和标签
X_train, y_train = train_dataset.X, train_dataset.y
X_val, y_val = val_dataset.X, val_dataset.y
X_test, y_test = test_dataset.X, test_dataset.y

print(f"Shape of training features: {X_train.shape}")
print(f"Shape of training labels: {y_train.shape}")

Number of tasks: 12
Number of training samples: 6258
Number of validation samples: 782
Number of test samples: 783
Shape of training features: (6258, 1024)
Shape of training labels: (6258, 12)
代码
文本
[13]
# 打印前五行特征和标签信息
print("First 5 samples in training dataset:")
for i in range(5):
print(f"Sample {i+1}:")
print(f"Features: {X_train[i]}") # ECFP 特征
print(f"Labels: {y_train[i]}") # 对应的标签信息
First 5 samples in training dataset:
Sample 1:
Features: [0. 0. 0. ... 0. 0. 0.]
Labels: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Sample 2:
Features: [0. 0. 0. ... 0. 0. 0.]
Labels: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Sample 3:
Features: [0. 1. 0. ... 0. 0. 0.]
Labels: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Sample 4:
Features: [0. 0. 0. ... 0. 0. 0.]
Labels: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Sample 5:
Features: [0. 1. 0. ... 0. 0. 0.]
Labels: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
代码
文本
[ ]

代码
文本
Machine Learning
化学信息学
Machine Learning化学信息学
已赞1
{/**/}