<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def effective_info(network):
 """Return the effective information of the given network. .. note:: For details, see: Hoel, Erik P., Larissa Albantakis, and Giulio Tononi. “Quantifying causal emergence shows that macro can beat micro.” Proceedings of the National Academy of Sciences 110.49 (2013):
 19790-19795. Available online: `doi: 10.1073/pnas.1314922110 <http://www.pnas.org/content/110/49/19790.abstract>`_. """

    validate.is_network(network)

    sbs_tpm = convert.state_by_node2state_by_state(network.tpm)
    avg_repertoire = np.mean(sbs_tpm, 0)

    return np.mean([entropy(repertoire, avg_repertoire, 2.0)
                    for repertoire in sbs_tpm])