Example #1
0
    def create_workflow(self, flow, inputnode, outputnode):

        #conflow = pe.Workflow(name='MRTRix_connectome_pipeline')
        #connectome_inputnode = pe.Node(interface=util.IdentityInterface(fields=['intck','fod_file','roi_volumes']),name='inputnode')
        #connectome_outputnode = pe.Node(interface=util.IdentityInterface(fields=['connectome']),name='outputnode')

        def get_first(output):
            return output[0]

        # Additional maps
        map_merge = pe.Node(interface=util.Merge(4),
                            name="merge_additional_maps")
        flow.connect([
            (inputnode, map_merge, [('gFA', 'in1'), ('skewness', 'in2'),
                                    ('kurtosis', 'in3'), ('P0', 'in4')])
            #(map_merge,cmtk_mrtrixcmat, [('out','additional_maps')]),
        ])

        #print "INTCK : ",intck
        if self.config.fiber_filter:
            fibers_filter = pe.Node(
                interface=FilterTractogram(out_file='streamlines_weights.txt'),
                name='fibers_filter')

            flow.connect([(inputnode, fibers_filter, [('track_file',
                                                       'in_tracks')])])

            # if inputnode.inputs.diffusion_model == 'Deterministic':
            #     flow.connect([
            #                 (inputnode,fibers_filter,[('track_file','in_tracks')])
            #                 ])
            # else:
            #     flow.connect([
            #                 (inputnode,fibers_filter,[(('track_file',get_first),'in_tracks')]),
            #                 ])
            flow.connect([(inputnode, fibers_filter, [('fod_file', 'in_fod')])
                          ])

        connectome_builder = pe.Node(interface=BuildConnectome(),
                                     name='connectome_builder')
        #connectome_builder.inputs.zero_diagonal = True

        #Test if trackfile is a list of tracks filename (Probabilistic tracking) or only a filename (Deterministic tracking)

        flow.connect([(inputnode, connectome_builder, [('track_file',
                                                        'in_file')])])

        # if inputnode.inputs.diffusion_model == 'Deterministic':
        #     print "Deterministic"
        #     flow.connect([
        #                 (inputnode,connectome_builder,[('track_file','in_file')])
        #                 ])
        # else:
        #     print "Probabilistic"
        #     flow.connect([
        #                 (inputnode,connectome_builder,[(('track_file',get_first),'in_file')])
        #                 ])

        flow.connect([
            (inputnode, connectome_builder, [(('roi_volumes_registered',
                                               get_first), 'in_parc')]),
        ])

        if self.config.fiber_filter:
            flow.connect([(fibers_filter, connectome_builder,
                           [('out_weights', 'in_weights')])])

        flow.connect([(inputnode, outputnode, [('track_file',
                                                'streamline_final_file')]),
                      (connectome_builder, outputnode,
                       [('out_file', 'connectivity_matrices')])])