药物靶点预测分析(分子对接/药效团/ADMET预测/网络药理学)¶
一句话概述¶
药物靶点预测分析是综合运用分子对接(AutoDock Vina)、药效团建模、ADMET性质预测和网络药理学方法,从计算层面系统性地预测和验证药物-靶点相互作用,评估药物成药性,并构建药物-靶点-疾病多层次调控网络的生物信息学分析体系。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 分子对接 | 模拟小分子与蛋白质的结合方式,预测结合亲和力 |
| AutoDock Vina | 开源分子对接软件,速度快且准确 |
| 结合自由能 | ΔG (kcal/mol),越负表示结合越稳定 |
| 药效团 | Pharmacophore,药物活性所需的空间化学特征组合 |
| ADMET | Absorption/Distribution/Metabolism/Excretion/Toxicity |
| 网络药理学 | 构建药物-靶点-疾病网络揭示多靶点多通路机制 |
| Lipinski规则 | 类药五规则,评估化合物口服生物利用度 |
| SMILES | 化合物的线性文本表示 |
| PDB | Protein Data Bank,蛋白质三维结构数据库 |
| AlphaFold | DeepMind蛋白质结构预测工具 |
| Swiss-Model | 同源建模服务器 |
| 虚拟筛选 | 利用计算方法从化合物库中筛选活性分子 |
各步骤详解¶
第一步:分子对接基本原理¶
白话解释: 分子对接就像"配钥匙"——把一个小分子(药物/配体)放到蛋白质(锁)的口袋里,看它能不能"插进去"并稳稳地"卡住"。计算机会尝试各种摆放方式(朝向和构象),然后给每种放法打分——分数越低(结合自由能越负),说明小分子与蛋白质结合越紧密,越可能是有效的药物。
技术细节: 分子对接的核心要素: 1. 受体(Receptor):蛋白质三维结构(来自PDB或AlphaFold预测) 2. 配体(Ligand):小分子药物的三维构象 3. 对接盒子(Grid Box):定义蛋白质上搜索结合位点的区域 4. 打分函数(Scoring Function):评估结合构象的好坏
AutoDock Vina打分函数考虑: - 氢键(hydrogen bond) - 疏水作用(hydrophobic interaction) - 范德华力(van der Waals) - 溶剂化效应(desolvation) - 扭转熵损失(torsional entropy penalty)
结合自由能判读: | ΔG (kcal/mol) | 结合强度 | 约对应Kd | |----------------|----------|----------| | < -9.0 | 极强 | < 1 nM | | -7.0 ~ -9.0 | 强 | 1-100 nM | | -5.0 ~ -7.0 | 中等 | 0.1-10 μM | | > -5.0 | 弱 | > 10 μM |
第二步:蛋白质靶点结构准备¶
白话解释: 做对接之前,首先需要获取蛋白质靶点的三维结构。优先使用实验解析的结构(来自PDB数据库),如果没有实验结构,可以用AlphaFold预测或同源建模。然后需要清理结构——去掉水分子、加氢原子、处理缺失残基等。
# ===== 从PDB下载蛋白结构 =====
# 下载PDB文件
wget https://files.rcsb.org/download/6LU7.pdb
# 6LU7是SARS-CoV-2 Main protease (Mpro)
# ===== AlphaFold预测结构 =====
# 如果PDB中没有目标蛋白结构
# 从AlphaFold DB下载
wget https://alphafold.ebi.ac.uk/files/AF-P0DTD1-F1-model_v4.pdb
# ===== 使用PyMOL准备蛋白 =====
# pymol命令
# load 6LU7.pdb
# remove solvent # 去水
# remove resn NAG+FUC+MAN # 去糖基
# h_add # 加氢
# save receptor_prepared.pdb
# ===== 使用Open Babel准备 =====
# 安装
conda install -c conda-forge openbabel
# PDB转PDBQT(AutoDock Vina需要的格式)
# 使用MGLTools/AutoDockTools更专业
# 安装ADFR suite (含prepare_receptor)
wget https://ccsb.scripps.edu/adfr/download/1038/
tar -xzf ADFRsuite_x86_64Linux_1.0.tar.gz
# 准备受体(去水、加氢、加电荷、转PDBQT)
prepare_receptor -r 6LU7.pdb -o receptor.pdbqt -A hydrogens
# ===== Python准备蛋白(使用MDAnalysis/BioPython) =====
from Bio.PDB import PDBParser, PDBIO, Select
import subprocess
# 解析PDB
parser = PDBParser()
structure = parser.get_structure("receptor", "6LU7.pdb")
# 只保留蛋白链(去除水和配体)
class ProteinOnly(Select):
def accept_residue(self, residue):
return residue.id[0] == " " # 只保留标准残基
io = PDBIO()
io.set_structure(structure)
io.save("receptor_clean.pdb", ProteinOnly())
# 使用Meeko准备受体(推荐用于Vina)
# pip install meeko
from meeko import MoleculePreparation, PDBQTWriterLegacy
# 或使用命令行
subprocess.run([
"prepare_receptor",
"-r", "receptor_clean.pdb",
"-o", "receptor.pdbqt",
"-A", "hydrogens"
])
第三步:配体准备与分子对接¶
白话解释: 准备好蛋白质后,还需要准备小分子药物的三维结构。可以从PubChem下载分子结构,或者手动画分子。然后定义对接搜索区域(告诉软件在蛋白的哪个部位找结合位点),运行对接程序。
# ===== 配体准备 =====
# 从PubChem下载SDF格式
wget "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/quercetin/SDF" -O quercetin.sdf
# SDF转PDBQT(使用Open Babel)
obabel quercetin.sdf -O quercetin.pdbqt --gen3d -h
# 或使用Meeko(推荐,更好的扭转角处理)
mk_prepare_ligand.py -i quercetin.sdf -o quercetin.pdbqt
# ===== AutoDock Vina对接 =====
# 安装Vina
conda install -c conda-forge vina
# 或下载二进制文件
# 配置文件 (config.txt)
cat > config.txt << 'EOF'
receptor = receptor.pdbqt
ligand = quercetin.pdbqt
center_x = -10.0
center_y = 15.0
center_z = 68.0
size_x = 20
size_y = 20
size_z = 20
exhaustiveness = 32
num_modes = 10
energy_range = 3
EOF
# 运行对接
vina --config config.txt --out docked_output.pdbqt --log docking_log.txt
# 查看结果
cat docking_log.txt
# mode | affinity | dist from best mode
# | (kcal/mol) | rmsd l.b.| rmsd u.b.
# -----+------------+----------+----------
# 1 -7.8 0.000 0.000
# 2 -7.5 1.234 2.456
# 3 -7.2 2.345 4.567
# ===== Python Vina接口(推荐) =====
from vina import Vina
# 创建Vina对象
v = Vina(sf_name="vina")
# 设置受体
v.set_receptor("receptor.pdbqt")
# 设置配体
v.set_ligand_from_file("quercetin.pdbqt")
# 设置对接盒子(基于共结晶配体位置或活性位点中心)
v.compute_vina_maps(
center=[-10.0, 15.0, 68.0],
box_size=[20, 20, 20]
)
# 对接
v.dock(exhaustiveness=32, n_poses=10)
# 获取结果
energies = v.energies()
print(f"Best binding energy: {energies[0][0]:.2f} kcal/mol")
# 保存对接构象
v.write_poses("docked_poses.pdbqt", n_poses=5, overwrite=True)
# ===== 批量对接(虚拟筛选) =====
import os
import pandas as pd
ligand_dir = "ligands_pdbqt/"
results = []
for lig_file in os.listdir(ligand_dir):
if lig_file.endswith(".pdbqt"):
v = Vina(sf_name="vina")
v.set_receptor("receptor.pdbqt")
v.set_ligand_from_file(os.path.join(ligand_dir, lig_file))
v.compute_vina_maps(center=[-10, 15, 68], box_size=[20, 20, 20])
v.dock(exhaustiveness=16, n_poses=5)
energy = v.energies()[0][0]
results.append({
"ligand": lig_file.replace(".pdbqt", ""),
"binding_energy": energy
})
# 排序结果
df = pd.DataFrame(results).sort_values("binding_energy")
df.to_csv("virtual_screening_results.csv", index=False)
print(df.head(20))
第四步:对接结果分析与可视化¶
白话解释: 对接完成后,需要分析药物和蛋白是怎么结合的——形成了哪些氢键、哪些疏水接触、涉及哪些关键氨基酸残基。这些信息帮助理解药物的作用机制,也为药物优化提供方向。
# ===== PLIP分析互作 =====
# Protein-Ligand Interaction Profiler
# pip install plip
from plip.structure.preparation import PDBComplex
# 准备复合物文件(蛋白+对接配体)
# 先用PyMOL或obabel合并蛋白和对接pose
my_mol = PDBComplex()
my_mol.load_pdb("complex.pdb")
my_mol.analyze()
for bsid, site in sorted(my_mol.interaction_sets.items()):
print(f"\n=== Binding Site: {bsid} ===")
print(f"Hydrogen bonds: {len(site.hbonds_ldon + site.hbonds_pdon)}")
print(f"Hydrophobic contacts: {len(site.hydrophobic_contacts)}")
print(f"Pi-stacking: {len(site.pistacking)}")
print(f"Salt bridges: {len(site.saltbridge_lneg + site.saltbridge_pneg)}")
for hbond in site.hbonds_pdon + site.hbonds_ldon:
print(f" H-bond: {hbond.resnr}{hbond.restype} - distance: {hbond.distance_ad:.2f}Å")
# ===== PyMOL可视化脚本 =====
pymol_script = """
load receptor.pdb, protein
load docked_poses.pdbqt, ligand
split_states ligand
delete ligand
# 只保留最佳构象
hide everything
show cartoon, protein
show sticks, ligand_0001
color cyan, ligand_0001
# 显示结合位点残基
select binding_site, protein within 4 of ligand_0001
show sticks, binding_site
color yellow, binding_site
# 显示氢键
distance hbonds, ligand_0001, binding_site, 3.5, mode=2
# 表面
show surface, protein
set surface_color, white
set transparency, 0.7
# 保存图片
ray 2400, 2400
png docking_result.png, dpi=300
"""
with open("visualize_docking.pml", "w") as f:
f.write(pymol_script)
# pymol visualize_docking.pml
第五步:ADMET预测¶
白话解释: 一个化合物能不能成为真正的药物,不仅看它和靶点结合得好不好,还要看它能不能被人体吸收、分布到目标器官、被代谢后是否有毒等。ADMET预测就是用计算方法提前评估这些"成药性"指标,淘汰那些虽然对接得好但不可能成药的分子。
技术细节: - A (Absorption):口服生物利用度、Caco-2渗透性、P-gp底物 - D (Distribution):血浆蛋白结合率、BBB通透性、组织分布 - M (Metabolism):CYP酶抑制/代谢、代谢稳定性 - E (Excretion):清除率、半衰期 - T (Toxicity):hERG抑制(心脏毒性)、肝毒性、致突变性
# ===== SwissADME (在线工具API化) =====
# http://www.swissadme.ch/
# 输入SMILES,获取ADME参数
# ===== ADMETlab 2.0 =====
# https://admetmesh.scbdd.com/
# ===== RDKit计算基本描述符 =====
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski, Draw
import pandas as pd
# 计算Lipinski类药五规则
def lipinski_filter(smiles):
mol = Chem.MolFromSmiles(smiles)
if mol is None:
return None
mw = Descriptors.ExactMolWt(mol)
logp = Descriptors.MolLogP(mol)
hbd = Descriptors.NumHDonors(mol)
hba = Descriptors.NumHAcceptors(mol)
tpsa = Descriptors.TPSA(mol)
rotatable = Descriptors.NumRotatableBonds(mol)
violations = 0
if mw > 500: violations += 1
if logp > 5: violations += 1
if hbd > 5: violations += 1
if hba > 10: violations += 1
return {
"MW": mw,
"LogP": logp,
"HBD": hbd,
"HBA": hba,
"TPSA": tpsa,
"RotatableBonds": rotatable,
"Lipinski_violations": violations,
"Drug_like": violations <= 1
}
# 批量计算
compounds = {
"Quercetin": "O=C1C(O)=C(OC2=CC(O)=CC(O)=C12)C1=CC(O)=C(O)C=C1",
"Aspirin": "CC(=O)OC1=CC=CC=C1C(O)=O",
"Metformin": "CN(C)C(=N)NC(=N)N"
}
results = []
for name, smiles in compounds.items():
props = lipinski_filter(smiles)
if props:
props["Name"] = name
props["SMILES"] = smiles
results.append(props)
df_admet = pd.DataFrame(results)
print(df_admet[["Name", "MW", "LogP", "HBD", "HBA", "TPSA", "Drug_like"]])
# ===== pkCSM在线预测 =====
# http://biosig.unimelb.edu.au/pkcsm/
# 支持批量SMILES输入,预测完整ADMET参数
# ===== DeepPurpose(深度学习ADMET) =====
# pip install DeepPurpose
# 使用预训练模型预测药物-靶点相互作用
第六步:网络药理学分析¶
白话解释: 网络药理学是从"系统"角度研究药物——一个药物(尤其是中药复方)可能同时作用于多个靶点,这些靶点涉及多条通路,共同影响疾病。通过构建"药物-靶点-疾病"网络,可以系统性地理解药物的多靶点多通路作用机制。
# ===== 网络药理学R语言流程 =====
library(clusterProfiler)
library(org.Hs.eg.db)
library(ggplot2)
# 步骤1:获取药物靶点
# 来源:SwissTargetPrediction, PharmMapper, SEA, STITCH
# 假设已获取药物靶点列表
drug_targets <- read.csv("drug_targets.csv") # 列:compound, target
# 步骤2:获取疾病靶点
# 来源:GeneCards, OMIM, DisGeNET, TTD
disease_targets <- read.csv("disease_targets.csv") # 列:gene, score
# 步骤3:取交集靶点
common_targets <- intersect(drug_targets$target, disease_targets$gene)
cat("共同靶点数:", length(common_targets), "\n")
# 步骤4:PPI网络构建(参见蛋白互作网络分析)
library(STRINGdb)
string_db <- STRINGdb$new(version = "12.0", species = 9606, score_threshold = 400)
mapped <- string_db$map(data.frame(gene = common_targets), "gene", removeUnmappedRows = TRUE)
ppi <- string_db$get_interactions(mapped$STRING_id)
# 步骤5:GO和KEGG富集分析
ego <- enrichGO(
gene = common_targets,
OrgDb = org.Hs.eg.db,
keyType = "SYMBOL",
ont = "BP",
pAdjustMethod = "BH",
qvalueCutoff = 0.05
)
ekegg <- enrichKEGG(
gene = bitr(common_targets, fromType = "SYMBOL", toType = "ENTREZID",
OrgDb = org.Hs.eg.db)$ENTREZID,
organism = "hsa",
pAdjustMethod = "BH"
)
# 可视化
dotplot(ego, showCategory = 20, title = "GO Enrichment")
dotplot(ekegg, showCategory = 20, title = "KEGG Enrichment")
# 步骤6:构建药物-靶点-通路网络
# 导出到Cytoscape
network_edges <- data.frame(
source = c(rep("Drug_A", length(common_targets)),
rep(common_targets, each = 1)),
target = c(common_targets,
rep("Disease_X", length(common_targets))),
type = c(rep("drug-target", length(common_targets)),
rep("target-disease", length(common_targets)))
)
write.csv(network_edges, "network_for_cytoscape.csv", row.names = FALSE)
第七步:药效团建模¶
白话解释: 药效团不是一个具体的分子,而是一组空间上的化学特征(如"这个位置需要一个氢键供体,那个位置需要一个疏水基团")。多个活性分子的共同特征就构成药效团模型——新分子如果也满足这些特征,就可能具有类似的药物活性。
# ===== RDKit药效团生成 =====
from rdkit import Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem.Pharm3D import Pharmacophore, EmbedLib
from rdkit.Chem import ChemicalFeatures
from rdkit import RDConfig
import os
# 加载药效团特征定义
fdefName = os.path.join(RDConfig.RDDataDir, 'BaseFeatures.fdef')
featFactory = ChemicalFeatures.BuildFeatureFactory(fdefName)
# 读取活性分子
mol = Chem.MolFromSmiles("O=C1C(O)=C(OC2=CC(O)=CC(O)=C12)C1=CC(O)=C(O)C=C1")
mol = Chem.AddHs(mol)
AllChem.EmbedMolecule(mol, AllChem.ETKDGv3())
# 提取药效团特征
feats = featFactory.GetFeaturesForMol(mol)
for feat in feats:
print(f"{feat.GetFamily()} at position {feat.GetPos()}")
# 输出如:Donor, Acceptor, Hydrophobe, Aromatic, etc.
# ===== 多分子药效团对齐 =====
# 需要多个已知活性分子来建立共同药效团
from rdkit.Chem import rdMolAlign
active_smiles = [
"O=C1C(O)=C(OC2=CC(O)=CC(O)=C12)C1=CC(O)=C(O)C=C1", # Quercetin
"O=C1C(O)=C(OC2=CC(O)=CC(O)=C12)C1=CC=C(O)C=C1", # Kaempferol
"OC1=CC(O)=C2C(=O)C(O)=C(OC2=C1)C1=CC(O)=C(O)C(O)=C1" # Myricetin
]
mols = [Chem.MolFromSmiles(s) for s in active_smiles]
mols = [Chem.AddHs(m) for m in mols]
[AllChem.EmbedMolecule(m, AllChem.ETKDGv3()) for m in mols]
# 对齐分子
ref_mol = mols[0]
for mol in mols[1:]:
AllChem.AlignMol(mol, ref_mol)
实战命令(可复制)¶
完整分子对接+ADMET+网络药理学流程¶
#!/bin/bash
# ============================================
# 药物靶点预测完整流程
# ============================================
# 1. 安装必要工具
conda create -n drug_discovery python=3.10
conda activate drug_discovery
pip install vina meeko rdkit numpy pandas
conda install -c conda-forge openbabel pymol-open-source
# 2. 下载蛋白结构
wget https://files.rcsb.org/download/6LU7.pdb -O receptor.pdb
# 3. 准备受体
prepare_receptor -r receptor.pdb -o receptor.pdbqt -A hydrogens
# 4. 准备配体(批量)
mkdir -p ligands_pdbqt
for sdf in ligands_sdf/*.sdf; do
name=$(basename $sdf .sdf)
mk_prepare_ligand.py -i $sdf -o ligands_pdbqt/${name}.pdbqt
done
# 5. 批量对接
mkdir -p docking_results
for lig in ligands_pdbqt/*.pdbqt; do
name=$(basename $lig .pdbqt)
vina --receptor receptor.pdbqt \
--ligand $lig \
--center_x -10 --center_y 15 --center_z 68 \
--size_x 20 --size_y 20 --size_z 20 \
--exhaustiveness 32 \
--out docking_results/${name}_docked.pdbqt \
--log docking_results/${name}_log.txt
done
# 6. 汇总结果
echo "Ligand,Binding_Energy" > docking_summary.csv
for log in docking_results/*_log.txt; do
name=$(basename $log _log.txt)
energy=$(grep "^ 1" $log | awk '{print $2}')
echo "$name,$energy" >> docking_summary.csv
done
sort -t',' -k2 -n docking_summary.csv
面试常问点¶
Q1: AutoDock Vina的打分函数原理是什么?¶
A: Vina使用经验打分函数,包含5项:(1) 高斯引力项(原子间吸引);(2) 高斯排斥项(原子重叠惩罚);(3) 氢键项;(4) 疏水相互作用项;(5) 扭转自由度惩罚(配体柔性越大,熵损失越大)。Vina通过对实验数据(PDBbind数据集)拟合参数权重。相比AutoDock 4,Vina速度快10-100倍且对接精度相当或更好,因为使用了iterated local search global optimizer。
Q2: 分子对接的盒子(Grid Box)大小怎么确定?¶
A: 确定方法:(1) 如果有已知共结晶配体,以配体质心为中心,盒子大小=配体最大跨度+10-15Å margin;(2) 如果没有共结晶配体,使用活性位点预测工具(DoGSiteScorer, fpocket, P2Rank)找口袋位置;(3) 盲对接时覆盖整个蛋白表面(但准确率低)。盒子太小会遗漏正确构象,太大则增加搜索空间和假阳性。通常20×20×20Å足够容纳一个小分子。
Q3: 结合自由能-7 kcal/mol是否意味着该化合物可以成为药物?¶
A: 不能直接这样判断。首先,Vina的打分有约2 kcal/mol的误差,-7 kcal/mol可能实际是-5到-9。其次,好的结合力只是成药的必要条件之一,还需满足:(1) ADMET性质可接受(Lipinski规则等);(2) 选择性——不能与太多其他蛋白非特异性结合;(3) 代谢稳定性;(4) 体内药效验证。很多对接得分很好的分子最终因ADMET问题而失败。
Q4: 网络药理学分析的核心步骤是什么?¶
A: (1) 获取药物活性成分和其潜在靶点(SwissTargetPrediction/PharmMapper);(2) 获取疾病相关靶点(GeneCards/DisGeNET/OMIM);(3) 取交集获得共同靶点;(4) 构建PPI网络并筛选Hub基因;(5) GO/KEGG富集分析揭示作用通路;(6) 构建药物-成分-靶点-通路-疾病多层次网络并在Cytoscape中可视化;(7) 分子对接验证关键靶点的结合可行性。
Q5: Lipinski类药五规则是什么?有什么局限性?¶
A: 五规则:分子量≤500Da, LogP≤5, 氢键供体≤5, 氢键受体≤10。满足这些的化合物更可能有好的口服吸收。局限性:(1) 只适用于口服小分子,不适用于注射剂、天然产物、肽等;(2) 很多上市药物违反规则(如大环内酯类抗生素);(3) 过于简化,不能替代详细的ADMET评估;(4) "beyond Rule of 5"空间(分子量500-1000)有越来越多成功药物。
Q6: 如何提高分子对接结果的可靠性?¶
A: (1) 使用高分辨率晶体结构(<2.5Å);(2) 对接前重新对接已知配体验证(re-docking,RMSD<2Å为成功);(3) 增加exhaustiveness参数;(4) 考虑蛋白柔性(induced fit docking);(5) 使用多种打分函数交叉验证(consensus scoring);(6) MD模拟验证对接构象的稳定性;(7) 实验验证(SPR、ITC、活性测试)。
Q7: 中药网络药理学研究有哪些常见问题?¶
A: (1) 成分来源不可靠——TCMSP等数据库更新不及时;(2) 靶点预测假阳性高——SwissTargetPrediction预测的靶点很多未经验证;(3) 分析流程千篇一律——缺乏实验验证和机制深入;(4) 过度解读——交集靶点多不代表机制明确;(5) 忽略成分的体内吸收和代谢——很多成分可能口服后根本无法到达靶点。
易错点¶
1. 蛋白结构没有做充分准备¶
问题: 直接用从PDB下载的原始文件对接,没有去水、去共结晶配体、修复缺失残基、加氢等。导致对接结果不准。 解决: 严格执行受体准备:去除水分子和小分子配体、修复缺失loop(用MODELLER/Swiss-Model)、加氢原子并优化氢原子位置、检查质子化状态(H++服务器)。
2. 对接盒子位置错误¶
问题: 盒子没有覆盖正确的活性位点,导致对接到蛋白表面的非活性区域。 解决: 优先以共结晶配体为参考设置盒子。如无参考,使用fpocket/DoGSiteScorer预测口袋。对接后检查结合构象是否在合理的口袋内。
3. 把对接分数直接当作实验亲和力¶
问题: Vina打分的绝对值不能直接等同于实验测定的Kd。不同靶点间的分数也不能直接比较。 解决: 对接分数只用于同一靶点内不同配体的相对排名。不同靶点间需要独立做re-docking验证。报告时说"结合自由能"而非"亲和力"。
4. 网络药理学靶点来源太杂导致假阳性¶
问题: 从多个数据库合并靶点时不做可信度过滤,纳入大量低可信度预测靶点。 解决: 对每个靶点来源设置阈值(如SwissTargetPrediction probability>0.7, PharmMapper z-score>1.5),并优先使用有实验支持的靶点。
5. ADMET预测工具结果不一致时随意选择¶
问题: 不同ADMET预测工具(SwissADME vs pkCSM vs ADMETlab)对同一分子的预测可能矛盾。 解决: 使用多种工具的共识预测(consensus)。如果多数工具预测某项有问题,则认为有问题。报告时注明使用的工具和标准。
补充知识¶
常用数据库汇总¶
| 类别 | 数据库 | 网址 |
|---|---|---|
| 蛋白结构 | PDB | rcsb.org |
| 结构预测 | AlphaFold DB | alphafold.ebi.ac.uk |
| 药物信息 | DrugBank | drugbank.com |
| 化合物 | PubChem | pubchem.ncbi.nlm.nih.gov |
| 疾病靶点 | GeneCards | genecards.org |
| 疾病靶点 | DisGeNET | disgenet.org |
| 靶点预测 | SwissTargetPrediction | swisstargetprediction.ch |
| ADMET | SwissADME | swissadme.ch |
| 中药 | TCMSP | tcmsp-e.com |
| 互作网络 | STRING | string-db.org |
分子动力学模拟(对接后验证)¶
对接给出的是静态结合构象,分子动力学(MD)模拟可以验证这个构象在真实物理条件下是否稳定: - GROMACS/AMBER/NAMD运行50-100ns MD - 分析RMSD(配体位置稳定性) - 计算MM-PBSA/MM-GBSA结合自由能 - 分析氢键持久性和关键互作