我要生成长度为6~17的蛋白质,并且筛选出质量为1024的。当蛋白质序列长度到12时,质量的运算很慢很拖延时间,而我要在五分钟内得到结果,请问应该如何优化?
```import itertools
dic = {
'G':57,'A':71,'S':87,'P':97,'V':99,'T':101,'C':103,'I':113,'L':113,'N':114,'D':115,
'K':128,'Q':128,'E':129,'M':131,'H':137,'F':147,'R':156,'Y':163,'W':186} #质量字典的构建
mass = 0
n=0
m = 1024
aa = dic.keys()
string = ''
list_s = []
all_list = []
def Aii(i):
m = 1
for j in range(2,i+1):
m *= j
return m
for i in range(6,18): #长度为1024的蛋白质最少有6个氨基酸(5*186+94),最多有17个氨基酸(16*57+71)
for x in itertools.combinations_with_replacement(aa,i):
for p in x:
mass += dic[p]
if mass > m:
break
if mass == m:
list_s = [''.join(x)]
print list_s
all_list.append(list_s)
mass = 0