Skip to content

Commit f82305c

Browse files
authored
Merge pull request #54 from jhlegarreta/TestAbsentMaskWarning
ENH: Test absent mask warning
2 parents 72ae039 + b78f9d8 commit f82305c

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,6 @@ filterwarnings = [
222222
"ignore:Updating b0_threshold to.*:UserWarning",
223223
# scikit-learn
224224
"ignore:The optimal value found for dimension.*:sklearn.exceptions.ConvergenceWarning",
225-
# masks
226-
"ignore:No mask provided;.*:UserWarning",
227225
]
228226

229227

src/nifreeze/model/base.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828

2929
from nifreeze.exceptions import ModelNotFittedError
3030

31+
mask_absence_warn_msg = (
32+
"No mask provided; consider using a mask to avoid issues in model optimization."
33+
)
34+
3135

3236
class ModelFactory:
3337
"""A factory for instantiating data models."""
@@ -98,10 +102,7 @@ def __init__(self, mask=None, **kwargs):
98102

99103
# Setup brain mask
100104
if mask is None:
101-
warn(
102-
"No mask provided; consider using a mask to avoid issues in model optimization.",
103-
stacklevel=2,
104-
)
105+
warn(mask_absence_warn_msg, stacklevel=2)
105106

106107
self._mask = mask
107108

test/test_model.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
#
2323
"""Unit tests exercising models."""
2424

25+
import contextlib
26+
2527
import numpy as np
2628
import pytest
2729
from dipy.sims.voxel import single_tensor
@@ -31,11 +33,13 @@
3133
from nifreeze.data.splitting import lovo_split
3234
from nifreeze.exceptions import ModelNotFittedError
3335
from nifreeze.model._dipy import GaussianProcessModel
36+
from nifreeze.model.base import mask_absence_warn_msg
3437
from nifreeze.model.dmri import DEFAULT_MAX_S0, DEFAULT_MIN_S0
3538
from nifreeze.testing import simulations as _sim
3639

3740

38-
def test_trivial_model():
41+
@pytest.mark.parametrize("use_mask", (False, True))
42+
def test_trivial_model(use_mask):
3943
"""Check the implementation of the trivial B0 model."""
4044

4145
rng = np.random.default_rng(1234)
@@ -45,7 +49,12 @@ def test_trivial_model():
4549
model.TrivialModel()
4650

4751
size = (2, 2, 2)
48-
mask = np.ones(size, dtype=bool)
52+
mask = None
53+
if use_mask:
54+
mask = np.ones(size, dtype=bool)
55+
context = contextlib.nullcontext()
56+
else:
57+
context = pytest.warns(UserWarning, match=mask_absence_warn_msg)
4958

5059
_S0 = rng.normal(size=size)
5160

@@ -55,7 +64,8 @@ def test_trivial_model():
5564
a_max=DEFAULT_MAX_S0,
5665
)
5766

58-
tmodel = model.TrivialModel(mask=mask, predicted=_clipped_S0)
67+
with context:
68+
tmodel = model.TrivialModel(mask=mask, predicted=_clipped_S0)
5969

6070
data = None
6171
assert tmodel.fit(data) is None

0 commit comments

Comments
 (0)