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))此函数仅返回5、5、5、5、5、5、5、5、5,但正确的输出将为5,28,128,249,399,470,509,527
为什么所有后续匹配都会返回第一个匹配索引?
发布于 2016-03-24 15:04:55
我在代码中发现了错误。第positions.append行(Genome.index(Pattern))应替换为positions.append(i)。这给出了正确的结果。
https://stackoverflow.com/questions/36194672
复制相似问题