Source code for seagull.utils.statistics
# -*- coding: utf-8 -*-
"""Statistics contain various computations to characterize a board state"""
import numpy as np
[docs]def shannon_entropy(state: np.ndarray) -> float:
"""Compute for the shannon entropy for the whole board
Parameters
----------
state : :obj:`numpy.ndarray`
The board state to compute statistics from
Returns
-------
float
Shannon entropy
"""
zero_probs = np.count_nonzero(state) / np.product(state.shape)
one_probs = 1 - zero_probs
return -np.sum(np.log2([zero_probs, one_probs]))
[docs]def cell_coverage(state: np.ndarray) -> float:
"""Compute for the live cell coverage for the whole board
Parameters
----------
state : :obj:`numpy.ndarray`
The board state to compute statistics from
Returns
-------
float
Cell coverage
"""
return np.sum(state) / np.product(state.shape)