[英]DNA Sequence Alignment in Python, Making a Cleaner Except Block
我正在编写一个程序,在其中输入一个短的DNA序列和一个长的DNA序列,它试图返回DNA序列的最佳对齐方式。 准则是,如果存在缺口,则减去10,如果存在匹配,则加1,如果存在不匹配,则减去1。我的程序的第一部分对对齐方式进行评分,该对齐方式以一致的方式递归工作删除长序列的第一个元素,然后对比对进行评分。 我的问题是我的except块非常丑陋。 有没有一种方法可以在我从原始x中连续删除元素之前对其进行回调?
lst=[]
def align_score(x,y):
gap_score=(len(x)-len(y))*(-10)
match_score=0
mismatch_score=0
ref=0
try:
for base in y:
if y[ref]==x[ref]:
match_score+=1
ref+=1
else:
mismatch_score-=1
ref+=1
a=gap_score+match_score+mismatch_score
lst.append(a)
del(x[0])
align_score(x,y)
except:
z=lst.index(max(lst))
x='ACGTCCTTCATT'
print x
y='GTCTCATG'
print "%s%s"%(" "*z, y)
x=list('ACGTCCTTCATT')
y=list('GTCTCATG')
align_score(x,y)
您可以通过两种方式轻松地执行此操作:
x_orig = x
和y_orig = y
分配为第一行,然后在except块中调用x_orig
和y_orig
。 STRAND_X
和STRAND_Y
全局常量超出函数范围,以常量作为参数调用函数,在try块中操作局部变量x
和y
,然后在except块中引用全局常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.