def test_ImageInfo_outputs():
    output_map = dict(TE=dict(),
    TI=dict(),
    TR=dict(),
    data_type=dict(),
    dimensions=dict(),
    file_format=dict(),
    info=dict(),
    orientation=dict(),
    out_file=dict(),
    ph_enc_dir=dict(),
    vox_sizes=dict(),
    )
    outputs = ImageInfo.output_spec()

    for key, metadata in output_map.items():
        for metakey, value in metadata.items():
            yield assert_equal, getattr(outputs.traits()[key], metakey), value
def test_ImageInfo_outputs():
    output_map = dict(
        TE=dict(),
        TI=dict(),
        TR=dict(),
        data_type=dict(),
        dimensions=dict(),
        file_format=dict(),
        info=dict(),
        orientation=dict(),
        out_file=dict(),
        ph_enc_dir=dict(),
        vox_sizes=dict(),
    )
    outputs = ImageInfo.output_spec()

    for key, metadata in output_map.items():
        for metakey, value in metadata.items():
            yield assert_equal, getattr(outputs.traits()[key], metakey), value
def test_ImageInfo_inputs():
    input_map = dict(args=dict(argstr='%s',
    ),
    environ=dict(nohash=True,
    usedefault=True,
    ),
    ignore_exception=dict(nohash=True,
    usedefault=True,
    ),
    in_file=dict(argstr='%s',
    position=1,
    ),
    subjects_dir=dict(),
    terminal_output=dict(nohash=True,
    ),
    )
    inputs = ImageInfo.input_spec()

    for key, metadata in input_map.items():
        for metakey, value in metadata.items():
            yield assert_equal, getattr(inputs.traits()[key], metakey), value
def test_ImageInfo_inputs():
    input_map = dict(
        args=dict(argstr='%s', ),
        environ=dict(
            nohash=True,
            usedefault=True,
        ),
        ignore_exception=dict(
            nohash=True,
            usedefault=True,
        ),
        in_file=dict(
            argstr='%s',
            position=1,
        ),
        subjects_dir=dict(),
        terminal_output=dict(nohash=True, ),
    )
    inputs = ImageInfo.input_spec()

    for key, metadata in input_map.items():
        for metakey, value in metadata.items():
            yield assert_equal, getattr(inputs.traits()[key], metakey), value
Beispiel #5
0
def create_converter_functional_pipeline(working_dir,
                                         ds_dir,
                                         name='converter_funct'):
    # initiate workflow
    converter_wf = Workflow(name=name)
    converter_wf.base_dir = os.path.join(working_dir, 'LeiCA_resting')

    # set fsl output
    fsl.FSLCommand.set_default_output_type('NIFTI_GZ')

    # I/O NODE
    inputnode = Node(
        util.IdentityInterface(fields=['epi_dicom', 'out_format']),
        name='inputnode')

    outputnode = Node(util.IdentityInterface(fields=['epi', 'TR_ms']),
                      name='outputnode')

    niftisink = Node(nio.DataSink(), name='niftisink')
    niftisink.inputs.base_directory = os.path.join(ds_dir, 'raw_niftis')
    niftisink.inputs.substitutions = [('_TR_id_', 'TR_')]

    # convert to nifti
    # todo check if geometry bugs attac. use dcm2nii?
    converter_epi = Node(DcmStack(embed_meta=True), name='converter_epi')
    converter_epi.plugin_args = {'submit_specs': 'request_memory = 2000'}

    def reformat_filename_fct(TR_str):
        return 'rsfMRI_' + TR_str

    reformat_filename = Node(util.Function(input_names=['TR_str'],
                                           output_names=['filename'],
                                           function=reformat_filename_fct),
                             name='reformat_filename')

    converter_wf.connect(inputnode, 'out_format', reformat_filename, 'TR_str')
    converter_wf.connect(inputnode, 'epi_dicom', converter_epi, 'dicom_files')
    converter_wf.connect(reformat_filename, 'filename', converter_epi,
                         'out_format')

    # reorient to standard orientation
    reor_2_std = Node(fsl.Reorient2Std(), name='reor_2_std')
    converter_wf.connect(converter_epi, 'out_file', reor_2_std, 'in_file')

    converter_wf.connect(reor_2_std, 'out_file', outputnode, 'epi')

    # save original niftis
    converter_wf.connect(reor_2_std, 'out_file', niftisink, 'rsfMRI')

    # GET TR FROM .nii
    def check_TR_fct(TR):
        print ' '
        print 'check_TR_fct checks validity of TR'
        print('imported TR is %s' % TR)
        print '  '
        try:
            float(TR)
        except ValueError:
            isvalid_TR = 0
            raise Exception(
                'ERROR: TR COULD NOT AUTOMATICALLY BE EXTRACTED FROM EPI.\nEXECUTION STOPPED'
            )
        else:
            isvalid_TR = 1
            print 'TR is valid'
        if isvalid_TR:
            if float(TR <= 0):
                raise Exception(
                    'ERROR: TR NOT VALID (<=0).\nEXECUTION STOPPED')
        return float(TR)

    get_TR = Node(ImageInfo(), name='get_TR')
    converter_wf.connect(reor_2_std, 'out_file', get_TR, 'in_file')

    check_TR = Node(util.Function(input_names=['TR'],
                                  output_names=['TR_ms'],
                                  function=check_TR_fct),
                    name='check_TR')

    converter_wf.connect(get_TR, 'TR', check_TR, 'TR')
    converter_wf.connect(check_TR, 'TR_ms', outputnode, 'TR_ms')

    converter_wf.write_graph(dotfilename=converter_wf.name,
                             graph2use='flat',
                             format='pdf')

    return converter_wf