2017-09-22 2 views
1

Was ist der beste Weg, um einen ergänzenden Charakter der DNA mit Listenverständnis ohne 4 verschiedene if Aussagen zurückzugeben?Geben Sie einen ergänzenden Nukleotid-Zeichen zurück

Zum Beispiel:

A <-> T "A" zurückkehrt "T" und "T" gibt "A"

G <-> C "G" gibt "C" und "C" zurückkehrt "G"

Ohne Schleifen oder dergleichen. Eingebaute Funktionen sind erlaubt.

+1

tolerieren wollen Wie über das Erstellen eines Wörterbuchs, das A bis T usw. abbildet und dann einfach im Wörterbuch nachschlägt? Es ist eine elegantere Version von if :) – okaram

+0

@Carcigenicate der Punkt ist, dass ich 4 If-Anweisungen ausprobiert habe und möchte wissen, ob jemand einen besseren Weg hat, es zu tun –

Antwort

4

Können Sie haben externe Wörterbuch wie dieses

strand = 'GATTAGAC' 

comps = {'A':'T', 'C':'G', 'G':'C', 'T':'A' } 

comp_strand = [ comps[x] for x in strand ] 

Wenn Sie unbekannte Zeichen in Ihrem Eingang, nachschlagen 'defaultdict'

+1

Nur ein kleiner Syntaxfehler, das Eröffnungsanführungszeichen für ' A 'fehlt die Zuweisung von Comps – coolioasjulio

2

eine andere Antwort von hier http://biopython.org/wiki/Seq

>>> from Bio.Seq import Seq 
>>> from Bio.Alphabet import generic_dna 
>>> my_dna = Seq("AGTACACTGGT", generic_dna) 
>>> my_dna 
Seq('AGTACACTGGT', DNAAlphabet()) 
>>> my_dna.complement() 
Seq('TCATGTGACCA', DNAAlphabet()) 
>>> my_dna.reverse_complement() 
Seq('ACCAGTGTACT', DNAAlphabet()) 
Verwandte Themen