我正在处理这个Python问题:
给定一个以字符串形式存储的DNA碱基序列{A,C,G,T},返回一个条件概率表格的数据结构,使得可以查找其中一个碱基(b1),然后再查找第二个碱基(b2),从而获取第二个碱基在第一个碱基之后立即出现的概率p(b2 | b1)。(假设seq的长度>= 3,并且任何从未见过在一起的b1和b2的概率为0。忽略b1后面是字符串结束的概率。)
您可以使用collections模块,但没有其他库。
然而,我遇到了障碍:
word = 'ATCGATTGAGCTCTAGCG'
def dna_prob2(seq):
tbl = dict()
levels = set(word)
freq = dict.fromkeys(levels, 0)
for i in seq:
freq[i] += 1
for i in levels:
tbl[i] = {x:0 for x in levels}
lastlevel = ''
for i in tbl:
if lastlevel != '':
tbl[lastlevel][i] += 1
lastlevel = i
for i in tbl:
print(i,tbl[i][i] / freq[i])
return tbl
tbl['T']['T'] / freq[i]
基本上,最终结果应该是您在上面看到的最后一行tbl
。然而,当我尝试在print(i,tbl [i] [i] / freq [i]
和运行dna_prob2(word)
时这样做时,我得到了所有0.0s的结果。
想知道这里是否有人可以帮忙。
谢谢!
tbl
未定义,并且您从未调用dna_prob2
。 - wjandrea