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
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