Skip to content

komm.TunstallCode

Binary Tunstall code. It is an optimal (minimal expected rate) variable-to-fixed length code for a given probability mass function. For more details, see Say06, Sec. 3.7.

Parameters:

  • pmf (ArrayLike)

    The probability mass function of the source.

  • target_block_size (int | None)

    The target block size $n$. Must satisfy $2^n \geq S$, where $S$ is the cardinality of the source alphabet, given by len(pmf). The default value is $n = \lceil \log_2 S \rceil$.

Examples:

>>> pmf = [0.7, 0.15, 0.15]
>>> code = komm.TunstallCode(pmf)
>>> code.dec_mapping
{(0, 0): (0,),
 (0, 1): (1,),
 (1, 0): (2,)}
>>> code.rate(pmf)
np.float64(2.0)
>>> code = komm.TunstallCode(pmf, 3)
>>> code.dec_mapping
{(0, 0, 0): (0, 0, 0),
 (0, 0, 1): (0, 0, 1),
 (0, 1, 0): (0, 0, 2),
 (0, 1, 1): (0, 1),
 (1, 0, 0): (0, 2),
 (1, 0, 1): (1,),
 (1, 1, 0): (2,)}
>>> code.rate(pmf)
np.float64(1.3698630137)