PSI-BLAST位点特异性矩阵PSSM和ProteinMPNN中氨基酸顺序映射

先创建一个 permutation_matrix,以便将PSI-BLAST输出结果PSSM文件中 input_alphabet 中的氨基酸顺序映射到 mpnn_alphabet 中。然后使用这个矩阵将 来自PSI-BLAST的pssm_log_odds 中的数据重新排列,以匹配 mpnn_alphabet 的顺序。

源代码:

import numpy as np

mpnn_alphabet = 'ACDEFGHIKLMNPQRSTVWYX'
input_alphabet = 'ARNDCQEGHILKMFPSTWYV'

permutation_matrix = np.zeros([20,21])
for i in range(20):
    letter1 = input_alphabet[i]
    for j in range(21):
        letter2 = mpnn_alphabet[j]
        if letter1 == letter2:
            permutation_matrix[i,j]=1.


pssm_log_odds = np_lines[:,:20] @ permutation_matrix
pssm_probs = np_lines[:,20:40] @ permutation_matrix

# np_lines[:,:20]  20种氨基酸(input_alphabet顺序)pssm_log_odds
# np_lines[:,20:40]  20种氨基酸(input_alphabet顺序)观测频率

关于置换矩阵permutation_matrix

permutation_matrix 是一种矩阵,用于将数据从一种排列映射或转换为另一种排列。在生物信息学、机器学习等领域,当需要对数据或标签进行重新排序以匹配不同的序列或标签集时,它非常有用。

什么是 permutation_matrix

permutation_matrix 是一个稀疏矩阵,其中每一行和每一列通常只有一个元素为 1,其他元素为 0。该矩阵的作用是将一个向量或矩阵的元素按照预定的规则重新排列。例如,如果有一个数据集按字母表 A 排序,而模型要求数据按照字母表 B 排序,则 permutation_matrix 可以实现将 A 转换成 B 的映射。

应用场景
  1. 序列映射

    在生物信息学中,氨基酸字母表或基因数据的排列顺序可能在不同的数据源或算法中存在差异。使用 permutation_matrix 可以将这些数据源之间的排列统一,以便在同一分析中一致处理。例如,将 input_alphabet 的排列映射到 mpnn_alphabet

  2. 多分类问题中的标签映射

    在机器学习中,训练数据的标签顺序可能与模型预期的标签顺序不同。permutation_matrix 可以重新排列预测结果的顺序,使其与实际标签匹配。这在图像分类、多标签分类等领域很有用。

  3. 线性代数运算

    在矩阵乘法中,permutation_matrix 可以有效地交换矩阵的行或列。例如,可以对矩阵的行或列重新排序,或调整多维数据的轴排列顺序。

  4. 图神经网络中的节点排列

    在图神经网络中,不同的数据集可能对节点进行不同的编号。permutation_matrix 可以将不同编号系统之间的节点编号统一,从而实现一致的数据处理和训练。

例子

假设你有一个排列 A = [a, b, c],需要将其映射为 B = [c, a, b]。那么 permutation_matrix 可以表示为:

A = np.array([1, 2, 3])  # 原排列
permutation_matrix = np.array([
    [0, 1, 0],  # a 映射到位置 2
    [0, 0, 1],  # b 映射到位置 3
    [1, 0, 0],  # c 映射到位置 1
])
B = A @ permutation_matrix  # 结果 B = [3, 1, 2]

通过这种方式,permutation_matrix 可以实现不同排列的高效映射操作。

相关推荐
天天爱吃肉821812 分钟前
第十篇:电源设计的“能量矩阵”——无线充电与碳化硅LLC谐振
笔记·矩阵·汽车
bst@微胖子12 分钟前
Python高级语法之selenium
开发语言·python·selenium
查理零世1 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6118. 蛋糕游戏 python
python·算法·蓝桥杯
魔尔助理顾问2 小时前
一个简洁高效的Flask用户管理示例
后端·python·flask
java1234_小锋2 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
诚信爱国敬业友善6 小时前
常见排序方法的总结归类
开发语言·python·算法
sda423423424236 小时前
6.【线性代数】—— 列空间和零空间
线性代数·列空间·零空间
架构默片7 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
小哥山水之间8 小时前
在 Python 中操作 Excel 文件
开发语言·python·excel
wang_yb9 小时前
『Python底层原理』--CPython的变量实现机制
python·databook