本文整理汇总了Python中nipype.pipeline.engine.Workflow类的典型用法代码示例。如果您正苦于以下问题:Python Workflow类的具体用法?Python Workflow怎么用?Python Workflow使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Workflow类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_normalize_pipeline
def create_normalize_pipeline(name='normalize'):
# workflow
normalize = Workflow(name='normalize')
# Define nodes
inputnode = Node(interface=util.IdentityInterface(fields=['epi_coreg',
'tr']),
name='inputnode')
outputnode = Node(interface=util.IdentityInterface(fields=[
'normalized_file']),
name='outputnode')
# time-normalize scans
normalize_time = Node(util.Function(input_names=['in_file', 'tr'],
output_names=['out_file'],
function=time_normalizer),
name='normalize_time')
normalize_time.plugin_args = {'submit_specs': 'request_memory = 17000'}
normalize.connect([(inputnode, normalize_time, [('tr', 'tr')]),
(inputnode, normalize_time, [('epi_coreg', 'in_file')]),
(normalize_time, outputnode, [('out_file', 'normalized_file')])
])
# time-normalize scans
return normalize
示例2: create_reconall_pipeline
def create_reconall_pipeline(name='reconall'):
reconall=Workflow(name='reconall')
#inputnode
inputnode=Node(util.IdentityInterface(fields=['anat',
'fs_subjects_dir',
'fs_subject_id'
]),
name='inputnode')
outputnode=Node(util.IdentityInterface(fields=['fs_subjects_dir',
'fs_subject_id']),
name='outputnode')
# run reconall
recon_all = create_skullstripped_recon_flow()
# function to replace / in subject id string with a _
def sub_id(sub_id):
return sub_id.replace('/','_')
reconall.connect([(inputnode, recon_all, [('fs_subjects_dir', 'inputspec.subjects_dir'),
('anat', 'inputspec.T1_files'),
(('fs_subject_id', sub_id), 'inputspec.subject_id')]),
(recon_all, outputnode, [('outputspec.subject_id', 'fs_subject_id'),
('outputspec.subjects_dir', 'fs_subjects_dir')])
])
return reconall
示例3: create_slice_timing_pipeline
def create_slice_timing_pipeline(name='slicetiming'):
# set fsl output type
fsl.FSLCommand.set_default_output_type('NIFTI')
# initiate workflow
slicetiming = Workflow(name='slicetiming')
# inputnode
inputnode = Node(util.IdentityInterface(fields=['ts'
]),
name='inputnode')
# outputnode
outputnode = Node(util.IdentityInterface(fields=['ts_slicetcorrected'
]),
name='outputnode')
# use FSL slicetiming (default ascending bottom to top)
timer = Node(fsl.SliceTimer(), name='timer')
timer.inputs.time_repetition = 2.0
slicetiming.connect([
(inputnode, timer, [
('ts', 'in_file')]
),
(timer, outputnode, [('slice_time_corrected_file', 'ts_slicetcorrected')]
)
])
return slicetiming
示例4: create_smoothing_pipeline
def create_smoothing_pipeline(name='smoothing'):
# set fsl output type
fsl.FSLCommand.set_default_output_type('NIFTI')
# initiate workflow
smoothing = Workflow(name='smoothing')
# inputnode
inputnode=Node(util.IdentityInterface(fields=['ts_transformed',
'fwhm'
]),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['ts_smoothed'
]),
name='outputnode')
#apply smoothing
smooth = Node(fsl.Smooth(),name = 'smooth')
smoothing.connect([
(inputnode, smooth, [
('ts_transformed', 'in_file'),
('fwhm', 'fwhm')]
),
(smooth, outputnode, [('smoothed_file', 'ts_smoothed')]
)
])
return smoothing
示例5: create_dcmconvert_pipeline
def create_dcmconvert_pipeline(name='dcmconvert'):
from nipype.pipeline.engine import Node, Workflow
import nipype.interfaces.utility as util
from nipype.interfaces.dcmstack import DcmStack
# workflow
dcmconvert = Workflow(name='dcmconvert')
#inputnode
inputnode=Node(util.IdentityInterface(fields=['dicoms',
'filename']),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['nifti']),
name='outputnode')
# conversion node
converter = Node(DcmStack(embed_meta=True),
name='converter')
# connections
dcmconvert.connect([(inputnode, converter, [('dicoms', 'dicom_files'),
('filename','out_format')]),
(converter, outputnode, [('out_file','nifti')])])
return dcmconvert
示例6: create_ants_registration_pipeline
def create_ants_registration_pipeline(name='ants_registration'):
# set fsl output type
fsl.FSLCommand.set_default_output_type('NIFTI_GZ')
# initiate workflow
ants_registration = Workflow(name='ants_registration')
# inputnode
inputnode=Node(util.IdentityInterface(fields=['denoised_ts',
'ants_affine',
'ants_warp',
'ref'
]),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['ants_reg_ts',
]),
name='outputnode')
#also transform to mni space
collect_transforms = Node(interface = util.Merge(2),name='collect_transforms')
ants_reg = Node(ants.ApplyTransforms(input_image_type = 3, dimension = 3, interpolation = 'Linear'), name='ants_reg')
ants_registration.connect([
(inputnode, ants_reg, [('denoised_ts', 'input_image')]),
(inputnode, ants_reg, [('ref', 'reference_image')]),
(inputnode, collect_transforms, [('ants_affine', 'in1')]),
(inputnode, collect_transforms, [('ants_warp', 'in2')]),
(collect_transforms, ants_reg, [('out', 'transforms')]),
(ants_reg, outputnode, [('output_image', 'ants_reg_ts')])
])
return ants_registration
示例7: create_reconall_pipeline
def create_reconall_pipeline(name='reconall'):
reconall = Workflow(name='reconall')
# inputnode
inputnode = Node(util.IdentityInterface(fields=['anat',
'fs_subjects_dir',
'fs_subject_id'
]),
name='inputnode')
outputnode = Node(util.IdentityInterface(fields=['fs_subjects_dir',
'fs_subject_id']),
name='outputnode')
# run reconall
recon_all = Node(fs.ReconAll(args='-autorecon2 -nuiterations 7 -no-isrunning -hippo-subfields'),
name="recon_all")
# recon_all.inputs.directive= 'autorecon2-wm' # -autorecon3
recon_all.plugin_args = {'submit_specs': 'request_memory = 9000'}
# function to replace / in subject id string with a _
def sub_id(sub_id):
return sub_id.replace('/', '_')
reconall.connect([(inputnode, recon_all, [('fs_subjects_dir', 'subjects_dir'),
('anat', 'T1_files'),
(('fs_subject_id', sub_id), 'subject_id')]),
(recon_all, outputnode, [('subject_id', 'fs_subject_id'),
('subjects_dir', 'fs_subjects_dir')])
])
return reconall
示例8: __init__
def __init__(self, ct_file_name, tmp_dir, chest_regions=None):
Workflow.__init__(self, 'VesselParticlesWorkflow')
assert ct_file_name.rfind('.') != -1, "Unrecognized CT file name format"
self._tmp_dir = tmp_dir
self._cid = ct_file_name[max([ct_file_name.rfind('/'), 0])+1:\
ct_file_name.rfind('.')]
if ct_file_name.rfind('/') != -1:
self._dir = ct_file_name[0:ct_file_name.rfind('/')]
else:
self._dir = '.'
if vessel_seeds_mask_file_name is None:
self._vessel_seeds_mask_file_name = \
os.path.join(self._dir, self._cid + CM._vesselSeedsMask)
else:
self._vessel_seeds_mask_file_name = vessel_seeds_mask_file_name
generate_partial_lung_label_map = \
pe.Node(interface=cip.GeneratePartialLungLabelMap(),
name='generate_partial_lung_label_map')
generate_partial_lung_label_map.inputs.ct = ct_file_name
generate_partial_lung_label_map.inputs.
extract_chest_label_map = \
pe.Node(interface=cip.ExtractChestLabelMap(),
name='extract_chest_label_map')
extract_chest_label_map.inputs.outFileName =
extract_chest_label_map.inputs.
示例9: create_visualize_pipeline
def create_visualize_pipeline(name='visualize'):
# initiate workflow
visualize = Workflow(name='visualize')
# inputnode
inputnode=Node(util.IdentityInterface(fields=['ts_transformed',
'mni_template'
]),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['output_image'
]),
name='outputnode')
#apply smoothing
slicer = Node(fsl.Slicer(sample_axial=6, image_width=750),name = 'smooth')
visualize.connect([
(inputnode, slicer, [('ts_transformed', 'in_file'),('mni_template', 'image_edges')]),
(slicer, outputnode,[('out_file', 'output_image')])
])
return visualize
示例10: create_mgzconvert_pipeline
def create_mgzconvert_pipeline(name='mgzconvert'):
# workflow
mgzconvert = Workflow(name='mgzconvert')
# inputnode
inputnode = Node(util.IdentityInterface(fields=['fs_subjects_dir', 'fs_subject_id']), name='inputnode')
# outputnode
outputnode = Node(util.IdentityInterface(fields=['anat_head',
'anat_brain',
'anat_brain_mask',
'wmseg',
'wmedge']),
name='outputnode')
# import files from freesurfer
fs_import = Node(interface=nio.FreeSurferSource(),
name='fs_import')
# convert Freesurfer T1 file to nifti
head_convert = Node(fs.MRIConvert(out_type='niigz',
out_file='T1.nii.gz'),
name='head_convert')
# create brainmask from aparc+aseg with single dilation
def get_aparc_aseg(files):
for name in files:
if 'aparc+aseg' in name:
return name
# create brain by converting only freesurfer output
brain_convert = Node(fs.MRIConvert(out_type='niigz',
out_file='brain.nii.gz'),
name='brain_convert')
brain_binarize = Node(fsl.ImageMaths(op_string='-bin -fillh', out_file='T1_brain_mask.nii.gz'), name='brain_binarize')
# cortical and cerebellar white matter volumes to construct wm edge
# [lh cerebral wm, lh cerebellar wm, rh cerebral wm, rh cerebellar wm, brain stem]
wmseg = Node(fs.Binarize(out_type='nii.gz',
match=[2, 7, 41, 46, 16],
binary_file='T1_brain_wmseg.nii.gz'),
name='wmseg')
# make edge from wmseg to visualize coregistration quality
edge = Node(fsl.ApplyMask(args='-edge -bin',
out_file='T1_brain_wmedge.nii.gz'),
name='edge')
# connections
mgzconvert.connect([(inputnode, fs_import, [('fs_subjects_dir', 'subjects_dir'),
('fs_subject_id', 'subject_id')]),
(fs_import, head_convert, [('T1', 'in_file')]),
(fs_import, wmseg, [(('aparc_aseg', get_aparc_aseg), 'in_file')]),
(fs_import, brain_convert, [('brainmask', 'in_file')]),
(wmseg, edge, [('binary_file', 'in_file'),
('binary_file', 'mask_file')]),
(head_convert, outputnode, [('out_file', 'anat_head')]),
(brain_convert, outputnode, [('out_file', 'anat_brain')]),
(brain_convert, brain_binarize, [('out_file', 'in_file')]),
(brain_binarize, outputnode, [('out_file', 'anat_brain_mask')]),
(wmseg, outputnode, [('binary_file', 'wmseg')]),
(edge, outputnode, [('out_file', 'wmedge')])
])
return mgzconvert
示例11: __init__
def __init__(self,name,input_fields=None,output_fields=None,**kwargs):
Workflow.__init__(self,name=name,**kwargs)
if input_fields:
self.input_node = pe.Node(name = 'input',
interface = util.IdentityInterface(fields=input_fields))
if output_fields:
self.output_node = pe.Node(name = 'output',
interface = util.IdentityInterface(fields=output_fields))
示例12: ants_ct_wf
def ants_ct_wf(subjects_id,
preprocessed_data_dir,
working_dir,
ds_dir,
template_dir,
plugin_name):
import os
from nipype import config
from nipype.pipeline.engine import Node, Workflow, MapNode
import nipype.interfaces.utility as util
import nipype.interfaces.io as nio
from nipype.interfaces.freesurfer.utils import ImageInfo
#####################################
# GENERAL SETTINGS
#####################################
wf = Workflow(name='ants_ct')
wf.base_dir = os.path.join(working_dir)
nipype_cfg = dict(logging=dict(workflow_level='DEBUG'), execution={'stop_on_first_crash': True,
'remove_unnecessary_outputs': True,
'job_finished_timeout': 120})
config.update_config(nipype_cfg)
wf.config['execution']['crashdump_dir'] = os.path.join(working_dir, 'crash')
ds = Node(nio.DataSink(base_directory=ds_dir), name='ds')
#####################################
# GET DATA
#####################################
# GET SUBJECT SPECIFIC STRUCTURAL DATA
in_data_templates = {
't1w': '{subject_id}/raw_niftis/sMRI/t1w_reoriented.nii.gz',
}
in_data = Node(nio.SelectFiles(in_data_templates,
base_directory=preprocessed_data_dir),
name="in_data")
in_data.inputs.subject_id = subjects_id
# GET NKI ANTs templates
ants_templates_templates = {
'brain_template': 'NKI/T_template.nii.gz',
'brain_probability_mask': 'NKI/T_templateProbabilityMask.nii.gz',
'segmentation_priors': 'NKI/Priors/*.nii.gz',
't1_registration_template': 'NKI/T_template_BrainCerebellum.nii.gz'
}
ants_templates = Node(nio.SelectFiles(ants_templates_templates,
base_directory=template_dir),
name="ants_templates")
示例13: create_normalize_pipeline
def create_normalize_pipeline(name='normalize'):
# workflow
normalize=Workflow(name='normalize')
# inputnode
inputnode=Node(util.IdentityInterface(fields=['anat',
'standard']),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['anat2std_transforms',
'anat2std',
'std2anat_transforms',
'std2anat']),
name='outputnode')
# normalization with ants
antsreg= Node(ants.Registration(dimension=3,
transforms=['Rigid','Affine','SyN'],
metric=['MI','MI','CC'],
metric_weight=[1,1,1],
number_of_iterations=[[1000,500,250,100],[1000,500,250,100],[100,70,50,20]],
convergence_threshold=[1e-6,1e-6,1e-6],
convergence_window_size=[10,10,10],
shrink_factors=[[8,4,2,1],[8,4,2,1],[8,4,2,1]],
smoothing_sigmas=[[3,2,1,0],[3,2,1,0],[3,2,1,0]],
sigma_units=['vox','vox','vox'],
initial_moving_transform_com=1,
transform_parameters=[(0.1,),(0.1,),(0.1,3.0,0.0)],
sampling_strategy=['Regular', 'Regular', 'None'],
sampling_percentage=[0.25,0.25,1],
radius_or_number_of_bins=[32,32,4],
num_threads=1,
interpolation='Linear',
winsorize_lower_quantile=0.005,
winsorize_upper_quantile=0.995,
collapse_output_transforms=True,
output_inverse_warped_image=True,
output_warped_image=True,
use_histogram_matching=True,
),
name='antsreg')
# connections
normalize.connect([(inputnode, antsreg, [('anat', 'moving_image'),
('standard', 'fixed_image')]),
(antsreg, outputnode, [('forward_transforms', 'anat2std_transforms'),
('reverse_transforms', 'std2anat_transforms'),
('warped_image', 'anat2std'),
('inverse_warped_image', 'std2anat')])
])
return normalize
示例14: create
def create(self): # , **kwargs):
""" Create the nodes and connections for the workflow """
# Preamble
csvReader = CSVReader()
csvReader.inputs.in_file = self.csv_file.default_value
csvReader.inputs.header = self.hasHeader.default_value
csvOut = csvReader.run()
print(("=" * 80))
print((csvOut.outputs.__dict__))
print(("=" * 80))
iters = OrderedDict()
label = list(csvOut.outputs.__dict__.keys())[0]
result = eval("csvOut.outputs.{0}".format(label))
iters['tests'], iters['trains'] = subsample_crossValidationSet(result, self.sample_size.default_value)
# Main event
out_fields = ['T1', 'T2', 'Label', 'trainindex', 'testindex']
inputsND = Node(interface=IdentityInterface(fields=out_fields),
run_without_submitting=True, name='inputs')
inputsND.iterables = [('trainindex', iters['trains']),
('testindex', iters['tests'])]
if not self.hasHeader.default_value:
inputsND.inputs.T1 = csvOut.outputs.column_0
inputsND.inputs.Label = csvOut.outputs.column_1
inputsND.inputs.T2 = csvOut.outputs.column_2
else:
inputsND.inputs.T1 = csvOut.outputs.__dict__['t1']
inputsND.inputs.Label = csvOut.outputs.__dict__['label']
inputsND.inputs.T2 = csvOut.outputs.__dict__['t2']
pass # TODO
metaflow = Workflow(name='metaflow')
metaflow.config['execution'] = {
'plugin': 'Linear',
'stop_on_first_crash': 'false',
'stop_on_first_rerun': 'false',
# This stops at first attempt to rerun, before running, and before deleting previous results.
'hash_method': 'timestamp',
'single_thread_matlab': 'true', # Multi-core 2011a multi-core for matrix multiplication.
'remove_unnecessary_outputs': 'true',
'use_relative_paths': 'false', # relative paths should be on, require hash update when changed.
'remove_node_directories': 'false', # Experimental
'local_hash_check': 'false'
}
metaflow.add_nodes([inputsND])
"""import pdb; pdb.set_trace()"""
fusionflow = FusionLabelWorkflow()
self.connect(
[(metaflow, fusionflow, [('inputs.trainindex', 'trainT1s.index'), ('inputs.T1', 'trainT1s.inlist')]),
(metaflow, fusionflow,
[('inputs.trainindex', 'trainLabels.index'), ('inputs.Label', 'trainLabels.inlist')]),
(metaflow, fusionflow, [('inputs.testindex', 'testT1s.index'), ('inputs.T1', 'testT1s.inlist')])
])
示例15: create_mp2rage_pipeline
def create_mp2rage_pipeline(name='mp2rage'):
# workflow
mp2rage = Workflow('mp2rage')
# inputnode
inputnode=Node(util.IdentityInterface(fields=['inv2',
'uni',
't1map']),
name='inputnode')
# outputnode
outputnode=Node(util.IdentityInterface(fields=['uni_masked',
'background_mask',
'uni_stripped',
#'skullstrip_mask',
#'uni_reoriented'
]),
name='outputnode')
# remove background noise
background = Node(JistIntensityMp2rageMasking(outMasked=True,
outMasked2=True,
outSignal2=True),
name='background')
# skullstrip
strip = Node(MedicAlgorithmSPECTRE2010(outStripped=True,
outMask=True,
outOriginal=True,
inOutput='true',
inFind='true',
inMMC=4
),
name='strip')
# connections
mp2rage.connect([(inputnode, background, [('inv2', 'inSecond'),
('t1map', 'inQuantitative'),
('uni', 'inT1weighted')]),
(background, strip, [('outMasked2','inInput')]),
(background, outputnode, [('outMasked2','uni_masked'),
('outSignal2','background_mask')]),
(strip, outputnode, [('outStripped','uni_stripped'),
#('outMask', 'skullstrip_mask'),
#('outOriginal','uni_reoriented')
])
])
return mp2rage