def test_AFQ_missing_files(): tmpdir = nbtmp.InTemporaryDirectory() bids_path = tmpdir.name with pytest.raises( ValueError, match="There must be a dataset_description.json in bids_path"): api.AFQ(bids_path) afd.to_bids_description(bids_path, **{ "Name": "Missing", "Subjects": ["sub-01"] }) with pytest.raises( ValueError, match=f"No non-json files recognized by pyBIDS in {bids_path}"): api.AFQ(bids_path) subses_folder = op.join(bids_path, "derivatives", "otherDeriv", 'sub-01', 'ses-01') os.makedirs(subses_folder, exist_ok=True) afd.to_bids_description( op.join(bids_path, "derivatives", "otherDeriv"), **{ "Name": "Missing", "PipelineDescription": { "Name": "otherDeriv" } }) touch(op.join(subses_folder, "sub-01_ses-01_dwi.nii.gz")) with pytest.raises(ValueError, match="No non-json files recognized by pyBIDS" + " in the pipeline: missingPipe"): api.AFQ(bids_path, dmriprep="missingPipe") os.mkdir(op.join(bids_path, "missingPipe")) afd.to_bids_description( op.join(bids_path, "missingPipe"), **{ "Name": "Missing", "PipelineDescription": { "Name": "missingPipe" } }) with pytest.raises(ValueError, match="No non-json files recognized by pyBIDS" + " in the pipeline: missingPipe"): api.AFQ(bids_path, dmriprep="missingPipe")
afd.fetch_stanford_hardi_tractography() bids_path = op.join(op.expanduser('~'), 'AFQ_data', 'stanford_hardi') tractography_path = op.join(bids_path, 'derivatives', 'my_tractography') sub_path = op.join(tractography_path, 'sub-01', 'ses-01', 'dwi') os.makedirs(sub_path, exist_ok=True) os.rename( op.join(op.expanduser('~'), 'AFQ_data', 'stanford_hardi_tractography', 'full_segmented_cleaned_tractography.trk'), op.join(sub_path, 'sub-01_ses-01-dwi_tractography.trk')) afd.to_bids_description( tractography_path, **{ "Name": "my_tractography", "PipelineDescription": { "Name": "my_tractography" } }) ########################################################################### # After we do that, our dataset folder should look like this: # # | stanford_hardi # | ├── dataset_description.json # | └── derivatives # | ├── freesurfer # | │ ├── dataset_description.json # | │ └── sub-01 # | │ └── ses-01 # | │ └── anat
def create_dummy_bids_path(n_subjects, n_sessions, share_sessions=True): subjects = ['sub-0%s' % (d + 1) for d in range(n_subjects)] # Case where there are individual session folders within each subject's # folder: if n_sessions > 1: # create data for n_sessions for each subject if share_sessions: sessions = ['ses-0%s' % (d + 1) for d in range(n_sessions)] bids_dir = tempfile.mkdtemp() afd.to_bids_description( bids_dir, **{ "Name": "Dummy", "Subjects": subjects, "Sessions": sessions }) dmriprep_dir = op.join(bids_dir, "derivatives", "dmriprep") os.makedirs(dmriprep_dir) afd.to_bids_description( dmriprep_dir, **{ "Name": "Dummy", "PipelineDescription": { "Name": "synthetic" } }) for subject in subjects: for session in sessions: for modality in ['anat', 'dwi']: os.makedirs( op.join(dmriprep_dir, subject, session, modality)) # Make some dummy data: create_dummy_data(dmriprep_dir, subject, session) else: # create different sessions for each subject sessions = ['ses-0%s' % (d + 1) for d in range(n_subjects)] bids_dir = tempfile.mkdtemp() afd.to_bids_description( bids_dir, **{ "Name": "Dummy", "Subjects": subjects, "Sessions": sessions }) dmriprep_dir = op.join(bids_dir, "derivatives", "dmriprep") os.makedirs(dmriprep_dir) afd.to_bids_description( dmriprep_dir, **{ "Name": "Dummy", "PipelineDescription": { "Name": "synthetic" } }) for d in range(n_subjects): subject = subjects[d] session = sessions[d] for modality in ['anat', 'dwi']: os.makedirs( op.join(dmriprep_dir, subject, session, modality)) # Make some dummy data: create_dummy_data(dmriprep_dir, subject, session) else: # Don't create session folders at all: bids_dir = tempfile.mkdtemp() afd.to_bids_description(bids_dir, **{ "Name": "Dummy", "Subjects": subjects }) dmriprep_dir = op.join(bids_dir, "derivatives", "dmriprep") os.makedirs(dmriprep_dir) afd.to_bids_description( dmriprep_dir, **{ "Name": "Dummy", "PipelineDescription": { "Name": "synthetic" } }) for subject in subjects: for modality in ['anat', 'dwi']: os.makedirs(op.join(dmriprep_dir, subject, modality)) # Make some dummy data: create_dummy_data(dmriprep_dir, subject) return bids_dir