2016-03-24 12 views
0
def PatternMatching(Pattern, Genome): 
    positions = [] # output variable  
    for i in range(len(Genome)-len(Pattern)+1):  
     if Genome[i:i+len(Pattern)] == Pattern: 
      print(i, Pattern) 
      positions.append(Genome.index(Pattern))  
    return positions 
# Now, set Text equal to the oriC of Vibrio cholerae and Pattern equal to "TGATCA" 
Pattern = "TGATCA" 
Genome="ATCAATGATCAACGTAAGCTTCTAAGCATGATCAAGGTGCTCACACAGTTTATCCACAACCTGAGTGGATGACATCAAGATAGGTCGTTGTATCTCCTTCCTCTCGTACTCTCATGACCACGGAAAGATGATCAAGAGAGGATGATTTCTTGGCCATATCGCAATGAATACTTGTGACTTGTGCTTCCAATTGACATCTTCAGCGCCATATTGCGCTGGCCAAGGTGACGGAGCGGGATTACGAAAGCATGATCATGGCTGTTGTTCTGTTTATCTTGTTTTGACTGAGACTTGTTAGGATAGACGGTTTTTCATCACTGACTAGCCAAAGCCTTACTCTGCCTGACATCGACCGTAAATTGATAATGAATTTACATGCTTCCGCGACGATTTACCTCTTGATCATCGATCCGATTGAAGATCTTCAATTGTTAATTCTCTTGCCTCGACTCATAGCCATGATGAGCTCTTGATCATGTTTCCTTAACCCTCTATTTTTTACGGAAGAATGATCAAGCTGCTGCTCTTGATCATCGTTTC"  

print(PatternMatching(Pattern, Genome)) 

Looping nur Diese Funktion return [5, 5, 5, 5, 5, 5, 5, 5], aber korrekte Ausgabe wird [5,28,128,249,399,470,509,527]Alle Artikel anhängen nicht während

Warum erstes passend Index zurückgegeben für alle nachfolgenden Abgleich?

+0

'some_string.index (another_string)' gibt die Position des ersten Auftretens von 'another_string' zurück ist' some_string'. Sie müssen überdenken, was genau an "Positionen" angehängt ist. –

Antwort

0

Ich habe meinen Fehler im Code gefunden. Linienpositionen.append (Genome.index (Pattern)) sollte durch positions.append (i) ersetzt werden. Das gibt das richtige Ergebnis.

Verwandte Themen