%pylab inline
Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline]. For more information, type 'help(pylab)'.
from glob import glob
from nipype.interfaces.dcm2nii import Dcm2nii
from nipype.interfaces.fsl import DTIFit, BET
import nipype.pipeline.engine as pe
convert = pe.Node(Dcm2nii(), name='convert_dicom')
skull_stripper = pe.Node(BET(mask=True), name = 'skull_stripper')
dtifit = pe.Node(DTIFit(), name = 'dtifit')
convert_flow = pe.Workflow(name = 'convert_and_fit')
convert_flow.connect([(convert, dtifit, [('converted_files', 'dwi'),
('bvals', 'bvals'),
('bvecs', 'bvecs')]),
(convert, skull_stripper, [('converted_files', 'in_file')]),
(skull_stripper, dtifit, [('mask_file', 'mask')])
])
fl = glob('/opt/data/NIPYPE_DATA/2475376/session1/DTI_mx_137/*.dcm')
convert_flow.inputs.convert_dicom.source_names = fl[0] # or fl
convert_flow.base_dir = '/mnt/mydir/'
convert_flow.run()
120909-13:17:32,434 workflow INFO: ['check', 'execution', 'logging'] 120909-13:17:32,439 workflow INFO: Running serially. 120909-13:17:32,441 workflow INFO: Executing node convert_dicom in dir: /mnt/mydir/convert_and_fit/convert_dicom 120909-13:17:32,442 workflow INFO: Collecting precomputed outputs 120909-13:17:32,457 workflow INFO: Executing node skull_stripper in dir: /mnt/mydir/convert_and_fit/skull_stripper 120909-13:17:32,459 workflow INFO: Collecting precomputed outputs 120909-13:17:32,485 workflow INFO: Executing node dtifit in dir: /mnt/mydir/convert_and_fit/dtifit 120909-13:17:32,487 workflow INFO: Collecting precomputed outputs
<networkx.classes.digraph.DiGraph at 0x5036e90>
convert = pe.MapNode(Dcm2nii(), name='convert_dicom', iterfield=['source_names'])
skull_stripper = pe.MapNode(BET(mask=True), name = 'skull_stripper', iterfield=['in_file'])
dtifit = pe.MapNode(DTIFit(), name = 'dtifit', iterfield=['dwi','bvals', 'bvecs','mask'])
convert_flow = pe.Workflow(name = 'convert_and_fit_mapnode')
convert_flow.connect([(convert, dtifit, [('converted_files', 'dwi'),
('bvals', 'bvals'),
('bvecs', 'bvecs')]),
(convert, skull_stripper, [('converted_files', 'in_file')]),
(skull_stripper, dtifit, [('mask_file', 'mask')])
])
fl = glob('/opt/data/NIPYPE_DATA/2475376/session*/DTI_mx_137/*-0001.dcm')
convert_flow.inputs.convert_dicom.source_names = fl
convert_flow.base_dir = '/mnt/mydir/'
execution_graph = convert_flow.run()
120909-13:17:32,541 workflow INFO: ['check', 'execution', 'logging'] 120909-13:17:32,548 workflow INFO: Running serially. 120909-13:17:32,551 workflow INFO: Executing node convert_dicom in dir: /mnt/mydir/convert_and_fit_mapnode/convert_dicom 120909-13:17:32,575 workflow INFO: Executing node skull_stripper in dir: /mnt/mydir/convert_and_fit_mapnode/skull_stripper 120909-13:17:32,617 workflow INFO: Executing node dtifit in dir: /mnt/mydir/convert_and_fit_mapnode/dtifit
convert_flow.write_graph()
from IPython.display import Image
Image(filename='/mnt/mydir/convert_and_fit_mapnode/graph.dot.png')
120909-13:17:32,723 workflow INFO: Converting dotfile: /mnt/mydir/convert_and_fit_mapnode/graph.dot to png format
nodes = execution_graph.nodes()
def get_nodes(nodes, name):
return [node for node in nodes if name in str(node)]
get_nodes(nodes, 'dtifit')[0].result.outputs
Bunch(FA=['/mnt/mydir/convert_and_fit_mapnode/dtifit/mapflow/_dtifit0/dtifit__FA.nii.gz', '/mnt/mydir/convert_and_fit_mapnode/dtifit/mapflow/_dtifit1/dtifit__FA.nii.gz'], L1=<undefined>, L2=<undefined>, L3=<undefined>, MD=['/mnt/mydir/convert_and_fit_mapnode/dtifit/mapflow/_dtifit0/dtifit__MD.nii.gz', '/mnt/mydir/convert_and_fit_mapnode/dtifit/mapflow/_dtifit1/dtifit__MD.nii.gz'], MO=<undefined>, S0=<undefined>, V1=<undefined>, V2=<undefined>, V3=<undefined>, tensor=<undefined>)
from nipype.interfaces.io import DataGrabber, DataSink
dg = pe.Node(DataGrabber(infields=['subject_id', 'session'], outfields=['diffusion']),
name = 'datasource')
dg.inputs.base_directory = '/opt/data/NIPYPE_DATA/'
dg.inputs.template = '%s/session%d/DTI*/*-0001.dcm'
dg.inputs.subject_id = '2475376'
dg.inputs.session = [1, 2]
convert_flow.connect(dg, 'diffusion', convert, 'source_names')
execution_graph = convert_flow.run()
120909-13:17:32,824 workflow INFO: ['check', 'execution', 'logging'] 120909-13:17:32,844 workflow INFO: Running serially. 120909-13:17:32,846 workflow INFO: Executing node datasource in dir: /mnt/mydir/convert_and_fit_mapnode/datasource 120909-13:17:32,872 workflow INFO: Executing node convert_dicom in dir: /mnt/mydir/convert_and_fit_mapnode/convert_dicom 120909-13:17:32,907 workflow INFO: Executing node skull_stripper in dir: /mnt/mydir/convert_and_fit_mapnode/skull_stripper 120909-13:17:32,951 workflow INFO: Executing node dtifit in dir: /mnt/mydir/convert_and_fit_mapnode/dtifit
convert_flow.write_graph()
from IPython.display import Image
Image(filename='/mnt/mydir/convert_and_fit_mapnode/graph.dot.png')
120909-13:17:33,57 workflow INFO: Converting dotfile: /mnt/mydir/convert_and_fit_mapnode/graph.dot to png format
ds = pe.Node(DataSink(), name='sinker')
ds.inputs.base_directory = '/mnt/mydir/outputs'
convert_flow.connect(skull_stripper, 'mask_file', ds, 'mask')
convert_flow.connect(dtifit, 'FA', ds, 'dti.@FA')
convert_flow.connect(dtifit, 'MD', ds, 'dti.@MD')
convert_flow.run()
120909-13:17:33,102 workflow INFO: ['check', 'execution', 'logging'] 120909-13:17:33,113 workflow INFO: Running serially. 120909-13:17:33,115 workflow INFO: Executing node datasource in dir: /mnt/mydir/convert_and_fit_mapnode/datasource 120909-13:17:33,130 workflow INFO: Executing node convert_dicom in dir: /mnt/mydir/convert_and_fit_mapnode/convert_dicom 120909-13:17:33,156 workflow INFO: Executing node skull_stripper in dir: /mnt/mydir/convert_and_fit_mapnode/skull_stripper 120909-13:17:33,199 workflow INFO: Executing node dtifit in dir: /mnt/mydir/convert_and_fit_mapnode/dtifit 120909-13:17:33,230 workflow INFO: Executing node sinker in dir: /mnt/mydir/convert_and_fit_mapnode/sinker 120909-13:17:33,232 workflow INFO: Collecting precomputed outputs
<networkx.classes.digraph.DiGraph at 0x5051190>
convert_flow.write_graph()
from IPython.display import Image
Image(filename='/mnt/mydir/convert_and_fit_mapnode/graph.dot.png')
120909-13:17:33,364 workflow INFO: Converting dotfile: /mnt/mydir/convert_and_fit_mapnode/graph.dot to png format
dg.iterables = ('subject_id', ['2475376', '3313349', '9630905'])
eg = convert_flow.run('MultiProc', plugin_args={'n_procs': 2})