Coverage for nilearn/_utils/tests/test_extmath.py: 0%

27 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-20 10:58 +0200

1"""Test the _utils.extmath module.""" 

2 

3import numpy as np 

4 

5from nilearn._utils.extmath import fast_abs_percentile, is_spd 

6 

7 

8def test_fast_abs_percentile(rng): 

9 data = np.arange(100) 

10 rng.shuffle(data) 

11 for p in data: 

12 assert fast_abs_percentile(data, p) == p 

13 

14 

15def test_is_spd_with_non_symmetrical_matrix(): 

16 matrix = np.arange(4).reshape(4, 1) 

17 assert not is_spd(matrix, verbose=0) 

18 

19 matrix = np.array([[1, 1e-3 + 9e-19], [1e-3, 1]]) 

20 assert is_spd(matrix, verbose=0) 

21 

22 matrix = np.array([[1, 1e-3 + 1e-18], [1e-3, 1]]) 

23 assert not is_spd(matrix, verbose=0) 

24 

25 matrix = np.array([[1, 1e-3 + 9e-8], [1e-3, 1]]) 

26 assert is_spd(matrix, decimal=4, verbose=0) 

27 

28 matrix = np.array([[1, 1e-3 + 1e-7], [1e-3, 1]]) 

29 assert not is_spd(matrix, decimal=4, verbose=0) 

30 

31 

32def test_is_spd_with_symmetrical_matrix(): 

33 # matrix with negative eigenvalue 

34 matrix = np.array([[0, 1], [1, 0]]) 

35 assert not is_spd(matrix, verbose=0) 

36 

37 # matrix with 0 eigenvalue 

38 matrix = np.arange(4).reshape(2, 2) 

39 assert not is_spd(matrix, verbose=0) 

40 

41 # spd matrix 

42 matrix = np.array([[2, 1], [1, 1]]) 

43 assert is_spd(matrix, verbose=0) 

44 

45 

46def test_fast_abs_percentile_no_index_error(): 

47 # check the offending low-level function 

48 fast_abs_percentile(np.arange(4))