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 可以实现不同排列的高效映射操作。

相关推荐
databook9 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar10 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805110 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_10 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机17 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机18 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机18 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i18 小时前
drf初步梳理
python·django
每日AI新事件18 小时前
python的异步函数
python