Komplement einer DNA-Sequenz
Angenommen ich habe eine DNA-Sequenz. Ich möchte das ergänzen. Ich verwendete den folgenden code, aber ich bin nicht immer es. Was mache ich falsch ?
s=readline()
ATCTCGGCGCGCATCGCGTACGCTACTAGC
p=unlist(strsplit(s,""))
h=rep("N",nchar(s))
unlist(lapply(p,function(d){
for b in (1:nchar(s)) {
if (p[b]=="A") h[b]="T"
if (p[b]=="T") h[b]="A"
if (p[b]=="G") h[b]="C"
if (p[b]=="C") h[b]="G"
}
InformationsquelleAutor Anurag Mishra | 2013-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
chartr
die für diesen Zweck gebaut:Nur, es werden zwei gleich-length character strings und den string. Auch vektorisierte über das argument für die übersetzung:
Hinweis ich mache den Austausch über die string-Darstellung des DNA-eher als die vector. Konvertieren Sie die Vektor würde ich erstellen Sie eine lookup-map als eine benannte Vektor-und index:
InformationsquelleAutor Spacedman
Den Bioconductor Paket Biostrings hat viele nützliche Funktionen für diese Art der operation. Installieren Sie einmal:
dann verwenden
InformationsquelleAutor Martin Morgan
Wenn Sie nicht möchten, dass die komplementär-Namen, Sie können immer Streifen Sie mit
unname
.switch
Funktion.Scheint fast benutzerdefinierte gebaut für diesen Zweck.
Custom built von jemand, der keine ästhetischen Sinn, vielleicht! 🙂
InformationsquelleAutor 42-
Gibt es auch ein Paket seqinr
Biostrings hat einen viel kleineren Speicher-Profil, aber seqinr ist auch schön, weil Sie können wählen, die bei den Basen (auch mixed) und ändern Sie alles, was Sie wollen, zum Beispiel, wenn Sie möchten, eine Mischung von T und U in der gleichen Reihenfolge. Biostrings zwingt Sie dazu, entweder T oder U.
InformationsquelleAutor JeremyS
Zur Ergänzung, in den beiden oberen und unteren Fall, können Sie
chartr()
:Einen Schritt weiter und reverse Komplement der Nukleotidsequenz, können Sie folgende Funktion verwenden:
InformationsquelleAutor Megatron
Hier eine Antwort mit base-r. Geschrieben mit einem schrecklichen Formatierung, um die Dinge klarzustellen, und es als one-liner. Es unterstützt die groß-und Kleinschreibung.
InformationsquelleAutor pedrosaurio
Habe ich verallgemeinert die Lösung
rev(comp(seq))
mit derseqinr
Paket:Diese version ist kompatibel mit den string-Eingängen und vektorisiert zu behandeln, Liste oder Vektor-Eingabe mehrere Zeichenfolgen. Die Leistungsklasse sollte der Eingabe entsprechen, einschließlich der Fälle und Typen. Dies unterstützen auch die Eingänge mit "U" für die RNA-und RNA-output-Sequenzen.
Sehen die Handbuch oder die TomKellyGenetics/tktools github-Paket-repository.
InformationsquelleAutor Tom Kelly