Python-Code, der DNA-Sequenzen ergänzt Welche Methode ist schneller?

Einführung

Erstellen wir eine Funktion, die DNA in eine komplementäre Sequenz in Python umwandelt. Lassen Sie uns 4 Wege gehen und vergleichen, welcher schneller ist.

Um es zu einer komplementären Kette zu machen

Wandle A in T, C in G, G in C und T in A um. Dann kehren Sie die Anordnung um. Die komplementäre Sequenz von ACGTTTTT ist AAAAAACGT.

Es gibt andere als ACGT

R steht für A oder G. Y steht für C oder T. D ist anders als C (dh A, G oder T). Es gibt auch Groß- und Kleinschreibung.

Die Länge der DNA-Sequenz beträgt beispielsweise 10 Mb (10 Millionen Basen).

Wörterbuch

Erstellen Sie ein Wörterbuch, das die Ersetzungsmethode angibt.

compDic = {"R":"Y","M":"K","W":"W","S":"S","Y":"R","K":"M","H":"D","B":"V","D":"H","V":"B","N":"N","A":"T","C":"G","G":"C","T":"A","r":"y","m":"k","w":"w","s":"s","y":"r","k":"m","h":"d","b":"v","d":"h","v":"b","n":"n","a":"t","c":"g","g":"c","t":"a"}

Versuche verschiedene zu machen

Erster Weg: Erstellen Sie eine leere Liste (die Größe entspricht der Länge der DNA-Sequenz), um die komplementäre Sequenz zu speichern, lesen Sie die DNA-Sequenz von Anfang an und fügen Sie die komplementäre Sequenz zeichenweise ab dem Ende der Liste ein. Zum Schluss verbinden Sie sich mit join ().

def comp1(dna):
    l = len(dna)
    c = ["" for num in range(l)]
    index = l-1
    for i in dna:
        c[index] = compDic[i]
        index -= 1
    return ''.join(c)

Zweiter Weg: Machen Sie eine leere Liste. Lesen Sie die DNA-Sequenzen einzeln von vorne und fügen Sie die komplementären Basen mit insert () an den Anfang der Liste.

def comp2(dna):
    l = len(dna)
    c = []
    for i in dna:
        c.insert(0,(compDic[i]))
    return ''.join(c)

Dritter Weg: Machen Sie eine leere Liste. Lesen Sie die DNA-Sequenzen einzeln von hinten und fügen Sie die komplementären Basen mit append () am Ende der Liste hinzu.

def comp3(dna):
    l = len(dna)
    c = []
    for i in range(l):
        c.append(compDic[dna[l-i-1]])
    return ''.join(c)

Vierter Weg: Machen Sie eine leere Zeichenfolge. Lesen Sie die DNA-Sequenzen einzeln von hinten ab und fügen Sie die komplementären Basen zum String hinzu.

def comp4(dna):
    l = len(dna)
    str = ""
    for i in range(l):
        str += compDic[dna[l-i-1]]
    return str

Versuchen Sie, die Zeit zu messen, die es dauert

Ich las eine DNA-Sequenz von ungefähr 5 Millionen Basen aus einer Datei und machte sie zu einem komplementären Strang mit den obigen vier Funktionen. Code gehört zu @ fantasm21. Vielen Dank für die Verwendung.

start = time.time()
comp1(sequence)
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

start = time.time()
comp2(sequence)
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

start = time.time()
comp3(sequence)
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

start = time.time()
comp4(sequence)
elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

Ergebnis

Es wurde wie folgt. comp2 endete nicht.

elapsed_time:1.2188289165496826[sec]#comp1()
elapsed_time:1.3529019355773926[sec]#comp3()
elapsed_time:1.5209426879882812[sec]#comp4()

Am Ende

Es schien schnell zu sein, im Voraus eine leere Liste der erforderlichen Größe zu erstellen und die ergänzende Reihenfolge hier einzufügen. Nun, diesmal kann es gut sein. Wenn jemand einen schnelleren Weg kennt, würde ich es begrüßen, wenn Sie mich unterrichten könnten.

Recommended Posts

Python-Code, der DNA-Sequenzen ergänzt Welche Methode ist schneller?
Was ist schneller, Python Shuffle oder Sample?
[Python] Pandas Code, der wahrscheinlich wiederverwendet wird
Seltsame Python-Fehlermeldung - Wird dieser Code wirklich ausgeführt?
Schnellerer Python-Release-Zyklus!