
在当今数据驱动的科学时代,与计算机沟通的能力至关重要。对于化学家和药物开发者而言,这带来了一个独特的挑战:我们如何将分子复杂的三维实体转化为机器能够理解的数值语言?这种转化不仅仅是一项技术操作,它更是计算化学和药物发现诸多领域的基石。分子指纹是解决这一问题最强大且应用最广泛的方法之一,它为分子结构提供了一种简洁而又富有描述性的总结。
本文旨在阐述分子指纹背后的基本概念,搭建起化学直觉与计算应用之间的桥梁。文章将揭示这些强大工具的创造和使用方式,阐明其非凡的能力及固有的局限性。
我们的探索始于对核心原理与机制的探讨。在这里,你将学习到分子结构如何被转换为二元或基于计数的向量,深入了解扩展连通性指纹(ECFP)算法优雅的迭代逻辑,并直面信息丢失和可复现性等实际挑战。随后,文章将扩展至应用与跨学科联系,展示指纹如何用于量化分子相似性、导航广阔的化学空间、训练预测性机器学习模型,以及在化学结构与生物学结果之间建立关键联系。
让计算机“理解”一个分子,是一个奇特的命题。我们不能像给同行化学家看那样,简单地给它看一张图。计算机说的是数字的语言,是向量和矩阵的语言。因此,我们的首要任务是成为翻译者——设计一种系统性的语言,将分子丰富的三维实体转化为机器可以处理的数字串。这种转化就是我们所说的定量构效关系(QSAR)的核心,它是现代药物发现的基石,建立在一个简单而强大的理念之上:分子的结构从根本上决定了其行为。如果我们能用数值描述结构,我们就能利用统计学习的力量来预测其活性。
想象一下你在为电子游戏创建一个角色。你可能会有一张“属性表”来描述角色的属性:力量:18,敏捷:12,智力:15。这是将一个复杂实体转化为数字的一种方式。在化学中,这种方法为我们提供了所谓的分子描述符。这些是从分子结构中计算出的性质,通常代表直观的物理或化学特征。例如,我们可以计算分子的总质量、其“油腻度”(一种称为辛醇-水分配系数或的性质)、其柔性(可旋转键的数量)或其大小。每个描述符都是一个数字,通过计算一列这样的描述符,我们可以将任何分子表示为一个实数向量,即高维空间中的一个点。
这是一个完全合理的方法,但并非唯一的方法。还有另一种,也许更抽象的思考方式。与其用分子的整体属性来描述它,不如用它的组成部分来描述它如何?这就是分子指纹背后的哲学。
可以这样想。与其用最高时速和燃油经济性来描述一辆车,你可以用一张清单来描述它:“有涡轮增压器吗?是/否。”“是全轮驱动吗?是/否。”“有真皮座椅吗?是/否。”由此产生的答案列表——比如,是、否、是对应 (1, 0, 1) ——就是那款车型的一种指纹。它不告诉你车有多快,但它告诉你车是由什么组成的。
分子指纹对分子的作用与此相同。它是一个向量,通常是一个由0和1组成的字符串,其中向量的每个位置对应一个特定的结构特征或片段。某个位置上的1表示“该分子包含此特征”,而0则表示“不包含”。这个二元字符串就是我们分子的数值投影。
简单的二元指纹,即一张表示特征存在与否的清单,虽然优雅,但有一个显著的局限性。它完全失去了数量感。如果我们的清单问“分子是否含有羟基()?”,对于含有一个羟基的分子,答案是简单的‘是’,而对于含有五个羟基的分子,答案同样是‘是’。这种区别可能对分子的行为(如形成氢键的能力)至关重要,但却丢失了。
为了重新捕获这些信息,我们可以从二元指纹转向计数指纹。我们不再用简单的1表示“存在”,而是写下该特征实际出现的次数。让我们通过一个具体的例子来看看为什么这很重要。
假设我们的特征列表是[芳香环, 羟基, 羰基]。我们有两个分子:是对羟基苯甲醛(每种特征各一个),是2,2'-二羟基二苯甲酮(两个芳香环,两个羟基,一个羰基)。
它们的指纹如下所示:
看!从二元指纹的角度来看,这两个截然不同的分子是相同的。它们由完全相同的向量表示。关于分子中环和羟基数量的信息消失了。这就是为什么我们说计数指纹更具表现力;它们携带了更多的信息。
这一选择对我们如何衡量分子相似性具有深远的影响。二元指纹的一个常用度量是Tanimoto系数,它本质上是交集的大小(共同的特征)除以并集的大小(任一分子中存在的特征)。在我们的例子中,二元Tanimoto相似度为。这两个分子被视为完全相同。
但是,如果我们使用一个适用于计数向量的连续版Tanimoto系数,我们会得到一个更细致的图像。使用标准公式 ,我们发现: 这个小于1的值告诉我们,这两个分子相似但不相同,准确地反映了潜在的结构差异。基于计数的方法对分子含有“更多”某些特征这一事实很敏感,并且它会惩罚这种数量上的不匹配。
一个自然的问题出现了:特征的“清单”或“字典”从何而来?我们可以使用一个预定义的列表,比如被称为MACCS keys的166个结构密钥。但是,如果我们正在研究的生物活性中最重要的结构特征不在我们的列表上怎么办?
这时,一个真正绝妙的想法应运而生:无需任何预定义字典,直接从分子本身生成特征的算法。其中最著名的是扩展连通性指纹(ECFP),也称为Morgan算法。
这个过程非常直观。想象一下,分子中的每个原子最初都被分配一个整数ID。这个初始ID很简单,捕捉了元素类型(碳、氧等)、电荷以及与之成键的其他原子数量等基本属性。现在,我们开始一个迭代游戏。
在第1轮中,每个原子都会检视其直接相邻的原子。它收集这些邻居当前的ID以及连接它们的化学键类型。然后,它将这些新信息与自己上一轮的ID结合起来,并使用一种称为哈希函数的数学函数,为自己生成一个全新的、更复杂的ID。这个新ID现在编码了该原子半径为一个键范围内的局部环境。
在第2轮中,我们重复这个过程。每个原子再次检视其邻居,但这一次,邻居们拥有的是更丰富的第1轮ID。该原子将其自身的第1轮ID与邻居的第1轮ID结合,并将这个更大的信息集合进行哈希,从而创建一个更具描述性的第2轮ID。这个新ID现在描述了该原子半径为两个键范围内的环境。
经过几轮(即ECFP的“半径”)后,我们停止。现在,每个原子都有一个最终ID,这是对其圆形邻域的一个高度特异性的数值描述。在所有原子和所有轮次中生成的所有唯一ID号的集合,就构成了该分子的特征集。这种方法之所以强大,是因为它不依赖于人工整理的特征列表;它以算法方式发现给定分子中存在的所有独特的亚结构。
ECFP算法是一个强大的特征生成器。对于一个大的复杂分子,它可以轻易地识别出数千甚至数万个独特的圆形亚结构。这就带来了一个实际问题:我们不能为每个分子都使用一个具有一百万个位置且各不相同的特征向量。我们需要一个固定且可管理的长度的指纹,比如1024或2048位。
解决方案是一个称为折叠的过程,它再次依赖于哈希。想象一下,你有一个包含所有可能ECFP特征的字典——数百万个——但你只有一个小笔记本,比如说,只有1024行。对于你的分子拥有的每一个特征,你都使用一个哈希函数来告诉你应该在笔记本的哪一行设置为1。
这立刻带来了一个问题:如果哈希函数告诉你为两个不同的特征在同一行上写入怎么办?这被称为碰撞。这是概率论中经典的“球入箱”问题。如果你将个球(特征)扔进个箱子(指纹中的比特位),有些箱子很可能会接到不止一个球。某个给定特征的比特位同时被至少一个其他特征占据的概率由公式 给出。结论很简单:你拥有的特征()越多,指纹长度()越小,你得到的碰撞就越多。
这就是哈希指纹的信息瓶颈。我们正在将大量信息(独特的亚结构的完整列表)压缩到一个小的、固定大小的容器中。当碰撞发生时,信息不可避免地会丢失。某个位置上的1可能意味着存在一个特定的特征,也可能意味着两三个不同的特征恰好都哈希到了同一个位置。
有一些巧妙的策略可以减轻这种损失,每种策略都有其自身的权衡:
使用更长的指纹: 这是最直接的解决方案。增加比特数就像换一个更大的笔记本。它直接降低了碰撞的概率。预期的碰撞次数大约与成比例,因此将指纹长度加倍会使你的碰撞问题减半。
使用基于计数的指纹: 当二元指纹中发生碰撞时,信息就丢失了。但在计数指纹中,如果三个特征哈希到同一个比特位,该位置的值就变为3。我们仍然不知道是哪三个特征,但我们知道有三个。这保留了更多的信息。从信息论的角度来看,计数向量的熵(信息容量)高于同等长度的二元向量。
使用多个哈希函数: 这是一种借鉴自布隆过滤器的技术。每个特征不是设置一个比特位,而是设置个不同的比特位,这由个独立的哈希函数决定。这极大地降低了两个不同特征具有完全相同签名的机会。然而,这会更快地填满指纹(一种称为饱和的现象),这本身也是一种信息丢失形式。这是一个微妙的平衡行为。
我们现在已经从数值描述符的简单概念,走到了哈希化、算法生成的指纹这个错综复杂、充满概率的世界。人们很容易认为,有了像ECFP这样的算法,我们就拥有了一个完美、客观的翻译器。但在这里,我们必须面对科学实践中一个最终的、令人谦卑的现实。
分子指纹不是从分子本身生成的,而是从计算机对该分子的内部表示生成的。而不同的软件程序,就像不同的化学家一样,对于如何表示一个分子可以有不同的“看法”。
考虑苯环这个经典例子。一位化学家或一个软件包,可能会将其视为一个特殊的“芳香”体系,用独特的芳香性标志来标记其化学键和原子。而另一位则可能将其视为一个简单的单双键交替的环(凯库勒结构)。这两种不同的感知方式将导致ECFP算法中初始原子ID的不同。整个过程将从第一步开始就产生分歧,导致同一个分子产生两个完全不同的指纹。
这并非一个假设性的担忧。在实践中,比较来自两个不同标准化学信息学工具包的同一组分子的指纹,其平均相似度可能只有或——远非我们可能期望的完美。这些差异源于软件“感知模型”中的微妙选择:它如何处理芳香性、如何分配电荷、如何处理互变异构体,以及其他“标准化”步骤。
这不是理论的失败,而是一个深刻的教训。指纹不是分子本身;它是分子投下的影子。我们如何制造手电筒(算法),使用什么颜色的滤光片(感知模型),以及我们如何持有物体(输入格式),都决定了我们创造的影子的形状。为了进行良好、可复现的科学研究,我们不能盲目地使用这些工具。我们必须成为它们的主人,理解其内部假设,并制定严格的协议,以确保当我们比较两个影子时,我们比较的是物体本身,而不仅仅是手电筒的怪癖。寻求一种分子的通用语言,不仅仅是发明一种巧妙的语法;它还关乎于就如何使用这种语言达成共识。
理解了如何将原子与化学键的复杂舞蹈转化为简单的0和1字符串——即分子指纹——这一基本机制后,我们现在来到了旅程中最激动人心的部分。我们能用这种新语言做什么?事实证明,这种看似简单的抽象不仅仅是巧妙的记账;它是一个强大的透镜,通过它我们可以探索广阔的化学宇宙,预测分子的行为,甚至在整个生物学和医学领域建立新的联系。
化学中最古老、或许也最直观的理念是“相似性原理”:相似的分子倾向于具有相似的性质。你的鼻子知道这一点。柠檬和橙子的气味虽然不同,但却相关。这是因为造成这些气味的分子,limonene及其亲缘体,在结构上是相似的。在计算机出现之前,这一原理是经验丰富的化学家的直觉范畴。但有了分子指纹,我们可以使这一理念变得精确和定量。
我们如何衡量“相似性”?如果我们将两个指纹看作两个特征列表,我们可能会问:它们有多少共同的特征?回答这个问题最常用的方法是一个优美的小公式,即Tanimoto系数,或称Jaccard index。它非常简单:即两个特征集交集的大小除以其并集的大小。如果两个分子的指纹完全相同,它们的Tanimoto相似度为。如果它们没有共同的特征,则为。
当然,Tanimoto系数并非唯一的方法。例如,我们可以将指纹视为高维空间中的向量,并计算它们之间的夹角余弦,就像在几何学中一样。这被称为余弦相似度。这两种方法本身没有优劣之分;它们只是对相似性这一基本问题的不同数学视角,有时会根据所比较分子的具体特征产生不同的相似性排序。度量标准的选择是这门科学的艺术之一。
当我们将这种定量相似性应用于成千上万甚至数百万个分子时,其真正的力量就显现出来了。如果我们有一批药物,并且知道它们的作用方式——即它们的“作用机制”(MOA)——我们可以问一个简单的问题:具有相似指纹的分子是否也具有相似的MOA?答案绝大多数是肯定的。如果我们使用一种算法,仅根据分子指纹的相似性对分子进行聚类,我们会发现所得的簇与其已知的生物学功能惊人地吻合。我们仅通过查看指纹,就可以通过算法将一个庞大、混乱的化合物库分拣到分别对应激酶抑制剂、离子通道阻断剂等的整齐的箱子中。这告诉我们,由指纹捕获的结构,是功能的一个强大代理。
可能存在的小分子、类药分子的数量是惊人的——据估计比已知宇宙中的原子数量还要多。我们该如何开始理解这个“化学宇宙”呢?分子指纹为我们提供了一张地图。
想象每个分子都是一个数千维空间中的一个点,其中每个维度对应其指纹中的一个比特位。当然,我们无法直接可视化这个空间。但是我们可以使用数学技术,就像制图师将球形的地球投影到平面地图上一样,来创建一个二维表示。通过构建一个网络,其中每个分子都与其最近的邻居(通过Tanimoto距离测量)相连,然后使用一个引力和斥力系统将这些点排列在一个平面上,我们可以生成令人惊叹的化学空间可视化图像。在这些地图上,具有相似骨架和特征的分子聚集在一起,形成“大陆”和“岛屿”,而独特或不寻常的分子则孤立存在。我们第一次能够真正看到已知化学领域的景观。
手握地图,我们便可以规划一次探险。在药物发现中,我们经常面临一个实际问题:一个供应商提供了比如五百万种化合物的库,但我们只负担得起测试十万种。我们应该选择哪些呢?如果我们的目标是找到真正新颖的东西,我们不应该只从地图上最拥挤的大陆挑选十万个分子。相反,我们应该追求多样性。我们希望选择一组彼此尽可能不同的分子探索者,以覆盖最大范围的“领土”。利用Tanimoto距离,我们可以设计出正是这样做的算法,它会挑选一个分子子集,使得任意两个被选中的分子之间的最小距离最大化。这种“多样性最大化”策略优先从化学空间的稀疏、未探索区域进行抽样,从而增加了偶然发现新颖生物活性的几率。
除了绘图和探索,指纹还使我们能够做一些更具雄心的事情:在不合成或测试分子的情况下预测其性质。这就是定量构效关系(QSAR)和机器学习的领域。我们可以训练一个计算机模型,学习连接指纹中的比特位与分子生物活性的模式。
但这种能力伴随着巨大的责任:在评估我们的模型时需要保持学术诚信。想象你是一位老师。你给学生一套家庭作业题。然后,在期末考试中,你给了他们完全相同的题目,可能只改了几个数字。一个只记住了作业答案的学生会得到满分,但他真的学懂了这门课吗?当然没有。
同样的危险也存在于机器学习中。如果我们将数据分成训练集和测试集,但测试集中包含了训练集中分子的“近乎重复”的分子(即它们具有非常高的Tanimoto相似度),我们的模型仅仅通过“记住”相似训练分子的答案就能获得高分。这被称为数据泄露,它会导致对模型真实泛化能力产生极度乐观和误导性的评估。我们可以从数学上证明,如果分子性质和模型的预测足够平滑,那么测试分子上的误差受其与训练集距离的限制。对于近乎重复的分子,这个距离非常小,因此误差也很小,无论模型是否学到了任何深刻的东西。
为了创建一个真正严格的测试,我们必须确保我们的测试集包含对模型来说是真正新颖的分子。一种方法是过滤掉任何超过某个Tanimoto相似度阈值(例如)的训练-测试对。一种更严格的方法,深受药物化学家青睐,是骨架拆分。化学家通常认为分子属于由共同核心结构或骨架定义的“系列”。骨架拆分确保整个化学系列要么被分配到训练集,要么被分配到测试集,但绝不会同时分配到两者。这迫使模型外推到全新的骨架,这是对其发现化学和生物学基本原理能力的更困难、更现实的测试,而不仅仅是在近亲之间进行插值。
分子指纹最终、或许也是最深刻的应用,是其作为一座桥梁的角色,将化学结构这个孤立的世界与系统生物学和临床医学这个庞大、相互关联的网络连接起来。一个指纹只是一个巨大拼图的一小块。现代药物重定位——为老药寻找新用途——试图通过整合多种不同类型的数据来拼凑这个拼图。
我们从化学结构开始,它由指纹表示(通常从像DrugBank这样的资源中的数据计算得出)。这个结构决定了药物可能击中的蛋白质靶点。当药物在细胞内击中其靶点时,会引发一系列级联事件,改变成千上万个基因的基因表达——这是一种可以被测量和编目的“扰动特征”(如LINCS项目)。这些效应在生物通路的复杂线路图上展开(整理在像Reactome这样的数据库中)。在更高的层次上,这些变化表现为对整个生物体的影响,改变表型,有时还纠正与疾病相关的表型(编目在像OMIM这样的资源中)。最终,在临床实践的真实世界中,这些效应被观察为治疗结果和不良事件,并被记录在数百万份电子健康记录中(例如MIMIC-III数据库中的记录)。
分子指纹是这个推理链中的锚点,是连接回瓶中物理实体的纽带。它们让我们能够提出这样的问题:“所有共享这一结构特征的药物是否也会引起相似的基因表达特征,并且它们是否在患者中与相似的副作用特征相关联?”
这把我们带到了最后一个令人谦卑的观点。我们可以基于指纹构建强大的预测模型,但这些模型的好坏取决于训练它们的数据。我们可以使用完全相同的Tanimoto距离来为我们的模型定义一个“适用域”。通过测量一个新分子到我们训练域中所有分子的平均距离,我们可以了解它在多大程度上是“分布外”的。随着这个距离的增加,我们应该预料到我们模型的预测误差会增长。通过这种方式,分子指纹不仅让我们能够对世界做出预测,它们还给了我们一个量化自身不确定性的工具——这是真正科学理解的标志。从一个简单的比特串中,一个充满应用和洞见的宇宙得以展开。