繁体   English   中英

Python中的DNA序列比对,使模块更干净

[英]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 = xy_orig = y分配为第一行,然后在except块中调用x_origy_orig
  • 使STRAND_XSTRAND_Y全局常量超出函数范围,以常量作为参数调用函数,在try块中操作局部变量xy ,然后在except块中引用全局常量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM