Python 序列比较
Python Sequence Comparison
我正在尝试比较两个序列:
>>> seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
>>> seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgac"
但是我使用的代码卡在了最后 sequence_comparison。这段代码是在网上找到的,我很难找到它的问题所在。提供的语法错误突出显示了最后一段代码开头的 s:
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = []
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches.append('|')
else:
mismatches.append(' ')
print(seq_a)
print(mismatches)
print(seq_b)
sequence_compare(seq_a,seq_b)
谁能帮我找出问题所在?
问题似乎是 mismatches
显示为列表,而不是字符串。我已将其转换为字符串:
更新代码
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = ""
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches += '|'
else:
mismatches += ' '
print(seq_a)
print(mismatches)
print(seq_b)
seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt"
seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg"
sequence_compare(seq_a,seq_b)
输出
tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt
| || | |||||||||| ||| |||| || ||||||| ||||| || |||||||||||| ||| | ||| |
agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg
在python中必须添加缩进,如果您不在某些地方添加缩进,您的代码将无法运行;这里声明函数后,声明函数后需要加缩进
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = []
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches.append('|')
else:
mismatches.append(' ')
print(seq_a)
print(mismatches)
print(seq_b)
这段代码应该可以工作,因为我在需要的地方添加了缩进。
我正在尝试比较两个序列:
>>> seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
>>> seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgac"
但是我使用的代码卡在了最后 sequence_comparison。这段代码是在网上找到的,我很难找到它的问题所在。提供的语法错误突出显示了最后一段代码开头的 s:
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = []
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches.append('|')
else:
mismatches.append(' ')
print(seq_a)
print(mismatches)
print(seq_b)
sequence_compare(seq_a,seq_b)
谁能帮我找出问题所在?
问题似乎是 mismatches
显示为列表,而不是字符串。我已将其转换为字符串:
更新代码
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = ""
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches += '|'
else:
mismatches += ' '
print(seq_a)
print(mismatches)
print(seq_b)
seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt"
seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg"
sequence_compare(seq_a,seq_b)
输出
tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt
| || | |||||||||| ||| |||| || ||||||| ||||| || |||||||||||| ||| | ||| |
agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg
在python中必须添加缩进,如果您不在某些地方添加缩进,您的代码将无法运行;这里声明函数后,声明函数后需要加缩进
def sequence_compare(seq_a, seq_b):
len1 = len(seq_a)
len2 = len(seq_b)
mismatches = []
for pos in range (0,min(len1,len2)):
if seq_a[pos] != seq_b[pos]:
mismatches.append('|')
else:
mismatches.append(' ')
print(seq_a)
print(mismatches)
print(seq_b)
这段代码应该可以工作,因为我在需要的地方添加了缩进。