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

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

变换矩阵的含义

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

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

相关推荐
迅猛龙办公室5 分钟前
python实现倒序输出数字
开发语言·python
全栈练习生9 小时前
AI Agent 沙箱
python·ai
SEO_juper10 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户83562907805112 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
for_ever_love__12 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
用户83562907805112 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
weixin_4617694012 小时前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
2601_9669496512 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈弄潮儿13 小时前
Python实战第1期:Python环境搭建与第一个程序
python
心易行者13 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache