def test_source_space_from_label(tmp_path, pass_ids): """Test generating a source space from volume label.""" aseg_short = 'aseg.mgz' atlas_ids, _ = read_freesurfer_lut() volume_label = 'Left-Cerebellum-Cortex' # Test pos as dict pos = dict() with pytest.raises(ValueError, match='mri must be None if pos is a dict'): setup_volume_source_space( 'sample', pos=pos, volume_label=volume_label, mri=aseg_short, subjects_dir=subjects_dir) # Test T1.mgz provided with pytest.raises(RuntimeError, match=r'Must use a \*aseg.mgz file'): setup_volume_source_space( 'sample', mri='T1.mgz', volume_label=volume_label, subjects_dir=subjects_dir) # Test invalid volume label mri = aseg_short with pytest.raises(ValueError, match="'Left-Cerebral' not found.*Did you"): setup_volume_source_space( 'sample', volume_label='Left-Cerebral', mri=mri, subjects_dir=subjects_dir) # These should be equivalent if pass_ids: use_volume_label = {volume_label: atlas_ids[volume_label]} else: use_volume_label = volume_label # ensure it works even when not provided (detect that it should be aseg) src = setup_volume_source_space( 'sample', volume_label=use_volume_label, add_interpolator=False, subjects_dir=subjects_dir) assert_equal(volume_label, src[0]['seg_name']) assert src[0]['nuse'] == 404 # for our given pos and label # test reading and writing out_name = tmp_path / 'temp-src.fif' write_source_spaces(out_name, src) src_from_file = read_source_spaces(out_name) _compare_source_spaces(src, src_from_file, mode='approx')
def test_read_freesurfer_lut(fname): """Test reading volume label names.""" atlas_ids, colors = read_freesurfer_lut(fname) assert list(atlas_ids).count('Brain-Stem') == 1 assert len(colors) == len(atlas_ids) == 1266 label_names, label_colors = get_volume_labels_from_aseg(aseg_fname, return_colors=True) assert isinstance(label_names, list) assert isinstance(label_colors, list) assert label_names.count('Brain-Stem') == 1 for c in label_colors: assert isinstance(c, np.ndarray) assert c.shape == (4, ) assert len(label_names) == len(label_colors) == 46 with pytest.raises(ValueError, match='must be False'): get_volume_labels_from_aseg(aseg_fname, return_colors=True, atlas_ids=atlas_ids) label_names_2 = get_volume_labels_from_aseg(aseg_fname, atlas_ids=atlas_ids) assert label_names == label_names_2