Skip to content

Commit e59a083

Browse files
jdkentyifan0330
andauthored
[FIX] regular expression for no moderators (#821)
* add a test with none moderator variable for CBMRInference * add a separate test for moderators=None * fix none moderators * add file back in from main --------- Co-authored-by: Yifan Yu <[email protected]> Co-authored-by: jdkent <[email protected]>
1 parent c4346a2 commit e59a083

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

nimare/meta/cbmr.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -513,11 +513,14 @@ def create_regular_expressions(self):
513513
operator = "(\\ ?(?P<operator>[+-]?)\\ ??)"
514514
for attr in ["groups", "moderators"]:
515515
groups = getattr(self, attr)
516-
first_group, second_group = [
517-
f"(?P<{order}>{'|'.join([re.escape(g) for g in groups])})"
518-
for order in ["first", "second"]
519-
]
520-
reg_expr = re.compile(first_group + "(" + operator + second_group + "?)")
516+
if groups:
517+
first_group, second_group = [
518+
f"(?P<{order}>{'|'.join([re.escape(g) for g in groups])})"
519+
for order in ["first", "second"]
520+
]
521+
reg_expr = re.compile(first_group + "(" + operator + second_group + "?)")
522+
else:
523+
reg_expr = None
521524

522525
setattr(self, "{}_regular_expression".format(attr), reg_expr)
523526

nimare/tests/test_meta_cbmr.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def cbmr_result(testdata_cbmr_simulated, model):
3939
cbmr = CBMREstimator(
4040
group_categories=["diagnosis", "drug_status"],
4141
moderators=["standardized_sample_sizes", "standardized_avg_age", "schizophrenia_subtype"],
42-
spline_spacing=200,
42+
spline_spacing=100,
4343
model=model,
4444
penalty=False,
4545
lr=1e-2,
@@ -56,7 +56,7 @@ def cbmr_result(testdata_cbmr_simulated, model):
5656
@pytest.fixture(scope="session")
5757
def inference_results(testdata_cbmr_simulated, cbmr_result):
5858
"""Test inference results for CBMR estimator."""
59-
inference = CBMRInference(device="cuda")
59+
inference = CBMRInference(device="cpu")
6060
inference.fit(cbmr_result)
6161
t_con_groups = inference.create_contrast(
6262
[
@@ -121,7 +121,39 @@ def test_firth_penalty(testdata_cbmr_simulated):
121121
)
122122
res = cbmr.fit(dataset=dset)
123123
assert isinstance(res, nimare.results.MetaResult)
124+
125+
126+
def test_moderators_none(testdata_cbmr_simulated):
127+
"""Unit test for Firth penalty."""
128+
dset = StandardizeField(fields=["sample_sizes", "avg_age", "schizophrenia_subtype"]).transform(
129+
testdata_cbmr_simulated
130+
)
131+
cbmr = CBMREstimator(
132+
group_categories=["diagnosis", "drug_status"],
133+
moderators=None,
134+
spline_spacing=100,
135+
model=models.PoissonEstimator,
136+
penalty=False,
137+
lr=1e-2,
138+
tol=1e7,
139+
device="cpu",
140+
)
141+
res = cbmr.fit(dataset=dset)
142+
assert isinstance(res, nimare.results.MetaResult)
143+
inference = CBMRInference(device="cpu")
144+
inference.fit(res)
124145

146+
t_con_groups = inference.create_contrast(
147+
[
148+
"DepressionYes",
149+
],
150+
source="groups",
151+
)
152+
inference_results = inference.transform(
153+
t_con_groups=t_con_groups
154+
)
155+
156+
assert isinstance(inference_results, nimare.results.MetaResult)
125157

126158
def test_CBMREstimator_update(testdata_cbmr_simulated):
127159
"""Unit test for CBMR estimator update function."""

0 commit comments

Comments
 (0)