-
Notifications
You must be signed in to change notification settings - Fork 77
Requirements and Design for multisite and multiscan support
Description
Currently CPAC is not capable of handling multiple scans for different sites. The requirement is to build a feature which enables CPAC to handle data organization with multiple rest scans specifically for ABIDE data organization.
Analysis
The ABIDE data has multiple scans inside each session for every subject. Example
site -> subjects -> session_1 -> anat_1 ->anat.nii.gz, rest_1 ->rest.nii.gz, rest_2 -> rest.nii.gz
These scans may vary from site to site. The CPAC should be able to handle that.
Modification required
- Create an option for user to specify if the pipeline is going to run on multisite or not.
- For multisite, user should provide the path to the multisite directory in configuration file.
- A single template, both for anatomical and functional files is required.
- The input subject list remains the same.
Design
Lets take an example structure
site-> nyu-> sub01-> session_1->rest_1->rest.nii.gz (site_name/subject_name/session_name/scan_name/nifti_file)
Changes to Configuration file
Earlier
anatTemplate = '%s/session_1/anat/%s.nii.gz'
anatTemplateList = ['subject', 'mprage']
anatSessionFile = '/Users/ranjeet.khanuja/Desktop/session_anat.txt'
funcTemplate = '%s/session_1/*/%s.nii.gz'
funcTemplateList = ['subject', 'rest']
funcSessionFile = '/Users/ranjeet.khanuja/Desktop/session.txt'
Modification
No session list required
Template and template Args/List for both anatomical and functional preprocessing
template = */ %s / * / %s / %s.nii.gz
anattemplateArgs = [subjects, scans, mprage]
functemplateArgs = [subjects, scans, rest]
New Additions
Add the following options to the config file
dataPath = '/home/data/ABIDE/' #path of the directory where data for all the sites is present
Note: No change in the subject inclusion and exclusion list. Rest of the arguments should be figured out by the pipeline on its own.
High Level Design
Modify the datasource
Create a method which walks through the 'datapath' directory and create a list of anatomical and functional scans for each method. Create a dictionary with keys as subject and list of anat and func scans as its values.
Example
sub_dict= { sub001 : [ [anat_1], [rest_1, rest_2, rest3, rest4] ] , sub002 : [ [anat_1], [rest_1, rest_2] ] }
Provide this dictionary to the datasource. The datasource should iterate over anatomical and functional scan list for each subject. Fetch these list for each subject and provide it to the template argument.
To recognize where a scan is functional or anatomical, check if the files are mprage.nii.gz/anat.niii.gz for anatomical scans and rest.nii.gz/func.nii.gz for functional scans
Separate out the two datasource for anat and func in two different files.