def test_first_level_residuals(): shapes, rk = [(10, 10, 10, 100)], 3 mask, fmri_data, design_matrices =\ generate_fake_fmri_data_and_design(shapes, rk) for i in range(len(design_matrices)): design_matrices[i].iloc[:, 0] = 1 # Check that voxelwise model attributes cannot be # accessed if minimize_memory is set to True model = FirstLevelModel(mask_img=mask, minimize_memory=True, noise_model='ols') model.fit(fmri_data, design_matrices=design_matrices) with pytest.raises(ValueError, match="To access voxelwise attributes"): residuals = model.residuals[0] model = FirstLevelModel(mask_img=mask, minimize_memory=False, noise_model='ols') # Check that trying to access residuals without fitting # raises an error with pytest.raises(ValueError, match="The model has not been fit yet"): residuals = model.residuals[0] model.fit(fmri_data, design_matrices=design_matrices) # For coverage with pytest.raises(ValueError, match="attribute must be one of"): model._get_voxelwise_model_attribute("foo", True) residuals = model.residuals[0] mean_residuals = model.masker_.transform(residuals).mean(0) assert_array_almost_equal(mean_residuals, 0)
def test_get_voxelwise_attributes_should_return_as_many_as_design_matrices( shapes): mask, fmri_data, design_matrices =\ generate_fake_fmri_data_and_design(shapes) for i in range(len(design_matrices)): design_matrices[i].iloc[:, 0] = 1 model = FirstLevelModel(mask_img=mask, minimize_memory=False, noise_model='ols') model.fit(fmri_data, design_matrices=design_matrices) # Check that length of outputs is the same as the number of design matrices assert len(model._get_voxelwise_model_attribute("resid", True)) == \ len(shapes)