# This file was automatically generated by SWIG (https://www.swig.org).
# Version 4.4.1
#
# Do not make changes to this file unless you know what you are doing - modify
# the SWIG interface file instead.


import collections

from sys import version_info as _version_info
if _version_info < (3, 7, 0):
    raise RuntimeError("Python 3.7 or later required")

from . import _ITKCommonPython


from . import _ITKRegistrationMethodsv4Python



from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if getattr(globals().get("__spec__"), "parent", None) or __package__ or "." in __name__:
    from . import _itkBSplineSyNImageRegistrationMethodPython
else:
    import _itkBSplineSyNImageRegistrationMethodPython

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


if _swig_python_version_info[0:2] >= (3, 3):
    import collections.abc
else:
    import collections

import itk.itkTransformBasePython
import itk.itkVectorPython
import itk.itkFixedArrayPython
import itk.pyBasePython
import itk.vnl_vector_refPython
import itk.stdcomplexPython
import itk.vnl_vectorPython
import itk.vnl_matrixPython
import itk.itkVariableLengthVectorPython
import itk.itkOptimizerParametersPython
import itk.ITKCommonBasePython
import itk.itkMatrixPython
import itk.itkPointPython
import itk.vnl_matrix_fixedPython
import itk.itkCovariantVectorPython
import itk.itkArrayPython
import itk.itkArray2DPython
import itk.itkSymmetricSecondRankTensorPython
import itk.itkDiffusionTensor3DPython
import itk.itkSpatialObjectBasePython
import itk.itkBoundingBoxPython
import itk.itkMapContainerPython
import itk.itkVectorContainerPython
import itk.itkOffsetPython
import itk.itkSizePython
import itk.itkContinuousIndexPython
import itk.itkIndexPython
import itk.itkSpatialObjectPropertyPython
import itk.itkRGBAPixelPython
import itk.itkImageRegionPython
import itk.itkAffineTransformPython
import itk.itkMatrixOffsetTransformBasePython
import itk.itkImageRegistrationMethodv4Python
import itk.itkDisplacementFieldTransformPython
import itk.itkImagePython
import itk.itkRGBPixelPython
import itk.itkVectorImagePython
import itk.itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransformPython
import itk.itkTimeVaryingVelocityFieldTransformPython
import itk.itkVelocityFieldTransformPython
import itk.itkObjectToObjectOptimizerBasePython
import itk.itkObjectToObjectMetricBasePython
import itk.itkSingleValuedCostFunctionv4Python
import itk.itkCostFunctionPython
import itk.itkOptimizerParameterScalesEstimatorPython
import itk.itkBSplineSmoothingOnUpdateDisplacementFieldTransformPython
import itk.itkPointSetPython
import itk.itkTransformParametersAdaptorBasePython
import itk.itkTimeVaryingBSplineVelocityFieldTransformPython
import itk.itkMeshBasePython
import itk.itkCompositeTransformPython
import itk.itkMultiTransformPython

def itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_New():
    return itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass.New()

class itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass(itk.ITKCommonBasePython.itkProcessObject):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_Clone(self)

    def SetFixedImage(self, *args):
        r"""
        SetFixedImage(self, image)

        Parameters
        ----------
        image: itkImageF2 const *

        SetFixedImage(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkImageF2 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetFixedImage(self, *args)

    def GetFixedImage(self, *args):
        r"""
        GetFixedImage(self) -> itkImageF2
        GetFixedImage(self, arg0) -> itkImageF2

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetFixedImage(self, *args)

    def SetMovingImage(self, *args):
        r"""
        SetMovingImage(self, image)

        Parameters
        ----------
        image: itkImageF2 const *

        SetMovingImage(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkImageF2 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMovingImage(self, *args)

    def GetMovingImage(self, *args):
        r"""
        GetMovingImage(self) -> itkImageF2
        GetMovingImage(self, arg0) -> itkImageF2

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMovingImage(self, *args)

    def SetFixedPointSet(self, *args):
        r"""
        SetFixedPointSet(self, pointSet)

        Parameters
        ----------
        pointSet: itkPointSetUI2DSMUI22FFUI const *

        SetFixedPointSet(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkPointSetUI2DSMUI22FFUI const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetFixedPointSet(self, *args)

    def GetFixedPointSet(self, *args):
        r"""
        GetFixedPointSet(self) -> itkPointSetUI2DSMUI22FFUI
        GetFixedPointSet(self, arg0) -> itkPointSetUI2DSMUI22FFUI

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetFixedPointSet(self, *args)

    def SetMovingPointSet(self, *args):
        r"""
        SetMovingPointSet(self, pointSet)

        Parameters
        ----------
        pointSet: itkPointSetUI2DSMUI22FFUI const *

        SetMovingPointSet(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkPointSetUI2DSMUI22FFUI const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMovingPointSet(self, *args)

    def GetMovingPointSet(self, *args):
        r"""
        GetMovingPointSet(self) -> itkPointSetUI2DSMUI22FFUI
        GetMovingPointSet(self, arg0) -> itkPointSetUI2DSMUI22FFUI

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMovingPointSet(self, *args)

    def SetOptimizer(self, _arg):
        r"""
        SetOptimizer(self, _arg)

        Parameters
        ----------
        _arg: itkObjectToObjectOptimizerBaseTemplateD *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetOptimizer(self, _arg)

    def GetModifiableOptimizer(self):
        r"""GetModifiableOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetModifiableOptimizer(self)

    def GetOptimizer(self, *args):
        r"""
        GetOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD
        GetOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetOptimizer(self, *args)

    def SetOptimizerWeights(self, arg0):
        r"""
        SetOptimizerWeights(self, arg0)

        Parameters
        ----------
        arg0: itkOptimizerParametersD &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetOptimizerWeights(self, arg0)

    def GetOptimizerWeights(self):
        r"""GetOptimizerWeights(self) -> itkOptimizerParametersD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetOptimizerWeights(self)

    def SetMetric(self, _arg):
        r"""
        SetMetric(self, _arg)

        Parameters
        ----------
        _arg: itkObjectToObjectMetricBaseTemplateD *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMetric(self, _arg)

    def GetModifiableMetric(self):
        r"""GetModifiableMetric(self) -> itkObjectToObjectMetricBaseTemplateD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetModifiableMetric(self)

    def GetMetric(self, *args):
        r"""
        GetMetric(self) -> itkObjectToObjectMetricBaseTemplateD
        GetMetric(self) -> itkObjectToObjectMetricBaseTemplateD
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMetric(self, *args)

    def SetMetricSamplingStrategy(self, _arg):
        r"""
        SetMetricSamplingStrategy(self, _arg)

        Parameters
        ----------
        _arg: enum itkImageRegistrationMethodv4Enums::MetricSamplingStrategy const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMetricSamplingStrategy(self, _arg)

    def GetMetricSamplingStrategy(self):
        r"""GetMetricSamplingStrategy(self) -> itkImageRegistrationMethodv4Enums::MetricSamplingStrategy"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMetricSamplingStrategy(self)

    def MetricSamplingReinitializeSeed(self, *args):
        r"""
        MetricSamplingReinitializeSeed(self)
        MetricSamplingReinitializeSeed(self, seed)

        Parameters
        ----------
        seed: int

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_MetricSamplingReinitializeSeed(self, *args)

    def SetMetricSamplingPercentage(self, arg0):
        r"""
        SetMetricSamplingPercentage(self, arg0)

        Parameters
        ----------
        arg0: double const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMetricSamplingPercentage(self, arg0)

    def SetMetricSamplingPercentagePerLevel(self, samplingPercentages):
        r"""
        SetMetricSamplingPercentagePerLevel(self, samplingPercentages)

        Parameters
        ----------
        samplingPercentages: itkArrayD const &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMetricSamplingPercentagePerLevel(self, samplingPercentages)

    def GetMetricSamplingPercentagePerLevel(self):
        r"""GetMetricSamplingPercentagePerLevel(self) -> itkArrayD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMetricSamplingPercentagePerLevel(self)

    def SetFixedInitialTransformInput(self, _arg):
        r"""
        SetFixedInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetFixedInitialTransformInput(self, _arg)

    def SetFixedInitialTransform(self, _arg):
        r"""
        SetFixedInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetFixedInitialTransform(self, _arg)

    def GetFixedInitialTransformInput(self):
        r"""GetFixedInitialTransformInput(self) -> itkDataObjectDecoratorTD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetFixedInitialTransformInput(self)

    def GetFixedInitialTransform(self):
        r"""GetFixedInitialTransform(self) -> itkTransformD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetFixedInitialTransform(self)

    def SetMovingInitialTransformInput(self, _arg):
        r"""
        SetMovingInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMovingInitialTransformInput(self, _arg)

    def SetMovingInitialTransform(self, _arg):
        r"""
        SetMovingInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetMovingInitialTransform(self, _arg)

    def GetMovingInitialTransformInput(self):
        r"""GetMovingInitialTransformInput(self) -> itkDataObjectDecoratorTD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMovingInitialTransformInput(self)

    def GetMovingInitialTransform(self):
        r"""GetMovingInitialTransform(self) -> itkTransformD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetMovingInitialTransform(self)

    def SetInitialTransformInput(self, _arg):
        r"""
        SetInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetInitialTransformInput(self, _arg)

    def SetInitialTransform(self, _arg):
        r"""
        SetInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD22 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetInitialTransform(self, _arg)

    def GetInitialTransformInput(self):
        r"""GetInitialTransformInput(self) -> itkDataObjectDecoratorTD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetInitialTransformInput(self)

    def GetInitialTransform(self):
        r"""GetInitialTransform(self) -> itkTransformD22"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetInitialTransform(self)

    def SetTransformParametersAdaptorsPerLevel(self, arg0):
        r"""
        SetTransformParametersAdaptorsPerLevel(self, arg0)

        Parameters
        ----------
        arg0: std::vector< itkTransformParametersAdaptorBaseD2_Pointer,std::allocator< itkTransformParametersAdaptorBaseD2_Pointer > > &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetTransformParametersAdaptorsPerLevel(self, arg0)

    def GetTransformParametersAdaptorsPerLevel(self):
        r"""GetTransformParametersAdaptorsPerLevel(self) -> std::vector< itkTransformParametersAdaptorBaseD2_Pointer,std::allocator< itkTransformParametersAdaptorBaseD2_Pointer > > const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetTransformParametersAdaptorsPerLevel(self)

    def SetNumberOfLevels(self, arg0):
        r"""
        SetNumberOfLevels(self, arg0)

        Parameters
        ----------
        arg0: unsigned long const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetNumberOfLevels(self, arg0)

    def GetNumberOfLevels(self):
        r"""GetNumberOfLevels(self) -> unsigned long"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetNumberOfLevels(self)

    def SetShrinkFactorsPerLevel(self, factors):
        r"""
        SetShrinkFactorsPerLevel(self, factors)

        Parameters
        ----------
        factors: itkArrayUL

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetShrinkFactorsPerLevel(self, factors)

    def GetShrinkFactorsPerDimension(self, level):
        r"""
        GetShrinkFactorsPerDimension(self, level) -> itkFixedArrayUI2

        Parameters
        ----------
        level: unsigned int const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetShrinkFactorsPerDimension(self, level)

    def SetShrinkFactorsPerDimension(self, level, factors):
        r"""
        SetShrinkFactorsPerDimension(self, level, factors)

        Parameters
        ----------
        level: unsigned int
        factors: itkFixedArrayUI2

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetShrinkFactorsPerDimension(self, level, factors)

    def SetSmoothingSigmasPerLevel(self, _arg):
        r"""
        SetSmoothingSigmasPerLevel(self, _arg)

        Parameters
        ----------
        _arg: itkArrayD

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetSmoothingSigmasPerLevel(self, _arg)

    def GetSmoothingSigmasPerLevel(self):
        r"""GetSmoothingSigmasPerLevel(self) -> itkArrayD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetSmoothingSigmasPerLevel(self)

    def SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg):
        r"""
        SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg)

    def GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self):
        r"""GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self)

    def SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self):
        r"""SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self)

    def SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self):
        r"""SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self)

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkDataObjectDecoratorBSOUDFTD2
        GetOutput(self) -> itkDataObjectDecoratorBSOUDFTD2
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetOutput(self, *args)

    def GetTransformOutput(self, *args):
        r"""
        GetTransformOutput(self) -> itkDataObjectDecoratorBSOUDFTD2
        GetTransformOutput(self) -> itkDataObjectDecoratorBSOUDFTD2
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetTransformOutput(self, *args)

    def GetModifiableTransform(self):
        r"""GetModifiableTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetModifiableTransform(self)

    def GetTransform(self):
        r"""GetTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetTransform(self)

    def GetCurrentLevel(self):
        r"""GetCurrentLevel(self) -> unsigned long"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetCurrentLevel(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned long const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetCurrentIteration(self)

    def GetCurrentMetricValue(self):
        r"""GetCurrentMetricValue(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetCurrentMetricValue(self)

    def GetCurrentConvergenceValue(self):
        r"""GetCurrentConvergenceValue(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetCurrentConvergenceValue(self)

    def GetIsConverged(self):
        r"""GetIsConverged(self) -> bool const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetIsConverged(self)

    def SetInPlace(self, _arg):
        r"""
        SetInPlace(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetInPlace(self, _arg)

    def GetInPlace(self):
        r"""GetInPlace(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetInPlace(self)

    def InPlaceOn(self):
        r"""InPlaceOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_InPlaceOn(self)

    def InPlaceOff(self):
        r"""InPlaceOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_InPlaceOff(self)

    def InitializeCenterOfLinearOutputTransformOn(self):
        r"""InitializeCenterOfLinearOutputTransformOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_InitializeCenterOfLinearOutputTransformOn(self)

    def InitializeCenterOfLinearOutputTransformOff(self):
        r"""InitializeCenterOfLinearOutputTransformOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_InitializeCenterOfLinearOutputTransformOff(self)

    def SetInitializeCenterOfLinearOutputTransform(self, _arg):
        r"""
        SetInitializeCenterOfLinearOutputTransform(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_SetInitializeCenterOfLinearOutputTransform(self, _arg)

    def GetInitializeCenterOfLinearOutputTransform(self):
        r"""GetInitializeCenterOfLinearOutputTransform(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_GetInitializeCenterOfLinearOutputTransform(self)

    def InitializeCenterOfLinearOutputTransform(self):
        r"""InitializeCenterOfLinearOutputTransform(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_InitializeCenterOfLinearOutputTransform(self)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass_swigregister(itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass)

def itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_New():
    return itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass.New()

class itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass(itk.ITKCommonBasePython.itkProcessObject):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_Clone(self)

    def SetFixedImage(self, *args):
        r"""
        SetFixedImage(self, image)

        Parameters
        ----------
        image: itkImageF3 const *

        SetFixedImage(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkImageF3 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetFixedImage(self, *args)

    def GetFixedImage(self, *args):
        r"""
        GetFixedImage(self) -> itkImageF3
        GetFixedImage(self, arg0) -> itkImageF3

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetFixedImage(self, *args)

    def SetMovingImage(self, *args):
        r"""
        SetMovingImage(self, image)

        Parameters
        ----------
        image: itkImageF3 const *

        SetMovingImage(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkImageF3 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMovingImage(self, *args)

    def GetMovingImage(self, *args):
        r"""
        GetMovingImage(self) -> itkImageF3
        GetMovingImage(self, arg0) -> itkImageF3

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMovingImage(self, *args)

    def SetFixedPointSet(self, *args):
        r"""
        SetFixedPointSet(self, pointSet)

        Parameters
        ----------
        pointSet: itkPointSetUI3DSMUI33FFUI const *

        SetFixedPointSet(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkPointSetUI3DSMUI33FFUI const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetFixedPointSet(self, *args)

    def GetFixedPointSet(self, *args):
        r"""
        GetFixedPointSet(self) -> itkPointSetUI3DSMUI33FFUI
        GetFixedPointSet(self, arg0) -> itkPointSetUI3DSMUI33FFUI

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetFixedPointSet(self, *args)

    def SetMovingPointSet(self, *args):
        r"""
        SetMovingPointSet(self, pointSet)

        Parameters
        ----------
        pointSet: itkPointSetUI3DSMUI33FFUI const *

        SetMovingPointSet(self, arg0, arg1)

        Parameters
        ----------
        arg0: unsigned long
        arg1: itkPointSetUI3DSMUI33FFUI const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMovingPointSet(self, *args)

    def GetMovingPointSet(self, *args):
        r"""
        GetMovingPointSet(self) -> itkPointSetUI3DSMUI33FFUI
        GetMovingPointSet(self, arg0) -> itkPointSetUI3DSMUI33FFUI

        Parameters
        ----------
        arg0: unsigned long

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMovingPointSet(self, *args)

    def SetOptimizer(self, _arg):
        r"""
        SetOptimizer(self, _arg)

        Parameters
        ----------
        _arg: itkObjectToObjectOptimizerBaseTemplateD *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetOptimizer(self, _arg)

    def GetModifiableOptimizer(self):
        r"""GetModifiableOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetModifiableOptimizer(self)

    def GetOptimizer(self, *args):
        r"""
        GetOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD
        GetOptimizer(self) -> itkObjectToObjectOptimizerBaseTemplateD
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetOptimizer(self, *args)

    def SetOptimizerWeights(self, arg0):
        r"""
        SetOptimizerWeights(self, arg0)

        Parameters
        ----------
        arg0: itkOptimizerParametersD &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetOptimizerWeights(self, arg0)

    def GetOptimizerWeights(self):
        r"""GetOptimizerWeights(self) -> itkOptimizerParametersD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetOptimizerWeights(self)

    def SetMetric(self, _arg):
        r"""
        SetMetric(self, _arg)

        Parameters
        ----------
        _arg: itkObjectToObjectMetricBaseTemplateD *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMetric(self, _arg)

    def GetModifiableMetric(self):
        r"""GetModifiableMetric(self) -> itkObjectToObjectMetricBaseTemplateD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetModifiableMetric(self)

    def GetMetric(self, *args):
        r"""
        GetMetric(self) -> itkObjectToObjectMetricBaseTemplateD
        GetMetric(self) -> itkObjectToObjectMetricBaseTemplateD
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMetric(self, *args)

    def SetMetricSamplingStrategy(self, _arg):
        r"""
        SetMetricSamplingStrategy(self, _arg)

        Parameters
        ----------
        _arg: enum itkImageRegistrationMethodv4Enums::MetricSamplingStrategy const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMetricSamplingStrategy(self, _arg)

    def GetMetricSamplingStrategy(self):
        r"""GetMetricSamplingStrategy(self) -> itkImageRegistrationMethodv4Enums::MetricSamplingStrategy"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMetricSamplingStrategy(self)

    def MetricSamplingReinitializeSeed(self, *args):
        r"""
        MetricSamplingReinitializeSeed(self)
        MetricSamplingReinitializeSeed(self, seed)

        Parameters
        ----------
        seed: int

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_MetricSamplingReinitializeSeed(self, *args)

    def SetMetricSamplingPercentage(self, arg0):
        r"""
        SetMetricSamplingPercentage(self, arg0)

        Parameters
        ----------
        arg0: double const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMetricSamplingPercentage(self, arg0)

    def SetMetricSamplingPercentagePerLevel(self, samplingPercentages):
        r"""
        SetMetricSamplingPercentagePerLevel(self, samplingPercentages)

        Parameters
        ----------
        samplingPercentages: itkArrayD const &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMetricSamplingPercentagePerLevel(self, samplingPercentages)

    def GetMetricSamplingPercentagePerLevel(self):
        r"""GetMetricSamplingPercentagePerLevel(self) -> itkArrayD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMetricSamplingPercentagePerLevel(self)

    def SetFixedInitialTransformInput(self, _arg):
        r"""
        SetFixedInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetFixedInitialTransformInput(self, _arg)

    def SetFixedInitialTransform(self, _arg):
        r"""
        SetFixedInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetFixedInitialTransform(self, _arg)

    def GetFixedInitialTransformInput(self):
        r"""GetFixedInitialTransformInput(self) -> itkDataObjectDecoratorTD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetFixedInitialTransformInput(self)

    def GetFixedInitialTransform(self):
        r"""GetFixedInitialTransform(self) -> itkTransformD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetFixedInitialTransform(self)

    def SetMovingInitialTransformInput(self, _arg):
        r"""
        SetMovingInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMovingInitialTransformInput(self, _arg)

    def SetMovingInitialTransform(self, _arg):
        r"""
        SetMovingInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetMovingInitialTransform(self, _arg)

    def GetMovingInitialTransformInput(self):
        r"""GetMovingInitialTransformInput(self) -> itkDataObjectDecoratorTD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMovingInitialTransformInput(self)

    def GetMovingInitialTransform(self):
        r"""GetMovingInitialTransform(self) -> itkTransformD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetMovingInitialTransform(self)

    def SetInitialTransformInput(self, _arg):
        r"""
        SetInitialTransformInput(self, _arg)

        Parameters
        ----------
        _arg: itkDataObjectDecoratorTD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetInitialTransformInput(self, _arg)

    def SetInitialTransform(self, _arg):
        r"""
        SetInitialTransform(self, _arg)

        Parameters
        ----------
        _arg: itkTransformD33 const *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetInitialTransform(self, _arg)

    def GetInitialTransformInput(self):
        r"""GetInitialTransformInput(self) -> itkDataObjectDecoratorTD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetInitialTransformInput(self)

    def GetInitialTransform(self):
        r"""GetInitialTransform(self) -> itkTransformD33"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetInitialTransform(self)

    def SetTransformParametersAdaptorsPerLevel(self, arg0):
        r"""
        SetTransformParametersAdaptorsPerLevel(self, arg0)

        Parameters
        ----------
        arg0: std::vector< itkTransformParametersAdaptorBaseD3_Pointer,std::allocator< itkTransformParametersAdaptorBaseD3_Pointer > > &

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetTransformParametersAdaptorsPerLevel(self, arg0)

    def GetTransformParametersAdaptorsPerLevel(self):
        r"""GetTransformParametersAdaptorsPerLevel(self) -> std::vector< itkTransformParametersAdaptorBaseD3_Pointer,std::allocator< itkTransformParametersAdaptorBaseD3_Pointer > > const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetTransformParametersAdaptorsPerLevel(self)

    def SetNumberOfLevels(self, arg0):
        r"""
        SetNumberOfLevels(self, arg0)

        Parameters
        ----------
        arg0: unsigned long const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetNumberOfLevels(self, arg0)

    def GetNumberOfLevels(self):
        r"""GetNumberOfLevels(self) -> unsigned long"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetNumberOfLevels(self)

    def SetShrinkFactorsPerLevel(self, factors):
        r"""
        SetShrinkFactorsPerLevel(self, factors)

        Parameters
        ----------
        factors: itkArrayUL

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetShrinkFactorsPerLevel(self, factors)

    def GetShrinkFactorsPerDimension(self, level):
        r"""
        GetShrinkFactorsPerDimension(self, level) -> itkFixedArrayUI3

        Parameters
        ----------
        level: unsigned int const

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetShrinkFactorsPerDimension(self, level)

    def SetShrinkFactorsPerDimension(self, level, factors):
        r"""
        SetShrinkFactorsPerDimension(self, level, factors)

        Parameters
        ----------
        level: unsigned int
        factors: itkFixedArrayUI3

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetShrinkFactorsPerDimension(self, level, factors)

    def SetSmoothingSigmasPerLevel(self, _arg):
        r"""
        SetSmoothingSigmasPerLevel(self, _arg)

        Parameters
        ----------
        _arg: itkArrayD

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetSmoothingSigmasPerLevel(self, _arg)

    def GetSmoothingSigmasPerLevel(self):
        r"""GetSmoothingSigmasPerLevel(self) -> itkArrayD"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetSmoothingSigmasPerLevel(self)

    def SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg):
        r"""
        SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetSmoothingSigmasAreSpecifiedInPhysicalUnits(self, _arg)

    def GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self):
        r"""GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetSmoothingSigmasAreSpecifiedInPhysicalUnits(self)

    def SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self):
        r"""SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SmoothingSigmasAreSpecifiedInPhysicalUnitsOn(self)

    def SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self):
        r"""SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SmoothingSigmasAreSpecifiedInPhysicalUnitsOff(self)

    def GetOutput(self, *args):
        r"""
        GetOutput(self) -> itkDataObjectDecoratorBSOUDFTD3
        GetOutput(self) -> itkDataObjectDecoratorBSOUDFTD3
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetOutput(self, *args)

    def GetTransformOutput(self, *args):
        r"""
        GetTransformOutput(self) -> itkDataObjectDecoratorBSOUDFTD3
        GetTransformOutput(self) -> itkDataObjectDecoratorBSOUDFTD3
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetTransformOutput(self, *args)

    def GetModifiableTransform(self):
        r"""GetModifiableTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetModifiableTransform(self)

    def GetTransform(self):
        r"""GetTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetTransform(self)

    def GetCurrentLevel(self):
        r"""GetCurrentLevel(self) -> unsigned long"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetCurrentLevel(self)

    def GetCurrentIteration(self):
        r"""GetCurrentIteration(self) -> unsigned long const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetCurrentIteration(self)

    def GetCurrentMetricValue(self):
        r"""GetCurrentMetricValue(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetCurrentMetricValue(self)

    def GetCurrentConvergenceValue(self):
        r"""GetCurrentConvergenceValue(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetCurrentConvergenceValue(self)

    def GetIsConverged(self):
        r"""GetIsConverged(self) -> bool const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetIsConverged(self)

    def SetInPlace(self, _arg):
        r"""
        SetInPlace(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetInPlace(self, _arg)

    def GetInPlace(self):
        r"""GetInPlace(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetInPlace(self)

    def InPlaceOn(self):
        r"""InPlaceOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_InPlaceOn(self)

    def InPlaceOff(self):
        r"""InPlaceOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_InPlaceOff(self)

    def InitializeCenterOfLinearOutputTransformOn(self):
        r"""InitializeCenterOfLinearOutputTransformOn(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_InitializeCenterOfLinearOutputTransformOn(self)

    def InitializeCenterOfLinearOutputTransformOff(self):
        r"""InitializeCenterOfLinearOutputTransformOff(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_InitializeCenterOfLinearOutputTransformOff(self)

    def SetInitializeCenterOfLinearOutputTransform(self, _arg):
        r"""
        SetInitializeCenterOfLinearOutputTransform(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_SetInitializeCenterOfLinearOutputTransform(self, _arg)

    def GetInitializeCenterOfLinearOutputTransform(self):
        r"""GetInitializeCenterOfLinearOutputTransform(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_GetInitializeCenterOfLinearOutputTransform(self)

    def InitializeCenterOfLinearOutputTransform(self):
        r"""InitializeCenterOfLinearOutputTransform(self)"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_InitializeCenterOfLinearOutputTransform(self)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass_swigregister(itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass)

def itkBSplineSyNImageRegistrationMethodF2F2_Superclass_New():
    return itkBSplineSyNImageRegistrationMethodF2F2_Superclass.New()

class itkBSplineSyNImageRegistrationMethodF2F2_Superclass(itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Superclass):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF2F2_Superclass class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_Clone(self)

    def SetLearningRate(self, _arg):
        r"""
        SetLearningRate(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetLearningRate(self, _arg)

    def GetLearningRate(self):
        r"""GetLearningRate(self) -> double"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetLearningRate(self)

    def SetNumberOfIterationsPerLevel(self, _arg):
        r"""
        SetNumberOfIterationsPerLevel(self, _arg)

        Parameters
        ----------
        _arg: itkArrayUL

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetNumberOfIterationsPerLevel(self, _arg)

    def GetNumberOfIterationsPerLevel(self):
        r"""GetNumberOfIterationsPerLevel(self) -> itkArrayUL"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetNumberOfIterationsPerLevel(self)

    def SetConvergenceThreshold(self, _arg):
        r"""
        SetConvergenceThreshold(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetConvergenceThreshold(self, _arg)

    def GetConvergenceThreshold(self):
        r"""GetConvergenceThreshold(self) -> double"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetConvergenceThreshold(self)

    def SetConvergenceWindowSize(self, _arg):
        r"""
        SetConvergenceWindowSize(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetConvergenceWindowSize(self, _arg)

    def GetConvergenceWindowSize(self):
        r"""GetConvergenceWindowSize(self) -> unsigned int"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetConvergenceWindowSize(self)

    def SetDownsampleImagesForMetricDerivatives(self, _arg):
        r"""
        SetDownsampleImagesForMetricDerivatives(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetDownsampleImagesForMetricDerivatives(self, _arg)

    def GetDownsampleImagesForMetricDerivatives(self):
        r"""GetDownsampleImagesForMetricDerivatives(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetDownsampleImagesForMetricDerivatives(self)

    def SetAverageMidPointGradients(self, _arg):
        r"""
        SetAverageMidPointGradients(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetAverageMidPointGradients(self, _arg)

    def GetAverageMidPointGradients(self):
        r"""GetAverageMidPointGradients(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetAverageMidPointGradients(self)

    def SetGaussianSmoothingVarianceForTheUpdateField(self, _arg):
        r"""
        SetGaussianSmoothingVarianceForTheUpdateField(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetGaussianSmoothingVarianceForTheUpdateField(self, _arg)

    def GetGaussianSmoothingVarianceForTheUpdateField(self):
        r"""GetGaussianSmoothingVarianceForTheUpdateField(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetGaussianSmoothingVarianceForTheUpdateField(self)

    def SetGaussianSmoothingVarianceForTheTotalField(self, _arg):
        r"""
        SetGaussianSmoothingVarianceForTheTotalField(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetGaussianSmoothingVarianceForTheTotalField(self, _arg)

    def GetGaussianSmoothingVarianceForTheTotalField(self):
        r"""GetGaussianSmoothingVarianceForTheTotalField(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetGaussianSmoothingVarianceForTheTotalField(self)

    def GetModifiableFixedToMiddleTransform(self):
        r"""GetModifiableFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetModifiableFixedToMiddleTransform(self)

    def GetFixedToMiddleTransform(self, *args):
        r"""
        GetFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2
        GetFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetFixedToMiddleTransform(self, *args)

    def GetModifiableMovingToMiddleTransform(self):
        r"""GetModifiableMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetModifiableMovingToMiddleTransform(self)

    def GetMovingToMiddleTransform(self, *args):
        r"""
        GetMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2
        GetMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_GetMovingToMiddleTransform(self, *args)

    def SetFixedToMiddleTransform(self, _arg):
        r"""
        SetFixedToMiddleTransform(self, _arg)

        Parameters
        ----------
        _arg: itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2 *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetFixedToMiddleTransform(self, _arg)

    def SetMovingToMiddleTransform(self, _arg):
        r"""
        SetMovingToMiddleTransform(self, _arg)

        Parameters
        ----------
        _arg: itkBSplineSmoothingOnUpdateDisplacementFieldTransformD2 *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_SetMovingToMiddleTransform(self, _arg)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF2F2_Superclass

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF2F2_Superclass

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF2F2_Superclass and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF2F2_Superclass.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF2F2_Superclass.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF2F2_Superclass.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF2F2_Superclass in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Superclass_swigregister(itkBSplineSyNImageRegistrationMethodF2F2_Superclass)

def itkBSplineSyNImageRegistrationMethodF3F3_Superclass_New():
    return itkBSplineSyNImageRegistrationMethodF3F3_Superclass.New()

class itkBSplineSyNImageRegistrationMethodF3F3_Superclass(itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Superclass):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF3F3_Superclass class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_Clone(self)

    def SetLearningRate(self, _arg):
        r"""
        SetLearningRate(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetLearningRate(self, _arg)

    def GetLearningRate(self):
        r"""GetLearningRate(self) -> double"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetLearningRate(self)

    def SetNumberOfIterationsPerLevel(self, _arg):
        r"""
        SetNumberOfIterationsPerLevel(self, _arg)

        Parameters
        ----------
        _arg: itkArrayUL

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetNumberOfIterationsPerLevel(self, _arg)

    def GetNumberOfIterationsPerLevel(self):
        r"""GetNumberOfIterationsPerLevel(self) -> itkArrayUL"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetNumberOfIterationsPerLevel(self)

    def SetConvergenceThreshold(self, _arg):
        r"""
        SetConvergenceThreshold(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetConvergenceThreshold(self, _arg)

    def GetConvergenceThreshold(self):
        r"""GetConvergenceThreshold(self) -> double"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetConvergenceThreshold(self)

    def SetConvergenceWindowSize(self, _arg):
        r"""
        SetConvergenceWindowSize(self, _arg)

        Parameters
        ----------
        _arg: unsigned int

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetConvergenceWindowSize(self, _arg)

    def GetConvergenceWindowSize(self):
        r"""GetConvergenceWindowSize(self) -> unsigned int"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetConvergenceWindowSize(self)

    def SetDownsampleImagesForMetricDerivatives(self, _arg):
        r"""
        SetDownsampleImagesForMetricDerivatives(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetDownsampleImagesForMetricDerivatives(self, _arg)

    def GetDownsampleImagesForMetricDerivatives(self):
        r"""GetDownsampleImagesForMetricDerivatives(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetDownsampleImagesForMetricDerivatives(self)

    def SetAverageMidPointGradients(self, _arg):
        r"""
        SetAverageMidPointGradients(self, _arg)

        Parameters
        ----------
        _arg: bool

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetAverageMidPointGradients(self, _arg)

    def GetAverageMidPointGradients(self):
        r"""GetAverageMidPointGradients(self) -> bool"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetAverageMidPointGradients(self)

    def SetGaussianSmoothingVarianceForTheUpdateField(self, _arg):
        r"""
        SetGaussianSmoothingVarianceForTheUpdateField(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetGaussianSmoothingVarianceForTheUpdateField(self, _arg)

    def GetGaussianSmoothingVarianceForTheUpdateField(self):
        r"""GetGaussianSmoothingVarianceForTheUpdateField(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetGaussianSmoothingVarianceForTheUpdateField(self)

    def SetGaussianSmoothingVarianceForTheTotalField(self, _arg):
        r"""
        SetGaussianSmoothingVarianceForTheTotalField(self, _arg)

        Parameters
        ----------
        _arg: double

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetGaussianSmoothingVarianceForTheTotalField(self, _arg)

    def GetGaussianSmoothingVarianceForTheTotalField(self):
        r"""GetGaussianSmoothingVarianceForTheTotalField(self) -> double const &"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetGaussianSmoothingVarianceForTheTotalField(self)

    def GetModifiableFixedToMiddleTransform(self):
        r"""GetModifiableFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetModifiableFixedToMiddleTransform(self)

    def GetFixedToMiddleTransform(self, *args):
        r"""
        GetFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3
        GetFixedToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetFixedToMiddleTransform(self, *args)

    def GetModifiableMovingToMiddleTransform(self):
        r"""GetModifiableMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetModifiableMovingToMiddleTransform(self)

    def GetMovingToMiddleTransform(self, *args):
        r"""
        GetMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3
        GetMovingToMiddleTransform(self) -> itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3
        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_GetMovingToMiddleTransform(self, *args)

    def SetFixedToMiddleTransform(self, _arg):
        r"""
        SetFixedToMiddleTransform(self, _arg)

        Parameters
        ----------
        _arg: itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3 *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetFixedToMiddleTransform(self, _arg)

    def SetMovingToMiddleTransform(self, _arg):
        r"""
        SetMovingToMiddleTransform(self, _arg)

        Parameters
        ----------
        _arg: itkBSplineSmoothingOnUpdateDisplacementFieldTransformD3 *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_SetMovingToMiddleTransform(self, _arg)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF3F3_Superclass

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF3F3_Superclass

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF3F3_Superclass and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF3F3_Superclass.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF3F3_Superclass.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF3F3_Superclass.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF3F3_Superclass in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Superclass_swigregister(itkBSplineSyNImageRegistrationMethodF3F3_Superclass)

def itkBSplineSyNImageRegistrationMethodF2F2_New():
    return itkBSplineSyNImageRegistrationMethodF2F2.New()

class itkBSplineSyNImageRegistrationMethodF2F2(itkBSplineSyNImageRegistrationMethodF2F2_Superclass):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF2F2 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF2F2_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF2F2_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_Clone(self)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF2F2

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF2F2

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF2F2

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF2F2 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF2F2.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF2F2.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF2F2.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF2F2 in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF2F2_swigregister(itkBSplineSyNImageRegistrationMethodF2F2)

def itkBSplineSyNImageRegistrationMethodF3F3_New():
    return itkBSplineSyNImageRegistrationMethodF3F3.New()

class itkBSplineSyNImageRegistrationMethodF3F3(itkBSplineSyNImageRegistrationMethodF3F3_Superclass):
    r"""Proxy of C++ itkBSplineSyNImageRegistrationMethodF3F3 class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    @staticmethod
    def __New_orig__():
        r"""__New_orig__() -> itkBSplineSyNImageRegistrationMethodF3F3_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3___New_orig__()

    def Clone(self):
        r"""Clone(self) -> itkBSplineSyNImageRegistrationMethodF3F3_Pointer"""
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_Clone(self)
    __swig_destroy__ = _itkBSplineSyNImageRegistrationMethodPython.delete_itkBSplineSyNImageRegistrationMethodF3F3

    @staticmethod
    def cast(obj):
        r"""
        cast(obj) -> itkBSplineSyNImageRegistrationMethodF3F3

        Parameters
        ----------
        obj: itkLightObject *

        """
        return _itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_cast(obj)

    def New(*args, **kargs):
        """New() -> itkBSplineSyNImageRegistrationMethodF3F3

        Create a new object of the class itkBSplineSyNImageRegistrationMethodF3F3 and set the input and the parameters if some
        named or non-named arguments are passed to that method.

        New() tries to assign all the non named parameters to the input of the new objects - the
        first non named parameter in the first input, etc.

        The named parameters are used by calling the method with the same name prefixed by 'Set'.

        Ex:

          itkBSplineSyNImageRegistrationMethodF3F3.New(reader, threshold=10)

        is (most of the time) equivalent to:

          obj = itkBSplineSyNImageRegistrationMethodF3F3.New()
          obj.SetInput(0, reader.GetOutput())
          obj.SetThreshold(10)
        """
        obj = itkBSplineSyNImageRegistrationMethodF3F3.__New_orig__()
        from itk.support import template_class
        template_class.New(obj, *args, **kargs)
        return obj
    New = staticmethod(New)


# Register itkBSplineSyNImageRegistrationMethodF3F3 in _itkBSplineSyNImageRegistrationMethodPython:
_itkBSplineSyNImageRegistrationMethodPython.itkBSplineSyNImageRegistrationMethodF3F3_swigregister(itkBSplineSyNImageRegistrationMethodF3F3)

from itk.support import helpers
import itk.support.types as itkt
from typing import Sequence, Tuple, Union

@helpers.accept_array_like_xarray_torch
def image_registration_methodv4(*args,  fixed_image: Union[itkt.Image, int]=..., moving_image: Union[itkt.Image, int]=..., fixed_point_set: Union[itkt.PointSet, int]=..., moving_point_set: Union[itkt.PointSet, int]=..., optimizer=..., optimizer_weights=..., metric=..., metric_sampling_strategy=..., metric_sampling_percentage: float=..., metric_sampling_percentage_per_level: Sequence[float]=..., fixed_initial_transform_input=..., fixed_initial_transform: itkt.Transform=..., moving_initial_transform_input=..., moving_initial_transform: itkt.Transform=..., initial_transform_input=..., initial_transform: itkt.Transform=..., transform_parameters_adaptors_per_level=..., number_of_levels: int=..., shrink_factors_per_level: Sequence[int]=..., shrink_factors_per_dimension: int=..., smoothing_sigmas_per_level: Sequence[float]=..., smoothing_sigmas_are_specified_in_physical_units: bool=..., initialize_center_of_linear_output_transform: bool=...,**kwargs):
    """Functional interface for ImageRegistrationMethodv4"""
    import itk

    kwarg_typehints = { 'fixed_image':fixed_image,'moving_image':moving_image,'fixed_point_set':fixed_point_set,'moving_point_set':moving_point_set,'optimizer':optimizer,'optimizer_weights':optimizer_weights,'metric':metric,'metric_sampling_strategy':metric_sampling_strategy,'metric_sampling_percentage':metric_sampling_percentage,'metric_sampling_percentage_per_level':metric_sampling_percentage_per_level,'fixed_initial_transform_input':fixed_initial_transform_input,'fixed_initial_transform':fixed_initial_transform,'moving_initial_transform_input':moving_initial_transform_input,'moving_initial_transform':moving_initial_transform,'initial_transform_input':initial_transform_input,'initial_transform':initial_transform,'transform_parameters_adaptors_per_level':transform_parameters_adaptors_per_level,'number_of_levels':number_of_levels,'shrink_factors_per_level':shrink_factors_per_level,'shrink_factors_per_dimension':shrink_factors_per_dimension,'smoothing_sigmas_per_level':smoothing_sigmas_per_level,'smoothing_sigmas_are_specified_in_physical_units':smoothing_sigmas_are_specified_in_physical_units,'initialize_center_of_linear_output_transform':initialize_center_of_linear_output_transform }
    specified_kwarg_typehints = { k:v for (k,v) in kwarg_typehints.items() if kwarg_typehints[k] is not ... }
    kwargs.update(specified_kwarg_typehints)


    instance = itk.ImageRegistrationMethodv4.New(*args, **kwargs)

    return instance.__internal_call__()

def image_registration_methodv4_init_docstring():
    import itk
    from itk.support import template_class

    filter_class = itk.ITKRegistrationMethodsv4.ImageRegistrationMethodv4
    image_registration_methodv4.process_object = filter_class
    is_template = isinstance(filter_class, template_class.itkTemplate)
    if is_template:
        filter_object = filter_class.values()[0]
    else:
        filter_object = filter_class

    image_registration_methodv4.__doc__ = filter_object.__doc__

from itk.support import helpers
import itk.support.types as itkt
from typing import Sequence, Tuple, Union

@helpers.accept_array_like_xarray_torch
def sy_n_image_registration_method(*args,  learning_rate: float=..., number_of_iterations_per_level: Sequence[int]=..., convergence_threshold: float=..., convergence_window_size: int=..., downsample_images_for_metric_derivatives: bool=..., average_mid_point_gradients: bool=..., gaussian_smoothing_variance_for_the_update_field: float=..., gaussian_smoothing_variance_for_the_total_field: float=..., fixed_to_middle_transform=..., moving_to_middle_transform=..., fixed_image: Union[itkt.Image, int]=..., moving_image: Union[itkt.Image, int]=..., fixed_point_set: Union[int, itkt.PointSet]=..., moving_point_set: Union[int, itkt.PointSet]=..., optimizer=..., optimizer_weights=..., metric=..., metric_sampling_strategy=..., metric_sampling_percentage: float=..., metric_sampling_percentage_per_level: Sequence[float]=..., fixed_initial_transform_input=..., fixed_initial_transform: itkt.Transform=..., moving_initial_transform_input=..., moving_initial_transform: itkt.Transform=..., initial_transform_input=..., initial_transform: itkt.Transform=..., transform_parameters_adaptors_per_level=..., number_of_levels: int=..., shrink_factors_per_level: Sequence[int]=..., shrink_factors_per_dimension: int=..., smoothing_sigmas_per_level: Sequence[float]=..., smoothing_sigmas_are_specified_in_physical_units: bool=..., initialize_center_of_linear_output_transform: bool=...,**kwargs):
    """Functional interface for SyNImageRegistrationMethod"""
    import itk

    kwarg_typehints = { 'learning_rate':learning_rate,'number_of_iterations_per_level':number_of_iterations_per_level,'convergence_threshold':convergence_threshold,'convergence_window_size':convergence_window_size,'downsample_images_for_metric_derivatives':downsample_images_for_metric_derivatives,'average_mid_point_gradients':average_mid_point_gradients,'gaussian_smoothing_variance_for_the_update_field':gaussian_smoothing_variance_for_the_update_field,'gaussian_smoothing_variance_for_the_total_field':gaussian_smoothing_variance_for_the_total_field,'fixed_to_middle_transform':fixed_to_middle_transform,'moving_to_middle_transform':moving_to_middle_transform,'fixed_image':fixed_image,'moving_image':moving_image,'fixed_point_set':fixed_point_set,'moving_point_set':moving_point_set,'optimizer':optimizer,'optimizer_weights':optimizer_weights,'metric':metric,'metric_sampling_strategy':metric_sampling_strategy,'metric_sampling_percentage':metric_sampling_percentage,'metric_sampling_percentage_per_level':metric_sampling_percentage_per_level,'fixed_initial_transform_input':fixed_initial_transform_input,'fixed_initial_transform':fixed_initial_transform,'moving_initial_transform_input':moving_initial_transform_input,'moving_initial_transform':moving_initial_transform,'initial_transform_input':initial_transform_input,'initial_transform':initial_transform,'transform_parameters_adaptors_per_level':transform_parameters_adaptors_per_level,'number_of_levels':number_of_levels,'shrink_factors_per_level':shrink_factors_per_level,'shrink_factors_per_dimension':shrink_factors_per_dimension,'smoothing_sigmas_per_level':smoothing_sigmas_per_level,'smoothing_sigmas_are_specified_in_physical_units':smoothing_sigmas_are_specified_in_physical_units,'initialize_center_of_linear_output_transform':initialize_center_of_linear_output_transform }
    specified_kwarg_typehints = { k:v for (k,v) in kwarg_typehints.items() if kwarg_typehints[k] is not ... }
    kwargs.update(specified_kwarg_typehints)


    instance = itk.SyNImageRegistrationMethod.New(*args, **kwargs)

    return instance.__internal_call__()

def sy_n_image_registration_method_init_docstring():
    import itk
    from itk.support import template_class

    filter_class = itk.ITKRegistrationMethodsv4.SyNImageRegistrationMethod
    sy_n_image_registration_method.process_object = filter_class
    is_template = isinstance(filter_class, template_class.itkTemplate)
    if is_template:
        filter_object = filter_class.values()[0]
    else:
        filter_object = filter_class

    sy_n_image_registration_method.__doc__ = filter_object.__doc__

from itk.support import helpers
import itk.support.types as itkt
from typing import Sequence, Tuple, Union

@helpers.accept_array_like_xarray_torch
def b_spline_sy_n_image_registration_method(*args,  learning_rate: float=..., number_of_iterations_per_level: Sequence[int]=..., convergence_threshold: float=..., convergence_window_size: int=..., downsample_images_for_metric_derivatives: bool=..., average_mid_point_gradients: bool=..., gaussian_smoothing_variance_for_the_update_field: float=..., gaussian_smoothing_variance_for_the_total_field: float=..., fixed_to_middle_transform=..., moving_to_middle_transform=..., fixed_image: Union[itkt.Image, int]=..., moving_image: Union[itkt.Image, int]=..., fixed_point_set: Union[int, itkt.PointSet]=..., moving_point_set: Union[int, itkt.PointSet]=..., optimizer=..., optimizer_weights=..., metric=..., metric_sampling_strategy=..., metric_sampling_percentage: float=..., metric_sampling_percentage_per_level: Sequence[float]=..., fixed_initial_transform_input=..., fixed_initial_transform: itkt.Transform=..., moving_initial_transform_input=..., moving_initial_transform: itkt.Transform=..., initial_transform_input=..., initial_transform: itkt.Transform=..., transform_parameters_adaptors_per_level=..., number_of_levels: int=..., shrink_factors_per_level: Sequence[int]=..., shrink_factors_per_dimension: int=..., smoothing_sigmas_per_level: Sequence[float]=..., smoothing_sigmas_are_specified_in_physical_units: bool=..., initialize_center_of_linear_output_transform: bool=...,**kwargs):
    """Functional interface for BSplineSyNImageRegistrationMethod"""
    import itk

    kwarg_typehints = { 'learning_rate':learning_rate,'number_of_iterations_per_level':number_of_iterations_per_level,'convergence_threshold':convergence_threshold,'convergence_window_size':convergence_window_size,'downsample_images_for_metric_derivatives':downsample_images_for_metric_derivatives,'average_mid_point_gradients':average_mid_point_gradients,'gaussian_smoothing_variance_for_the_update_field':gaussian_smoothing_variance_for_the_update_field,'gaussian_smoothing_variance_for_the_total_field':gaussian_smoothing_variance_for_the_total_field,'fixed_to_middle_transform':fixed_to_middle_transform,'moving_to_middle_transform':moving_to_middle_transform,'fixed_image':fixed_image,'moving_image':moving_image,'fixed_point_set':fixed_point_set,'moving_point_set':moving_point_set,'optimizer':optimizer,'optimizer_weights':optimizer_weights,'metric':metric,'metric_sampling_strategy':metric_sampling_strategy,'metric_sampling_percentage':metric_sampling_percentage,'metric_sampling_percentage_per_level':metric_sampling_percentage_per_level,'fixed_initial_transform_input':fixed_initial_transform_input,'fixed_initial_transform':fixed_initial_transform,'moving_initial_transform_input':moving_initial_transform_input,'moving_initial_transform':moving_initial_transform,'initial_transform_input':initial_transform_input,'initial_transform':initial_transform,'transform_parameters_adaptors_per_level':transform_parameters_adaptors_per_level,'number_of_levels':number_of_levels,'shrink_factors_per_level':shrink_factors_per_level,'shrink_factors_per_dimension':shrink_factors_per_dimension,'smoothing_sigmas_per_level':smoothing_sigmas_per_level,'smoothing_sigmas_are_specified_in_physical_units':smoothing_sigmas_are_specified_in_physical_units,'initialize_center_of_linear_output_transform':initialize_center_of_linear_output_transform }
    specified_kwarg_typehints = { k:v for (k,v) in kwarg_typehints.items() if kwarg_typehints[k] is not ... }
    kwargs.update(specified_kwarg_typehints)


    instance = itk.BSplineSyNImageRegistrationMethod.New(*args, **kwargs)

    return instance.__internal_call__()

def b_spline_sy_n_image_registration_method_init_docstring():
    import itk
    from itk.support import template_class

    filter_class = itk.ITKRegistrationMethodsv4.BSplineSyNImageRegistrationMethod
    b_spline_sy_n_image_registration_method.process_object = filter_class
    is_template = isinstance(filter_class, template_class.itkTemplate)
    if is_template:
        filter_object = filter_class.values()[0]
    else:
        filter_object = filter_class

    b_spline_sy_n_image_registration_method.__doc__ = filter_object.__doc__



