def test_has_files(tmp_crumb): assert not os.path.exists(tmp_crumb.path) assert not tmp_crumb.has_files() values_dict = { 'session_id': ['session_{:02}'.format(i) for i in range(2)], 'subject_id': ['subj_{:03}'.format(i) for i in range(3)], 'modality': ['anat'], 'image': ['mprage1.nii', 'mprage2.nii', 'mprage3.nii'], } paths = mktree(tmp_crumb, list(ParameterGrid(values_dict))) assert os.path.exists(tmp_crumb.split()[0]) assert not tmp_crumb.has_files() pa = Path(str(paths[0])) pa.rmdir() pa.touch() assert pa.exists() assert pa.is_file() assert tmp_crumb.has_files()
def test_setitem(tmp_crumb): assert not os.path.exists(tmp_crumb.split()[0]) values_dict = { 'session_id': ['session_{:02}'.format(i) for i in range(2)], 'subject_id': ['subj_{:03}'.format(i) for i in range(3)], 'modality': ['anat'], 'image': ['mprage1.nii', 'mprage2.nii', 'mprage3.nii'], } assert not tmp_crumb.exists() mktree(tmp_crumb, list(ParameterGrid(values_dict))) cr = list(tmp_crumb.ls())[0] assert not list(cr.open_args()) assert cr['image'] == [values_dict['image'][0]] cr['image'] = 'mprage2.nii' assert cr['image'] == ['mprage2.nii'] assert 'mprage2.nii' in cr.path assert 'mprage2.nii' in cr.ls()[0].path cr.clear('image') assert 'image' in list(cr.open_args()) assert 'mprage2.nii' not in cr.path assert 'mprage2.nii' not in cr.ls()[0].path
def test_exists2(tmp_crumb): assert not os.path.exists(tmp_crumb.split()[0]) values_dict = { 'session_id': ['session_{:02}'.format(i) for i in range(2)], 'subject_id': ['subj_{:03}'.format(i) for i in range(3)], } mktree(tmp_crumb, list(ParameterGrid(values_dict))) assert not tmp_crumb.exists()
def test_exists(tmp_crumb): assert not os.path.exists(tmp_crumb.split()[0]) values_dict = { 'session_id': ['session_{:02}'.format(i) for i in range(2)], 'subject_id': ['subj_{:03}'.format(i) for i in range(3)], 'modality': ['anat'], 'image': ['mprage1.nii', 'mprage2.nii', 'mprage3.nii'], } assert not tmp_crumb.exists() mktree(tmp_crumb, list(ParameterGrid(values_dict))) assert tmp_crumb.exists() assert not _split_exists('/_/asdfasdfasdf?/{hansel}')
def test_ls_with_check(tmp_crumb): assert not os.path.exists(tmp_crumb._path) values_dict = { 'session_id': ['session_{:02}'.format(i) for i in range(2)], 'subject_id': ['subj_{:03}'.format(i) for i in range(3)], 'modality': ['anat'], 'image': ['mprage1.nii', 'mprage2.nii', 'mprage3.nii'], } paths = mktree(tmp_crumb, list(ParameterGrid(values_dict))) sbj_crumb = tmp_crumb.replace(subject_id='subj_000') assert sbj_crumb.ls('subject_id', make_crumbs=False, fullpath=False) == ['subj_000'] assert os.path.exists(tmp_crumb.split()[0]) assert all([os.path.exists(p.path) for p in paths]) assert all([p.exists() for p in paths]) images = tmp_crumb.ls('image', fullpath=True, make_crumbs=True, check_exists=True) modalities = tmp_crumb.ls('modality', fullpath=True, make_crumbs=True, check_exists=True) assert all([img.exists() for img in images]) assert all([mod.exists() for mod in modalities]) Path(str(images[0])).rmdir() images2 = tmp_crumb.ls('image', fullpath=True, make_crumbs=True, check_exists=True) assert images != images2 assert len(images) == len(images2) + 1 assert not all([img.exists() for img in images]) assert all([img.exists() for img in images2]) Path(str(images[1])).rmdir() Path(str(images[2])).rmdir() images2 = tmp_crumb.ls('image', fullpath=True, make_crumbs=True, check_exists=True) assert tmp_crumb.ls('image') == tmp_crumb.ls() assert tmp_crumb.ls() == tmp_crumb.unfold() assert not all([img.exists() for img in images]) assert all([img.exists() for img in images2]) modalities2 = tmp_crumb.ls('modality', fullpath=True, make_crumbs=True, check_exists=True) str_modalities2 = tmp_crumb.ls('modality', fullpath=True, make_crumbs=False, check_exists=True) assert images != images2 assert len(images) == len(images2) + 3 assert modalities != modalities2 assert not all([mod.exists() for mod in modalities]) assert all([mod.exists() for mod in modalities2]) assert all([isinstance(smod, str) for smod in str_modalities2]) assert all([isinstance(mod, Crumb) for mod in modalities2]) assert all([mod.path == smod for mod, smod in zip(sorted(modalities2), sorted(str_modalities2))]) shutil.rmtree(modalities2[0].split()[0], ignore_errors=True) modalities3 = tmp_crumb.ls('modality', fullpath=True, make_crumbs=True, check_exists=True) assert modalities2 != modalities3 assert not all([mod.exists() for mod in modalities2]) assert all([mod.exists() for mod in modalities3]) assert tmp_crumb.unfold() == tmp_crumb.ls('image', fullpath=True, make_crumbs=True, check_exists=True) pytest.raises(IOError, modalities2[0].__getitem__, 'image') img_crumb = tmp_crumb.replace(image='mprage1.nii') assert 'image' in img_crumb._argval assert img_crumb['image'] == ['mprage1.nii'] assert img_crumb['image'][0] == img_crumb.get_first('image') img_crumb['modality'] = 'anat' assert 'modality' in img_crumb._argval assert img_crumb['modality'] == ['anat'] assert img_crumb.has_set('modality') assert img_crumb['session_id'].count('session_01') == img_crumb['session_id'].count('session_00') img_crumb['session_id'] = 'session_00' assert 'session_id' in img_crumb._argval assert img_crumb['session_id'] == ['session_00'] assert 'subj_000' not in img_crumb['subject_id'] unfolded_crumbs = tmp_crumb.unfold() assert list(unfolded_crumbs[0].open_args()) == [] assert unfolded_crumbs[0].unfold() == [unfolded_crumbs[0]] pytest.raises(AttributeError, unfolded_crumbs[0]._check_open_args, ['subject_id'])
def test_touch(tmp_crumb): assert not os.path.exists(tmp_crumb.split()[0]) path = tmp_crumb.touch() assert path == tmp_crumb.split()[0] assert os.path.exists(path)