2016-09-25 25 views
0

Biologen verwenden eine Sequenz von Buchstaben A, C, T und G, um ein Genom zu modellieren. Ein Gen ist ein Substrat eines Genoms, das nach einem Triplett ATG beginnt und vor einem Triplett TAG, TAA oder TGA endet. Darüber hinaus ist die Länge einer Genkette ein Vielfaches von 3 und das Gen enthält keines der Triplets ATG, TAG, TAA und TGA.So erhalten Sie eine Genkette aus der DNA

sequence = ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCC 
CCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGC 
CTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGG 
AAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCC 
CTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAG 
TTTAATTACAGACCTGAA 

mein Code: Ich bin nur ein Anfänger in Python

seq = "ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGCCTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGGAAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCCCTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAGTTTAATTACAGACCTGAA" 

sequence = "" 

for i in range(len(seq)-1): 
    triplet = 'ATG' 
    if i == triplet: 
     i += 1 
     while True: 
      i += 1 
      if i == ['TAG','TAA', 'TGA']: 
      sequence.append(i) 
      break 

print(sequence) 

Das Programm muss die Genketten in der Sequenz

helfen Sie mir bitte

+0

Bitte fügen Sie eine Beschreibung dessen ein, was das Programm Ihrer Meinung nach tun sollte. Ich sage das Problem. –

+0

Ich habe meinen Post bearbeitet – joezoef

+0

haben Sie die Probleme in Ihrem Code untersucht? Welcher Teil versagt? Was für eine Ausgabe bekommst du und was erwartest du zu bekommen? – krato

Antwort

0

Mehrere Probleme drucken Ich kann es sehen.

for i in range(len(seq)-1): 
    triplet = 'ATG' 
    if i == triplet: 

Die Variable i ist eine Ganzzahl. triplet ist eine Zeichenkette (warum ordnen Sie Triplett innerhalb der Schleife zu?) So ist i == triplet immer falsch. Der größte Teil des Schleifenkörpers wird niemals ausgeführt.

i += 1 

Da ich Ihre Schleifenvariable bin, warum erhöhen Sie sie?

 if i == ['TAG','TAA', 'TGA']: 
     sequence.append(i) 

Auch hier ist der Vergleich zwischen einer ganzen Zahl und einer Liste immer falsch. Die nächste Zeile ist nicht eingerückt (ein Syntaxfehler) und Sie können keine Zeichenfolgen anhängen. So sollte sequence wahrscheinlich eine Liste sein, keine Zeichenfolge.

+0

Wie würdest du es tun? – joezoef

+0

Entschuldigung, aber dies ist kein Code-Schreibdienst. Ich würde seq.find verwenden, um den Index des ersten ATG-Codons zu finden, den Rest der Zeichenkette in ein Verständnis aufzuteilen, das Stop-Codon zu finden und dann die restlichen Teile zusammenzufügen. –

0

Regexp Lösung:

seq = "ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGCCTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGGAAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCCCTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAGTTTAATTACAGACCTGAA" 

import re 

for m in (re.findall('(ATG(...)+?(TAG|TAA|TGA))', seq)): 
    print('gene {}'.format(m[0])) 

Ausgang. Bitte geben Sie den erwarteten Ausgang an, falls abweichend:

gene ATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCCCCTGGAGGGT 
GGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGCCTCCTGACTTTCCTCGCTTG 
GTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGGAAGCTCGGGAGGTGGCCAGGCGGCAGGAAG 
GCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCCCTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAA 
TAA 
gene ATGCTCACGCAAGTTTAA 
Verwandte Themen