用途:Medchem 是面向药物发现的 Python 分子过滤与优先级排序库,用于对化合物库进行大规模成药性筛选、结构警报检测和化学基团识别。
主要能力:提供 mc.rules 成药性规则(rule_of_five、rule_of_three、rule_of_oprea、rule_of_cns、rule_of_leadlike_soft/strict、rule_of_veber、rule_of_reos、rule_of_drug、golden_triangle、pains_filter);mc.structural 结构警报(CommonAlertsFilters、NIBRFilters、LillyDemeritsFilters);mc.groups.ChemicalGroup 检测 hinge_binders、phosphate_binders、michael_acceptors、reactive_groups 及自定义 SMARTS;mc.catalogs 命名目录;mc.complexity 复杂度(bertz、whitlock、barone);mc.constraints 属性约束(MW、LogP、TPSA、可旋转键等);mc.query 布尔查询语言;mc.functional 快捷函数与 mc.utils 工具。所有过滤器支持 n_jobs 并行与 progress 进度显示。
使用方式:先安装 pip install medchem datamol(依赖 RDKit),用 datamol.to_mol() 将 SMILES 转为 RDKit Chem.Mol 对象,再调用各过滤器。例如 mc.rules.RuleFilters(rule_list=["rule_of_five"])(mols=mols, n_jobs=-1)。不同过滤器返回格式不同:RuleFilters 返回 dict,NIBRFilters 返回 bool,LillyDemeritsFilters 返回含 demerits/passes 的 dict。
适用场景:初始筛选、hit-to-lead、先导优化、CNS 靶点、片段筛选等不同阶段的化合物库分诊,可结合 ML 打分做预过滤。
限制:规则仅为指导,约 10% 上市药物违反 Ro5,天然产物、抗生素、PROTAC、前药常为例外;需结合领域知识,避免盲目过滤,并记录过滤决策。SMILES/SDF 解析、描述符与指纹请用 rdkit-cheminformatics,高层分子操作用 datamol-cheminformatics。官方文档 https://medchem-docs.datamol.io/。