skbio.sequence.GrammaredSequence.frequencies

GrammaredSequence.frequencies(chars=None, relative=False)[源代码]

计算序列中字符的频率。

状态:从0.4.1开始试验。

参数:
  • chars (str or set of str, optional) -- 要计算其频率的字符。可能是 str 包含单个字符或 set 单字符字符串。如果 None ,将计算序列中所有字符的频率。

  • relative (bool, optional) -- 如果 True ,返回每个字符的相对频率,而不是其计数。如果 chars 将根据序列中的字符数计算相对频率, not 中观察到的字符总数 chars . 因此,如果 chars 提供。

返回:

序列中字符的频率。

返回类型:

dict

抛出:
  • TypeError -- 如果 chars 不是一个 strset 属于 str .

  • ValueError -- 如果 chars 不是一个字符 str 或A set 单字符字符串。

  • ValueError -- 如果 chars 包含的字符超出了 Sequence 对象。

备注

如果序列为空(即长度为零), relative=Trueand chars ,则每个指定字符的相对频率将为 np.nan .

如果 chars 不提供,此方法相当于,但比, seq.kmer_frequencies(k=1) .

如果 chars 不提供,它相当于,但比通过快 chars=seq.observed_chars .

示例

计算序列的字符频率:

>>> from pprint import pprint
>>> from skbio import Sequence
>>> seq = Sequence('AGAAGACC')
>>> freqs = seq.frequencies()
>>> pprint(freqs) # using pprint to display dict in sorted order
{'A': 4, 'C': 2, 'G': 2}

计算相对字符频率:

>>> freqs = seq.frequencies(relative=True)
>>> pprint(freqs)
{'A': 0.5, 'C': 0.25, 'G': 0.25}

计算字符A、C和T的相对频率:

>>> freqs = seq.frequencies(chars={'A', 'C', 'T'}, relative=True)
>>> pprint(freqs)
{'A': 0.5, 'C': 0.25, 'T': 0.0}

注意,由于字符T不在序列中,我们接收到的相对频率为0.0。与C中的字符数相对应, not A和C字符的数目(4+2=6)。