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

相关推荐
小虎牙^O^12 分钟前
2024春秋杯密码题第一、二天WP
python·密码学
梦魇梦狸º1 小时前
mac 配置 python 环境变量
chrome·python·macos
查理零世1 小时前
算法竞赛之差分进阶——等差数列差分 python
python·算法·差分
查士丁尼·绵3 小时前
面试-字符串1
python
肖田变强不变秃4 小时前
C++实现矩阵Matrix类 实现基本运算
开发语言·c++·matlab·矩阵·有限元·ansys
洛水微寒4 小时前
多张图片读入后组成一个矩阵。怎么读取图片,可以让其读入的形式是:ndarray(a,b,c)分别的含义:a为多少张图片,b*c为图片大小
线性代数·矩阵
小兜全糖(xdqt)4 小时前
python中单例模式
开发语言·python·单例模式
Python数据分析与机器学习4 小时前
python高级加密算法AES对信息进行加密和解密
开发语言·python
noravinsc4 小时前
python md5加密
前端·javascript·python
唯余木叶下弦声5 小时前
PySpark之金融数据分析(Spark RDD、SQL练习题)
大数据·python·sql·数据分析·spark·pyspark