定义一个计算2个字母的函数,并将其除以单词的总长度

时间:2016-10-24 16:08:20

标签: python python-3.x

我正在尝试创建一个代码来计算“DNA链”中有多少G和C,并计算该链中G + C的百分比,例如

gcContent('CGGTCCAATAGATTCGAA')
44.4444444444

该字符串中有18个字母,8个G + C在一起。

到目前为止,我一直在苦苦挣扎,甚至在我的代码中计算G的字母,这是我到目前为止所做的:

def gcContent(dnaMolecule):
    count = 0
    for g in dnaMolecule:
        dnaMolecule.count('g')
        count += 1
    return count

当我在交互式python shell中输入时,结果如下:

In [1]: gcContent('a')
Out[1]: 1.0

到目前为止,它没有计算G的数量,如果我在gcContent之后在括号内键入1个字符,它就会显示一个。

2 个答案:

答案 0 :(得分:2)

您可以使用每个字符串都有的count方法。

def gcContent(dnaMolecule):
    dnaMolecule = dnaMolecule.lower()
    count = dnaMolecule.count('g') + dnaMolecule.count('c')
    return count / len(dnaMolecule)

对于Python 2.x并获得0到100之间的值而不是0 - 1:

def gcContent(dnaMolecule):
    dnaMolecule = dnaMolecule.lower()
    count = dnaMolecule.count('g') + dnaMolecule.count('c')
    return 100.0 * count / len(dnaMolecule)

答案 1 :(得分:0)

如果您可以使用Biopython,则已经有一个预定义的函数GC来计算给定序列的GC内容:

from Bio.SeqUtils import GC

print(GC('CGGTCCAATAGATTCGAA'))

这给出了所需的输出:

44.44444444444444

根据您要对序列执行的其他操作,我强烈建议您使用预定义的函数,而不是编写自己的函数。

编辑:

正如下面讨论@ TammoHeeren的回答,GC也处理大写/小写问题:

print(GC('CGGGggg'))

给出

100.0