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
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-20 10:58 +0200
1"""Test the _utils.extmath module."""
3import numpy as np
5from nilearn._utils.extmath import fast_abs_percentile, is_spd
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
15def test_is_spd_with_non_symmetrical_matrix():
16 matrix = np.arange(4).reshape(4, 1)
17 assert not is_spd(matrix, verbose=0)
19 matrix = np.array([[1, 1e-3 + 9e-19], [1e-3, 1]])
20 assert is_spd(matrix, verbose=0)
22 matrix = np.array([[1, 1e-3 + 1e-18], [1e-3, 1]])
23 assert not is_spd(matrix, verbose=0)
25 matrix = np.array([[1, 1e-3 + 9e-8], [1e-3, 1]])
26 assert is_spd(matrix, decimal=4, verbose=0)
28 matrix = np.array([[1, 1e-3 + 1e-7], [1e-3, 1]])
29 assert not is_spd(matrix, decimal=4, verbose=0)
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)
37 # matrix with 0 eigenvalue
38 matrix = np.arange(4).reshape(2, 2)
39 assert not is_spd(matrix, verbose=0)
41 # spd matrix
42 matrix = np.array([[2, 1], [1, 1]])
43 assert is_spd(matrix, verbose=0)
46def test_fast_abs_percentile_no_index_error():
47 # check the offending low-level function
48 fast_abs_percentile(np.arange(4))