1. A rigid-body (6 DoF as far as I can see) registration (reg.inputs.transforms = ['Rigid']) to go get from functional data (EPI)-space to the individual T1-space
2. A non-linear step from the individual T1 to a template (reg.inputs.transforms = ['Rigid', 'Affine', 'SyN'])
import os
from nipype.interfaces.ants import Registration
import nibabel as nb
from nipy.labs import viz
datadir = '/Users/cplanting/Projects/RestingState/n3806'
input_images=[
os.path.join(datadir,'FFE_brain.nii.gz'),
os.path.join(datadir,'mean_brain.nii.gz'),
]
reg = Registration()
reg.inputs.fixed_image = input_images[0]
reg.inputs.moving_image = input_images[1]
reg.inputs.num_threads = 2
reg.inputs.output_transform_prefix = 'output_'
reg.inputs.output_warped_image = 'output_warped_image.nii.gz'
reg.inputs.transforms = ['Rigid']
reg.inputs.transform_parameters = [(0.1,)]
reg.inputs.number_of_iterations = [[1000,500,250,100]]
reg.inputs.dimension = 3
reg.inputs.write_composite_transform = True
reg.inputs.collapse_output_transforms = False
reg.inputs.metric = ['MI']
reg.inputs.metric_weight = [1] # Default (value ignored currently by ANTs)
reg.inputs.radius_or_number_of_bins = [32]
reg.inputs.sampling_strategy = ['Regular']
reg.inputs.sampling_percentage = [0.25]
reg.inputs.convergence_threshold = [1.e-8]
reg.inputs.convergence_window_size = [10]
reg.inputs.smoothing_sigmas = [[3,2,1,0]]
reg.inputs.sigma_units = ['mm']*2
reg.inputs.shrink_factors = [[8,4,2,1]]
reg.inputs.use_estimate_learning_rate_once = [True]
reg.inputs.use_histogram_matching = [False] # This is the default
reg.inputs.output_warped_image = True
reg.inputs.winsorize_lower_quantile = 0.01
reg.inputs.winsorize_upper_quantile = 0.99
reg.inputs.write_composite_transform = True
reg.run()
normed_img_fname = '/Users/cplanting/output__Warped.nii.gz'
normed_img = nb.load(normed_img_fname)
fixed_img_fname = input_images[0]
fixed_img = nb.load(fixed_img_fname)
slicer = viz.plot_anat(normed_img.get_data(), normed_img.get_affine(), dim=.2, black_bg=True)
slicer.edge_map(fixed_img.get_data(), fixed_img.get_affine())