Source code for omni.interfaces.afni

from typing import Union, List
from .common import run_process


[docs]def NwarpCat(prefix: str, warps: Union[List[str], str], iwarps: Union[List[bool], bool] = False): """3dNwarpCat. Parameters ---------- prefix: str Prefix for output warp. warps: Union[List, str] List of transforms to concatenate (or single transform string). iwarps: Union[List, bool] List of booleans to specify whether transform should be inverted (or singular boolean for single transform). """ # make inputs lists if not isinstance(warps, list): warps = [warps] if not isinstance(iwarps, list): iwarps = [iwarps] # assert same length assert len(warps) == len(iwarps), "warps and iwarps must be same length." # construct warp string warp_string = "" for i, (warp, inverse) in enumerate(zip(warps, iwarps)): # append warp_string warp_string += "-warp%d %s%s " % (i + 1, warp, " -iwarp" if inverse else "") # run process return run_process("3dNwarpCat -prefix {} {}-verb -overwrite".format(prefix, warp_string))
[docs]def NwarpApply(prefix: str, master: str, source: str, nwarp: Union[List, str]): """3dNwarpApply Parameters ---------- prefix: str Prefix for output image. master: str Reference image to align to. source: str Source image to align. nwarp: Union[List, str] List of transforms to apply. """ return run_process( "3dNwarpApply -nwarp {} -prefix {} -master {} " "-source {} -overwrite".format(nwarp if isinstance(nwarp, str) else " ".join(nwarp), prefix, master, source) )
[docs]def Allineate( prefix: str, base: str, source: str, cost: str = None, final: str = "wsinc5", warp: str = None, matrix_save: str = None, matrix_apply: str = None, fineblur: int = None, nmatch: str = None, twopass: bool = False, other_args: str = None, ): """3dAllineate. Parameters ---------- prefix: str Prefix for output image. base: str Reference image to align to. source: str Source image to align. cost: str Cost function to use. final: str Final interpolation method. warp: str Type of warp string (e.g. shift_rotate, shift_rotate_scale, etc). matrix_save: str Path to save affine matrix. matrix_apply: str Path to apply affine matrix. fineblur: int Size of fine blurring kernel to use. nmatch: str Percentage of voxels to match (e.g. "100%"). twopass: bool Do twopass registration. other_args: str Other arguments to pass in. """ return run_process( "3dAllineate " "-prefix {0} -base {1} -input {2} " "{3}{4}{5}{6}{7}{8}{9}{10}{11}-overwrite".format( prefix, base, source, "-final {} ".format(final) if final else "", "-warp {} ".format(warp) if warp else "", "-1Dmatrix_save {} ".format(matrix_save) if matrix_save else "", "-1Dmatrix_apply {} ".format(matrix_apply) if matrix_apply else "", "-cost {} ".format(cost) if cost else "", "-fineblur {} ".format(fineblur) if fineblur else "", "-nmatch {} ".format(nmatch) if nmatch else "", "-twopass " if twopass else "", "{} ".format(other_args) if other_args else "", ) )
[docs]def Autobox(prefix: str, source: str, npad: int = None): """3dAutobox. Parameters ---------- prefix: str Prefix for output image. source: str Input image. npad: int Padding. """ return run_process( "3dAutobox -prefix {} -input {} {}-overwrite".format(prefix, source, "-npad {} ".format(npad) if npad else "") )
[docs]def cat_matvec(concatenated_affine: str, affine_matrices: str): """Concatenate affine transforms. Parameters ---------- concatenated_affine: str Concatenated affine matrix. affine_matrices: str String of affine matrices to concatenate. """ return run_process("cat_matvec {0} > {1}".format(affine_matrices, concatenated_affine))
[docs]def resample(prefix: str, master: str, source: str, rmode: str = "Cu", dxyz: float = None): """3dresample Parameters ---------- prefix: str Prefix for output image. master: str Reference Image. source: str Input image. rmode: str Interpolation mode. dxyz: float Resolution to resample to. """ return run_process( "3dresample -prefix {} -master {} -input {} -rmode {} {}" "-overwrite".format(prefix, master, source, rmode, "-dxyz {0} {0} {0} ".format(dxyz) if dxyz else "") )