def test_fail_fetch_harvard_oxford(): # specify non-existing atlas item assert_raises_regex(ValueError, 'Invalid atlas name', datasets.fetch_harvard_oxford, 'not_inside') # specify existing atlas item target_atlas = 'cort-maxprob-thr0-1mm' target_atlas_fname = 'HarvardOxford-' + target_atlas + '.nii.gz' HO_dir = os.path.join(get_tmpdir(), 'harvard_oxford') os.mkdir(HO_dir) nifti_dir = os.path.join(HO_dir, 'HarvardOxford') os.mkdir(nifti_dir) target_atlas_nii = os.path.join(nifti_dir, target_atlas_fname) datasets.load_mni152_template().to_filename(target_atlas_nii) dummy = open(os.path.join(HO_dir, 'HarvardOxford-Cortical.xml'), 'w') dummy.write("<?xml version='1.0' encoding='us-ascii'?> " "<metadata>" "</metadata>") dummy.close() out_nii, arr = datasets.fetch_harvard_oxford(target_atlas, data_dir=get_tmpdir()) assert_true(isinstance(nibabel.load(out_nii), nibabel.Nifti1Image)) assert_true(isinstance(arr, np.ndarray)) assert_true(len(arr) > 0)
def testget_dataset_dir(): # testing folder creation under different environments, enforcing # a custom clean install os.environ.pop('NIDATA_PATH', None) os.environ.pop('NILEARN_SHARED_DATA', None) expected_base_dir = os.path.expanduser('~/NIDATA_PATH') data_dir = fetchers.get_dataset_dir('test', verbose=0) assert_equal(data_dir, os.path.join(expected_base_dir, 'test')) assert os.path.exists(data_dir) shutil.rmtree(data_dir) expected_base_dir = os.path.join(tmpdir, 'test_NIDATA_PATH') os.environ['NIDATA_PATH'] = expected_base_dir data_dir = fetchers.get_dataset_dir('test', verbose=0) assert_equal(data_dir, os.path.join(expected_base_dir, 'test')) assert os.path.exists(data_dir) shutil.rmtree(data_dir) expected_base_dir = os.path.join(tmpdir, 'nilearn_shared_data') os.environ['NILEARN_SHARED_DATA'] = expected_base_dir data_dir = fetchers.get_dataset_dir('test', verbose=0) assert_equal(data_dir, os.path.join(expected_base_dir, 'test')) assert os.path.exists(data_dir) shutil.rmtree(data_dir) expected_base_dir = os.path.join(tmpdir, 'env_data') os.environ['MY_DATA'] = expected_base_dir data_dir = fetchers.get_dataset_dir('test', env_vars=['MY_DATA'], verbose=0) assert_equal(data_dir, os.path.join(expected_base_dir, 'test')) assert os.path.exists(data_dir) shutil.rmtree(data_dir) no_write = os.path.join(tmpdir, 'no_write') os.makedirs(no_write) os.chmod(no_write, 0o400) # Verify that default is used if non writeable dir os.environ['MY_DATA'] = no_write expected_base_dir = os.path.join(tmpdir, 'nilearn_shared_data') os.environ['NILEARN_SHARED_DATA'] = expected_base_dir data_dir = fetchers.get_dataset_dir('test', env_vars=['MY_DATA'], verbose=0) assert_equal(data_dir, os.path.join(expected_base_dir, 'test')) assert os.path.exists(data_dir) shutil.rmtree(data_dir) # Verify exception is raised on read-only directories assert_raises_regex(OSError, 'Permission denied', fetchers.get_dataset_dir, 'test', no_write, verbose=0) # Verify exception for a path which exists and is a file test_file = os.path.join(tmpdir, 'some_file') with open(test_file, 'w') as out: out.write('abcfeg') assert_raises_regex(OSError, 'Not a directory', fetchers.get_dataset_dir, 'test', test_file, verbose=0)