我試圖從文本文件中的序列中找到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序列呢?你不會刪除換行符號。 –