2017-03-21 4 views
2

Je tente de créer une matrice de BLOSUM62 R.Création d'une matrice à partir biostrings pairwisealignment BLOSUM

library(Biostrings) 

seq_test <- c("PAWHEAE", "HEAGAWGHEE", "CAWEKDRRTEAFF", "CASSLVFGQGDNIQYF") 

aligned <- pairwiseAlignment(seq_test, seq_test, substitutionMatrix="BLOSUM62") 

score(aligned) 
#44 62 76 86 

Il ne se compare chaque séquence elle-même. Je voudrais que chaque séquence fasse une boucle et se compare à la liste complète des séquences créant une matrice 4x4. Il ressemblerait plus à ceci:

44 -7 -23 -52 
-7 62 -34 -40 
-23 -34 76 -13 
-52 -40 -13 86 

Répondre

2

Créer tous les combos, puis comparer:

#all combos 
seq1 <- expand.grid(seq_test, seq_test) 

#compare, convert to matrix 
matrix(score(pairwiseAlignment(seq1$Var1, seq1$Var2, 
           substitutionMatrix = "BLOSUM62")), 
     nrow = length(seq_test)) 
#  [,1] [,2] [,3] [,4] 
# [1,] 44 -7 -23 -52 
# [2,] -7 62 -34 -40 
# [3,] -23 -34 76 -13 
# [4,] -52 -40 -13 86 

Ou boucle à travers le vecteur:

sapply(seq_test, function(i){ 
    sapply(seq_test, function(j){ 
    score(pairwiseAlignment(i, j, substitutionMatrix = "BLOSUM62")) 
      }) 
    }) 

#     PAWHEAE HEAGAWGHEE CAWEKDRRTEAFF CASSLVFGQGDNIQYF 
# PAWHEAE    44   -7   -23    -52 
# HEAGAWGHEE   -7   62   -34    -40 
# CAWEKDRRTEAFF  -23  -34   76    -13 
# CASSLVFGQGDNIQYF  -52  -40   -13    86