在 GitHub 上编辑此页面

GSoC2011 mtrellet

作者和导师

Mikael Trellet [email protected]

导师

João Rodrigues

Eric Talevich

接口分析维基页面

您可以在以下链接找到接口分析模块的描述和“如何使用”部分

接口分析

摘要

在残基水平上分析蛋白质-蛋白质复合物的界面可以产生有关总体结合过程的重要信息。例如,此类信息可广泛用于结合亲和力研究、界面设计和酶学。为了利用它,需要一些工具来系统地自动分析蛋白质结构,或者提供实现此目的的方法。Protorop (http://www.bioinformatics.sussex.ac.uk/protorp/) 是此类工具的一个例子,该服务器自发布以来被引用次数众多,这证明了其重要性。然而,Protorop 作为 Web 服务器并不适合大规模分析,它使社区依赖于维护人员来保持服务可用。另一方面,Biopython 的结构生物学模块 Bio.PDB 提供了理想的解析机制和编程结构,可用于开发用于接口分析的离线开源库。此类库可轻松用于蛋白质-蛋白质界面的大规模分析,例如在 CAPRI 实验评估或基准统计中。如果时间允许,将其扩展到处理蛋白质-DNA 或蛋白质-RNA 复合物也是合理的,因为 Biopython 已经支持核酸。

项目时间表

第 1 周 [5 月 23 日 - 6 月 31 日]

在当前 Bio.PDB 代码库中添加新模块的骨架

定义稳定的基准

第 2-3 周 [6 月 1 日 - 6 月 13 日]

使用残基信息扩展 IUPAC.Data 模块

第 4 周 [6 月 14 日 - 6 月 21 日]

将 Extended Residue 类实现为 Residue 的子类

第 5-6-7 周 [6 月 22 日 - 7 月 11 日]

实现 InterfaceAnalysis 模块

中期评估

第 7-8 周 [7 月 12 日 - 7 月 25 日]

为接口分析开发函数

第 9-10 周 [7 月 26 日 - 8 月 8 日]

为接口比较开发函数

第 11 周 [7 月 9 日 - 8 月 8 日]

代码组织和最终测试

单元测试

单元测试将在整个项目期间执行,允许在最后进行一次更大规模的测试,收集所有已经执行的测试。

然后,目标将是优化代码的某些部分,如果可能的话,在效率和速度方面进行优化,而不会改变算法级别。将预留几天时间来打包代码并确保一切都能与 Biopython 通信。


项目进展

实现 Interface 对象骨架

我们开始考虑一种简单的方法将 Interface 作为 SMCRA 方案的新部分添加。想法是将这种新方案设为 SM-I-CRA。不幸的是,Interface 对象不像 Model 的子类和 Chain 的父类那样明确定义。实际上,界面的主要部分是残基,甚至残基对。我们想保留链的信息,但我们不能按现在定义的方式保留它们,因为我们会在模型的链和界面的链之间产生一些重叠、重复和不兼容。同样,我们尝试将界面的创建与现有模块(如 StructureBuilder 和 Model)链接,但没有成功。因此,我们决定简化一些概念,以独立的方式添加与 Interface 相关的类。显然,不同级别的 SMCRA 之间会存在链接,但 Interface 现在将被视为一个并行的实体,而不是完全集成到 SMCRA 方案中。

Interface.py 是从 Entity 继承的 Interface 对象的定义,它具有以下方法:__init__(self, id)、add(self, entity) 和 get_chains(self)。

add 模块覆盖 Entity 的 add 方法,以便能够根据各自的链轻松地对类残基进行分类。get_chains 模块返回 Interface 对象定义的界面中涉及的链。

创建的第二个类是 InterfaceBuilder.py,它直接处理界面构建(很容易猜到..!)我们找到了以下不同的模块:__init__(self, model, id=None, threshold=5.0, include_waters=False, *chains)、_unpack_chains(self, list_of_tuples)、get_interface(self)、_add_residue(self, residue)、_build_interface(self, model, id, threshold, include_waters=False, *chains)

__init__:要初始化一个界面,您需要提供要计算其界面的模型,这是唯一必填参数。

_unpack_chains:__init__ 使用的方法,用于创建 self.chain_list,该变量在类的许多部分中被读取。它将用户提供的元组列表转换为表示将参与界面定义的链的字符列表。

get_interface:简单地返回界面

_add_residue:允许用户向其界面添加一些特定残基

_build_interface:构建界面的机制,它使用 NeighborSearch 和 Selection 来根据用户提供的参数定义界面。

Interface.py InterfaceBuilder.py

残基的扩展

为了获得有关残基的多个有用信息,并旨在将它们用于界面内的进一步计算,我们希望实现残基的子类。这个新类将作为 Residues 的继承类(如 DisorderedResidues)集成,并且默认情况下会计算有关残基的一些信息,例如极性电荷、疏水性或重量。我们首先考虑复制现有的残基来创建扩展的残基,但考虑到内存消耗,我们更倾向于直接更改残基类型。因此,我们更改了残基的类并在初始化新的 ExtendedResidue 类期间执行计算。因此,残基的更改是通过 Residue.extend() 完成的。

ExtendedResidue 是从 Residue 继承的类,以下是其中的不同方法:

__init__:设置残基的电荷、质量和疏水性。

__repr__:根据残基 ID 为残基定义新的 ID。

set_hydrophobicity:根据所选尺度设置残基的疏水性,KD {Kyle 和 Doolittle}、OHM {Sweet 和 Eisenberg} 或共识(默认值为共识)。返回所选尺度。

set_charge:根据残基的 pka 和用户定义的 pH 值(默认值为 7.0)设置残基的相对电荷。

set_mass:根据原子质量设置残基的质量。

界面信息

为了使用复合物界面,需要一些重要的信息。其中一些在界面初始化期间计算,而另一些则通过函数计算。

InterfaceBuilder 中的私有函数(在 Interface 初始化期间使用)

_secondary_structure:使用 DSSP 计算界面的每个残基的二级结构。

_rsa_calculation:用于根据残基的可及性定义界面。

Interface 中的公共函数(用户使用)

set_neighbors:为界面的每个残基创建一个邻居字典。

calculate_accessibility:计算复合物的埋藏表面积,并间接计算界面的可及性。总可及性和链的可及性也在此函数中计算。此计算通过 NACCESS 模块完成。

界面比较

科学家使用多种方法来衡量两个复合物之间的差异。特别是在结构生物学中,工作的重要部分是分析由科学方法生成模型的可靠性和准确性。例如,对接的可靠性和准确性。为了知道一个模型是否可以被认为是可接受的,会使用一个参考,并且从这个参考中,会进行一些计算,将模型与参考进行比较。例如,我们可以引用 RMSD 或本地接触分数。这些是我们添加到界面分析模块中的两个计算。

interface_ref.rmsd(interface_model):此函数使用 Superimposer 模块来计算两个界面的残基之间的均方根偏差。它还给出界面 RMSD。

interface_ref.fnat(interface_model):此函数计算两个界面之间共同接触的分数。