@@ -473,7 +473,12 @@ def modify_uploaded_dataset_list(uploaded_img_list):
473
473
config_file = ""
474
474
exclude_data = False
475
475
476
- config_file_list = natsorted ([x for x in os .listdir (DATA_DIR ) if x .endswith ('ezBIDS_template.json' )])
476
+ config_file_list = []
477
+ for root , dirs , files in os .walk (DATA_DIR ):
478
+ for file in files :
479
+ if file .endswith ('ezBIDS_template.json' ):
480
+ config_file_list .append (os .path .join (root , file ))
481
+
477
482
if len (config_file_list ):
478
483
# Ideally only one config file uploaded, but if multiple configurations found, select last one (most recent?)
479
484
config = True
@@ -1392,7 +1397,7 @@ def determine_sub_ses_IDs(dataset_list, bids_compliant):
1392
1397
List of dictionaries containing pertinent and unique information about
1393
1398
the data, primarily coming from the metadata in the json files.
1394
1399
1395
- subjects_information : list
1400
+ subs_information : list
1396
1401
List of dictionaries containing subject identification info, such as
1397
1402
PatientID, PatientName, PatientBirthDate, and corresponding session
1398
1403
information.
@@ -1402,7 +1407,7 @@ def determine_sub_ses_IDs(dataset_list, bids_compliant):
1402
1407
"""
1403
1408
date_counter = 1
1404
1409
subject_idx_counter = 0
1405
- subjects_information = []
1410
+ subs_information = []
1406
1411
participants_info = {}
1407
1412
# Determine unique subjects from uploaded dataset
1408
1413
for sub in np .unique ([x ["subject" ] for x in dataset_list ]):
@@ -1550,9 +1555,9 @@ def determine_sub_ses_IDs(dataset_list, bids_compliant):
1550
1555
"validationErrors" : []
1551
1556
}
1552
1557
1553
- subjects_information .append (subject_ids_info )
1558
+ subs_information .append (subject_ids_info )
1554
1559
1555
- return dataset_list , subjects_information , participants_info
1560
+ return dataset_list , subs_information , participants_info
1556
1561
1557
1562
1558
1563
def determine_unique_series (dataset_list , bids_compliant ):
@@ -1638,15 +1643,15 @@ def determine_unique_series(dataset_list, bids_compliant):
1638
1643
return dataset_list , dataset_list_unique_series
1639
1644
1640
1645
1641
- def template_configuration (dataset_list_unique_series , subjects_information , config_file ):
1646
+ def template_configuration (dataset_list_unique_series , subs_information , config_file ):
1642
1647
"""
1643
1648
Parameters
1644
1649
----------
1645
1650
dataset_list_unique_series : list of dictionaries
1646
1651
A modified version of dataset_list, where this list contains only the
1647
1652
dictionaries of acquisitions with a unique series group ID.
1648
1653
1649
- subjects_information : list
1654
+ subs_information : list
1650
1655
List of dictionaries containing subject identification info, such as
1651
1656
PatientID, PatientName, PatientBirthDate, and corresponding session
1652
1657
information.
@@ -1669,13 +1674,16 @@ def template_configuration(dataset_list_unique_series, subjects_information, con
1669
1674
A modified version of dataset_list, where this list contains only the
1670
1675
dictionaries of acquisitions with a unique series group ID.
1671
1676
1672
- subjects_information : list
1677
+ subs_information : list
1673
1678
List of dictionaries containing subject identification info, such as
1674
1679
PatientID, PatientName, PatientBirthDate, and corresponding session
1675
1680
information.
1676
1681
1677
1682
events : dictionary
1678
1683
Information pertaining to the events timing files for func/bold data.
1684
+
1685
+ bids_uri : boolean
1686
+ Specifies whether or not user wants BIDS URI format for IntendedFor metadata mapping
1679
1687
"""
1680
1688
1681
1689
config_data = open (config_file )
@@ -1687,6 +1695,7 @@ def template_configuration(dataset_list_unique_series, subjects_information, con
1687
1695
subjects_sessions_info = config_data ["subjects" ]
1688
1696
config_dataset_list_unique_series = config_data ["series" ]
1689
1697
config_dataset_list_objects = config_data ["objects" ]
1698
+ bids_uri = config_data ["BIDSURI" ]
1690
1699
1691
1700
# Try to determine subject (and session) mapping from what's in the configuration
1692
1701
match_start_index = None
@@ -1712,7 +1721,7 @@ def template_configuration(dataset_list_unique_series, subjects_information, con
1712
1721
"AcquisitionDateTime"
1713
1722
]
1714
1723
1715
- for sub_info in subjects_information :
1724
+ for sub_info in subs_information :
1716
1725
sub = sub_info ["subject" ]
1717
1726
for key in ref_patient_info .keys ():
1718
1727
if ref_subject_id in ref_patient_info [key ]:
@@ -1819,7 +1828,7 @@ def template_configuration(dataset_list_unique_series, subjects_information, con
1819
1828
events ["sampleValues" ] = {}
1820
1829
1821
1830
return (readme , dataset_description_dic , participants_column_info ,
1822
- dataset_list_unique_series , subjects_information , events )
1831
+ dataset_list_unique_series , subs_information , events , bids_uri )
1823
1832
1824
1833
1825
1834
def create_lookup_info ():
@@ -3106,15 +3115,15 @@ def check_dwi_b0maps(dataset_list_unique_series):
3106
3115
dataset_list = organize_dataset (dataset_list )
3107
3116
3108
3117
# Determine subject (and session) information
3109
- dataset_list , subjects_information , participants_info = determine_sub_ses_IDs (dataset_list , bids_compliant )
3118
+ dataset_list , subs_information , participants_info = determine_sub_ses_IDs (dataset_list , bids_compliant )
3110
3119
3111
3120
# Make a new list containing the dictionaries of only unique dataset acquisitions
3112
3121
dataset_list , dataset_list_unique_series = determine_unique_series (dataset_list , bids_compliant )
3113
3122
3114
3123
# If ezBIDS configuration file detected in upload, use that for datatype, suffix, and entity identifications
3115
3124
if config is True :
3116
- readme , dataset_description_dic , participants_column_info , dataset_list_unique_series , subjects_information , events = \
3117
- template_configuration (dataset_list_unique_series , subjects_information , config_file )
3125
+ readme , dataset_description_dic , participants_column_info , dataset_list_unique_series , subs_information , events , \
3126
+ bids_uri = template_configuration (dataset_list_unique_series , subs_information , config_file )
3118
3127
3119
3128
else :
3120
3129
# README
@@ -3160,6 +3169,9 @@ def check_dwi_b0maps(dataset_list_unique_series):
3160
3169
}
3161
3170
}
3162
3171
3172
+ # BIDS URI
3173
+ bids_uri = False
3174
+
3163
3175
# Generate lookup information directory to help with datatype and suffix identification (and to some degree, entities)
3164
3176
lookup_dic = create_lookup_info ()
3165
3177
@@ -3212,12 +3224,13 @@ def check_dwi_b0maps(dataset_list_unique_series):
3212
3224
EZBIDS = {
3213
3225
"readme" : readme ,
3214
3226
"datasetDescription" : dataset_description_dic ,
3215
- "subjects" : subjects_information ,
3227
+ "subjects" : subs_information ,
3216
3228
"participantsColumn" : participants_column_info ,
3217
3229
"participantsInfo" : participants_info ,
3218
3230
"series" : ui_series_info_list ,
3219
3231
"objects" : objects_list ,
3220
- "events" : events
3232
+ "events" : events ,
3233
+ "BIDSURI" : bids_uri
3221
3234
}
3222
3235
3223
3236
# Write dictionary to ezBIDS_core.json
0 commit comments