0
私は短いDNA配列と長い配列を入力し、DNA配列の可能な限り最良の配列を返そうとするプログラムを書いています。条件にはギャップがあれば10を減じ、一致すれば1を加え、不一致があれば1を引きます。 私のプログラムの最初の部分はアライメントを得ています。これは再帰的に働きます長いシーケンスの最初の要素を一貫して削除した後、アライメントをスコアリングします。私の問題は、私の例外ブロックが非常に醜いということです。そこから要素を削除し続ける前に元のxを返すことができるような方法はありますか?あなたは簡単にこれを行うことができますPythonでDNA配列を整列させ、ブロックを除いてクリーナーを作成する
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)