提取蛋白质复合体结构中组装体的变换矩阵

PDB文件中,组装体变换矩阵(assembly transformation matrices)用于描述多聚体结构中各个单体之间的相对位置和取向。从蛋白质复合体 PDB 数据中提取每个组装体(assembly)的变换矩阵,通常需要解析 PDB 文件中包含的组装体信息。这些信息存储在 PDB 文件的 REMARK 350 字段中,该字段描述了如何通过旋转和平移操作将不同的链组合成蛋白质复合体。

以下是从 PDB 文件中提取每个组装体变换矩阵的示例代码:

示例代码

我们可以使用 Bio.PDB 模块(来自 biopython)解析 PDB 文件,提取组装体信息并生成相应的旋转矩阵和平移向量。代码如下

复制代码
from Bio.PDB import PDBParser
import numpy as np

def extract_transform_matrices(pdb_file):
    """
    从PDB文件中提取组装体的旋转和平移矩阵。
    
    :param pdb_file: PDB文件路径
    :return: 组装体的旋转和平移矩阵列表,按顺序返回每个组装体的旋转矩阵和对应的平移向量。
    """
    parser = PDBParser(QUIET=True)
    structure = parser.get_structure('protein', pdb_file)

    transform_matrices = []
    
    with open(pdb_file, 'r') as f:
        lines = f.readlines()
    
    current_matrix = None
    current_translation = None
    assembly_id = None
    transformations = []

    for line in lines:
        if line.startswith('REMARK 350 APPLY THE FOLLOWING TO CHAINS'):
            # 提取组装体ID
            if 'AND' in line:
                assembly_id = line.split('AND')[1].strip()
            elif 'TO CHAINS' in line:
                assembly_id = line.split('TO CHAINS')[1].strip()

        elif line.startswith('REMARK 350   BIOMT'):
            # 提取旋转和平移矩阵
            matrix_row = int(line[18]) - 1  # 行索引,从1开始
            values = list(map(float, line[23:].split()))
            if matrix_row == 0:
                current_matrix = np.zeros((3, 3))
                current_translation = np.zeros(3)

            # 将前三个值存储在旋转矩阵中
            current_matrix[matrix_row, :] = values[:3]
            # 第四个值为平移向量的一部分
            current_translation[matrix_row] = values[3]

            # 当矩阵第三行已提取完,保存结果
            if matrix_row == 2:
                transformations.append((current_matrix, current_translation))
    
    return transformations

# 示例使用
pdb_file = '/Users/zhengxueming/test/pdb_files/1a15.pdb'  # 替换为你的PDB文件路径
transform_matrices = extract_transform_matrices(pdb_file)

for i, (rotation, translation) in enumerate(transform_matrices):
    print(f"Assembly {i + 1}:")
    print("Rotation matrix:")
    print(rotation)
    print("Translation vector:")
    print(translation)
    print()

解析说明

  • REMARK 350 字段:PDB 文件的这一部分描述了组装体的构建方式,包括如何对特定链进行旋转和平移。

    • BIOMT :记录了旋转矩阵和平移向量。每个组装体的矩阵通过三行 BIOMT 记录,每一行提供了旋转矩阵的一行和对应的平移分量。
    • 旋转矩阵是一个 3x3 矩阵,平移向量是一个 3x1 向量。
  • extract_transform_matrices() 函数:解析 PDB 文件并提取每个组装体的变换矩阵。函数返回一个包含所有组装体变换的列表,每个元素是一个元组,包含旋转矩阵和平移向量。

变换矩阵的含义

  • 旋转矩阵:表示如何旋转链来形成组装体。
  • 平移向量:表示在旋转的基础上,链的三维坐标应如何平移。

这些变换矩阵可以用来将单个链或亚基的局部坐标变换为蛋白质复合体的整体坐标,从而得到完整的蛋白质结构。

相关推荐
Madison-No79 分钟前
搭建项目测试环境
linux·运维·服务器·python
计算机编程-吉哥40 分钟前
YOLO26 vs YOLO11 vs YOLOv8:深度学习咖啡果实成熟度分割系统【计算机毕业设计选题推荐】
人工智能·python·深度学习·yolo·django·毕业设计
大衛說1 小时前
11 · 异常处理与日志
python
auto_go2 小时前
Python 实战指南(7)——账本动不动就崩?先把“魔法字符串”和“裸报错”干掉
python
Beyond_System|系统之外2 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
根目录下的猫2 小时前
RK3588适配的轻量级AI模型推荐
人工智能·后端·python·目标检测
wno7043 小时前
Spring Security权限控制
java·python·spring
ShineWinsu3 小时前
对于Coze—AI:SDK的解析
人工智能·python·ai·sdk·项目·coze·字节跳动
右耳朵猫AI3 小时前
Python周刊2026W38 | 标准流编码修复、PEP 845/846 草案、解析器提速 10%、集合字典二次复杂度
python·ai·数据科学
微软技术分享4 小时前
大模型网络结构:模型接口测试用例参考
python