当前位置: 首页 > article >正文

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

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 文件并提取每个组装体的变换矩阵。函数返回一个包含所有组装体变换的列表,每个元素是一个元组,包含旋转矩阵和平移向量。

变换矩阵的含义

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

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


http://www.kler.cn/news/303615.html

相关文章:

  • gitlab配置统一前缀路径源码版
  • 论文复现--基于LeNet网络结构的数字识别
  • 加密与安全_优雅存储用户密码的最佳实践
  • 处理数据库中长时间运行的事务
  • 浅谈C#之进程
  • 零基础上手WebGIS+智慧校园实例(长期更新#2)【html by js】
  • 【LeetCode】2552. 统计上升四元组
  • C++学习,多态纯虚函数
  • 灵雀云DevOps:加速应用交付,点燃业务创新引擎
  • chapter11 常用类和基础API 知识点总结Note
  • Git常用命令详解
  • uniapp H5 打开地图 并选中标记点
  • sqlguna靶场get shell
  • 高级 Python Web 应用中的身份验证与授权机制解析
  • STM32常用数据采集滤波算法
  • Java重修笔记 第五十四天 坦克大战(三)事件处理机制
  • 上海市计算机学会竞赛平台2024年7月月赛丙组池塘计数
  • SEAFARING靶场漏洞攻略
  • AnyGPT:多模态语言模型,任意处理语音、图像和音乐
  • 【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署
  • 项目进度一
  • 数据库常规操作
  • vue引入三维模型
  • 【绿盟科技盟管家-注册/登录安全分析报告】
  • 2024CCPC网络预选赛
  • raksmart大带宽服务器租用
  • mycat双主高可用架构部署-MySQL5.7环境部署第一台
  • 「漏洞复现」紫光电子档案管理系统 selectFileRemote SQL注入漏洞
  • TestCraft - GPT支持的测试想法生成器和自动化测试生成器
  • 前端使用COS上传文件