Durchführen von grundlegenden Multiple sequenzvergleiche in R?

(Ich habe versucht, diese Frage auf BioStars, aber für die geringe chance, dass jemand von text mining würde denken, es ist eine bessere Lösung, ich bin auch bei der Umbuchung diese hier)

Die Aufgabe, die ich versuche zu erreichen, ist die Ausrichtung mehrerer Sequenzen.

Habe ich nicht ein grundlegendes Muster zum Abgleich. Alles, was ich weiß ist, dass die "Wahre" Muster sollte der Länge "30" und dass die Sequenzen, ich habe fehlende Werte eingeführt, um Ihnen nach dem Zufallsprinzip Punkte.

Hier ist ein Beispiel für eine solche Sequenzen, wurden auf der linken Seite sehen wir, was ist die wirkliche Lage der fehlenden Werte, und auf der rechten Seite sehen wir die Reihenfolge, die wir beobachten können.

Mein Ziel ist es, zu rekonstruieren, in der linken Spalte, und verwenden Sie nur die Sequenzen habe ich auf der rechten Spalte (auf der Grundlage der Tatsache, dass viele der Briefe in jeder position identisch sind)

                     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

Hier ist ein Beispielcode zum reproduzieren des obigen Beispiels:

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)

Ich verstehe, dass, wenn alle, die ich hatte, war ein string und ein Muster würde ich in der Lage sein zu verwenden

library(Biostrings)
pairwiseAlignment(...)

Aber in dem Fall, den ich präsentieren wir beschäftigen uns mit vielen Sequenzen ausrichten zu anderen (statt ausrichten, um ein Muster).

Ist es eine bekannte Methode, dies zu tun in R?

InformationsquelleAutor Tal Galili | 2010-12-21
Schreibe einen Kommentar