Source code for coniferest.utils
import numpy as np
__all__ = ["average_path_length"]
def _average_path_length(n):
"""
Average path length formula.
"""
# Thank you Matwey.
return 2.0 * (np.log(n) + np.euler_gamma + 1 / (2 * n) - 1 / (12 * n**2) - 1.0)
[docs]
def average_path_length(n):
"""
Average path length computation.
Parameters
----------
n
Either array of tree depths to computer average path length of
or one tree depth scalar.
Returns
-------
Average path length.
"""
if np.isscalar(n):
if n <= 1:
apl = 0.0
else:
apl = _average_path_length(n)
else:
n = np.asarray(n)
apl = np.zeros_like(n)
apl[n > 1] = _average_path_length(n[n > 1])
return apl