Coverage for src/foapy/characteristics/_depth.py: 100%
3 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-17 20:45 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-17 20:45 +0000
1import numpy as np
4def depth(intervals, dtype=None):
5 """
6 Calculates depth of intervals.
8 $$ G=\\sum_{i=1}^{n} \\log_2 \\Delta_{i} $$
10 where \\( \\Delta_{i} \\) represents each interval and \\( n \\)
11 is the total number of intervals.
13 Parameters
14 ----------
15 intervals : array_like
16 An array of intervals
17 dtype : dtype, optional
18 The dtype of the output.
20 Returns
21 -------
22 : float
23 The depth of the input array of intervals.
25 Examples
26 --------
28 Calculate the depth of intervals of a sequence.
30 ``` py linenums="1"
31 import foapy
32 import numpy as np
34 source = ['a', 'b', 'a', 'c', 'a', 'd']
35 intervals = foapy.intervals(source, foapy.binding.start, foapy.mode.normal)
36 result = foapy.characteristics.depth(intervals)
37 print(result)
38 # 7.584962500721156
40 # Improve precision by specifying a dtype.
41 result = foapy.characteristics.depth(intervals, dtype=np.longdouble)
42 print(result)
43 # 7.5849625007211561815
44 ```
45 """
46 return np.sum(np.log2(intervals, dtype=dtype), dtype=dtype)