python中序列中基的频率

python中序列中基的频率,python,sequence,frequency,Python,Sequence,Frequency,我想找出序列中每个碱基的相对数量。结果应显示在列表中。这是我的尝试: def get_freqs(Sequ): rel_Anz=[] laenge = len(Sequ) A_freq = (Sequ.count('A')/ laenge) T_freq = (Sequ.count('T')/ laenge) C_freq = (Sequ.count('C')/ laenge) G_freq = (Sequ.count('G')/ laenge)

我想找出序列中每个碱基的相对数量。结果应显示在列表中。这是我的尝试:

def get_freqs(Sequ):
    rel_Anz=[]
    laenge = len(Sequ)
    A_freq = (Sequ.count('A')/ laenge)
    T_freq = (Sequ.count('T')/ laenge)
    C_freq = (Sequ.count('C')/ laenge)
    G_freq = (Sequ.count('G')/ laenge)

    rel_Anz= [A_freq, T_freq, C_freq, G_freq]
    return rel_Anz

    print("The frequence of each base (A,T,C,G) is ", rel_Anz)

get_freqs (ATTAAACC)

我不知道我应该如何包括我想计数的序列。我应该在之前定义它吗?

首先,假设您想要将一个核苷酸序列传递给函数,您可能想要将其作为字符串传递,因此它看起来像这样:

get_freqs ('ATTAAACC')
还是像这样

get_freqs ("ATTAAACC")
其次,在打印结果之前返回:

return rel_Anz
print("The frequence of each base (A,T,C,G) is ", rel_Anz)
返回后函数中的每个语句都不会执行,因此应该是:

print("The frequence of each base (A,T,C,G) is ", rel_Anz)
return rel_Anz
最后,类似的方法应该会奏效:

def get_freqs(Sequ):
    rel_Anz=[]
    laenge = len(Sequ)
    A_freq = (Sequ.count('A')/ laenge)
    T_freq = (Sequ.count('T')/ laenge)
    C_freq = (Sequ.count('C')/ laenge)
    G_freq = (Sequ.count('G')/ laenge)

    rel_Anz= [A_freq, T_freq, C_freq, G_freq]
    print("The frequence of each base (A,T,C,G) is ", rel_Anz)
    return rel_Anz

get_freqs ('ATTAAACC')

如果您希望它更清晰、更通俗:

def get_freqs(seq):
    length = len(seq)

    a_freq = seq.count('A')/ length 
    t_freq = seq.count('T')/ length 
    c_freq = seq.count('C')/ length 
    g_freq = seq.count('G')/ length 

    return [a_freq, t_freq, c_freq, g_freq]

relative_frequencies = get_freqs ('ATTAAACC')
print("The frequence of each base (A,T,C,G) is ", relative_frequencies)
或者更密集:

def get_freqs(seq):
    return [seq.count(nucl)/len(seq) for nucl in 'ATCG']

relative_frequencies = get_freqs('ATTAAACC')
print("The frequence of each base (A,T,C,G) is ", relative_frequencies)

首先,假设您想要将一个核苷酸序列传递给函数,您可能想要将其作为字符串传递,因此它看起来如下所示:

get_freqs ('ATTAAACC')
还是像这样

get_freqs ("ATTAAACC")
其次,在打印结果之前返回:

return rel_Anz
print("The frequence of each base (A,T,C,G) is ", rel_Anz)
返回后函数中的每个语句都不会执行,因此应该是:

print("The frequence of each base (A,T,C,G) is ", rel_Anz)
return rel_Anz
最后,类似的方法应该会奏效:

def get_freqs(Sequ):
    rel_Anz=[]
    laenge = len(Sequ)
    A_freq = (Sequ.count('A')/ laenge)
    T_freq = (Sequ.count('T')/ laenge)
    C_freq = (Sequ.count('C')/ laenge)
    G_freq = (Sequ.count('G')/ laenge)

    rel_Anz= [A_freq, T_freq, C_freq, G_freq]
    print("The frequence of each base (A,T,C,G) is ", rel_Anz)
    return rel_Anz

get_freqs ('ATTAAACC')

如果您希望它更清晰、更通俗:

def get_freqs(seq):
    length = len(seq)

    a_freq = seq.count('A')/ length 
    t_freq = seq.count('T')/ length 
    c_freq = seq.count('C')/ length 
    g_freq = seq.count('G')/ length 

    return [a_freq, t_freq, c_freq, g_freq]

relative_frequencies = get_freqs ('ATTAAACC')
print("The frequence of each base (A,T,C,G) is ", relative_frequencies)
或者更密集:

def get_freqs(seq):
    return [seq.count(nucl)/len(seq) for nucl in 'ATCG']

relative_frequencies = get_freqs('ATTAAACC')
print("The frequence of each base (A,T,C,G) is ", relative_frequencies)
我强烈建议使用

输出:

Counter({'A': 9, 'C': 9, 'T': 6, 'G': 3})
A frequency is: 0.3333333333333333
T frequency is: 0.2222222222222222
C frequency is: 0.3333333333333333
G frequency is: 0.1111111111111111
将其包装到函数中:

def get_freq(sequence):
    c = Counter(sequence.upper())
    l = len(sequence)
    result = {}
    for k,v in c.items():
        result.update({k: round(v/l, 2)})
    return result

get_freq('ATTAAACC')

{'A': 0.5, 'T': 0.25, 'C': 0.25}
我强烈建议使用

输出:

Counter({'A': 9, 'C': 9, 'T': 6, 'G': 3})
A frequency is: 0.3333333333333333
T frequency is: 0.2222222222222222
C frequency is: 0.3333333333333333
G frequency is: 0.1111111111111111
将其包装到函数中:

def get_freq(sequence):
    c = Counter(sequence.upper())
    l = len(sequence)
    result = {}
    for k,v in c.items():
        result.update({k: round(v/l, 2)})
    return result

get_freq('ATTAAACC')

{'A': 0.5, 'T': 0.25, 'C': 0.25}

请不要破坏你自己的帖子。当你在这里发帖时,你给了SO分发CCBYSA4.0下内容的权利。任何破坏行为都将被恢复。请不要破坏您自己的帖子。当你在这里发帖时,你给了SO分发CCBYSA4.0下内容的权利。任何故意破坏行为都将恢复原状。