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

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

变换矩阵的含义

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

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

相关推荐
leaf_leaves_leaf16 分钟前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零121 分钟前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound28 分钟前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx40 分钟前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe40 分钟前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机
落魄实习生1 小时前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
苏言の狗1 小时前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习
用余生去守护1 小时前
python报错系列(16)--pyinstaller ????????
开发语言·python
数据小爬虫@1 小时前
利用Python爬虫快速获取商品历史价格信息
开发语言·爬虫·python
是Dream呀2 小时前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络