Skip to content

Requirements and Design for Group Analysis Datagrabber

RanjitK edited this page Jul 5, 2012 · 3 revisions

Requirenments

Nipype based FSL Group Analysis is currently grabbing the derivatives for analysis from the symbolic link directory structure. Since this structure for the derivatives such as sca, alff, vmhc, etc may keep on changing in the future, the group analysis workflow should not be dependent on that.

Analysis

Currently CPAC has two output statergies, one with with actual nipype based folder for each configuration in the config file. The drawback of this structure has a deep tree, so it gets hard for the user to navigate through it. On the better side, this is an more reliable and generated by nipype itself. The other output strategy structure is called symbolic link structure. This is user friendly structure with having just maximum tree height of 4. The limitation here is that the structure is not consistent across all the derivatives and is prone to change. The group analysis should not rely on symbolic link structure and fetch the inputs from the data sink output directory. Also, the symbolic link functionality can be make use of creating a user friendly group analysis structure.

Design

  • Navigate through the datasink and get all the unique paths to the derivatives. Replace the subject Id with '%s', so that it works on all subjects. Also, get the output path for that derivative for the datasink. Store these two path in a tuple and create a list of tupe for each unique path for that derivative. Store it ina dictionary with derivative as the key and list of tuples as the value

Example

Derivative='ALFF_Z_FWHM_2standard.nii.gz'

derivative_dict = ['ALFF_Z_FWHM_2standard.nii.gz':('/Users/ranjeet.khanuja/Desktop/decrypted/results/%s/alff/session_id_func/ session_id_anat/csf_threshold_0.4/gm_threshold_0.2/wm_threshold_0.66/nc_5/selector_0.1.7/hp_0.01/lp_0.1/fwhm_6', 'session_id_func/session_id_anat/csf_threshold_0.4/gm_threshold_0.2/wm_threshold_0.66/nc_5/selector_0.1.7/hp_0.01/lp_0.1/fwhm_6')

  • Create an Identity interface which iterates over each derivative. Pass the output of each derivative . ie. a list of tuple to a function node , which iterates over each path. Send the output of this function node to the datasource.

  • Changes in configuration file - no need to pass the Derivative Template and Derivative Argument List. As these will be created by the code itself. Derivative Arguments will be just the subject list in the user defined order.

dervTemplateList= ['derivative', [sublist]]

  • Separate out the group analysis workflow in a separate file. Also, create a sperate file for the datasource and datasink utility methods.