先创建一个 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
的映射。
应用场景
-
序列映射
在生物信息学中,氨基酸字母表或基因数据的排列顺序可能在不同的数据源或算法中存在差异。使用
permutation_matrix
可以将这些数据源之间的排列统一,以便在同一分析中一致处理。例如,将input_alphabet
的排列映射到mpnn_alphabet
。 -
多分类问题中的标签映射
在机器学习中,训练数据的标签顺序可能与模型预期的标签顺序不同。
permutation_matrix
可以重新排列预测结果的顺序,使其与实际标签匹配。这在图像分类、多标签分类等领域很有用。 -
线性代数运算
在矩阵乘法中,
permutation_matrix
可以有效地交换矩阵的行或列。例如,可以对矩阵的行或列重新排序,或调整多维数据的轴排列顺序。 -
图神经网络中的节点排列
在图神经网络中,不同的数据集可能对节点进行不同的编号。
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
可以实现不同排列的高效映射操作。