Scikit-fingerprints: Python library for scikit-learn compatible molecular fingerprints and chemoinformatics
本文介绍了 scikit-fingerprints,这是一个基于 RDKit 构建的全面 Python 库,它通过提供完全兼容的分子指纹、相似性度量以及工作流工具,架起了化学信息学与 scikit-learn 生态系统之间的桥梁,旨在简化分子机器学习模型的开发、复现与部署。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一个科学家们正试图设计新药的世界,但他们不是在烧杯中混合化学物质,而是在电脑上混合数据。这个领域被称为化学信息学(chemoinformatics),它的主要任务是教会计算机如何“看见”分子。为了实现这一点,计算机需要将复杂的原子三维形状转化为简单的数字列表,就像是将一个美味的多层蛋糕变成一张只包含面粉、糖和鸡蛋数量的食谱卡片。这些数字列表被称为“指纹”(fingerprints),因为它们是每个分子的独特身份标识。
长期以来,科学家用来制作这些指纹的工具就像是只能说某种秘密语言的老旧、笨重的机器。它们在特定的工作上表现出色,但无法与数据科学家用来构建人工智能的现代、超级智能工具进行交流。这就像是试图将一台复古收音机插入现代智能家居系统;电线并不匹配,整个过程既混乱、缓慢,又容易出错。这篇论文介绍了一个名为 scikit-fingerprints 的新工具,它充当了一个通用翻译器和一个大师级构建者,连接了化学分子世界与现代机器学习的世界。
分子的通用翻译器
作者 Jakub Adamczyk 和 Adam Staniszewski 构建了一个名为 scikit-fingerprints 的新 Python 库。你可以把它想象成一把巨大的瑞士军刀,专门用于处理分子数据,并且能完美适配于 “scikit-learn” 生态系统。scikit-learn 是最流行的用于教计算机从数据中学习的工具箱,但直到现在,它还不太擅长处理分子。旧有的化学工具就像是孤岛;你必须编写特殊的、混乱的代码来在它们之间移动数据。Scikit-fingerprints 弥合了这一差距,允许科学家使用与其他一切事物一样简洁、熟悉的模块来构建整个药物发现工作流。
该库建立在 RDKit 之上,RDKit 是一个强大的开源工具包,多年来一直是处理化学结构的行业标准。然而,尽管 RDKit 功能强大,但它并非为与现代机器学习流水线良好协作而设计。Scikit-fingerprints 将 RDKit 的繁重工作封装进了一个整洁且标准化的包中。它确保了从读取化学名称(SMILES 字符串)到训练模型的每一个步骤都遵循相同的规则。这意味着你可以更换流程中的任何一部分,而无需重写整个代码。
一个充满技巧的工具箱
论文解释说,这个库所做的不仅仅是将分子转化为数字。它提供了一套完整的工具,涵盖了药物发现项目的整个旅程:
- 指纹工厂 (The Fingerprint Factory): 该库包含了 30 多种不同的创建分子指纹的方法。有些寻找特定的形状(子结构),而另一些则计算特定模式出现的次数。这就像是拥有一个不同的相机菜单,每台相机都能拍摄出独特的照片,以突出分子的不同细节。
- 保镖 (Filters/过滤器): 在你开始测试之前,你可能想踢掉那些“坏分子”。该库拥有 30 多个“过滤器”,它们就像俱乐部的保镖。它们会检查一个分子是否具有“类药性”,或者是否含有会毁掉实验的危险、反应性部分。如果一个分子不符合规则,它会被自动踢出。
- 尺子 (Distances and Similarities/距离与相似度): 科学家经常需要知道两个分子有多相似。该库提供了十几种测量这种距离的方法,就像一把超精确的尺子,可以根据指纹甚至三维形状来比较分子。
- 安全网 (Applicability Domain/适用范围): 这是一个至关重要的功能。它帮助科学家了解模型是在瞎猜,还是真的有把握。它会检查一个新的分子是否与模型训练时使用的分子足够相似。如果新分子太奇怪,工具会将其标记为“不可靠”,从而防止科学家信任错误的预测。
- 分割器 (The Splitter): 为了测试模型是否有效,你需要将你的数据分为“训练集”和“测试集”。该库提供了智能的分割方法,确保测试分子与训练分子确实不同,从而给出一个关于模型在现实世界中表现如何的更诚实的评分。
加速进程
这个领域最大的问题之一是,计算这些指纹可能会极其缓慢,尤其是当你拥有数百万个分子时。论文强调,scikit-fingerprints 是为速度而生的。它使用并行处理技术,这意味着它可以同时利用计算机处理器的所有核心,而不是一次只做一件事。
作者测试了他们的工具,发现它比旧的方法要快得多。例如,当他们尝试为一个大型数据集计算特定类型的指纹(PubChem 指纹)时,他们的方法比标准的基于 Web 的工具快得多,后者在处理过多任务时经常会卡死或崩溃。在针对近 700 万个分子的测试中,该库高效地处理了它们,并使用了一种“稀疏”(sparse)格式,这节省了大量的计算机内存——与旧方法相比,内存使用量减少了 39 到 45 倍。
他们还解决了一个棘手的超参数调优(控制机器学习模型学习方式的设置)问题。通常情况下,如果你想找到最佳设置,计算机每次尝试新设置时都必须重新计算指纹,这是一种浪费时间的行为。Scikit-fingerprints 非常聪明,它只需计算一次指纹,即可将其重复用于所有不同的设置,从而节省了数小时的计算时间。
这为什么重要
这篇论文并不声称发现了某种新药或解决了生命的奥秘。相反,它为解决一个虽然枯燥但至关重要的实际问题提供了一个开源解决方案:让化学工具与人工智能工具进行对话。通过使这些工作流变得更简单、更快且更不容易出错,该库允许科学家快速原型化他们的想法,并可靠地复现他们的结果。
作者强调这是一个开放项目,这意味着任何人都可以免费使用它,甚至可以参与改进它。他们已经在致力于添加更多功能,例如使用先进的神经网络来创建新型分子指纹。对于好奇的青少年或资深的科学家来说,这个库代表着一种转变:从混乱的、定制化的脚本转向一种流线型的、专业的流程,使得为分子构建机器学习模型变得像拼搭乐高积木一样简单。它将复杂、混乱的化学数据世界转变为一个有组织、高效且准备好迎接未来药物发现挑战的世界。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。