Key and Param Group Test

[1]:
from cubids import CuBIDS

bod = CuBIDS("/Users/mcieslak/projects/test_bids_data/HBN")
bod._cache_fieldmaps()
100%|██████████| 10/10 [00:00<00:00, 189.38it/s]
[1]:
[]
[2]:
key_groups = bod.get_key_groups()
print(key_groups)
['acquisition-64dir_datatype-dwi_suffix-dwi', 'acquisition-HCP_datatype-anat_suffix-T1w', 'acquisition-HCP_datatype-anat_suffix-T2w', 'acquisition-dwi_datatype-fmap_direction-AP_suffix-epi', 'acquisition-dwi_datatype-fmap_direction-PA_suffix-epi', 'acquisition-fMRI_datatype-fmap_direction-AP_suffix-epi', 'acquisition-fMRI_datatype-fmap_direction-PA_suffix-epi', 'datatype-func_run-1_suffix-bold_task-peer', 'datatype-func_run-1_suffix-bold_task-rest', 'datatype-func_run-2_suffix-bold_task-peer', 'datatype-func_run-2_suffix-bold_task-rest', 'datatype-func_run-3_suffix-bold_task-peer', 'datatype-func_suffix-bold_task-movieDM', 'datatype-func_suffix-bold_task-movieTP']
[4]:
bod.get_param_groups_from_key_group('acquisition-64dir_datatype-dwi_suffix-dwi')
[4]:
EffectiveEchoSpacing FlipAngle RepetitionTime EchoTime DwellTime ParallelReductionFactorInPlane PartialFourier PhaseEncodingDirection TotalReadoutTime key_group FieldmapKey00 FieldmapKey01 NSliceTimes FilePath ParamGroup
0 0.000415 90 3.32 0.1002 0.000003 2 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi acquisition-dwi_datatype-fmap_direction-AP_fma... acquisition-dwi_datatype-fmap_direction-PA_fma... 0 /Users/mcieslak/projects/test_bids_data/HBN/su... 1
1 0.000415 90 3.32 0.1002 0.000003 2 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi acquisition-dwi_datatype-fmap_direction-AP_fma... acquisition-dwi_datatype-fmap_direction-PA_fma... 0 /Users/mcieslak/projects/test_bids_data/HBN/su... 1
2 0.000415 90 3.32 0.1002 0.000003 2 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi acquisition-dwi_datatype-fmap_direction-AP_fma... acquisition-dwi_datatype-fmap_direction-PA_fma... 0 /Users/mcieslak/projects/test_bids_data/HBN/su... 1
[5]:
files_df, summary_df = bod.get_param_groups_dataframes()
[6]:
files_df
[6]:
EffectiveEchoSpacing FlipAngle RepetitionTime EchoTime DwellTime ParallelReductionFactorInPlane PartialFourier PhaseEncodingDirection TotalReadoutTime key_group ... FilePath ParamGroup IntendedForKey00 IntendedForKey01 IntendedForKey02 IntendedForKey03 IntendedForKey04 IntendedForKey05 IntendedForKey06 MultibandAccelerationFactor
0 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
1 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
2 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-64dir_datatype-dwi_suffix-dwi ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN 8 2.500 0.00315 0.000012 2.0 1 NaN NaN acquisition-HCP_datatype-anat_suffix-T1w ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN 8 2.500 0.00315 0.000012 2.0 1 NaN NaN acquisition-HCP_datatype-anat_suffix-T1w ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN 8 2.500 0.00315 0.000012 2.0 1 NaN NaN acquisition-HCP_datatype-anat_suffix-T1w ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN 120 3.200 0.56500 0.000002 2.0 1 NaN NaN acquisition-HCP_datatype-anat_suffix-T2w ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN NaN
7 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-dwi_datatype-fmap_direction-AP_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
8 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-dwi_datatype-fmap_direction-AP_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
9 0.000415 90 3.320 0.10020 0.000003 2.0 1 j- 0.042744 acquisition-dwi_datatype-fmap_direction-AP_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
10 0.000415 90 3.320 0.10020 0.000003 2.0 1 j 0.042744 acquisition-dwi_datatype-fmap_direction-PA_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
11 0.000415 90 3.320 0.10020 0.000003 2.0 1 j 0.042744 acquisition-dwi_datatype-fmap_direction-PA_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
12 0.000415 90 3.320 0.10020 0.000003 2.0 1 j 0.042744 acquisition-dwi_datatype-fmap_direction-PA_suf... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 acquisition-64dir_datatype-dwi_suffix-dwi NaN NaN NaN NaN NaN NaN NaN
13 0.000550 90 5.301 0.05120 0.000003 NaN 1 j- 0.045650 acquisition-fMRI_datatype-fmap_direction-AP_su... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 0 datatype-func_run-1_suffix-bold_task-peer datatype-func_run-1_suffix-bold_task-rest datatype-func_run-2_suffix-bold_task-peer datatype-func_run-3_suffix-bold_task-peer datatype-func_suffix-bold_task-movieTP NaN NaN NaN
14 0.000550 90 5.301 0.05120 0.000003 NaN 1 j- 0.045650 acquisition-fMRI_datatype-fmap_direction-AP_su... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 datatype-func_run-1_suffix-bold_task-peer datatype-func_run-1_suffix-bold_task-rest datatype-func_run-2_suffix-bold_task-peer datatype-func_run-2_suffix-bold_task-rest datatype-func_run-3_suffix-bold_task-peer datatype-func_suffix-bold_task-movieDM datatype-func_suffix-bold_task-movieTP NaN
15 0.000550 90 5.301 0.05120 0.000003 NaN 1 j 0.045650 acquisition-fMRI_datatype-fmap_direction-PA_su... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 0 datatype-func_run-1_suffix-bold_task-peer datatype-func_run-1_suffix-bold_task-rest datatype-func_run-2_suffix-bold_task-peer datatype-func_run-3_suffix-bold_task-peer datatype-func_suffix-bold_task-movieTP NaN NaN NaN
16 0.000550 90 5.301 0.05120 0.000003 NaN 1 j 0.045650 acquisition-fMRI_datatype-fmap_direction-PA_su... ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 datatype-func_run-1_suffix-bold_task-peer datatype-func_run-1_suffix-bold_task-rest datatype-func_run-2_suffix-bold_task-peer datatype-func_run-2_suffix-bold_task-rest datatype-func_run-3_suffix-bold_task-peer datatype-func_suffix-bold_task-movieDM datatype-func_suffix-bold_task-movieTP NaN
17 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-1_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
18 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-1_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
19 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-1_suffix-bold_task-rest ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
20 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-1_suffix-bold_task-rest ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
21 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-2_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
22 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-2_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
23 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-2_suffix-bold_task-rest ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
24 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-3_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
25 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_run-3_suffix-bold_task-peer ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
26 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_suffix-bold_task-movieDM ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
27 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_suffix-bold_task-movieTP ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0
28 0.000580 31 0.800 0.03000 0.000003 NaN 1 j- 0.048141 datatype-func_suffix-bold_task-movieTP ... /Users/mcieslak/projects/test_bids_data/HBN/su... 1 NaN NaN NaN NaN NaN NaN NaN 6.0

29 rows × 23 columns

[7]:
summary_df[["key_group", "ParamGroup", "Count"]]
[7]:
key_group ParamGroup Count
0 acquisition-64dir_datatype-dwi_suffix-dwi 1 3
1 acquisition-HCP_datatype-anat_suffix-T1w 1 3
2 acquisition-HCP_datatype-anat_suffix-T2w 1 1
3 acquisition-dwi_datatype-fmap_direction-AP_suf... 1 3
4 acquisition-dwi_datatype-fmap_direction-PA_suf... 1 3
5 acquisition-fMRI_datatype-fmap_direction-AP_su... 0 1
6 acquisition-fMRI_datatype-fmap_direction-AP_su... 1 1
7 acquisition-fMRI_datatype-fmap_direction-PA_su... 0 1
8 acquisition-fMRI_datatype-fmap_direction-PA_su... 1 1
9 datatype-func_run-1_suffix-bold_task-peer 1 2
10 datatype-func_run-1_suffix-bold_task-rest 1 2
11 datatype-func_run-2_suffix-bold_task-peer 1 2
12 datatype-func_run-2_suffix-bold_task-rest 1 1
13 datatype-func_run-3_suffix-bold_task-peer 1 2
14 datatype-func_suffix-bold_task-movieDM 1 1
15 datatype-func_suffix-bold_task-movieTP 1 2
[ ]:
import pandas as pd
param_group_cols = list(set(df.columns.to_list()) - set(["FilePath"]))
uniques = df.drop_duplicates(param_group_cols, ignore_index=True)
print(uniques.shape)
counts = df.groupby(["key_group", "ParamGroup"]).size().reset_index(name='Count')
print(counts.shape)

params_and_counts = pd.merge(uniques, counts)
print(params_and_counts.shape)
[ ]:

[ ]:
no_paths[["key_group", "ParamGroup"]].groupby(["key_group", "ParamGroup"]).count()
[ ]:

[ ]:

[ ]:
keyparam_df.groupby(["key_group", "ParamGroup"]).size().reset_index(name='Count')
[ ]:
fname = 'sub-NDARAT581NDH/ses-HBNsiteRU/dwi/sub-NDARAT581NDH_ses-HBNsiteRU_acq-64dir_dwi.nii.gz'
[ ]:
bod.get_key_groups()
[ ]:
self = bod

[ ]:
from cubids.cubids import *
suffix = '(phase1|phasediff|epi|fieldmap)'
fmap_files = self.layout.get(suffix=suffix, regex_search=True,
                             extension=['.nii.gz', '.nii'])

files_to_fmaps = defaultdict(list)

print("\n".join([f.path for f in fmap_files]))
[ ]:
"""
for fmap_file in tqdm(fmap_files):
    intentions = listify(fmap_file.get_metadata().get("IntendedFor"))
    subject_prefix = "sub-%s/" % fmap_file.entities['subject']
    for intended_for in intentions:
        subject_relative_path = subject_prefix + intended_for
        files_to_fmaps[subject_relative_path].append(fmap_file)
"""
fmap_file = fmap_files[0]
intentions = listify(fmap_file.get_metadata().get("IntendedFor"))
print("intentions:", intentions)
subject_prefix = "sub-%s/" % fmap_file.entities['subject']
print(subject_prefix)
[ ]:
suffix = '(phase1|phasediff|epi|fieldmap)'
fmap_files = self.layout.get(suffix=suffix, regex_search=True,
                             extension=['.nii.gz', '.nii'])

files_to_fmaps = defaultdict(list)
for fmap_file in tqdm(fmap_files):
    intentions = listify(fmap_file.get_metadata().get("IntendedFor"))
    subject_prefix = "sub-%s" % fmap_file.entities['subject']
    for intended_for in intentions:
        full_path = Path(self.path) / subject_prefix / intended_for
        files_to_fmaps[str(full_path)].append(fmap_file)
[ ]:
for data_file, fmap_files in bod.fieldmap_lookup.items():
    print(data_file[44:])
    for fmap_file in fmap_files:
        print("   ", fmap_file.path[44:])
[ ]:
files_to_fmaps.keys()
[ ]:
from cubids.cubids import *
files = [
 '/Users/mcieslak/projects/test_bids_data/HBN/sub-NDARAT581NDH/ses-HBNsiteRU/dwi/sub-NDARAT581NDH_ses-HBNsiteRU_acq-64dir_dwi.nii.gz',
 '/Users/mcieslak/projects/test_bids_data/HBN/sub-NDARRP384BVX/ses-HBNsiteRU/dwi/sub-NDARRP384BVX_ses-HBNsiteRU_acq-64dir_dwi.nii.gz']

dfs = []
fieldmap_lookup = bod.fieldmap_lookup
key_group_name = "test"
# path needs to be relative to the root with no leading prefix
for path in files:
    metadata = bod.layout.get_metadata(path)
    wanted_keys = metadata.keys() & IMAGING_PARAMS
    example_data = {key: metadata[key] for key in wanted_keys}
    example_data["key_group"] = key_group_name

    # Get the fieldmaps out and add their types
    print(fieldmap_lookup[path])
    fieldmap_types = sorted([fmap.entities['fmap'] for fmap in fieldmap_lookup[path]])
    for fmap_num, fmap_type in enumerate(fieldmap_types):
        example_data['fieldmap_type%02d' % fmap_num] = fmap_type

    # Expand slice timing to multiple columns
    SliceTime = example_data.get('SliceTiming')
    if SliceTime:
        # round each slice time to one place after the decimal
        for i in range(len(SliceTime)):
            SliceTime[i] = round(SliceTime[i], 1)
        example_data.update(
            {"SliceTime%03d" % SliceNum: time for
             SliceNum, time in enumerate(SliceTime)})
        del example_data['SliceTiming']

    dfs.append(example_data)
[ ]:
example_data