用 R 中的 BLOSUM62 值替换字符串序列

Substitute string sequences for BLOSUM62 values in R

我有一个包含多个肽序列的 df。对于每个序列,我需要将每个 AA 替换为存储在另一个矩阵中的 BLOSUM62 值。

|Sequences|
|:--------|
|KIFREIIHL|
|LALTYRGLI|
|DIKGLIVYR|
|...      |

**BLOSUM62 matrix**

       A       R       N       D       C       Q       E       G       H       I       L       K       M       F       P       S       T       W       Y       V
A 0.29015 0.03104 0.02564 0.02969 0.02159 0.02564 0.04049 0.07827 0.01484 0.04318 0.05938 0.04453 0.01754 0.02159 0.02969 0.08502 0.04993 0.00540 0.01754 0.06883
R 0.04457 0.34496 0.03876 0.03101 0.00775 0.04845 0.05233 0.03295 0.02326 0.02326 0.04651 0.12016 0.01550 0.01744 0.01938 0.04457 0.03488 0.00581 0.01744 0.03101
N 0.04270 0.04494 0.31685 0.08315 0.00899 0.03371 0.04944 0.06517 0.03146 0.02247 0.03146 0.05393 0.01124 0.01798 0.02022 0.06966 0.04944 0.00449 0.01573 0.02697
D 0.04104 0.02985 0.06903 0.39739 0.00746 0.02985 0.09142 0.04664 0.01866 0.02239 0.02799 0.04478 0.00933 0.01493 0.02239 0.05224 0.03545 0.00373 0.01119 0.02425
C 0.06504 0.01626 0.01626 0.01626 0.48374 0.01220 0.01626 0.03252 0.00813 0.04472 0.06504 0.02033 0.01626 0.02033 0.01626 0.04065 0.03659 0.00407 0.01220 0.05691
Q 0.05588 0.07353 0.04412 0.04706 0.00882 0.21471 0.10294 0.04118 0.02941 0.02647 0.04706 0.09118 0.02059 0.01471 0.02353 0.05588 0.04118 0.00588 0.02059 0.03529
E 0.05525 0.04972 0.04052 0.09024 0.00737 0.06446 0.29650 0.03499 0.02578 0.02210 0.03683 0.07551 0.01289 0.01657 0.02578 0.05525 0.03683 0.00552 0.01657 0.03131
G 0.07827 0.02294 0.03914 0.03374 0.01080 0.01889 0.02564 0.51012 0.01350 0.01889 0.02834 0.03374 0.00945 0.01619 0.01889 0.05128 0.02969 0.00540 0.01080 0.02429
H 0.04198 0.04580 0.05344 0.03817 0.00763 0.03817 0.05344 0.03817 0.35496 0.02290 0.03817 0.04580 0.01527 0.03053 0.01908 0.04198 0.02672 0.00763 0.05725 0.02290
I 0.04713 0.01767 0.01473 0.01767 0.01620 0.01325 0.01767 0.02062 0.00884 0.27099 0.16789 0.02356 0.03682 0.04418 0.01473 0.02504 0.03976 0.00589 0.02062 0.17673
L 0.04453 0.02429 0.01417 0.01518 0.01619 0.01619 0.02024 0.02126 0.01012 0.11538 0.37551 0.02530 0.04960 0.05466 0.01417 0.02429 0.03340 0.00709 0.02227 0.09615
K 0.05699 0.10708 0.04145 0.04145 0.00864 0.05354 0.07081 0.04318 0.02073 0.02763 0.04318 0.27807 0.01554 0.01554 0.02763 0.05354 0.03972 0.00518 0.01727 0.03282
M 0.05221 0.03213 0.02008 0.02008 0.01606 0.02811 0.02811 0.02811 0.01606 0.10040 0.19679 0.03614 0.16064 0.04819 0.01606 0.03614 0.04016 0.00803 0.02410 0.09237
F 0.03383 0.01903 0.01691 0.01691 0.01057 0.01057 0.01903 0.02537 0.01691 0.06342 0.11416 0.01903 0.02537 0.38689 0.01057 0.02537 0.02537 0.01691 0.08879 0.05497
P 0.05685 0.02584 0.02326 0.03101 0.01034 0.02067 0.03618 0.03618 0.01292 0.02584 0.03618 0.04134 0.01034 0.01292 0.49354 0.04393 0.03618 0.00258 0.01292 0.03101
S 0.10995 0.04014 0.05410 0.04887 0.01745 0.03316 0.05236 0.06632 0.01920 0.02967 0.04188 0.05410 0.01571 0.02094 0.02967 0.21990 0.08202 0.00524 0.01745 0.04188
T 0.07298 0.03550 0.04339 0.03748 0.01775 0.02761 0.03945 0.04339 0.01381 0.05325 0.06509 0.04536 0.01972 0.02367 0.02761 0.09270 0.24655 0.00592 0.01775 0.07101
W 0.03030 0.02273 0.01515 0.01515 0.00758 0.01515 0.02273 0.03030 0.01515 0.03030 0.05303 0.02273 0.01515 0.06061 0.00758 0.02273 0.02273 0.49242 0.06818 0.03030
Y 0.04050 0.02804 0.02181 0.01869 0.00935 0.02181 0.02804 0.02492 0.04673 0.04361 0.06854 0.03115 0.01869 0.13084 0.01558 0.03115 0.02804 0.02804 0.31776 0.04673
V 0.06996 0.02195 0.01646 0.01783 0.01920 0.01646 0.02332 0.02469 0.00823 0.16461 0.13032 0.02606 0.03155 0.03567 0.01646 0.03292 0.04938 0.00549 0.02058 0.26886

**Resulting output for first sequence (KIFREIIHL):**

0,05699 0,10708 0,04145 0,04145 0,00864 0,05354 0,07081 0,04318 0,02073 0,02763 0,04318 0,27807 0,01554 0,01554 0,02763 0,05354 0,03972 0,00518 0,01727 0,03282 0,04713 0,01767 0,01473 0,01767 0,0162  0,01325 0,01767 0,02062 0,00884 0,27099 0,16789 0,02356 0,03682 0,04418 0,01473 0,02504 0,03976 0,00589 0,02062 0,17673 0,03383 0,01903 0,01691 0,01691 0,01057 0,01057 0,01903 0,02537 0,01691 0,06342 0,11416 0,01903 0,02537 0,38689 0,01057 0,02537 0,02537 0,01691 0,08879 0,05497 0,04457 0,34496 0,03876 0,03101 0,00775 0,04845 0,05233 0,03295 0,02326 0,02326 0,04651 0,12016 0,0155  0,01744 0,01938 0,04457 0,03488 0,00581 0,01744 0,03101 0,05525 0,04972 0,04052 0,09024 0,00737 0,06446 0,2965  0,03499 0,02578 0,0221  0,03683 0,07551 0,01289 0,01657 0,02578 0,05525 0,03683 0,00552 0,01657 0,03131 0,04713 0,01767 0,01473 0,01767 0,0162  0,01325 0,01767 0,02062 0,00884 0,27099 0,16789 0,02356 0,03682 0,04418 0,01473 0,02504 0,03976 0,00589 0,02062 0,17673 0,04713 0,01767 0,01473 0,01767 0,0162  0,01325 0,01767 0,02062 0,00884 0,27099 0,16789 0,02356 0,03682 0,04418 0,01473 0,02504 0,03976 0,00589 0,02062 0,17673 0,04198 0,0458  0,05344 0,03817 0,00763 0,03817 0,05344 0,03817 0,35496 0,0229  0,03817 0,0458  0,01527 0,03053 0,01908 0,04198 0,02672 0,00763 0,05725 0,0229  0,04453 0,02429 0,01417 0,01518 0,01619 0,01619 0,02024 0,02126 0,01012 0,11538 0,37551 0,0253  0,0496  0,05466 0,01417 0,02429 0,0334  0,00709 0,02227 0,09615

我如何在 R 中创建一个函数来替换矩阵中相应值的每个 AA?

非常感谢

假设sequences是向量,blosum_matrix是矩阵的名称:

# split each sequence to individual letters
sequences_split <- strsplit(sequences, "")

# initialise list to hold all blosum values
blo_values <- vector("list", length(sequences))

for(i in seq_along(sequences_split)){
    blo_value[[i]] <- unlist(lapply(sequences_split[[i]], function(x) blosum_matrix[x, ]))
}