我正在编写一个函数,该函数应该通过DNA序列的.fasta文件,并为文件中的每个序列创建核苷酸(nt)和二核苷酸(dnt)频率的字典.然后我将每个字典存储在一个名为"频率"的列表中.这是一段奇怪的代码:
for fasta in seq_file:
freq = {}
dna = str(fasta.seq)
for base1 in ['A', 'T', 'G', 'C']:
onefreq = float(dna.count(base1)) / len(dna)
freq[base1] = onefreq
for base2 in ['A', 'T', 'G', 'C']:
dinucleotide = base1 + base2
twofreq = float(dna.count(dinucleotide)) / (len(dna) - 1)
freq[dinucleotide] = twofreq
frequency.append(freq)
Run Code Online (Sandbox Code Playgroud)
(顺便说一下,我正在使用biopython,所以我不必将整个fasta文件提交到内存.这也适用于ssDNA,所以我不需要考虑反义dnt)
为单个nt记录的频率增加到1.0,但是dnt的频率不会增加到1.0.因为计算两种频率的方法在我眼中是相同的,所以这是od.
我将诊断打印语句和"检查"变量留在:
for fasta in seq_file:
freq = {}
dna = str(fasta.seq)
check = 0.0
check2 = 0.0
for base1 in ['A', 'T', 'G', 'C']:
onefreq = float(dna.count(base1)) / len(dna) …Run Code Online (Sandbox Code Playgroud)