小编Ban*_*tha的帖子

频率不等于一

我正在编写一个函数,该函数应该通过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)

python biopython python-2.7

6
推荐指数
1
解决办法
678
查看次数

标签 统计

biopython ×1

python ×1

python-2.7 ×1