from typing import List, Union
from .common import run_process
[docs]def antsRegistration(
warp_prefix: str,
reference: str,
source: str,
warped: str = None,
inverse_warped: str = None,
grad_step: float = 1,
update_field_var: float = 0,
total_field_var: float = 0,
metric: str = "CC",
rad_bin: int = 10,
convergence: str = "500x200x200x0",
threshold: float = 1e-6,
threshold_window: int = 15,
smoothing: str = "2x1x0x0",
shrink_factors: str = "4x3x2x1",
restrict_deform: str = "1x1x1",
reference_mask: str = None,
source_mask: str = None,
initial_warp: str = None,
other_args: str = None,
):
"""antsRegistration interface for Ants Syn Warp
Parameters
----------
warp_prefix: str
Prefix of output warp.
reference: str
Reference image to align.
source: str
Source image to align.
warped: str
Warped source image.
inverse_warped: str
Inverse Warped reference image.
grad_step: float
Gradient step size for optimization.
update_field_var: float
Update field variance for Syn algorithm.
total_field_var: float
Total field variance for SyN algorithm.
metric: str
Optimization metric to use.
rad_bin: int
Radius or number of bins of metric.
convergence: str
Number of iterations to use at each level of optimization.
threshold: float
Stopping criterion for optimization.
threshold_window: int
Window size for optimization.
smoothing: str
Smoothing kernel size for each level of optimization.
shrink_factors: str
Resampling factor for each level of optimization.
restrict_deform: str
1 to allow warp in a direction; 0 to restrict warp in a direction.
reference_mask: str
Path to a reference extent mask.
source_mask: str
Path to a source extent mask.
initial_warp: str
Initializes SyN registration with a warp.
other_args: str
Other arguments to pass in.
"""
return run_process(
"antsRegistration "
"-d 3 "
"-u 1 "
"-o [{0}{1}{2}] "
"-n BSpline[5] "
"-w [0.005,0.995] "
"--transform Syn[{3},{18},{4}] "
"--metric {5}[{6},{7},1,{8}] "
"-c [{9},{10},{11}] "
"-s {12} "
"-f {13} "
"-g {14} "
"{15}{16}{17}-v 1".format(
warp_prefix, # required arg
",{}".format(warped) if warped else "",
",{}".format(inverse_warped) if inverse_warped else "",
grad_step,
total_field_var,
metric,
reference, # required arg
source, # required arg
rad_bin,
convergence,
threshold,
threshold_window,
smoothing,
shrink_factors,
restrict_deform,
"-x [{},{}] ".format(reference_mask, source_mask) if reference_mask and source_mask else "",
"-r {} ".format(initial_warp) if initial_warp else "",
"{} ".format(other_args) if other_args else "",
update_field_var,
)
)
[docs]def N4BiasFieldCorrection(out_file: str, in_file: str, bspline_fit: str = None, other_args: str = None):
"""Bias Field Correction.
Parameters
----------
out_file: str
Bias field corrected file.
in_file: str
File to bias field correct.
bspline_fit: str
Custom spline fit string.
other_args: str
Other arguments to pass in.
"""
return run_process(
"N4BiasFieldCorrection -d 3 -i {} -o {} {}{}-v 1".format(
in_file,
out_file,
"-b {} ".format(bspline_fit) if bspline_fit else "",
"{} ".format(other_args) if other_args else "",
)
)