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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist zwar schon ein Alter thread, ich will nicht die Gelegenheit verpassen, zu erwähnen, dass, da Bioconductor 3.1, dort ist ein Paket '
msa
', die Implementierung von interfaces auf drei verschiedenen multiple-Sequenz-alignment-algorithmen: ClustalW, ClustalOmega, und MUSKEL. Das Paket läuft auf allen wichtigen Plattformen (Linux/Unix, Mac OS und Windows) und ist eigenständig in dem Sinne, dass Sie benötigen Sie keine externe software. Mehr Informationen finden Sie auf http://www.bioinf.jku.at/software/msa/ und http://www.bioconductor.org/packages/release/bioc/html/msa.html.Schreiben ein alignment-Algorithmus in R sieht aus wie eine schlechte Idee zu mir, aber es ist eine R Schnittstelle zu den MUSKEL Algorithmus in der bio3d - Paket (Funktion seqaln()). Sich der Tatsache bewusst sein, dass Sie zum installieren dieser Algorithmus zuerst.
Alternativ können Sie verwenden Sie eine der verfügbaren algorithmen (z.B. ClustalW, MAFFT, T-KAFFEE) und importieren Sie die multiple sequence alignemts in R mit bioconductor Funktionalität. Siehe z.B. hier..
msa
die mit MUSKEL -, CLUSTALW und CLUSTALOMEGA algorithmen. Auf der plus-Seite, es hängt nicht davon ab, außerhalb der software.Kannst du mehrere Ausrichtung in R mit der ENTZIFFERN Paket.
Nach deinem Beispiel würde es so Aussehen:
Es ist schnell und mindestens so genau wie die anderen hier aufgeführten Methoden (siehe die Papier). Ich hoffe, das hilft!
Du suchst einen globalen alignment-Algorithmus auf mehrere Sequenzen.
Hat man sich bei Wikipedia vorher zu Fragen ?
Zuerst lernen, was Globale Ausrichtung ist, dann suchen Sie für multiple sequence alignment.
Wikipedia nicht geben viel von details über algorithmen, aber dieses Papier ist besser.