我试图从文本文件中的序列中找到dinuc计数和频率,但我的代码只输出单核苷酸计数。二核苷酸计数和频率
e = "ecoli.txt"
ecnt = {}
with open(e) as seq:
for line in seq:
for word in line.split():
for i in range(len(seqr)):
dinuc = (seqr[i] + seqr[i:i+2])
for dinuc in seqr:
if dinuc in ecnt:
ecnt[dinuc] += 1
else:
ecnt[dinuc] = 1
for x,y in ecnt.items():
print(x, y)
样品输入: “AAATTTCGTCGTTGCCC”
示例输出: AA:2 TT:3 TC:2 CG:2 GT:2 GC:1 CC:2
现在,我只得到单个核苷酸为我的输出:
C 83550600 A 60342100 牛逼88192300 摹92834000
对于重复即“AAA”的核苷酸,计数必须返回的连续的“AA”所有可能的组合,所以输出应该是2,而不是1。它不事关什么样的顺序列出了二核苷酸,我只需要所有组合,并且让代码返回重复核苷酸的正确计数。我问我的助教,她说我唯一的问题是让我的'for'循环将二核苷酸添加到我的字典中,并且我认为我的范围可能是错误的也可能不错。该文件是一个非常大的文件,所以序列被分成几行。
非常感谢你提前!
显示样品输入的短节和相应的期望的输出。 – John1024
什么是seqr?它没有在你发布的代码段中定义 –
你的代码在很多方面都被破坏了。什么是'seqr'。为什么你在这里用空格分隔行'for line.split():',是不是它应该是DNA序列呢?你不会删除换行符号。 –