diff --git a/nilearn/_utils/class_inspect.py b/nilearn/_utils/class_inspect.py index 92cb60c407..2b8a570d4a 100644 --- a/nilearn/_utils/class_inspect.py +++ b/nilearn/_utils/class_inspect.py @@ -35,6 +35,7 @@ "check_estimator_sparse_array", "check_estimator_sparse_data", "check_estimator_sparse_matrix", + "check_estimator_sparse_tag", "check_f_contiguous_array_estimator", "check_fit1d", "check_fit2d_1feature", diff --git a/nilearn/connectome/group_sparse_cov.py b/nilearn/connectome/group_sparse_cov.py index 3eb496b548..0a2339b12b 100644 --- a/nilearn/connectome/group_sparse_cov.py +++ b/nilearn/connectome/group_sparse_cov.py @@ -15,6 +15,7 @@ from sklearn.base import BaseEstimator from sklearn.covariance import empirical_covariance from sklearn.model_selection import check_cv +from sklearn.utils import check_array from sklearn.utils.extmath import fast_logdet from nilearn._utils import CacheMixin, fill_doc, logger @@ -612,6 +613,9 @@ def fit( the object itself. Useful for chaining operations. """ + for x in subjects: + check_array(x, accept_sparse=False) + if self.memory is None: self.memory = Memory(location=None) @@ -1083,6 +1087,9 @@ def fit( the object instance itself. """ + for x in subjects: + check_array(x, accept_sparse=False) + # Empirical covariances emp_covs, n_samples = empirical_covariances( subjects, assume_centered=False diff --git a/nilearn/connectome/tests/test_connectivity_matrices.py b/nilearn/connectome/tests/test_connectivity_matrices.py index f67d8a4852..5a8fa4bd56 100644 --- a/nilearn/connectome/tests/test_connectivity_matrices.py +++ b/nilearn/connectome/tests/test_connectivity_matrices.py @@ -57,6 +57,7 @@ def test_check_estimator_cov_estimator(estimator): "check_transformers_unfitted", "check_fit1d", "check_transformer_n_iter", + "check_estimator_sparse_tag", ] diff --git a/nilearn/connectome/tests/test_group_sparse_cov.py b/nilearn/connectome/tests/test_group_sparse_cov.py index f19e17319f..4a7d28f687 100644 --- a/nilearn/connectome/tests/test_group_sparse_cov.py +++ b/nilearn/connectome/tests/test_group_sparse_cov.py @@ -10,10 +10,13 @@ ) extra_valid_checks = [ - "check_parameters_default_constructible", - "check_no_attributes_set_in_init", + "check_complex_data", + "check_estimator_sparse_tag", "check_estimators_unfitted", "check_do_not_raise_errors_in_init_or_set_params", + "check_fit1d", + "check_no_attributes_set_in_init", + "check_parameters_default_constructible", ] diff --git a/nilearn/decoding/space_net.py b/nilearn/decoding/space_net.py index 07de66e902..552457feca 100644 --- a/nilearn/decoding/space_net.py +++ b/nilearn/decoding/space_net.py @@ -630,6 +630,12 @@ class BaseSpaceNet(CacheMixin, LinearRegression): debias : :obj:`bool`, optional (default False) If set, then the estimated weights maps will be debiased. + positive : bool, default=False + When set to ``True``, forces the coefficients to be positive. + This option is only supported for dense arrays. + + .. versionadded:: 0.11.2dev + Attributes ---------- all_coef_ : ndarray, shape (n_l1_ratios, n_folds, n_features) @@ -736,6 +742,7 @@ def __init__( fit_intercept=True, screening_percentile=20.0, debias=False, + positive=False, ): self.penalty = penalty self.is_classif = is_classif @@ -762,6 +769,7 @@ def __init__( self.target_affine = target_affine self.target_shape = target_shape self.mask_args = mask_args + self.positive = positive # sanity check on params self.check_params()