用途:medchem 是面向药物发现流程的 Python 分子过滤与化合物优先级排序库,用于对化合物库进行大规模分类、筛选和优先级判断。适用场景包括应用成药性规则、按结构警报或 PAINS 模式过滤、为先导化合物优化排序、评估化合物质量与药化性质、检测反应性官能团、计算分子复杂度。
主要能力:medchem.rules 提供多种规则,如 Rule of Five(Lipinski)、Rule of Oprea、Rule of CNS、Rule of leadlike(软/严格)、Rule of three、Rule of Reos、Rule of drug、Rule of Veber、Golden triangle、PAINS filters,支持单条规则和 RuleFilters 多规则组合。medchem.structural 提供 Common Alerts、NIBR Filters、Lilly Demerits(275 条规则,超过 100 demerits 拒绝)。medchem.groups 检测 hinge binders、phosphate binders、Michael acceptors、反应性基团及自定义 SMARTS。medchem.catalogs 提供官能团、保护基、常用试剂、标准片段等命名目录。medchem.complexity 计算 Bertz、Whitlock、Barone 复杂度,并支持按阈值过滤。medchem.constraints 支持分子量、LogP、TPSA、可旋转键等自定义约束。medchem.query 提供查询语言表达组合条件。
使用方式:安装命令为 uv pip install medchem。基本用法是导入 medchem as mc,结合 datamol 将 SMILES 转为分子对象后调用各过滤器;对大批量(超过 1000 个分子)可设置 n_jobs=-1 并行处理,结果以字典形式返回通过/失败及各规则详情。脚本 scripts/filter_molecules.py 支持 CSV、SDF、SMILES 输入和可配置过滤组合,例如 python scripts/filter_molecules.py input.csv --rules rule_of_five,rule_of_cns --alerts nibr --output filtered.csv。
限制:规则与过滤器具有场景依赖性,应作为指南并结合领域知识使用;已上市药物常不满足标准过滤条件,前药可能有意违反规则,过滤结果需谨慎验证并记录筛选依据。官方文档见 https://medchem-docs.datamol.io/ ,代码仓库见 https://github.com/datamol-io/medchem 。