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

1import numpy as np 

2 

3 

4def depth(intervals, dtype=None): 

5 """ 

6 Calculates depth of intervals. 

7 

8 $$ G=\\sum_{i=1}^{n} \\log_2 \\Delta_{i} $$ 

9 

10 where \\( \\Delta_{i} \\) represents each interval and \\( n \\) 

11 is the total number of intervals. 

12 

13 Parameters 

14 ---------- 

15 intervals : array_like 

16 An array of intervals 

17 dtype : dtype, optional 

18 The dtype of the output. 

19 

20 Returns 

21 ------- 

22 : float 

23 The depth of the input array of intervals. 

24 

25 Examples 

26 -------- 

27 

28 Calculate the depth of intervals of a sequence. 

29 

30 ``` py linenums="1" 

31 import foapy 

32 import numpy as np 

33 

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 

39 

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)