Comment effectuer la base des Alignements Multiples de séquences dans R?

(J'ai essayé de demander ce sur BioStars, mais pour le peu de chances que quelqu'un à partir de l'exploration de texte pourrait penser qu'il est une meilleure solution, je suis également reposter ici)

La tâche que je suis en train de réaliser est d'aligner plusieurs séquences.

Je n'ai pas de modèle de base pour correspondre. Tout ce que je sais, c'est que le "Vrai" modèle devrait être de longueur "30" et que les séquences que j'ai eu des valeurs manquantes présentés à des points aléatoires.

Voici un exemple de ce type de séquences, étaient sur la gauche, nous voyons qu'est-ce que l'emplacement réel des valeurs manquantes, et sur la droite, nous voyons la séquence que nous allons être en mesure d'observer.

Mon but est de reconstruire la colonne de gauche en utilisant uniquement les séquences que j'ai dans la colonne de droite (sur la base du fait que bon nombre de lettres dans chaque position sont les mêmes)

                     Real_sequence           The_sequence_we_see
1   CGCAATACTAAC-AGCTGACTTACGCACCG CGCAATACTAACAGCTGACTTACGCACCG
2   CGCAATACTAGC-AGGTGACTTCC-CT-CG   CGCAATACTAGCAGGTGACTTCCCTCG
3   CGCAATGATCAC--GGTGGCTCCCGGTGCG  CGCAATGATCACGGTGGCTCCCGGTGCG
4   CGCAATACTAACCA-CTAACT--CGCTGCG   CGCAATACTAACCACTAACTCGCTGCG
5   CGCACGGGTAAGAACGTGA-TTACGCTCAG CGCACGGGTAAGAACGTGATTACGCTCAG
6   CGCTATACTAACAA-GTG-CTTAGGC-CTG   CGCTATACTAACAAGTGCTTAGGCCTG
7   CCCA-C-CTAA-ACGGTGACTTACGCTCCG   CCCACCTAAACGGTGACTTACGCTCCG

Voici un exemple de code pour reproduire l'exemple ci-dessus:

ATCG <- c("A","T","C","G")
set.seed(40)
original.seq <- sample(ATCG, 30, T)
seqS <- matrix(original.seq,200,30, T)
change.letters <- function(x, number.of.changes = 15, letters.to.change.with = ATCG) 
{
    number.of.changes <- sample(seq_len(number.of.changes), 1)
    new.letters <- sample(letters.to.change.with , number.of.changes, T)
    where.to.change.the.letters <- sample(seq_along(x) , number.of.changes, F)
    x[where.to.change.the.letters] <- new.letters
    return(x)
}
change.letters(original.seq)
insert.missing.values <- function(x) change.letters(x, 3, "-") 
insert.missing.values(original.seq)

seqS2 <- t(apply(seqS, 1, change.letters))
seqS3 <- t(apply(seqS2, 1, insert.missing.values))

seqS4 <- apply(seqS3,1, function(x) {paste(x, collapse = "")})
require(stringr)
# library(help=stringr)
all.seqS <- str_replace(seqS4,"-" , "")

# how do we allign this?
data.frame(Real_sequence = seqS4, The_sequence_we_see = all.seqS)

Je comprends que si j'avais une chaîne et un motif que je serais capable d'utiliser

library(Biostrings)
pairwiseAlignment(...)

Mais dans le cas que je présente, nous traitons avec beaucoup de séquences à aligner l'un de l'autre (au lieu de les aligner sur un modèle).

Est-il une méthode connue pour le faire dans la R?

OriginalL'auteur Tal Galili | 2010-12-21