[ PROMPT_NODE_26806 ]
medchem
[ SKILL_DOCUMENTATION ]
# 药物化学 (Medchem)
## 概述
Medchem 是一个用于药物研发工作流中分子筛选和优先级排序的 Python 库。通过应用数百种成熟及创新的分子过滤器、结构警示和药物化学规则,高效地对化合物库进行分类和优先级排序。规则和过滤器具有上下文相关性——请结合领域专业知识作为参考使用。
## 何时使用此技能
当需要进行以下操作时使用此技能:
- 将药物相似性规则(Lipinski, Veber 等)应用于化合物库
- 通过结构警示或 PAINS 模式过滤分子
- 为先导化合物优化进行优先级排序
- 评估化合物质量和药物化学性质
- 检测活性或有问题的官能团
- 计算分子复杂性指标
## 安装
bash
uv pip install medchem
## 核心能力
### 1. 药物化学规则
使用 `medchem.rules` 模块将成熟的药物相似性规则应用于分子。
**可用规则:**
- 五规则 (Lipinski)
- Oprea 规则
- CNS 规则
- 类先导规则 (软性和严格)
- 三规则
- Reos 规则
- 药物规则
- Veber 规则
- 黄金三角
- PAINS 过滤器
**单规则应用:**
python
import medchem as mc
# 将五规则应用于 SMILES 字符串
smiles = "CC(=O)OC1=CC=CC=C1C(=O)O" # 阿司匹林
passes = mc.rules.basic_rules.rule_of_five(smiles)
# 返回:True
# 检查特定规则
passes_oprea = mc.rules.basic_rules.rule_of_oprea(smiles)
passes_cns = mc.rules.basic_rules.rule_of_cns(smiles)
**使用 RuleFilters 应用多条规则:**
python
import datamol as dm
import medchem as mc
# 加载分子
mols = [dm.to_mol(smiles) for smiles in smiles_list]
# 创建包含多条规则的过滤器
rfilter = mc.rules.RuleFilters(
rule_list=[
"rule_of_five",
"rule_of_oprea",
"rule_of_cns",
"rule_of_leadlike_soft"
]
)
# 并行应用过滤器
results = rfilter(
mols=mols,
n_jobs=-1, # 使用所有 CPU 核心
progress=True
)
**结果格式:**
结果以字典形式返回,包含每条规则的通过/失败状态及详细信息。
### 2. 结构警示过滤器
使用 `medchem.structural` 模块检测潜在有问题的结构模式。
**可用过滤器:**
1. **常见警示** - 源自 ChEMBL 策展和文献的通用结构警示
2. **NIBR 过滤器** - 诺华生物医学研究所过滤器集
3. **Lilly