你好,
我试图创建一个for循环来读取DNA序列的列表,并得到所有对的值。这样做的目的是读取当前和下一项,为该对的特定值对其进行数学计算,然后将其附加到最终列表中。这就是一个例子:
AA= 5
AT=6 AC=13
AG=8
CA= 6
TG= 12
...etc。
DNA_seq= A,A,C,A,T,G
这5对(AA,AC,CA,AT,TG)应该给我一个42的值。
所以,这就是我正在尝试的;我首先定义了一个方法来获得下一个项目:
(我知道有一个内置的下一个函数,但它也不起作用)
def nextbase():
next_base= next(base)
return next_base然后:
AA=5
AT=4
AC=3
AG=2
TA=5
TT=4
TC=3
TG=2
CA=5
CT=4
CC=3
CG=2
GA=5
GT=4
GC=3
GG=2
stacking= []
for strand in dsDNA:
for b in strand:
base= iter(b)
if base =='A':
if nextbase() == 'A':
append.stacking(AA)
elif nextbase() == 'T':
append.stacking(AT)
elif nextbase() == 'C':
append.stacking(AC)
elif nextbase() == 'G':
append.stacking(AG)
elif base=='G':
if nextbase() == 'A':
append.stacking(GA)
elif nextbase() == 'T':
append.stacking(GT)
elif nextbase() == 'C':
append.stacking(GC)
elif nextbase() == 'G':
append.stacking(GG)
elif base=='c':
if nextbase() == 'A':
append.stacking(CA)
elif nextbase() == 'T':
append.stacking(CT)
elif nextbase() == 'C':
print('yes')
append.stacking(CC)
elif nextbase() == 'G':
append.stacking(CG)
elif base=='T':
if nextbase() == 'A':
append.stacking(TA)
elif nextbase() == 'T':
append.stacking(TT)
elif nextbase() == 'C':
append.stacking(TC)
elif nextbase() == 'G':
append.stacking(TG)
else:
print('eror')
print(stacking)但是,只是不起作用,它只会打印错误,因为它没有识别任何东西,有人知道是否有任何有效的方法来做到这一点?谢谢!!
发布于 2020-07-22 11:12:03
这并不难做到:首先,用每对的“重量”创建一本字典。然后循环遍历dna序列并总结从该字典中检索到的值:
dict={'AA':5,
'AT':4,
'AC':3,
'AG':2,
'TA':5,
'TT':4,
'TC':3,
'TG':2,
'CA':5,
'CT':4,
'CC':3,
'CG':2,
'GA':5,
'GT':4,
'GC':3,
'GG':2 }
DNA_seq= ['A','A','C','A','T','G']
total = sum([dict[DNA_seq[i]+DNA_seq[i+1]] for i in range(len(DNA_seq)-1) ])
print(total)
>>> 19https://stackoverflow.com/questions/63032594
复制相似问题