In [1]:
import nipype

from nipype.interfaces import fsl
from nipype.interfaces import ants
from nipype.interfaces import freesurfer
import os

In [2]:
base_dir=os.path.abspath('examples/')
subject_list =sorted(next(os.walk(base_dir))[1])

In [3]:
CORES=4
TASKS=2

In [4]:
grabber = nipype.Node(interface=nipype.DataGrabber(infields=['arg'],outfields=['out_file']), name='grabber')      
grabber.inputs.base_directory = base_dir
grabber.inputs.sort_filelist = True
grabber.inputs.template = '*/%s.nii.gz'
grabber.inputs.arg = 't1w'

In [5]:
sink = nipype.Node(interface=nipype.DataSink(),name='sink')
sink.inputs.base_directory = base_dir
substitutions=[]
for i in range(len(subject_list)):
    substitutions+= [("_neck_remove"+str(i), subject_list[i])]
substitutions+= [("subject_id_", "")]
    
sink.inputs.substitutions =substitutions

In [6]:
sink2 = nipype.Node(interface=nipype.DataSink(),name='sink2')
sink2.inputs.base_directory = base_dir
substitutions=[]
for i in range(len(subject_list)):
    substitutions+= [("_N4_FC"+str(i), subject_list[i])]
substitutions+= [("subject_id_", "")]
    
sink2.inputs.substitutions =substitutions

In [7]:
# Neck removal by FSL robustfov
neck_remove=nipype.MapNode(interface=fsl.RobustFOV(), name='neck_remove', iterfield=['in_file'])
neck_remove.inputs.out_roi="t1w_fov.nii.gz"

In [8]:
# Field Inhomogenity estimation (if any) and removal by ANTs N4BiasFieldCorrection
N4_FC=nipype.MapNode(interface=ants.N4BiasFieldCorrection(), name="N4_FC", iterfield=['input_image'])
N4_FC.inputs.dimension = 3
N4_FC.inputs.output_image="t1w_fov_N4.nii.gz"
N4_FC.inputs.num_threads=CORES

In [9]:
workflow = nipype.Workflow('workflow')
workflow.connect([(grabber, neck_remove, [('out_file', 'in_file')]),
                  (neck_remove, sink, [('out_roi', '@in_file')]),
                  (neck_remove, N4_FC, [('out_roi', 'input_image')]),
                  (N4_FC, sink2, [('output_image', '@in_file')])
                 ])

In [10]:
#workflow.run()
workflow.run('MultiProc', plugin_args={'n_procs': TASKS})


170927-19:18:21,616 workflow INFO:
	 Workflow workflow settings: ['check', 'execution', 'logging']
170927-19:18:21,676 workflow INFO:
	 Running in parallel.
170927-19:18:21,680 workflow INFO:
	 Executing: grabber ID: 0
170927-19:18:21,686 workflow INFO:
	 Executing node grabber in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpYONPEl/workflow/grabber
170927-19:18:21,753 workflow INFO:
	 [Job finished] jobname: grabber jobid: 0
170927-19:18:21,757 workflow INFO:
	 Executing: neck_remove ID: 1
170927-19:18:21,764 workflow INFO:
	 Adding 3 jobs for mapnode neck_remove
170927-19:18:21,769 workflow INFO:
	 Executing: _neck_remove0 ID: 5
170927-19:18:21,772 workflow INFO:
	 Executing: _neck_remove1 ID: 6
170927-19:18:21,777 workflow INFO:
	 Executing node _neck_remove1 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove1
170927-19:18:21,777 workflow INFO:
	 Executing node _neck_remove0 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove0
170927-19:18:21,787 workflow INFO:
	 Running: robustfov -i /Users/poggiali/GitHub/dementiawindow/examples/myself/t1w.nii.gz -r t1w_fov.nii.gz -m t1w_to_ROI.nii.gz
170927-19:18:21,793 workflow INFO:
	 Running: robustfov -i /Users/poggiali/GitHub/dementiawindow/examples/another_guy/t1w.nii.gz -r t1w_fov.nii.gz -m t1w_to_ROI.nii.gz
170927-19:18:39,414 workflow INFO:
	 [Job finished] jobname: _neck_remove1 jobid: 6
170927-19:18:39,417 workflow INFO:
	 Executing: _neck_remove2 ID: 7
170927-19:18:39,421 workflow INFO:
	 Executing node _neck_remove2 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove2
170927-19:18:39,430 workflow INFO:
	 Running: robustfov -i /Users/poggiali/GitHub/dementiawindow/examples/yet_another/t1w.nii.gz -r t1w_fov.nii.gz -m t1w_to_ROI.nii.gz
170927-19:18:50,522 workflow INFO:
	 [Job finished] jobname: _neck_remove0 jobid: 5
170927-19:19:05,795 workflow INFO:
	 [Job finished] jobname: _neck_remove2 jobid: 7
170927-19:19:05,797 workflow INFO:
	 Executing: neck_remove ID: 1
170927-19:19:05,802 workflow INFO:
	 Executing node neck_remove in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove
170927-19:19:05,819 workflow INFO:
	 Executing node _neck_remove0 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove0
170927-19:19:05,822 workflow INFO:
	 Collecting precomputed outputs
170927-19:19:05,829 workflow INFO:
	 Executing node _neck_remove1 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove1
170927-19:19:05,833 workflow INFO:
	 Collecting precomputed outputs
170927-19:19:05,841 workflow INFO:
	 Executing node _neck_remove2 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove2
170927-19:19:05,845 workflow INFO:
	 Collecting precomputed outputs
170927-19:19:05,871 workflow INFO:
	 [Job finished] jobname: neck_remove jobid: 1
170927-19:19:05,874 workflow INFO:
	 Executing: N4_FC ID: 2
170927-19:19:05,886 workflow INFO:
	 Adding 3 jobs for mapnode N4_FC
170927-19:19:05,889 workflow INFO:
	 Executing: sink ID: 4
170927-19:19:05,903 workflow INFO:
	 Executing node sink in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpjdMMJ8/workflow/sink
170927-19:19:05,916 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_neck_remove0/t1w_fov.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/another_guy/t1w_fov.nii.gz
170927-19:19:06,177 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_neck_remove1/t1w_fov.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/myself/t1w_fov.nii.gz
170927-19:19:06,486 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_neck_remove2/t1w_fov.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/yet_another/t1w_fov.nii.gz
170927-19:19:06,721 workflow INFO:
	 [Job finished] jobname: sink jobid: 4
170927-19:19:06,724 workflow INFO:
	 Executing: _N4_FC0 ID: 8
170927-19:19:06,727 workflow INFO:
	 Executing: _N4_FC1 ID: 9
170927-19:19:06,728 workflow INFO:
	 Executing node _N4_FC0 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC0
170927-19:19:06,731 workflow INFO:
	 Executing node _N4_FC1 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC1
170927-19:19:06,737 workflow INFO:
	 Running: N4BiasFieldCorrection -d 3 --input-image /private/var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove0/t1w_fov.nii.gz --output t1w_fov_N4.nii.gz
170927-19:19:06,740 workflow INFO:
	 Running: N4BiasFieldCorrection -d 3 --input-image /private/var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove1/t1w_fov.nii.gz --output t1w_fov_N4.nii.gz
170927-19:21:42,442 workflow INFO:
	 [Job finished] jobname: _N4_FC0 jobid: 8
170927-19:21:42,445 workflow INFO:
	 Executing: _N4_FC2 ID: 10
170927-19:21:42,449 workflow INFO:
	 Executing node _N4_FC2 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC2
170927-19:21:42,459 workflow INFO:
	 Running: N4BiasFieldCorrection -d 3 --input-image /private/var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpoXJ6PQ/workflow/neck_remove/mapflow/_neck_remove2/t1w_fov.nii.gz --output t1w_fov_N4.nii.gz
170927-19:22:46,704 workflow INFO:
	 [Job finished] jobname: _N4_FC1 jobid: 9
170927-19:23:44,763 workflow INFO:
	 [Job finished] jobname: _N4_FC2 jobid: 10
170927-19:23:44,768 workflow INFO:
	 Executing: N4_FC ID: 2
170927-19:23:44,775 workflow INFO:
	 Executing node N4_FC in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC
170927-19:23:44,793 workflow INFO:
	 Executing node _N4_FC0 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC0
170927-19:23:44,796 workflow INFO:
	 Collecting precomputed outputs
170927-19:23:44,802 workflow INFO:
	 Executing node _N4_FC1 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC1
170927-19:23:44,805 workflow INFO:
	 Collecting precomputed outputs
170927-19:23:44,811 workflow INFO:
	 Executing node _N4_FC2 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmpLwWMWB/workflow/N4_FC/mapflow/_N4_FC2
170927-19:23:44,814 workflow INFO:
	 Collecting precomputed outputs
170927-19:23:44,845 workflow INFO:
	 [Job finished] jobname: N4_FC jobid: 2
170927-19:23:44,848 workflow INFO:
	 Executing: sink2 ID: 3
170927-19:23:44,859 workflow INFO:
	 Executing node sink2 in dir: /var/folders/5_/33p0sl3j2_ngqn_gghyy2zj00000gn/T/tmp_SVzEX/workflow/sink2
170927-19:23:44,869 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_N4_FC0/t1w_fov_N4.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/another_guy/t1w_fov_N4.nii.gz
170927-19:23:44,872 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_N4_FC1/t1w_fov_N4.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/myself/t1w_fov_N4.nii.gz
170927-19:23:44,874 interface INFO:
	 sub: /Users/poggiali/GitHub/dementiawindow/examples/_N4_FC2/t1w_fov_N4.nii.gz -> /Users/poggiali/GitHub/dementiawindow/examples/yet_another/t1w_fov_N4.nii.gz
170927-19:23:44,890 workflow INFO:
	 [Job finished] jobname: sink2 jobid: 3
Out[10]:
<networkx.classes.digraph.DiGraph at 0x11024d610>

In [ ]: