def test_region_extractor_fit_and_transform(): n_regions = 9 n_subjects = 5 maps, mask_img = generate_maps((40, 40, 40), n_regions=n_regions) # smoke test to RegionExtractor with thresholding_strategy='ratio_n_voxels' extract_ratio = RegionExtractor(maps, threshold=0.2, thresholding_strategy='ratio_n_voxels') extract_ratio.fit() assert_not_equal(extract_ratio.regions_img_, '') assert_true(extract_ratio.regions_img_.shape[-1] >= 9) # smoke test with threshold=string and strategy=percentile extractor = RegionExtractor(maps, threshold=30, thresholding_strategy='percentile', mask_img=mask_img) extractor.fit() assert_true(extractor.index_, np.ndarray) assert_not_equal(extractor.regions_img_, '') assert_true(extractor.regions_img_.shape[-1] >= 9) n_regions_extracted = extractor.regions_img_.shape[-1] shape = (91, 109, 91, 7) expected_signal_shape = (7, n_regions_extracted) for id_ in range(n_subjects): img, data = _make_random_data(shape) # smoke test NiftiMapsMasker transform inherited in Region Extractor signal = extractor.transform(img) assert_equal(expected_signal_shape, signal.shape)
def test_region_extractor_fit_and_transform(): n_regions = 9 n_subjects = 5 maps, mask_img = generate_maps((40, 40, 40), n_regions=n_regions) # smoke test to RegionExtractor with thresholding_strategy='ratio_n_voxels' extract_ratio = RegionExtractor(maps, threshold=0.2, thresholding_strategy='ratio_n_voxels') extract_ratio.fit() assert_not_equal(extract_ratio.regions_img_, '') assert_true(extract_ratio.regions_img_.shape[-1] >= 9) # smoke test with threshold=string and strategy=percentile extractor = RegionExtractor(maps, threshold=30, thresholding_strategy='percentile', mask_img=mask_img) extractor.fit() assert_true(extractor.index_, np.ndarray) assert_not_equal(extractor.regions_img_, '') assert_true(extractor.regions_img_.shape[-1] >= 9) n_regions_extracted = extractor.regions_img_.shape[-1] shape = (91, 109, 91, 7) expected_signal_shape = (7, n_regions_extracted) for id_ in range(n_subjects): img, data = _make_random_data(shape) # smoke test NiftiMapsMasker transform inherited in Region Extractor signal = extractor.transform(img) assert_equal(expected_signal_shape, signal.shape) # smoke test with high resolution image maps, mask_img = generate_maps((20, 20, 20), n_regions=n_regions, affine=.2 * np.eye(4)) extract_ratio = RegionExtractor(maps, thresholding_strategy='ratio_n_voxels', smoothing_fwhm=.6, min_region_size=.4) extract_ratio.fit() assert_not_equal(extract_ratio.regions_img_, '') assert_true(extract_ratio.regions_img_.shape[-1] >= 9) # smoke test with zeros on the diagonal of the affine affine = np.eye(4) affine[[0, 1]] = affine[[1, 0]] # permutes first and second lines maps, mask_img = generate_maps((40, 40, 40), n_regions=n_regions, affine=affine) extract_ratio = RegionExtractor(maps, threshold=0.2, thresholding_strategy='ratio_n_voxels') extract_ratio.fit() assert_not_equal(extract_ratio.regions_img_, '') assert_true(extract_ratio.regions_img_.shape[-1] >= 9)
# Fetching the smith ICA 10 RSN by importing datasets utilities from nilearn import datasets smith_atlas = datasets.fetch_atlas_smith_2009() atlas_networks = smith_atlas.rsn10 ################################################################################ # Import region extractor to extract atlas networks from nilearn.regions import RegionExtractor # min_region_size in voxel volume mm^3 extraction = RegionExtractor(atlas_networks, min_region_size=800, threshold=98, thresholding_strategy='percentile') # Just call fit() to execute region extraction procedure extraction.fit() regions_img = extraction.regions_img_ ################################################################################ # Visualization # Show region extraction results by importing image & plotting utilities from nilearn import plotting from nilearn.image import index_img from nilearn.plotting import find_xyz_cut_coords # Showing region extraction results using 4D maps visualization tool plotting.plot_prob_atlas(regions_img, display_mode='z', cut_coords=1, view_type='contours', title="Regions extracted.") # To reduce the complexity, we choose to display all the regions # extracted from network 3
################################################################################ # Extract regions from networks # ------------------------------ # Import Region Extractor algorithm from regions module # threshold=0.5 indicates that we keep nominal of amount nonzero voxels across all # maps, less the threshold means that more intense non-voxels will be survived. from nilearn.regions import RegionExtractor extractor = RegionExtractor(components_img, threshold=0.5, thresholding_strategy='ratio_n_voxels', extractor='local_regions', standardize=True, min_region_size=1350) # Just call fit() to process for regions extraction extractor.fit() # Extracted regions are stored in regions_img_ regions_extracted_img = extractor.regions_img_ # Each region index is stored in index_ regions_index = extractor.index_ # Total number of regions extracted n_regions_extracted = regions_extracted_img.shape[-1] # Visualization of region extraction results title = ('%d regions are extracted from %d components.' '\nEach separate color of region indicates extracted region' % (n_regions_extracted, 8)) plotting.plot_prob_atlas(regions_extracted_img, view_type='filled_contours', title=title) ################################################################################
plotting.plot_prob_atlas(components_img, view_type='filled_contours', title='Dictionary Learning maps') #################################################################### #%% # Import Region Extractor algorithm from regions module # threshold=0.5 indicates that we keep nominal of amount nonzero voxels across all # maps, less the threshold means that more intense non-voxels will be survived. from nilearn.regions import RegionExtractor extractor = RegionExtractor(components_img, threshold=0.5, thresholding_strategy='ratio_n_voxels', extractor='local_regions', standardize=True, min_region_size=1350) # Just call fit() to process for regions extraction extractor.fit(subject_niimg) # Extracted regions are stored in regions_img_ regions_extracted_img = extractor.regions_img_ # Each region index is stored in index_ regions_index = extractor.index_ # Total number of regions extracted n_regions_extracted = regions_extracted_img.shape[-1] # Visualization of region extraction results title = ('%d regions are extracted from %d components.' '\nEach separate color of region indicates extracted region' % (n_regions_extracted, 8)) plotting.plot_prob_atlas(regions_extracted_img, view_type='filled_contours', title=title) ##################################################################################
# Extract regions from networks # ------------------------------ # Import Region Extractor algorithm from regions module # threshold=0.5 indicates that we keep nominal of amount nonzero voxels across all # maps, less the threshold means that more intense non-voxels will be survived. from nilearn.regions import RegionExtractor extractor = RegionExtractor(atlas_harvard_oxford.maps, threshold=2, thresholding_strategy='ratio_n_voxels', extractor='local_regions', standardize=True, min_region_size=1350) # Just call fit() to process for regions extraction extractor.fit() # Extracted regions are stored in regions_img_ regions_extracted_img = extractor.regions_img_ # Each region index is stored in index_ regions_index = extractor.index_ # Total number of regions extracted n_regions_extracted = regions_extracted_img.shape[-1] # Visualization of region extraction results title = ('%d regions are extracted from %d components.' '\nEach separate color of region indicates extracted region' % (n_regions_extracted, 3)) plotting.plot_prob_atlas(regions_extracted_img, view_type='filled_contours', title=title)
dipy_home = pjoin(os.path.expanduser('~'), 'dipy_data') folder = pjoin(dipy_home, 'control') fraw = pjoin(folder, 'HUANGYAXIN.nii.gz') atlas_networks = fraw ################################################################################ # Import region extractor to extract atlas networks from nilearn.regions import RegionExtractor # min_region_size in voxel volume mm^3 extraction = RegionExtractor(atlas_networks, min_region_size=800, threshold=10, thresholding_strategy='percentile') # Just call fit() to execute region extraction procedure extraction.fit() regions_img = extraction.regions_img_ ################################################################################ # Visualization # Show region extraction results by importing image & plotting utilities from nilearn import plotting from nilearn.image import index_img from nilearn.plotting import find_xyz_cut_coords # Showing region extraction results using 4D maps visualization tool plotting.plot_prob_atlas(regions_img, display_mode='z', cut_coords=2, view_type='contours', title="Regions extracted.")
def test_region_extractor_fit_and_transform(): n_regions = 9 n_subjects = 5 maps, mask_img = generate_maps((40, 40, 40), n_regions=n_regions) # Test maps are zero in the mask mask_data = get_data(mask_img) mask_data[1, 1, 1] = 0 extractor_without_mask = RegionExtractor(maps) extractor_without_mask.fit() extractor_with_mask = RegionExtractor(maps, mask_img=mask_img) extractor_with_mask.fit() assert not np.all( get_data(extractor_without_mask.regions_img_)[mask_data == 0] == 0.) assert np.all( get_data(extractor_with_mask.regions_img_)[mask_data == 0] == 0.) # smoke test to RegionExtractor with thresholding_strategy='ratio_n_voxels' extract_ratio = RegionExtractor(maps, threshold=0.2, thresholding_strategy='ratio_n_voxels') extract_ratio.fit() assert extract_ratio.regions_img_ != '' assert extract_ratio.regions_img_.shape[-1] >= 9 # smoke test with threshold=string and strategy=percentile extractor = RegionExtractor(maps, threshold=30, thresholding_strategy='percentile', mask_img=mask_img) extractor.fit() assert extractor.index_, np.ndarray assert extractor.regions_img_ != '' assert extractor.regions_img_.shape[-1] >= 9 n_regions_extracted = extractor.regions_img_.shape[-1] shape = (91, 109, 91, 7) expected_signal_shape = (7, n_regions_extracted) for id_ in range(n_subjects): img, data = _make_random_data(shape) # smoke test NiftiMapsMasker transform inherited in Region Extractor signal = extractor.transform(img) assert expected_signal_shape == signal.shape # smoke test with high resolution image maps, mask_img = generate_maps((20, 20, 20), n_regions=n_regions, affine=.2 * np.eye(4)) extract_ratio = RegionExtractor(maps, thresholding_strategy='ratio_n_voxels', smoothing_fwhm=.6, min_region_size=.4) extract_ratio.fit() assert extract_ratio.regions_img_ != '' assert extract_ratio.regions_img_.shape[-1] >= 9 # smoke test with zeros on the diagonal of the affine affine = np.eye(4) affine[[0, 1]] = affine[[1, 0]] # permutes first and second lines maps, mask_img = generate_maps((40, 40, 40), n_regions=n_regions, affine=affine) extract_ratio = RegionExtractor(maps, threshold=0.2, thresholding_strategy='ratio_n_voxels') extract_ratio.fit() assert extract_ratio.regions_img_ != '' assert extract_ratio.regions_img_.shape[-1] >= 9