摘要:spruce是一款高精度蛋白结构准备软件,以便下游的应用软件使用。下游的应用包括:基团替换软件BROOD,分子对接软件FRED与HYBRID,结合模式预测软件POSIT以及结合位点水分子的位置与稳定性预测软件SZMAP等等。 Spruce结构准备的工作流程包括:1)将不对称单元扩展为生物单元;2)枚举可选的其它位置(alt locs);3)修复缺失的部分,比如侧链不完整、链断裂的封端以及缺失loop的建模;4)加氢原子及其优化,包括配体和辅酶的互变异构体枚举、以及对生物分子结构中互变异构体状态的评估;5)模型质量评估等等。

Spruce—高通量生物大分子结构准备-墨灵格的博客

肖高铿/2020-11-14

1. SPRUCE简介

1.1 概述

spruce是一款用来准备生物大分子(蛋白与核酸)结构以便进行后续模拟任务的应用软件。

1.2 子模块

SPRUCE包含三个应用软件模块:

1.2.1 SPRUCE

SPRUCE程序用于从实验或建模结构开始准备生物分子。该过程涉及:1)将不对称单元扩展为生物单元(如果结构来自X射线晶体学实验,并且有必要);2)枚举或折叠可选的其他位置(alternate locations);3)构建缺失的片段,例如部分侧链、链断裂的封端以及缺失环(loop)的建模;4)氢原子的放置和优化;5)配体和辅因子的互变异构体枚举,以及在生物分子结构中评估互变异构体状态。

1.2.2 Superposition

Superposition是叠合程序,用于将生物分子结构叠合到参比结构上,包括基于序列或二级结构的几种不同的叠合方法。

1.2.3 Utilities

SPRUCE还包含以下几个实用程序:

(1)LoopDB_Builder

LoopDB_Builder程序用于从一组蛋白质结构中构建已知Loop的数据库。 然后可以将此数据库作为选项传递给SPRUCE,以对蛋白质结构中的gap进行loop建模。

(2)GetStructure

GetStructure程序用于下载生物分子结构文件(PDB,mmCIF,mtz)以便SPRUCE进行后续结构准备

(3)Du2pdb

Du2pdb程序用于将设计单元(DesignUnit)oedu文件格式转化为PDB文件格式。

(4)EnumSites

EnumSites程序用于枚举SPRUCE准备的生物设计单元的结合位点。枚举潜在的变构apo蛋白结合位点特别有用,在首次准备结构不知道结合位点时,枚举结合位点可确保不必重复准备结构,而只需聚焦于感兴趣的位点上。

(5)loop模板数据库

SPRUCE包含一个大型的loop模板数据库,在Spruce理论部分会进一步描述。使用该数据库很简单:

1
-loop_db_filename rcsb_spruce.loop_db

LoopDB_Builder程序用于数据库追加与更新。 可将用户具有内部/专有的结构数据库合并到现有数据库,这对现有模板不能很好地描述给定靶标的情况起到至关重要的作用。

1.3 理论

SPUCE TK用于处理含有X射线晶体学、核磁共振(NMR)光谱或电子显微镜(EM)实验产生的PDB或mmCIF结构文件。Spruce将这些文件变成可用于分子建模的分子。取决于实验和数据的性质,在用于建模之前需要一些处理。Spruce Tk提供了一个使用OEMakeDesignUnits API的端到端准备工作流,提供有选项(请参见OEMakeDesignUnitOptions)可用于控制所需的行为。 元数据(见OEStructureMetadata)还支持注入实验数据,比如突变体序列,还可以修复从PDB文件中读取时出现的常见问题(例如键级问题)。Spruce有一个内置的化学成分词典,将3个字母的氨基酸残基代码与SMILES相匹配,这些代码来自RCSB的相应代码,但用于修复其中不正确的SMILES。工作流自动运行以下步骤以生成OEDesignUnit对象:

  1. 生物学单元(Biological Unit,BU)提取 (见OEExtractBioUnits)
  2. 如果结构来自于X-Ray衍射实验,还生成packing残基一变观察晶体接触(crystal contact)
  3. 可选的其它位置(Alternate location)归属或枚举
  4. 将体系拆分为各种成分,比如:配体、辅酶、辅助剂
  5. 修复缺失侧链、loop建模、断裂链的封端
  6. 加氢与优化,包括配体互变异构体状态的搜索
  7. 对整个体系计算偏电荷
  8. 叠合到参比分子(框架)上
  9. 用OEInteractionHintContainer进行编码以便进行可视化分析
  10. 用OEIridiumData里的Iridium对模型进行质量评估

1.3.1 概念与定义

(1)Biological Unit (BU)

生物学单元(Biological Unit, BU)是指在建模时,生物学上合适的蛋白单位。例如,在研究胰蛋白酶时,BU是单体;在研究HIV蛋白酶时,BU是同源二聚体。一般认为BU是蛋白的生物活性形式。

(2) Asymmetric Unit (ASU)

采用X射线法获得的PDB或mmCIF文件内容包含一个非对称单元(Asymmetric Unit,ASU)作为实验的输出。有时等同于BU,但通常需要操作以创建正确的BU。

(3) Design Unit(DU)

设计单位(Design Unit, DU)是指Spruce从一个单一的BU经准备后获得的分子集合,提取出准备好可用于后续其它的模拟任务。

(4) Alternate locations (alt locs)

可选的其它位置(Alternate locations,alt locs)是X-射线衍射实验经常出现一个原子占据多个位置的情况。晶体学家用原子占据给定坐标集的时间量来表示这一点。一个分辨良好的原子的占据率为1.0,这意味着它100%的时间都在这个位置上。有时,原子可出现于两个位置,即可选的其它位置,这些位置在输入文件中用单字标注而且其占据率小于1.0。

1.3.2 生物学单元(Biological Unit, BU)

简言之,生物学单元(BU)是一个包含ASU的生物学相关部分的对象,这些部分还没有被分成各种分子成分,也还没有准备好进行建模。 人们相信BU是分子的功能形式。有关BU的更详细解释,请参考生物组装介绍和RCSB托管的PDB档案。

BU可以根据PDB自身报头标注(Header Remark)的单个PDB构建,也可以输入参考蛋白的序列比对来构建。要从PDB中提取一个BU或一组BU,应使用Spruce TK中的名为OEExtractBioUnits的helper函数中。 以下示例显示了如何从PDB注释中提取BU。使用同样的函数,也可以使用输入的参考蛋白从PDB中提取BU。 以下示例展示如何使用OEExtractBioUnits从给定参考蛋白中提取BU。

1.3.3 设计单位(Design Unit, DU)

设计单位(design unit,DU)是一个对象,它是BU的一部分,被提取出来、并准备好用于分子模拟。DU包括:

  • 蛋白(Protein)
  • 配体(不总有,比如apo DU就不包含配体)
  • 结合位点残基(Site residues)
  • 封装残基(Packing residues, 尤其是指在结合位点附近的)
  • 辅助剂(Excipients, 如有指结合位点附近的)

1.3.4 加氢与优化(Proton Placement and Optimization)

传统上,大多数生物分子结构在要么没有显性氢要么仅有极性氢的情况下产生的。但是,有时必须明确表示所有原子及其位置才能产生适当的氢键作用。函数OEPlaceHydrogens可以用于加氢并放置于合适的位置,还可通过“翻转”某些官能团(例如侧链酰胺和咪唑)来实现形成最佳氢键网络。SpruceTk充分利用了此功能,但在此基础上,OEProtonateDesignUnit函数还考虑了配体的质子化状态异构体(protomer)与互变异构体(Tautomer)状态。该函数标识结构中的“杂分子”(比如配体,辅酶等),并用OEGetReasonableTautomers函数枚举其状态或使用用户指定的状态。然后,在每种状态下独立地优化生物分子的氢键网络,并根据相互作用能选择复合物的最佳状态。如果结合位点包含两种“杂分子”,比如一个如配体和一个辅酶,每个各自具有多个互变异构体状态,则对状态的各种组合进行优化与评估。为了高效地做到这一点,起始的时候仅对结合位点进行优化。在选择好了结合位点的状态后,保持结合位点的状态不变而对系统的其余部分进行优化。

1.3.5 蛋白侧链建模

由于X-Ray衍射晶体学实验的密度较低或缺失,蛋白结构中的氨基酸侧链有时会缺失。这可能是由于过高的柔性使得归属原子的位置分配变得困难。然而,大多数分子模拟软件都需要这些原子的位置,而缺少这些会产生错误的结果。不完整的侧链可用OEGetPartialResidues函数来识别。然后用OEBuildSidechains将这些残基根据邻近度和侧链方向将其分为几组。根据局部环境分别对这些不同组进行优化。根据OERotamerLibrary名称空间(namespace)中的标准旋转异构体库(rotamer library)构建每组的残基侧链。对于每个侧链,根据其与最近环境的相互作用能评估一组旋转异构体,然后选择最有利的状态。在一组中需要构建多个残基的情况下,将采用一个迭代过程尝试找到整个残基集合的最佳能量。如果由于输入几何形状导致冲突从而无法建立侧链,则会跳过整个簇(cluster)。如果一个水分子阻碍了侧链旋转异构体,将导致该水分子被删除(可选),因为水分子的放置位置很可能是人为的。

1.3.6 蛋白Loop建模

Spruce—高通量生物大分子结构准备-墨灵格的博客

图1. OEBuildLoops函数的Loop构建流程:Gap搜索、过滤、插入、拟合与评估

与上面侧链缺失相似,有时蛋白结构也会出现"缺口(gap)",根据实验数据无法解析缺口处整个氨基酸残基的位置。OEBuildLoops函数能够建立这些缺失的间隙(loop)。下图说明了该函数的工作流程。首先,通过将PDB Header的SEQRES部分与结构进行序列比对,从而识别缺失的loop。如果Header中的SEQRES不正确或丢失,用户可以选择使用OESequenceMetadata输入自己的序列。 识别出缺口(gap)后,该函数循环查找与缺口(gap)匹配的模板,基于与gap的匹配度且不会发生碰撞对其进行过滤,并在局部环境下对靠前的最佳候选loop进行优化,最终在选择最有利的构象。如果需要多个结果,可以使用OEBuildSingleLoop检索这些结果。

其中Loop模板数据库是采用PDB所有的结构而建立的,可以从db-download下载到。

Spruce—高通量生物大分子结构准备-墨灵格的博客

图2.Loop模板数据库中的loop是从PDB提取、复制、压缩并建立索引以便于检索

1.3.7 蛋白叠合

用OESpruce TK可以蛋白结构叠合到参比蛋白结构上。可以用OEStructuralSuperposition类根据蛋白的原子坐标进行叠合,也可以用OESecondaryStructureSuperposition类根据蛋白的二级结构元素进行叠合(二级结构叠合法)。OEStructuralSuperposition类可以使用以下四种方法之一来叠合蛋白结构:

(1)全局方法(OEStructuralSuperposition的默认方法)

此方法将参比蛋白和目标蛋白中的全部匹配重原子作为执行叠合计算的区域(请参阅OESuperpositionType :: Global)。

(2)差异距离矩阵法(The Difference Distance Matrix method)

此方法计算参比蛋白和目标蛋白的Cα原子的成对距离矩阵,然后用这两个矩阵的差值来找到差异距离矩阵(DDM)。 差异距离矩阵(DDM)的最长连续区域用于结构叠合计算(请参阅OESuperpositionType :: DDM)。

(3)加权差异距离矩阵法(The weighted-DDM method)

此方法使用DDM矩阵,并为所有匹配的Cα原子计算高斯加权因子。 高斯权重在叠合计算中用作加权函数(请参见OESuperpositionType :: Weighted)。

(4)结合位点残基法(The site residue method.)

此方法使用结合位点残基(一组唯一的残基串)作为蛋白叠合的约束。 需要用到OESuperpositionOptions类的SetSiteResidues成员函数设置结合位点残基(请参阅OESuperpositionType :: Site)。

二级结构叠合法通过使用OESecondaryStructureSuperposition类来实现,该方法是基于参比蛋白与目标蛋白二级结构元素的形状进行叠合。

注意:OEStructuralSuperposition类中的所有结构叠合方法都有相应的序列比对打分值,该分值用于查找两个蛋白的匹配原子。此打分值来自OESequenceAlignment类的输出,其中,分数越大表示序列比对的越好,而低于阈值(大约200)的打分值应视为差的比对结果。

注意:OEStructuralSuperposition类中的所有结构叠合方法都具有对应的叠合RMSD值,该值与叠合质量具有松散地关联关系。 OESecondaryStructureSuperposition类没有RMSD值,而是使用基于形状叠合计算中的Tanimoto打分。

1.3.8 如何正确的读取PDB文件

正确读取PDB文件以用于后续的建模任务可能是一个挑战。要正确读取PDB,我们需要意识到,除非使用了以PDB为中心的OEIFlavor的特定组合,否则PDB Header信息以及有关PDB文件中可供选择的位置(alt locs)代码的信息都会丢失。此外,蛋白本身必须用OEAltLocationFactory处理,以便创建一个保留了所有可供选择位置原子的分子。Spruce为用户处理此类问题,因此此读者不比处理它们。 但是,对于非Spruce的用途,用户要么枚举不同的alt locs,要么选择一个特定的位置。考虑到这一点,我们建议采用如下面的ReadProteinFromPDB所示的模式读取PDB文件以便用于OESpruce TK。

注意:默认情况下,mmCIF reader读取所有的必要输入信息,因此无需特定的OEIFlavor即可读取它们。

1.4 Iridium数据库

Iridium[Warren-2012]是一种度量指标,用于评估由X-Ray衍射晶体学实验得出结构的模型质量。 该指标评估了我们认为在药物发现,尤其是虚拟筛选中使用蛋白-配体结构的必要考虑因素。

该指标是通过汇总先前发表的对接验证集,通过肉眼评估每个验证集,甚至重新完善一些数据而开发的。然后将高质量的结构存储到一个名为Iridium HT的新数据集中[Warren-2012]。

该度量标准考虑了许多参数,并将结构分为4个不同的类别,从而将其可信赖性分级以用于建模:

  • HT-高可信度
  • MT-轻可信度
  • NT-不可信
  • NA-不适用

当没有电子密度数据可用时,或者当所评估的结构不是来自X射线晶体学实验时,则使用后一类。85%的公共{BD数据有电子密度数据,并且要求所有新上传的数据必需提供电子密度。以往的数据也正在恢复中,因此预期该百分比只会增加。

注意:

  • Iridium目前不是电子显微镜(EM)实验的合适度量标准
  • Iridium目前不适用于中子衍射实验数据
  • Iridium依赖于结合的配体,因此不适合于评价apo结构

1.4.1 分类

开始的时候,Iridium分类是靠肉眼完成的。开发出来的规则公式化后可以严格地对每个X衍射结构进行Iridium分类评估。在某些情况下,原始出版物并未明确说明阈值,但以下指标遵循了论文的精神,并得到了原始作者的批准。将规则公式化的结果在已发布的数据集上出现微小的分类差异,这可能是由于对规则的遵守更加严格的原因。

要考虑的标准包括全局和局部的质量指标,如下所示(括号中的缩写词在Spruce记录的Iridium细节时使用):

  • DPI - The diffraction-component precision index or global precision estimate [Cruickshank-1999]
  • R-free value
  • Crystallographic Resolution
  • Density coverage of the ligand heavy atoms (LaD)
  • Density coverage of the active site residue heavy atoms (including co-factors) (ASaD)
  • Occupancy of ligand heavy atoms (POL)
  • Occupancy of active site heavy atoms (POAS)
  • Alternate locations of the ligand (AltConfs)
  • Alternate locations of the active site residues (AltConfs)
  • Presence of crystal packing residues near binding site (PackRes)
  • Presence of excipients near binding site (Excp)
  • Whether ligand is covalently bound (PossCov)

首先,根据配体和活性位点残基的密度覆盖对结构进行初始的分类:

HT MT NT
Ligand 大于0.9 大于0.50小于0.9 小于0.5
Active Site 大于0.95 大于0.50小于0.95 小于0.50


随后,如果满足以下任一条件,则可以将结构从HT降级为MT:

  • DPI大于0.50
  • 配体或活性位点参见存在可选的位置(alt loc)
  • 任意一个配体重原子占据率小于0.9
  • 任意一个活性位点重原子占据率小于0.50
  • 用OEPerceiveInteractionOptions在默认选项下检测到packing残基与配体的相互作用
  • 用OEPerceiveInteractionOptions在默认选项下检测到配体与赋型剂的相互作用
  • OEPerceiveInteractionOptions在默认条件下检测到配体与活性位点有共价相互作用

此外,如果我们认为Rfree值不合理(IrrRFree),当Rfree值大于0.45并且分辨率低于3.5A时,任何这样的结构都将降级为NT。

并非所有结构都报告DPI,在这种情况下,使用OECalculateDPI来计算DPI值。

2. SPRUCE的使用

如前所述,主程序spruce是为下游建模应用程序准备生物分子结构文件(PDB,mmCIF,oeb等)而开发的应用程序。下游的应用程序包括:基团替换软件BROOD,分子对接软件FRED与HYBRID,结合模式预测软件POSIT以及结合位点水分子的位置与稳定性预测软件SZMAP。 从实验或建模结构开始进行结构准备的工作流程包括:1)将不对称单元扩展为生物单元(如果结构来自X射线晶体学实验,并且认为有必要的话);2)枚举(默认操作)或可选的其它位置(alt locs);3)建立缺失的部分,例如 侧链不完整、链断裂的封端以及缺失loop的建模;4)加氢原子及其优化,包括配体和辅酶的互变异构体枚举、以及对生物分子结构中互变异构体状态的评估。

2.1 Spruce输出文件的命名

Spruce输出文件遵循下面的命名规则:

1
{StructureID}_{ChainIDs}[alt{AltCode}]__DU__{LigandCode}_{ChainID}-{ResidueNumber}.oedu

可以在命令行参数里使用-prefix加上前缀。

如果一个结构不包含可选的其它位置(alt locs), 但又两个配体结合位点,那么就会生成两个输出文件,如下:

1
2
4ICL_AB__DU__T27_A-601.oedu
4ICL_AB__DU__14N_A-607.oedu

存在一个可选的其它位置时,如下:

1
1XDN_AaltA__DU__ATP_A-501.oedu

对于apo蛋白结构,命名的残基是最接近标记为结合位点中心的残基。 这与是否输入不同的残基以指示结合位点的位置没有任何关系。Apo口袋示例如下:

1
1HHP_AB__DU__apo_ASP_A-25.oedu

肽类配体的命名方案略有不同,为chainID-StartingResidueNumber-1LetterCodes-EndingResidueNumber。标准残基使用单字母代码表示,非标准残基用3字母代码表示,并用短划线分隔。

1
4OBD_AB__DU__E-2-PGNFFQNRP-10.oedu

2.2 使用方法举例

最简单的使用方式是将生物分子结果(PDB或mmCIF)作为唯一参数传递给spruce命令:

1
prompt> spruce -in 3fly.pdb

在这里,SPRUCE将正确分割3fly.pdb, 并使用-in参数和标准的默认选项来准备结构。输出通常是一组OEDesignUnit(.oedu)文件,具体取决于非对称单元中配体和生物单元的数量。本算例生成单个设计单位文件(3FLY_A__DU__FLY_A-361.oedu)。

Spruce命令行可以调用许多选项。 例如,有几种选项可根据分子特征(例如肽配体中的残基数)来确定配体,例如:

1
prompt> spruce -in 4obd.pdb -max_lig_residues 20

上面这个命令将正确对4obd.pdb进行分割、结构准备。-max_lig_residues参数告诉Spruce:如果肽的残基数不大于20,那么该肽视为配体。

你可能想要基于相似的参比结构来准备生物分子结构文件。例如,你前期精心准备好了一个复合物结构(该蛋白包含有配体),你标注好了结合位点残基。你现在获得另一个结构,希望参照之前已经准备好的结构来定义结合位点并进行结构准备、构建OEDesignUnit:

1
prompt> spruce -ref 4OBD.oedu -in 1hhp.cif

其中4OBD.oedu是之前已经准备的设计单元,mmCIF结构文件(1hhp.cif)要根据4OBD定义好的结合位点进行结构准备。

你也可以用一个结合位点残基来指示结合位点(注意空白字符是不可忽略的!):

1
prompt> spruce -site_residue "ASP:25: :A" -in 1hhp.cif

Spruce还可以用map文件(电子密度文件)来计算Iridium分类以评估模型的质量:

1
prompt> spruce -map 3rox.mtz -in 3rox.pdb

其中3rox.mtz是3rox.pdb对应的实验数据(电子密度文件)。spruce得到的每个设计单位都会有Iridium打分。打分值报告于spruce的计算输出中,也可以从输出的设计单元文件力获得。

SPRUCE中的几个选项可用来帮助控制spruce的行为。例如,默认情况下,SPRUCE计算偏电荷并加氢。但是,如果您的下游程序不需要某些费时的计算,例如计算偏电荷或加氢,则可以告诉SPRUCE关闭以下功能:

1
prompt> spruce -protonate false -charge_radii false -in 3tpp.pdb

现在,spruce在准备3tpp.pdb的时候,就不再加氢、也不计算偏电荷了。

为了防止输出文件时覆盖文件,用-prefix可以添加前缀设置个性化名称避免文件覆盖:

1
prompt> spruce -in 3fly.pdb -prefix FOO

上面这个命令将生成输出文件:FOO_3FLY_A__DU__FLY_A-361.oedu。

Spruce还可以通过-ligand_names选项来识别生物结构文件中的配体,比如:

1
prompt> spruce -ligand_names JI2 -in 3b3n.pdb

3. 其它

Spruce包含了多个应用程序,这里重点介绍du2pdb。du2pdb主要用来将spruce准备好的DesignUnit OEDU格式文件转化为pdb格式文件以便被其它软件使用。

1
prompt> du2pdb -in 5YE9_B__DU__8U6_B-501.oedu

上面这个命令将DesignUnit OEDU格式文件转化为PDB格式文件,最后生成一个新文件:5YE9_B__DU__8U6_B-501.pdb。默认情况下,该文件不包含packing残基。

4. 视频介绍

5. 联系我们获取试用

Spruce是OpenEye药物设计软件包的一部分,获取1个月的免费试用,请联系我们。