def test_handle_project_label_failure(self): """ """ # Define inputs bids_hierarchy = { '7t_trt_reduced': { 'files': ['dataset_description.json'], 'sub-01': { 'files': ['sub-01_sessions.tsv'], 'ses-1': { 'files': ['sub-01_ses-1_scans.tsv'], 'fmap': {'files': ['sub-01_ses-1_run-1_magnitude1.nii.gz']}, 'anat': {'files': ['sub-01_ses-1_T1map.nii.gz']}, 'func': {'files': ['sub-01_ses-1_task-rest_acq-fullbrain_run-1_bold.nii.gz']}}, 'ses-2': { 'files': ['sub-01_ses-2_scans.tsv'], 'fmap': {'files': ['sub-01_ses-2_run-1_magnitude1.nii.gz']}, 'func': {'files': ['sub-01_ses-2_task-rest_acq-fullbrain_run-1_bold.nii.gz']}}}, 'sub-02': { 'files': ['sub-02_sessions.tsv'], 'ses-1': { 'files': ['sub-02_ses-1_scans.tsv'], 'fmap': {'files': ['sub-02_ses-1_run-1_magnitude1.nii.gz']}, 'anat': {'files': ['sub-02_ses-1_T1map.nii.gz']}, 'func': {'files': ['sub-02_ses-1_task-rest_acq-fullbrain_run-1_bold.nii.gz']}}, 'ses-2': { 'files': ['sub-02_ses-2_scans.tsv'], 'fmap': {'files': ['sub-02_ses-2_run-1_magnitude1.nii.gz']}, 'func': {'files': ['sub-02_ses-2_task-rest_acq-fullbrain_run-1_bold.nii.gz']}}}}} project_label_cli = 'new_project_label' rootdir = '/root' # Call function bids_hierarchy_returned, rootdir_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, None, None)
def test_handle_project_label_session_not_found(self): """ """ # Define inputs bids_hierarchy = { 'files': ['CHANGES', 'dataset_description.json'], 'code1': {'files': ['debug.py']}, 'code2': {'files': ['debug.py']}, 'sub-01': { 'ses-01': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']} }, 'ses-02': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']} } } } project_label_cli = 'new_project_label' rootdir = '/root/sub-01' # Call function with self.assertRaises(SystemExit) as err: bids_hierarchy_returned, rootdir_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, 'sub-01', 'ses-03')
def test_handle_project_label_single_subject(self): """ """ # Define inputs bids_hierarchy = { 'files': ['CHANGES', 'dataset_description.json'], 'code1': {'files': ['debug.py']}, 'code2': {'files': ['debug.py']}, 'sub-02': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']}}, 'sub-01': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']}} } project_label_cli = 'new_project_label' rootdir = '/root/sub-01' # Call function bids_hierarchy_returned, rootdir_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, 'sub-02', None) # Assert output is as expected bids_hierarchy_expected = {project_label_cli: {'sub-02': bids_hierarchy['sub-02']}} bids_hierarchy_expected[project_label_cli]['files'] = [] self.assertEqual(bids_hierarchy_returned, bids_hierarchy_expected) # Assert rootdir is expected self.assertEqual(rootdir_returned, '/root')
def test_handle_project_label_sourcedata(self): """ """ # Define inputs bids_hierarchy = { 'project_label': { 'files': ['CHANGES', 'dataset_description.json'], 'code1': {'files': ['debug.py']}, 'code2': {'files': ['debug.py']}, 'sub-01': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']}}, 'sourcedata': { 'sub-01': { 'files': [], 'anat': {'files': ['test.dcm.gz']}, 'dwi': {'files': ['test.dcm.gz']}, 'func': {'files': ['test.dcm.gz']} } } } } project_label_cli = None rootdir = '/root' # Call function bids_hierarchy_returned, rootdir_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, True, None, None) # Assert output is as expected self.assertEqual(bids_hierarchy_returned, bids_hierarchy) # Assert rootdir is expected self.assertEqual(rootdir_returned, rootdir) bids_hierarchy_returned, rootdir_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, None, None) # Assert output is as expected bids_hierarchy['project_label'].pop('sourcedata') self.assertEqual(bids_hierarchy_returned, bids_hierarchy) # Assert rootdir is expected self.assertEqual(rootdir_returned, rootdir)
def test_handle_project_label_files(self): """ """ # Define inputs bids_hierarchy = {'files': ['debug.py']} project_label_cli = None rootdir = '/root' # Assert SystemExit raised with self.assertRaises(SystemExit) as err: bids_hierarchy_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, None, None)
def test_handle_project_label_group(self): """ """ # Define inputs bids_hierarchy = { 'group_id': { 'project_label': { 'files': ['CHANGES', 'dataset_description.json'], 'code1': {'files': ['debug.py']}, 'code2': {'files': ['debug.py']}, 'sub-01': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']}}}}} project_label_cli = None rootdir = '/root' # Assert SystemExit raised with self.assertRaises(SystemExit) as err: upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, None, None)
def test_handle_project_label_sub_nocli(self): """ """ # Define inputs bids_hierarchy = { 'files': ['CHANGES', 'dataset_description.json'], 'code1': {'files': ['debug.py']}, 'code2': {'files': ['debug.py']}, 'sub-01': { 'files': [], 'anat': {'files': ['test.nii.gz']}, 'dwi': {'files': ['test.nii.gz']}, 'func': {'files': ['test.nii.gz']}} } project_label_cli = None rootdir = '/root/sub-01' # Call function -- assert error raised because project label cannot be determined with self.assertRaises(SystemExit) as err: bids_hierarchy_returned = upload_bids.handle_project_label( copy.deepcopy(bids_hierarchy), project_label_cli, rootdir, False, None, None)